diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2006-07-10 18:36:55 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2006-07-10 18:36:55 +0000 |
commit | b7683e3a5d93aa5319263b7bbfd0fee18f25955e (patch) | |
tree | 25f7f84a90273ae2ff3bfaf1e25052f1cf1ce5be /crypto/evp | |
parent | 0ee2166cc50cffba02514b686c6bf75c76ff2e62 (diff) |
Allow digests to supply S/MIME micalg values from a ctrl.
Send ctrls to EVP_PKEY_METHOD during signing of PKCS7 structure so
customisation is possible.
Diffstat (limited to 'crypto/evp')
-rw-r--r-- | crypto/evp/digest.c | 2 | ||||
-rw-r--r-- | crypto/evp/evp.h | 12 |
2 files changed, 11 insertions, 3 deletions
diff --git a/crypto/evp/digest.c b/crypto/evp/digest.c index 11d73388d4..256efd6e9d 100644 --- a/crypto/evp/digest.c +++ b/crypto/evp/digest.c @@ -332,6 +332,8 @@ int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx) OPENSSL_cleanse(ctx->md_data,ctx->digest->ctx_size); OPENSSL_free(ctx->md_data); } + if (ctx->pctx) + EVP_PKEY_CTX_free(ctx->pctx); #ifndef OPENSSL_NO_ENGINE if(ctx->engine) /* The EVP_MD we used belongs to an ENGINE, release the diff --git a/crypto/evp/evp.h b/crypto/evp/evp.h index 509f8579af..be16b5ecee 100644 --- a/crypto/evp/evp.h +++ b/crypto/evp/evp.h @@ -218,6 +218,7 @@ typedef int evp_verify_method(int type,const unsigned char *m, /* Digest ctrls */ #define EVP_MD_CTRL_DIGALGID 0x1 +#define EVP_MD_CTRL_MICALG 0x2 /* Minimum Algorithm specific ctrl value */ @@ -455,6 +456,9 @@ typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, #define EVP_SignDigestUpdate(a,b,c) EVP_DigestUpdate(a,b,c) #define EVP_VerifyDigestUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +#define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +#define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + #ifdef CONST_STRICT void BIO_set_md(BIO *,const EVP_MD *md); #else @@ -981,10 +985,12 @@ void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, EVP_PKEY_CTRL_MD, 0, (void *)md) #define EVP_PKEY_CTRL_MD 1 -#define EVP_PKEY_CTRL_PEER_KEY 2 +#define EVP_PKEY_CTRL_PEER_KEY 2 + +#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 -#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 -#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 +#define EVP_PKEY_CTRL_PKCS7_SIGN 5 #define EVP_PKEY_ALG_CTRL 0x1000 |