summaryrefslogtreecommitdiffstats
path: root/crypto/cms
diff options
context:
space:
mode:
authorTomas Mraz <tomas@openssl.org>2021-01-25 19:12:43 +0100
committerTomas Mraz <tomas@openssl.org>2021-02-02 16:50:32 +0100
commit6a1a6498ac4ecfb95331e30fc52d6e25cafbba43 (patch)
tree012d422165807cefcdf48d1fcf9382866ef2b750 /crypto/cms
parentaf403db090ee66715e81f0062d1ef614e8d921b5 (diff)
dh_cms_set_peerkey: Pad the public key to p size
Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/13958)
Diffstat (limited to 'crypto/cms')
-rw-r--r--crypto/cms/cms_dh.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/crypto/cms/cms_dh.c b/crypto/cms/cms_dh.c
index 52bce12c73..e55b4a062f 100644
--- a/crypto/cms/cms_dh.c
+++ b/crypto/cms/cms_dh.c
@@ -48,7 +48,11 @@ static int dh_cms_set_peerkey(EVP_PKEY_CTX *pctx,
if ((public_key = d2i_ASN1_INTEGER(NULL, &p, plen)) == NULL)
goto err;
- plen = ASN1_STRING_length((ASN1_STRING *)public_key);
+ /*
+ * Pad to full p parameter size as that is checked by
+ * EVP_PKEY_set1_encoded_public_key()
+ */
+ plen = EVP_PKEY_size(pk);
if ((bnpub = ASN1_INTEGER_to_BN(public_key, NULL)) == NULL)
goto err;
if ((buf = OPENSSL_malloc(plen)) == NULL)