diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2006-04-17 17:12:23 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2006-04-17 17:12:23 +0000 |
commit | 492a9e241550b537ef3db1719e18e9b795b6d24c (patch) | |
tree | 1246408b271690b8a67816951fc27fdaab0c69a4 /crypto/dsa/dsa_ameth.c | |
parent | 7bf7333d688264f6d389c1c3c87c127f484b2efa (diff) |
Allow public key ASN1 methods to set PKCS#7 SignerInfo structures.
Diffstat (limited to 'crypto/dsa/dsa_ameth.c')
-rw-r--r-- | crypto/dsa/dsa_ameth.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/crypto/dsa/dsa_ameth.c b/crypto/dsa/dsa_ameth.c index eafdc2e5d4..3178bac9bc 100644 --- a/crypto/dsa/dsa_ameth.c +++ b/crypto/dsa/dsa_ameth.c @@ -528,6 +528,29 @@ static int old_dsa_priv_encode(const EVP_PKEY *pkey, unsigned char **pder) return i2d_DSAPrivateKey(pkey->pkey.dsa, pder); } +static int dsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2) + { + switch (op) + { + case ASN1_PKEY_CTRL_PKCS7_SIGN: + if (arg1 == 0) + { + X509_ALGOR *alg1, *alg2; + PKCS7_SIGNER_INFO_get0_algs(arg2, NULL, &alg1, &alg2); + X509_ALGOR_set0(alg1, OBJ_nid2obj(NID_sha1), + V_ASN1_NULL, 0); + X509_ALGOR_set0(alg2, OBJ_nid2obj(NID_dsaWithSHA1), + V_ASN1_UNDEF, 0); + } + return 1; + + default: + return -2; + + } + + } + /* NB these are sorted in pkey_id order, lowest first */ const EVP_PKEY_ASN1_METHOD dsa_asn1_meths[] = @@ -585,7 +608,7 @@ const EVP_PKEY_ASN1_METHOD dsa_asn1_meths[] = dsa_param_print, int_dsa_free, - 0, + dsa_pkey_ctrl, old_dsa_priv_decode, old_dsa_priv_encode } |