mirror of https://github.com/openssl/openssl.git
provider: return error if buf too small when getting ec pubkey param
Fixes #20889
There was an incorrect value passed to EC_POINT_point2oct() for the
buffer size of the param passed-in.
Added testcases.
Signed-off-by: Yi Li <yi1.li@intel.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20890)
(cherry picked from commit 91070877ad)
This commit is contained in:
parent
69987f9397
commit
3a361c68a4
|
|
@ -745,7 +745,7 @@ int common_get_params(void *key, OSSL_PARAM params[], int sm2)
|
|||
}
|
||||
p->return_size = EC_POINT_point2oct(ecg, ecp,
|
||||
POINT_CONVERSION_UNCOMPRESSED,
|
||||
p->data, p->return_size, bnctx);
|
||||
p->data, p->data_size, bnctx);
|
||||
if (p->return_size == 0)
|
||||
goto err;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -899,6 +899,8 @@ static int test_EC_priv_pub(void)
|
|||
BIGNUM *priv = NULL;
|
||||
int ret = 0;
|
||||
unsigned char *encoded = NULL;
|
||||
size_t len = 0;
|
||||
unsigned char buffer[128];
|
||||
|
||||
/*
|
||||
* Setup the parameters for our pkey object. For our purposes they don't
|
||||
|
|
@ -1018,6 +1020,26 @@ static int test_EC_priv_pub(void)
|
|||
goto err;
|
||||
}
|
||||
|
||||
/* Positive and negative testcase for EVP_PKEY_get_octet_string_param */
|
||||
if (!TEST_int_eq(EVP_PKEY_get_octet_string_param(params_and_pub,
|
||||
OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
|
||||
buffer, sizeof(buffer), &len), 1)
|
||||
|| !TEST_int_eq(len, 65))
|
||||
goto err;
|
||||
|
||||
len = 0;
|
||||
if (!TEST_int_eq(EVP_PKEY_get_octet_string_param(params_and_pub,
|
||||
OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
|
||||
NULL, 0, &len), 1)
|
||||
|| !TEST_int_eq(len, 65))
|
||||
goto err;
|
||||
|
||||
/* too-short buffer len*/
|
||||
if (!TEST_int_eq(EVP_PKEY_get_octet_string_param(params_and_pub,
|
||||
OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
|
||||
buffer, 10, &len), 0))
|
||||
goto err;
|
||||
|
||||
ret = 1;
|
||||
err:
|
||||
OSSL_PARAM_free(params);
|
||||
|
|
|
|||
Loading…
Reference in New Issue