summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2019-08-15 11:01:07 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2019-08-22 06:57:33 +0200
commit4fd4be0576166f0b360d22744e143cd7847b0c29 (patch)
tree09a52063bfead898afa072bed24ee9af43bfdd49
parentcrypto: ux500/des - switch to new verification routines (diff)
downloadlinux-4fd4be0576166f0b360d22744e143cd7847b0c29.tar.xz
linux-4fd4be0576166f0b360d22744e143cd7847b0c29.zip
crypto: 3des - move verification out of exported routine
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>
-rw-r--r--arch/x86/crypto/des3_ede_glue.c4
-rw-r--r--crypto/des_generic.c10
2 files changed, 9 insertions, 5 deletions
diff --git a/arch/x86/crypto/des3_ede_glue.c b/arch/x86/crypto/des3_ede_glue.c
index 968386c21ef4..ec608babc22b 100644
--- a/arch/x86/crypto/des3_ede_glue.c
+++ b/arch/x86/crypto/des3_ede_glue.c
@@ -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)
diff --git a/crypto/des_generic.c b/crypto/des_generic.c
index c4d8ecda4ddf..f15ae7660f1b 100644
--- a/crypto/des_generic.c
+++ b/crypto/des_generic.c
@@ -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);
}