Skip to content

Commit

Permalink
ec_kmgmt.c: Do not crash when getting OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY
Browse files Browse the repository at this point in the history
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 #18902)

(cherry picked from commit b5db237)
  • Loading branch information
t8m committed Aug 18, 2022
1 parent 682d4a1 commit 93bb2c4
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions providers/implementations/keymgmt/ec_kmgmt.c
Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 93bb2c4

Please sign in to comment.