From: Shane Lontis Date: Tue, 15 Sep 2020 04:45:49 +0000 (+1000) Subject: Fix ec keygen so that it passes the library context to SSL_SELF_TEST_get_callback(). X-Git-Tag: openssl-3.0.0-alpha7~187 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7889e7aef821c0c9917188d59f53253645c07928;p=thirdparty%2Fopenssl.git Fix ec keygen so that it passes the library context to SSL_SELF_TEST_get_callback(). This was written before the ec key contained a library context, now that it contains a libctx it can be passed correctly to the callback. Reviewed-by: Tomas Mraz Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/12877) --- diff --git a/crypto/ec/ec_key.c b/crypto/ec/ec_key.c index f1f325237eb..75c3588a954 100644 --- a/crypto/ec/ec_key.c +++ b/crypto/ec/ec_key.c @@ -256,7 +256,7 @@ int ossl_ec_key_gen(EC_KEY *eckey) * fails then the keypair is not generated, * Returns 1 if the keypair was generated or 0 otherwise. */ -int ec_generate_key(OPENSSL_CTX *libctx, EC_KEY *eckey, int pairwise_test) +static int ec_generate_key(EC_KEY *eckey, int pairwise_test) { int ok = 0; BIGNUM *priv_key = NULL; @@ -325,7 +325,7 @@ int ec_generate_key(OPENSSL_CTX *libctx, EC_KEY *eckey, int pairwise_test) OSSL_CALLBACK *cb = NULL; void *cbarg = NULL; - OSSL_SELF_TEST_get_callback(libctx, &cb, &cbarg); + OSSL_SELF_TEST_get_callback(eckey->libctx, &cb, &cbarg); ok = ecdsa_keygen_pairwise_test(eckey, cb, cbarg); } err: @@ -345,7 +345,7 @@ err: int ec_key_simple_generate_key(EC_KEY *eckey) { - return ec_generate_key(NULL, eckey, 0); + return ec_generate_key(eckey, 0); } int ec_key_simple_generate_public_key(EC_KEY *eckey) diff --git a/include/crypto/ec.h b/include/crypto/ec.h index 071fbcad192..8e8fa3d8258 100644 --- a/include/crypto/ec.h +++ b/include/crypto/ec.h @@ -49,7 +49,6 @@ int ecdh_KDF_X9_63(unsigned char *out, size_t outlen, const unsigned char *sinfo, size_t sinfolen, const EVP_MD *md, OPENSSL_CTX *libctx, const char *propq); -int ec_generate_key(OPENSSL_CTX *libctx, EC_KEY *eckey, int pairwise_test); int ec_key_public_check(const EC_KEY *eckey, BN_CTX *ctx); int ec_key_private_check(const EC_KEY *eckey); int ec_key_pairwise_check(const EC_KEY *eckey, BN_CTX *ctx);