From: Dr. Stephen Henson Date: Wed, 17 Jul 2013 14:18:01 +0000 (+0100) Subject: Return correct enveloped data type in ASN1 methods. X-Git-Tag: OpenSSL_1_0_2-beta1~223 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dc427fc8e2f5f1212e4fe2c00409ab220bc0ebe1;p=openssl Return correct enveloped data type in ASN1 methods. For RSA and DSA keys return an appropriate RecipientInfo type. By setting CMS_RECIPINFO_NONE for DSA keys an appropriate error is returned if an attempt is made to use DSA with enveloped data. (cherry picked from commit 41b920ef01abeb4c4b1c0f11e647370ae6533d02) --- diff --git a/crypto/dsa/dsa_ameth.c b/crypto/dsa/dsa_ameth.c index 376156ec5e..cdf49ac862 100644 --- a/crypto/dsa/dsa_ameth.c +++ b/crypto/dsa/dsa_ameth.c @@ -625,6 +625,10 @@ static int dsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) X509_ALGOR_set0(alg2, OBJ_nid2obj(snid), V_ASN1_UNDEF, 0); } return 1; + + case ASN1_PKEY_CTRL_CMS_RI_TYPE: + *(int *)arg2 = CMS_RECIPINFO_NONE; + return 1; #endif case ASN1_PKEY_CTRL_DEFAULT_MD_NID: diff --git a/crypto/rsa/rsa_ameth.c b/crypto/rsa/rsa_ameth.c index bc6a578634..db926b0e42 100644 --- a/crypto/rsa/rsa_ameth.c +++ b/crypto/rsa/rsa_ameth.c @@ -448,6 +448,10 @@ static int rsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) else if (arg1 == 1) return rsa_cms_decrypt(arg2); break; + + case ASN1_PKEY_CTRL_CMS_RI_TYPE: + *(int *)arg2 = CMS_RECIPINFO_TRANS; + return 1; #endif case ASN1_PKEY_CTRL_DEFAULT_MD_NID: