From: K1 Date: Tue, 16 Jan 2024 13:07:38 +0000 (+0800) Subject: Optimize the implementation of ec_field_size() X-Git-Tag: openssl-3.3.0-alpha1~247 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9170cc0398222778065e098e396b8eb8cd0de1d3;p=thirdparty%2Fopenssl.git Optimize the implementation of ec_field_size() No need to create and copy BIGNUM p, a and b, just call EC_GROUP_get0_field() instead. Reviewed-by: Tomas Mraz Reviewed-by: Paul Yang (Merged from https://github.com/openssl/openssl/pull/23313) --- diff --git a/crypto/sm2/sm2_crypt.c b/crypto/sm2/sm2_crypt.c index 971d348cce4..b2d048cb594 100644 --- a/crypto/sm2/sm2_crypt.c +++ b/crypto/sm2/sm2_crypt.c @@ -46,25 +46,12 @@ IMPLEMENT_ASN1_FUNCTIONS(SM2_Ciphertext) static size_t ec_field_size(const EC_GROUP *group) { - /* Is there some simpler way to do this? */ - BIGNUM *p = BN_new(); - BIGNUM *a = BN_new(); - BIGNUM *b = BN_new(); - size_t field_size = 0; + const BIGNUM *p = EC_GROUP_get0_field(group); - if (p == NULL || a == NULL || b == NULL) - goto done; - - if (!EC_GROUP_get_curve(group, p, a, b, NULL)) - goto done; - field_size = (BN_num_bits(p) + 7) / 8; - - done: - BN_free(p); - BN_free(a); - BN_free(b); + if (p == NULL) + return 0; - return field_size; + return BN_num_bytes(p); } int ossl_sm2_plaintext_size(const unsigned char *ct, size_t ct_size,