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/ec/ec_ameth.c | |
parent | 27dc105f51361fc71f556e927f621218883b0c26 (diff) | |
download | openssl-8931b30d8478b0bd24af251fac64e7b0bf121369.tar.gz |
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/ec/ec_ameth.c')
-rw-r--r-- | crypto/ec/ec_ameth.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/crypto/ec/ec_ameth.c b/crypto/ec/ec_ameth.c index 0b31edd481..b10e944d3e 100644 --- a/crypto/ec/ec_ameth.c +++ b/crypto/ec/ec_ameth.c @@ -59,6 +59,9 @@ #include "cryptlib.h" #include <openssl/x509.h> #include <openssl/ec.h> +#ifndef OPENSSL_NO_CMS +#include <openssl/cms.h> +#endif #include "asn1_locl.h" static int eckey_param2type(int *pptype, void **ppval, EC_KEY *ec_key) @@ -590,6 +593,25 @@ static int ec_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; |