diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2008-03-12 21:14:28 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2008-03-12 21:14:28 +0000 |
commit | 8931b30d8478b0bd24af251fac64e7b0bf121369 (patch) | |
tree | 04d17028c745633b40b997699bc580c7b4cc600d /crypto/dsa | |
parent | 27dc105f51361fc71f556e927f621218883b0c26 (diff) |
And so it begins...
Initial support for CMS.
Add zlib compression BIO.
Add AES key wrap implementation.
Generalize S/MIME MIME code to support CMS and/or PKCS7.
Diffstat (limited to 'crypto/dsa')
-rw-r--r-- | crypto/dsa/Makefile | 15 | ||||
-rw-r--r-- | crypto/dsa/dsa_ameth.c | 21 | ||||
-rw-r--r-- | crypto/dsa/dsa_pmeth.c | 1 |
3 files changed, 22 insertions, 15 deletions
diff --git a/crypto/dsa/Makefile b/crypto/dsa/Makefile index 9cf490a046..d6a7070f9e 100644 --- a/crypto/dsa/Makefile +++ b/crypto/dsa/Makefile @@ -76,21 +76,6 @@ clean: # DO NOT DELETE THIS LINE -- make depend depends on it. -dsa_ameth.o: ../../e_os.h ../../include/openssl/asn1.h -dsa_ameth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h -dsa_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h -dsa_ameth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h -dsa_ameth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h -dsa_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h -dsa_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h -dsa_ameth.o: ../../include/openssl/objects.h -dsa_ameth.o: ../../include/openssl/opensslconf.h -dsa_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h -dsa_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h -dsa_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h -dsa_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h -dsa_ameth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h -dsa_ameth.o: dsa_ameth.c dsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h dsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h dsa_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h diff --git a/crypto/dsa/dsa_ameth.c b/crypto/dsa/dsa_ameth.c index be91821dda..a39f4ceac8 100644 --- a/crypto/dsa/dsa_ameth.c +++ b/crypto/dsa/dsa_ameth.c @@ -60,6 +60,9 @@ #include <openssl/x509.h> #include <openssl/asn1.h> #include <openssl/dsa.h> +#ifndef OPENSSL_NO_CMS +#include <openssl/cms.h> +#endif #include "asn1_locl.h" static int dsa_pub_decode(EVP_PKEY *pkey, X509_PUBKEY *pubkey) @@ -550,6 +553,24 @@ 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; +#ifndef OPENSSL_NO_CMS + case ASN1_PKEY_CTRL_CMS_SIGN: + if (arg1 == 0) + { + int snid, hnid; + X509_ALGOR *alg1, *alg2; + CMS_SignerInfo_get0_algs(arg2, NULL, NULL, &alg1, &alg2); + if (alg1 == NULL || alg1->algorithm == NULL) + return -1; + hnid = OBJ_obj2nid(alg1->algorithm); + if (hnid == NID_undef) + return -1; + if (!OBJ_find_sigid_by_algs(&snid, hnid, EVP_PKEY_id(pkey))) + return -1; + X509_ALGOR_set0(alg2, OBJ_nid2obj(snid), V_ASN1_UNDEF, 0); + } + return 1; +#endif case ASN1_PKEY_CTRL_DEFAULT_MD_NID: *(int *)arg2 = NID_sha1; diff --git a/crypto/dsa/dsa_pmeth.c b/crypto/dsa/dsa_pmeth.c index 646ef3f093..73db6d2122 100644 --- a/crypto/dsa/dsa_pmeth.c +++ b/crypto/dsa/dsa_pmeth.c @@ -195,6 +195,7 @@ static int pkey_dsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) return 1; case EVP_PKEY_CTRL_PKCS7_SIGN: + case EVP_PKEY_CTRL_CMS_SIGN: return 1; case EVP_PKEY_CTRL_PEER_KEY: |