From e61f5d55bc0072e75023be8971ae6e849643f466 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Mon, 5 Aug 2013 15:40:50 +0100 Subject: Algorithm parameter support. Check and set AlgorithmIdenfier parameters for key wrap algorithms. Currently these just set parameters to NULL. --- crypto/evp/evp_lib.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'crypto/evp/evp_lib.c') diff --git a/crypto/evp/evp_lib.c b/crypto/evp/evp_lib.c index b180e4828a..2a87570b9e 100644 --- a/crypto/evp/evp_lib.c +++ b/crypto/evp/evp_lib.c @@ -68,7 +68,15 @@ int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type) if (c->cipher->set_asn1_parameters != NULL) ret=c->cipher->set_asn1_parameters(c,type); else if (c->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) - ret=EVP_CIPHER_set_asn1_iv(c, type); + { + if (EVP_CIPHER_CTX_mode(c) == EVP_CIPH_WRAP_MODE) + { + ASN1_TYPE_set(type, V_ASN1_NULL, NULL); + ret = 1; + } + else + ret=EVP_CIPHER_set_asn1_iv(c, type); + } else ret=-1; return(ret); @@ -81,7 +89,11 @@ int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type) if (c->cipher->get_asn1_parameters != NULL) ret=c->cipher->get_asn1_parameters(c,type); else if (c->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1) + { + if (EVP_CIPHER_CTX_mode(c) == EVP_CIPH_WRAP_MODE) + return 1; ret=EVP_CIPHER_get_asn1_iv(c, type); + } else ret=-1; return(ret); -- cgit v1.2.3