]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
prov: support param argument to DES cipher init calls
authorPauli <ppzgs1@gmail.com>
Tue, 2 Mar 2021 12:45:34 +0000 (22:45 +1000)
committerPauli <ppzgs1@gmail.com>
Thu, 11 Mar 2021 22:27:21 +0000 (08:27 +1000)
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/14383)

providers/implementations/ciphers/cipher_des.c
providers/implementations/ciphers/cipher_tdes_common.c

index 32cab17b3ef871fb0aa336aa071eb5cdf8fac143..9010ce90992d77e844a6da758b19d797dff1e11a 100644 (file)
@@ -71,7 +71,8 @@ static void des_freectx(void *vctx)
 }
 
 static int des_init(void *vctx, const unsigned char *key, size_t keylen,
-                    const unsigned char *iv, size_t ivlen, int enc)
+                    const unsigned char *iv, size_t ivlen,
+                    const OSSL_PARAM params[], int enc)
 {
     PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
 
@@ -92,21 +93,24 @@ static int des_init(void *vctx, const unsigned char *key, size_t keylen,
             ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_KEY_LENGTH);
             return 0;
         }
-        return ctx->hw->init(ctx, key, keylen);
+        if (!ctx->hw->init(ctx, key, keylen))
+            return 0;
     }
-    return 1;
+    return ossl_cipher_generic_set_ctx_params(ctx, params);
 }
 
 static int des_einit(void *vctx, const unsigned char *key, size_t keylen,
-                     const unsigned char *iv, size_t ivlen)
+                     const unsigned char *iv, size_t ivlen,
+                     const OSSL_PARAM params[])
 {
-    return des_init(vctx, key, keylen, iv, ivlen, 1);
+    return des_init(vctx, key, keylen, iv, ivlen, params, 1);
 }
 
 static int des_dinit(void *vctx, const unsigned char *key, size_t keylen,
-                     const unsigned char *iv, size_t ivlen)
+                     const unsigned char *iv, size_t ivlen,
+                     const OSSL_PARAM params[])
 {
-    return des_init(vctx, key, keylen, iv, ivlen, 0);
+    return des_init(vctx, key, keylen, iv, ivlen, params, 0);
 }
 
 static int des_generatekey(PROV_CIPHER_CTX *ctx, void *ptr)
index f0fd03ff4ba29a712628b8112ff758e8a5e58bc0..048b08661d532d9a0e64e1e48caa3aa379a00022 100644 (file)
@@ -62,7 +62,8 @@ void ossl_tdes_freectx(void *vctx)
 }
 
 static int tdes_init(void *vctx, const unsigned char *key, size_t keylen,
-                     const unsigned char *iv, size_t ivlen, int enc)
+                     const unsigned char *iv, size_t ivlen,
+                     const OSSL_PARAM params[], int enc)
 {
     PROV_CIPHER_CTX *ctx = (PROV_CIPHER_CTX *)vctx;
 
@@ -83,21 +84,24 @@ static int tdes_init(void *vctx, const unsigned char *key, size_t keylen,
             ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_KEY_LENGTH);
             return 0;
         }
-        return ctx->hw->init(ctx, key, ctx->keylen);
+        if (!ctx->hw->init(ctx, key, ctx->keylen))
+            return 0;
     }
-    return 1;
+    return ossl_cipher_generic_set_ctx_params(ctx, params);
 }
 
 int ossl_tdes_einit(void *vctx, const unsigned char *key, size_t keylen,
-                    const unsigned char *iv, size_t ivlen)
+                    const unsigned char *iv, size_t ivlen,
+                    const OSSL_PARAM params[])
 {
-    return tdes_init(vctx, key, keylen, iv, ivlen, 1);
+    return tdes_init(vctx, key, keylen, iv, ivlen, params, 1);
 }
 
 int ossl_tdes_dinit(void *vctx, const unsigned char *key, size_t keylen,
-                    const unsigned char *iv, size_t ivlen)
+                    const unsigned char *iv, size_t ivlen,
+                    const OSSL_PARAM params[])
 {
-    return tdes_init(vctx, key, keylen, iv, ivlen, 0);
+    return tdes_init(vctx, key, keylen, iv, ivlen, params, 0);
 }
 
 CIPHER_DEFAULT_GETTABLE_CTX_PARAMS_START(ossl_tdes)