crypto: 3des - move verification out of exported routine
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 15 Aug 2019 09:01:07 +0000 (12:01 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 22 Aug 2019 04:57:33 +0000 (14:57 +1000)
In preparation of moving the shared key expansion routine into the
DES library, move the verification done by __des3_ede_setkey() into
its callers.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/des3_ede_glue.c
crypto/des_generic.c

index 968386c21ef45ca6d64bcb2c5cdf6e0f0f867990..ec608babc22b6824ea33da985bcb1d5bfffad0b1 100644 (file)
@@ -348,6 +348,10 @@ static int des3_ede_x86_setkey(struct crypto_tfm *tfm, const u8 *key,
        u32 i, j, tmp;
        int err;
 
+       err = crypto_des3_ede_verify_key(tfm, key);
+       if (err)
+               return err;
+
        /* Generate encryption context using generic implementation. */
        err = __des3_ede_setkey(ctx->enc_expkey, &tfm->crt_flags, key, keylen);
        if (err < 0)
index c4d8ecda4ddf09dafeb25f5511d1fa826b66f7f5..f15ae7660f1bd48d140487a1c0fb20d317a4c11a 100644 (file)
@@ -846,10 +846,6 @@ int __des3_ede_setkey(u32 *expkey, u32 *flags, const u8 *key,
 {
        int err;
 
-       err = __des3_verify_key(flags, key);
-       if (unlikely(err))
-               return err;
-
        des_ekey(expkey, key); expkey += DES_EXPKEY_WORDS; key += DES_KEY_SIZE;
        dkey(expkey, key); expkey += DES_EXPKEY_WORDS; key += DES_KEY_SIZE;
        des_ekey(expkey, key);
@@ -862,8 +858,12 @@ static int des3_ede_setkey(struct crypto_tfm *tfm, const u8 *key,
                           unsigned int keylen)
 {
        struct des3_ede_ctx *dctx = crypto_tfm_ctx(tfm);
-       u32 *flags = &tfm->crt_flags;
        u32 *expkey = dctx->expkey;
+       int err;
+
+       err = crypto_des3_ede_verify_key(tfm, key);
+       if (err)
+               return err;
 
        return __des3_ede_setkey(expkey, flags, key, keylen);
 }