New ctrl to set current certificate.
[oweals/openssl.git] / crypto / evp / evp_lib.c
index b180e4828a8c8901727ffb7676203add0d82ba5c..2a87570b9e4fdd31b5a9f10a6903056ed614e828 100644 (file)
@@ -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);