From 4f1aa191b33f0bbda29c3289d50fee2991b77df0 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sat, 15 Mar 2008 23:21:33 +0000 Subject: Initial support for enveloped data decrypt. Extent runex.pl to cover these examples. All RFC4134 examples can not be processed. --- crypto/rsa/rsa_ameth.c | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) (limited to 'crypto/rsa/rsa_ameth.c') diff --git a/crypto/rsa/rsa_ameth.c b/crypto/rsa/rsa_ameth.c index 39fa9ec104..e705f16cb9 100644 --- a/crypto/rsa/rsa_ameth.c +++ b/crypto/rsa/rsa_ameth.c @@ -267,38 +267,29 @@ static int rsa_priv_print(BIO *bp, const EVP_PKEY *pkey, int indent, static int rsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) { + X509_ALGOR *alg = NULL; switch (op) { case ASN1_PKEY_CTRL_PKCS7_SIGN: if (arg1 == 0) - { - X509_ALGOR *alg; PKCS7_SIGNER_INFO_get0_algs(arg2, NULL, NULL, &alg); - X509_ALGOR_set0(alg, OBJ_nid2obj(NID_rsaEncryption), - V_ASN1_NULL, 0); - } - return 1; + break; case ASN1_PKEY_CTRL_PKCS7_ENCRYPT: if (arg1 == 0) - { - X509_ALGOR *alg; PKCS7_RECIP_INFO_get0_alg(arg2, &alg); - X509_ALGOR_set0(alg, OBJ_nid2obj(NID_rsaEncryption), - V_ASN1_NULL, 0); - } - return 1; + break; #ifndef OPENSSL_NO_CMS case ASN1_PKEY_CTRL_CMS_SIGN: if (arg1 == 0) - { - X509_ALGOR *alg; CMS_SignerInfo_get0_algs(arg2, NULL, NULL, NULL, &alg); - X509_ALGOR_set0(alg, OBJ_nid2obj(NID_rsaEncryption), - V_ASN1_NULL, 0); - } - return 1; + break; + + case ASN1_PKEY_CTRL_CMS_ENVELOPE: + if (arg1 == 0) + CMS_RecipientInfo_ktri_get0_algs(arg2, NULL, NULL, &alg); + break; #endif case ASN1_PKEY_CTRL_DEFAULT_MD_NID: @@ -310,6 +301,12 @@ static int rsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) } + if (alg) + X509_ALGOR_set0(alg, OBJ_nid2obj(NID_rsaEncryption), + V_ASN1_NULL, 0); + + return 1; + } -- cgit v1.2.3