This is a first-cut at improving the callback mechanisms used in
authorGeoff Thorpe <geoff@openssl.org>
Sun, 8 Dec 2002 05:24:31 +0000 (05:24 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Sun, 8 Dec 2002 05:24:31 +0000 (05:24 +0000)
commite9224c717711eefb30038c9b37c69795dda93c9a
treecdb7a95f6ef21a6434008c494c38d530b629def0
parente90e7197398ce87786e92468e946d50f3c6728b7
This is a first-cut at improving the callback mechanisms used in
key-generation and prime-checking functions. Rather than explicitly passing
callback functions and caller-defined context data for the callbacks, a new
structure BN_GENCB is defined that encapsulates this; a pointer to the
structure is passed to all such functions instead.

This wrapper structure allows the encapsulation of "old" and "new" style
callbacks - "new" callbacks return a boolean result on the understanding
that returning FALSE should terminate keygen/primality processing.  The
BN_GENCB abstraction will allow future callback modifications without
needing to break binary compatibility nor change the API function
prototypes. The new API functions have been given names ending in "_ex" and
the old functions are implemented as wrappers to the new ones.  The
OPENSSL_NO_DEPRECATED symbol has been introduced so that, if defined,
declaration of the older functions will be skipped. NB: Some
openssl-internal code will stick with the older callbacks for now, so
appropriate "#undef" logic will be put in place - this is in case the user
is *building* openssl (rather than *including* its headers) with this
symbol defined.

There is another change in the new _ex functions; the key-generation
functions do not return key structures but operate on structures passed by
the caller, the return value is a boolean. This will allow for a smoother
transition to having key-generation as "virtual function" in the various
***_METHOD tables.
25 files changed:
CHANGES
crypto/bn/Makefile.ssl
crypto/bn/bn.h
crypto/bn/bn_depr.c [new file with mode: 0644]
crypto/bn/bn_prime.c
crypto/bn/bntest.c
crypto/dh/Makefile.ssl
crypto/dh/dh.h
crypto/dh/dh_check.c
crypto/dh/dh_depr.c [new file with mode: 0644]
crypto/dh/dh_gen.c
crypto/dh/dhtest.c
crypto/dsa/Makefile.ssl
crypto/dsa/dsa.h
crypto/dsa/dsa_depr.c [new file with mode: 0644]
crypto/dsa/dsa_gen.c
crypto/dsa/dsatest.c
crypto/ec/ectest.c
crypto/ecdsa/ecdsatest.c
crypto/rsa/Makefile.ssl
crypto/rsa/rsa.h
crypto/rsa/rsa_chk.c
crypto/rsa/rsa_depr.c [new file with mode: 0644]
crypto/rsa/rsa_gen.c
ssl/ssltest.c