summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2013-07-17 15:18:01 +0100
committerDr. Stephen Henson <steve@openssl.org>2013-10-01 14:01:18 +0100
commitdc427fc8e2f5f1212e4fe2c00409ab220bc0ebe1 (patch)
treeb6dae073f721486268f2d78bf3976ba05e40eda0
parente1e6c4dae7c84e5a77c66e5cd8cd894aed5820bf (diff)
downloadopenssl-new-dc427fc8e2f5f1212e4fe2c00409ab220bc0ebe1.tar.gz
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)
-rw-r--r--crypto/dsa/dsa_ameth.c4
-rw-r--r--crypto/rsa/rsa_ameth.c4
2 files changed, 8 insertions, 0 deletions
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: