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.
This commit is contained in:
@@ -333,7 +333,7 @@ void prime_field_tests()
|
||||
/* Curve P-192 (FIPS PUB 186-2, App. 6) */
|
||||
|
||||
if (!BN_hex2bn(&p, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF")) ABORT;
|
||||
if (1 != BN_is_prime(p, BN_prime_checks, 0, ctx, NULL)) ABORT;
|
||||
if (1 != BN_is_prime_ex(p, BN_prime_checks, ctx, NULL)) ABORT;
|
||||
if (!BN_hex2bn(&a, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC")) ABORT;
|
||||
if (!BN_hex2bn(&b, "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1")) ABORT;
|
||||
if (!EC_GROUP_set_curve_GFp(group, p, a, b, ctx)) ABORT;
|
||||
@@ -377,7 +377,7 @@ void prime_field_tests()
|
||||
/* Curve P-224 (FIPS PUB 186-2, App. 6) */
|
||||
|
||||
if (!BN_hex2bn(&p, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001")) ABORT;
|
||||
if (1 != BN_is_prime(p, BN_prime_checks, 0, ctx, NULL)) ABORT;
|
||||
if (1 != BN_is_prime_ex(p, BN_prime_checks, ctx, NULL)) ABORT;
|
||||
if (!BN_hex2bn(&a, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE")) ABORT;
|
||||
if (!BN_hex2bn(&b, "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4")) ABORT;
|
||||
if (!EC_GROUP_set_curve_GFp(group, p, a, b, ctx)) ABORT;
|
||||
@@ -421,7 +421,7 @@ void prime_field_tests()
|
||||
/* Curve P-256 (FIPS PUB 186-2, App. 6) */
|
||||
|
||||
if (!BN_hex2bn(&p, "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF")) ABORT;
|
||||
if (1 != BN_is_prime(p, BN_prime_checks, 0, ctx, NULL)) ABORT;
|
||||
if (1 != BN_is_prime_ex(p, BN_prime_checks, ctx, NULL)) ABORT;
|
||||
if (!BN_hex2bn(&a, "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC")) ABORT;
|
||||
if (!BN_hex2bn(&b, "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B")) ABORT;
|
||||
if (!EC_GROUP_set_curve_GFp(group, p, a, b, ctx)) ABORT;
|
||||
@@ -467,7 +467,7 @@ void prime_field_tests()
|
||||
|
||||
if (!BN_hex2bn(&p, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||
"FFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF")) ABORT;
|
||||
if (1 != BN_is_prime(p, BN_prime_checks, 0, ctx, NULL)) ABORT;
|
||||
if (1 != BN_is_prime_ex(p, BN_prime_checks, ctx, NULL)) ABORT;
|
||||
if (!BN_hex2bn(&a, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||
"FFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC")) ABORT;
|
||||
if (!BN_hex2bn(&b, "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141"
|
||||
@@ -518,7 +518,7 @@ void prime_field_tests()
|
||||
if (!BN_hex2bn(&p, "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||
"FFFFFFFFFFFFFFFFFFFFFFFFFFFF")) ABORT;
|
||||
if (1 != BN_is_prime(p, BN_prime_checks, 0, ctx, NULL)) ABORT;
|
||||
if (1 != BN_is_prime_ex(p, BN_prime_checks, ctx, NULL)) ABORT;
|
||||
if (!BN_hex2bn(&a, "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||
"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
||||
"FFFFFFFFFFFFFFFFFFFFFFFFFFFC")) ABORT;
|
||||
|
||||
Reference in New Issue
Block a user