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 | |
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/ec')
-rw-r--r-- | crypto/ec/ec_ameth.c | 22 | ||||
-rw-r--r-- | crypto/ec/ec_pmeth.c | 1 |
2 files changed, 23 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; diff --git a/crypto/ec/ec_pmeth.c b/crypto/ec/ec_pmeth.c index 3f137b892a..6c986110b8 100644 --- a/crypto/ec/ec_pmeth.c +++ b/crypto/ec/ec_pmeth.c @@ -235,6 +235,7 @@ static int pkey_ec_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) case EVP_PKEY_CTRL_PEER_KEY: /* Default behaviour is OK */ case EVP_PKEY_CTRL_PKCS7_SIGN: + case EVP_PKEY_CTRL_CMS_SIGN: return 1; default: |