summaryrefslogtreecommitdiffstats
path: root/crypto/rsa/rsa_ameth.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2006-04-17 17:12:23 +0000
committerDr. Stephen Henson <steve@openssl.org>2006-04-17 17:12:23 +0000
commit492a9e241550b537ef3db1719e18e9b795b6d24c (patch)
tree1246408b271690b8a67816951fc27fdaab0c69a4 /crypto/rsa/rsa_ameth.c
parent7bf7333d688264f6d389c1c3c87c127f484b2efa (diff)
Allow public key ASN1 methods to set PKCS#7 SignerInfo structures.
Diffstat (limited to 'crypto/rsa/rsa_ameth.c')
-rw-r--r--crypto/rsa/rsa_ameth.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/crypto/rsa/rsa_ameth.c b/crypto/rsa/rsa_ameth.c
index 4acc11db33..93b9f075c4 100644
--- a/crypto/rsa/rsa_ameth.c
+++ b/crypto/rsa/rsa_ameth.c
@@ -261,6 +261,29 @@ static int rsa_priv_print(BIO *bp, const EVP_PKEY *pkey, int indent,
return do_rsa_print(bp, pkey->pkey.rsa, indent, 1);
}
+
+static int rsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
+ {
+ 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;
+
+ default:
+ return -2;
+
+ }
+
+ }
+
+
const EVP_PKEY_ASN1_METHOD rsa_asn1_meths[] =
{
{
@@ -286,7 +309,7 @@ const EVP_PKEY_ASN1_METHOD rsa_asn1_meths[] =
0,0,0,0,0,0,
int_rsa_free,
- 0,
+ rsa_pkey_ctrl,
old_rsa_priv_decode,
old_rsa_priv_encode
},