mirror of
https://github.com/openssl/openssl.git
synced 2024-12-09 05:51:54 +08:00
ec_kmgmt.c: Do not crash when getting OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY
If the public key is not set on the key, return error instead of crash. Fixes #18495 Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18902)
This commit is contained in:
parent
2c05607cd9
commit
b5db237def
@ -637,8 +637,10 @@ int common_get_params(void *key, OSSL_PARAM params[], int sm2)
|
||||
BN_CTX *bnctx = NULL;
|
||||
|
||||
ecg = EC_KEY_get0_group(eck);
|
||||
if (ecg == NULL)
|
||||
if (ecg == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, PROV_R_NO_PARAMETERS_SET);
|
||||
return 0;
|
||||
}
|
||||
|
||||
libctx = ossl_ec_key_get_libctx(eck);
|
||||
propq = ossl_ec_key_get0_propq(eck);
|
||||
@ -727,8 +729,13 @@ int common_get_params(void *key, OSSL_PARAM params[], int sm2)
|
||||
}
|
||||
if ((p = OSSL_PARAM_locate(params,
|
||||
OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY)) != NULL) {
|
||||
p->return_size = EC_POINT_point2oct(EC_KEY_get0_group(key),
|
||||
EC_KEY_get0_public_key(key),
|
||||
const EC_POINT *ecp = EC_KEY_get0_public_key(key);
|
||||
|
||||
if (ecp == NULL) {
|
||||
ERR_raise(ERR_LIB_PROV, PROV_R_NOT_A_PUBLIC_KEY);
|
||||
goto err;
|
||||
}
|
||||
p->return_size = EC_POINT_point2oct(ecg, ecp,
|
||||
POINT_CONVERSION_UNCOMPRESSED,
|
||||
p->data, p->return_size, bnctx);
|
||||
if (p->return_size == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user