crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN
authorEric Biggers <ebiggers@google.com>
Tue, 31 Dec 2019 03:19:36 +0000 (21:19 -0600)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 9 Jan 2020 03:30:53 +0000 (11:30 +0800)
The CRYPTO_TFM_RES_BAD_KEY_LEN flag was apparently meant as a way to
make the ->setkey() functions provide more information about errors.

However, no one actually checks for this flag, which makes it pointless.

Also, many algorithms fail to set this flag when given a bad length key.
Reviewing just the generic implementations, this is the case for
aes-fixed-time, cbcmac, echainiv, nhpoly1305, pcrypt, rfc3686, rfc4309,
rfc7539, rfc7539esp, salsa20, seqiv, and xcbc.  But there are probably
many more in arch/*/crypto/ and drivers/crypto/.

Some algorithms can even set this flag when the key is the correct
length.  For example, authenc and authencesn set it when the key payload
is malformed in any way (not just a bad length), the atmel-sha and ccree
drivers can set it if a memory allocation fails, and the chelsio driver
sets it for bad auth tag lengths, not just bad key lengths.

So even if someone actually wanted to start checking this flag (which
seems unlikely, since it's been unused for a long time), there would be
a lot of work needed to get it working correctly.  But it would probably
be much better to go back to the drawing board and just define different
return values, like -EINVAL if the key is invalid for the algorithm vs.
-EKEYREJECTED if the key was rejected by a policy like "no weak keys".
That would be much simpler, less error-prone, and easier to test.

So just remove this flag.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
93 files changed:
arch/arm/crypto/aes-ce-glue.c
arch/arm/crypto/crc32-ce-glue.c
arch/arm/crypto/ghash-ce-glue.c
arch/arm64/crypto/aes-ce-ccm-glue.c
arch/arm64/crypto/aes-ce-glue.c
arch/arm64/crypto/aes-glue.c
arch/arm64/crypto/ghash-ce-glue.c
arch/mips/crypto/crc32-mips.c
arch/powerpc/crypto/aes-spe-glue.c
arch/powerpc/crypto/crc32c-vpmsum_glue.c
arch/s390/crypto/aes_s390.c
arch/s390/crypto/crc32-vx.c
arch/s390/crypto/ghash_s390.c
arch/s390/crypto/paes_s390.c
arch/sparc/crypto/aes_glue.c
arch/sparc/crypto/camellia_glue.c
arch/sparc/crypto/crc32c_glue.c
arch/x86/crypto/aegis128-aesni-glue.c
arch/x86/crypto/aesni-intel_glue.c
arch/x86/crypto/blake2s-glue.c
arch/x86/crypto/camellia_aesni_avx2_glue.c
arch/x86/crypto/camellia_aesni_avx_glue.c
arch/x86/crypto/camellia_glue.c
arch/x86/crypto/cast6_avx_glue.c
arch/x86/crypto/crc32-pclmul_glue.c
arch/x86/crypto/crc32c-intel_glue.c
arch/x86/crypto/ghash-clmulni-intel_glue.c
arch/x86/crypto/twofish_avx_glue.c
arch/x86/include/asm/crypto/camellia.h
crypto/aegis128-core.c
crypto/aes_generic.c
crypto/anubis.c
crypto/authenc.c
crypto/authencesn.c
crypto/blake2b_generic.c
crypto/blake2s_generic.c
crypto/camellia_generic.c
crypto/cast6_generic.c
crypto/cipher.c
crypto/crc32_generic.c
crypto/crc32c_generic.c
crypto/essiv.c
crypto/ghash-generic.c
crypto/michael_mic.c
crypto/skcipher.c
crypto/sm4_generic.c
crypto/twofish_common.c
crypto/vmac.c
crypto/xxhash_generic.c
drivers/crypto/allwinner/sun4i-ss/sun4i-ss-cipher.c
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
drivers/crypto/amcc/crypto4xx_alg.c
drivers/crypto/amlogic/amlogic-gxl-cipher.c
drivers/crypto/atmel-aes.c
drivers/crypto/axis/artpec6_crypto.c
drivers/crypto/bcm/cipher.c
drivers/crypto/caam/caamalg.c
drivers/crypto/caam/caamalg_qi.c
drivers/crypto/caam/caamalg_qi2.c
drivers/crypto/caam/caamhash.c
drivers/crypto/cavium/cpt/cptvf_algs.c
drivers/crypto/cavium/nitrox/nitrox_aead.c
drivers/crypto/cavium/nitrox/nitrox_skcipher.c
drivers/crypto/ccp/ccp-crypto-aes-cmac.c
drivers/crypto/ccp/ccp-crypto-aes-galois.c
drivers/crypto/ccp/ccp-crypto-aes.c
drivers/crypto/ccp/ccp-crypto-sha.c
drivers/crypto/ccree/cc_aead.c
drivers/crypto/ccree/cc_cipher.c
drivers/crypto/ccree/cc_hash.c
drivers/crypto/chelsio/chcr_algo.c
drivers/crypto/geode-aes.c
drivers/crypto/inside-secure/safexcel_cipher.c
drivers/crypto/inside-secure/safexcel_hash.c
drivers/crypto/ixp4xx_crypto.c
drivers/crypto/marvell/cipher.c
drivers/crypto/mediatek/mtk-aes.c
drivers/crypto/n2_core.c
drivers/crypto/padlock-aes.c
drivers/crypto/picoxcell_crypto.c
drivers/crypto/qat/qat_common/qat_algs.c
drivers/crypto/qce/sha.c
drivers/crypto/rockchip/rk3288_crypto_skcipher.c
drivers/crypto/stm32/stm32-crc32.c
drivers/crypto/talitos.c
drivers/crypto/ux500/cryp/cryp_core.c
drivers/crypto/virtio/virtio_crypto_algs.c
include/crypto/cast6.h
include/crypto/internal/des.h
include/crypto/twofish.h
include/crypto/xts.h
include/linux/crypto.h

index cdb1a07e7ad0a03a00b7c1d99158874e9095c5ff..b668c97663ec0cf6b683f0ad1b763697dae48b56 100644 (file)
@@ -138,14 +138,8 @@ static int ce_aes_setkey(struct crypto_skcipher *tfm, const u8 *in_key,
                         unsigned int key_len)
 {
        struct crypto_aes_ctx *ctx = crypto_skcipher_ctx(tfm);
-       int ret;
-
-       ret = ce_aes_expandkey(ctx, in_key, key_len);
-       if (!ret)
-               return 0;
 
-       crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
+       return ce_aes_expandkey(ctx, in_key, key_len);
 }
 
 struct crypto_aes_xts_ctx {
@@ -167,11 +161,7 @@ static int xts_set_key(struct crypto_skcipher *tfm, const u8 *in_key,
        if (!ret)
                ret = ce_aes_expandkey(&ctx->key2, &in_key[key_len / 2],
                                       key_len / 2);
-       if (!ret)
-               return 0;
-
-       crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
+       return ret;
 }
 
 static int ecb_encrypt(struct skcipher_request *req)
index 95592499b9bd59cbeb7cce2b7fac06c98558ebc5..2208445808d7d218aeef4872aa3c161f517f0976 100644 (file)
@@ -54,10 +54,8 @@ static int crc32_setkey(struct crypto_shash *hash, const u8 *key,
 {
        u32 *mctx = crypto_shash_ctx(hash);
 
-       if (keylen != sizeof(u32)) {
-               crypto_shash_set_flags(hash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
        *mctx = le32_to_cpup((__le32 *)key);
        return 0;
 }
index c691077679a63140941afc8d3f308db28503936a..7e8b2f55685c51fb5edd201b9b08df53b2942feb 100644 (file)
@@ -163,10 +163,8 @@ static int ghash_setkey(struct crypto_shash *tfm,
        struct ghash_key *key = crypto_shash_ctx(tfm);
        be128 h;
 
-       if (keylen != GHASH_BLOCK_SIZE) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != GHASH_BLOCK_SIZE)
                return -EINVAL;
-       }
 
        /* needed for the fallback */
        memcpy(&key->k, inkey, GHASH_BLOCK_SIZE);
index 541cf9165748f31c722b4508121890ddc779f715..f6d19b0dc893f44ba5059589754bad556d167ec1 100644 (file)
@@ -47,14 +47,8 @@ static int ccm_setkey(struct crypto_aead *tfm, const u8 *in_key,
                      unsigned int key_len)
 {
        struct crypto_aes_ctx *ctx = crypto_aead_ctx(tfm);
-       int ret;
 
-       ret = ce_aes_expandkey(ctx, in_key, key_len);
-       if (!ret)
-               return 0;
-
-       tfm->base.crt_flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
-       return -EINVAL;
+       return ce_aes_expandkey(ctx, in_key, key_len);
 }
 
 static int ccm_setauthsize(struct crypto_aead *tfm, unsigned int authsize)
index 6d085dc56c5123b8c0c053f256f73a2744f070b3..56a5f6f0b0c123ac8668b0125b4b04bb9af052ed 100644 (file)
@@ -143,14 +143,8 @@ int ce_aes_setkey(struct crypto_tfm *tfm, const u8 *in_key,
                  unsigned int key_len)
 {
        struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
-       int ret;
 
-       ret = ce_aes_expandkey(ctx, in_key, key_len);
-       if (!ret)
-               return 0;
-
-       tfm->crt_flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
-       return -EINVAL;
+       return ce_aes_expandkey(ctx, in_key, key_len);
 }
 EXPORT_SYMBOL(ce_aes_setkey);
 
index aa57dc639f77fbef95a1dc3c042fdaa58487c44d..ed5409c6abf4e99183d3a59b19a8f11e766b80ca 100644 (file)
@@ -132,13 +132,8 @@ static int skcipher_aes_setkey(struct crypto_skcipher *tfm, const u8 *in_key,
                               unsigned int key_len)
 {
        struct crypto_aes_ctx *ctx = crypto_skcipher_ctx(tfm);
-       int ret;
-
-       ret = aes_expandkey(ctx, in_key, key_len);
-       if (ret)
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
 
-       return ret;
+       return aes_expandkey(ctx, in_key, key_len);
 }
 
 static int __maybe_unused xts_set_key(struct crypto_skcipher *tfm,
@@ -155,11 +150,7 @@ static int __maybe_unused xts_set_key(struct crypto_skcipher *tfm,
        if (!ret)
                ret = aes_expandkey(&ctx->key2, &in_key[key_len / 2],
                                    key_len / 2);
-       if (!ret)
-               return 0;
-
-       crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
+       return ret;
 }
 
 static int __maybe_unused essiv_cbc_set_key(struct crypto_skcipher *tfm,
@@ -173,19 +164,12 @@ static int __maybe_unused essiv_cbc_set_key(struct crypto_skcipher *tfm,
 
        ret = aes_expandkey(&ctx->key1, in_key, key_len);
        if (ret)
-               goto out;
+               return ret;
 
        desc->tfm = ctx->hash;
        crypto_shash_digest(desc, in_key, key_len, digest);
 
-       ret = aes_expandkey(&ctx->key2, digest, sizeof(digest));
-       if (ret)
-               goto out;
-
-       return 0;
-out:
-       crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
+       return aes_expandkey(&ctx->key2, digest, sizeof(digest));
 }
 
 static int __maybe_unused ecb_encrypt(struct skcipher_request *req)
@@ -791,13 +775,8 @@ static int cbcmac_setkey(struct crypto_shash *tfm, const u8 *in_key,
                         unsigned int key_len)
 {
        struct mac_tfm_ctx *ctx = crypto_shash_ctx(tfm);
-       int err;
 
-       err = aes_expandkey(&ctx->key, in_key, key_len);
-       if (err)
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-
-       return err;
+       return aes_expandkey(&ctx->key, in_key, key_len);
 }
 
 static void cmac_gf128_mul_by_x(be128 *y, const be128 *x)
index 196aedd0c20cf3b437b954652d0f8bd75405a568..22831d3b7f62b10ef654e30d2d16833df06844d5 100644 (file)
@@ -248,10 +248,8 @@ static int ghash_setkey(struct crypto_shash *tfm,
 {
        struct ghash_key *key = crypto_shash_ctx(tfm);
 
-       if (keylen != GHASH_BLOCK_SIZE) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != GHASH_BLOCK_SIZE)
                return -EINVAL;
-       }
 
        return __ghash_setkey(key, inkey, keylen);
 }
@@ -306,10 +304,8 @@ static int gcm_setkey(struct crypto_aead *tfm, const u8 *inkey,
        int ret;
 
        ret = aes_expandkey(&ctx->aes_key, inkey, keylen);
-       if (ret) {
-               tfm->base.crt_flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (ret)
                return -EINVAL;
-       }
 
        aes_encrypt(&ctx->aes_key, key, (u8[AES_BLOCK_SIZE]){});
 
index 7d1d2425746fa7bee6b934f5cd90c97b773c0bab..faa88a6a74c0dfd6787e3c760a23cf37fc1f15c2 100644 (file)
@@ -177,10 +177,8 @@ static int chksum_setkey(struct crypto_shash *tfm, const u8 *key,
 {
        struct chksum_ctx *mctx = crypto_shash_ctx(tfm);
 
-       if (keylen != sizeof(mctx->key)) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(mctx->key))
                return -EINVAL;
-       }
        mctx->key = get_unaligned_le32(key);
        return 0;
 }
index 1fad5d4c658d183f9e601d8f389fae0b9b88dcf8..c2b23b69d7b1dadf90936629cb39c18e7519c533 100644 (file)
@@ -94,13 +94,6 @@ static int ppc_aes_setkey(struct crypto_tfm *tfm, const u8 *in_key,
 {
        struct ppc_aes_ctx *ctx = crypto_tfm_ctx(tfm);
 
-       if (key_len != AES_KEYSIZE_128 &&
-           key_len != AES_KEYSIZE_192 &&
-           key_len != AES_KEYSIZE_256) {
-               tfm->crt_flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
-               return -EINVAL;
-       }
-
        switch (key_len) {
        case AES_KEYSIZE_128:
                ctx->rounds = 4;
@@ -114,6 +107,8 @@ static int ppc_aes_setkey(struct crypto_tfm *tfm, const u8 *in_key,
                ctx->rounds = 6;
                ppc_expand_key_256(ctx->key_enc, in_key);
                break;
+       default:
+               return -EINVAL;
        }
 
        ppc_generate_decrypt_key(ctx->key_dec, ctx->key_enc, key_len);
@@ -139,13 +134,6 @@ static int ppc_xts_setkey(struct crypto_skcipher *tfm, const u8 *in_key,
 
        key_len >>= 1;
 
-       if (key_len != AES_KEYSIZE_128 &&
-           key_len != AES_KEYSIZE_192 &&
-           key_len != AES_KEYSIZE_256) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-               return -EINVAL;
-       }
-
        switch (key_len) {
        case AES_KEYSIZE_128:
                ctx->rounds = 4;
@@ -162,6 +150,8 @@ static int ppc_xts_setkey(struct crypto_skcipher *tfm, const u8 *in_key,
                ppc_expand_key_256(ctx->key_enc, in_key);
                ppc_expand_key_256(ctx->key_twk, in_key + AES_KEYSIZE_256);
                break;
+       default:
+               return -EINVAL;
        }
 
        ppc_generate_decrypt_key(ctx->key_dec, ctx->key_enc, key_len);
index 2c232898b9339551ffc180e72f57923dc1542c23..63760b7dbb7605793efcd0c36e328d1091c104cf 100644 (file)
@@ -73,10 +73,8 @@ static int crc32c_vpmsum_setkey(struct crypto_shash *hash, const u8 *key,
 {
        u32 *mctx = crypto_shash_ctx(hash);
 
-       if (keylen != sizeof(u32)) {
-               crypto_shash_set_flags(hash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
        *mctx = le32_to_cpup((__le32 *)key);
        return 0;
 }
index ead0b2c9881d199fb9639bcb22ae1cd7a48f206a..2db167e5871c7f80c752e3ac51da518c94110457 100644 (file)
@@ -414,10 +414,8 @@ static int xts_aes_set_key(struct crypto_skcipher *tfm, const u8 *in_key,
                return err;
 
        /* In fips mode only 128 bit or 256 bit keys are valid */
-       if (fips_enabled && key_len != 32 && key_len != 64) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (fips_enabled && key_len != 32 && key_len != 64)
                return -EINVAL;
-       }
 
        /* Pick the correct function code based on the key length */
        fc = (key_len == 32) ? CPACF_KM_XTS_128 :
index 423ee05887e6dae1588387855494eca11e242162..fafecad2075269735c45a070518e88881e297504 100644 (file)
@@ -111,10 +111,8 @@ static int crc32_vx_setkey(struct crypto_shash *tfm, const u8 *newkey,
 {
        struct crc_ctx *mctx = crypto_shash_ctx(tfm);
 
-       if (newkeylen != sizeof(mctx->key)) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (newkeylen != sizeof(mctx->key))
                return -EINVAL;
-       }
        mctx->key = le32_to_cpu(*(__le32 *)newkey);
        return 0;
 }
@@ -124,10 +122,8 @@ static int crc32be_vx_setkey(struct crypto_shash *tfm, const u8 *newkey,
 {
        struct crc_ctx *mctx = crypto_shash_ctx(tfm);
 
-       if (newkeylen != sizeof(mctx->key)) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (newkeylen != sizeof(mctx->key))
                return -EINVAL;
-       }
        mctx->key = be32_to_cpu(*(__be32 *)newkey);
        return 0;
 }
index a3e7400e031cab530d53a50509be157b1de53c0f..6b07a2f1ce8ae7f10be604c9829e2c1df155860d 100644 (file)
@@ -43,10 +43,8 @@ static int ghash_setkey(struct crypto_shash *tfm,
 {
        struct ghash_ctx *ctx = crypto_shash_ctx(tfm);
 
-       if (keylen != GHASH_BLOCK_SIZE) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != GHASH_BLOCK_SIZE)
                return -EINVAL;
-       }
 
        memcpy(ctx->key, key, GHASH_BLOCK_SIZE);
 
index c7119c617b6e210e0945c67caabe977afc6d9b9b..e2a85783f80473c32ddc808d4857c3860966f176 100644 (file)
@@ -151,11 +151,7 @@ static int ecb_paes_set_key(struct crypto_skcipher *tfm, const u8 *in_key,
        if (rc)
                return rc;
 
-       if (__paes_set_key(ctx)) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-               return -EINVAL;
-       }
-       return 0;
+       return __paes_set_key(ctx);
 }
 
 static int ecb_paes_crypt(struct skcipher_request *req, unsigned long modifier)
@@ -254,11 +250,7 @@ static int cbc_paes_set_key(struct crypto_skcipher *tfm, const u8 *in_key,
        if (rc)
                return rc;
 
-       if (__cbc_paes_set_key(ctx)) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-               return -EINVAL;
-       }
-       return 0;
+       return __cbc_paes_set_key(ctx);
 }
 
 static int cbc_paes_crypt(struct skcipher_request *req, unsigned long modifier)
@@ -386,10 +378,9 @@ static int xts_paes_set_key(struct crypto_skcipher *tfm, const u8 *in_key,
        if (rc)
                return rc;
 
-       if (__xts_paes_set_key(ctx)) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-               return -EINVAL;
-       }
+       rc = __xts_paes_set_key(ctx);
+       if (rc)
+               return rc;
 
        /*
         * xts_check_key verifies the key length is not odd and makes
@@ -526,11 +517,7 @@ static int ctr_paes_set_key(struct crypto_skcipher *tfm, const u8 *in_key,
        if (rc)
                return rc;
 
-       if (__ctr_paes_set_key(ctx)) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-               return -EINVAL;
-       }
-       return 0;
+       return __ctr_paes_set_key(ctx);
 }
 
 static unsigned int __ctrblk_init(u8 *ctrptr, u8 *iv, unsigned int nbytes)
index 0f5a501c95a9a81d0e519b89c3639747fc76d24d..e3d2138ff9e294014d1e175297a1c6b5d8977fb5 100644 (file)
@@ -169,7 +169,6 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
                       unsigned int key_len)
 {
        struct crypto_sparc64_aes_ctx *ctx = crypto_tfm_ctx(tfm);
-       u32 *flags = &tfm->crt_flags;
 
        switch (key_len) {
        case AES_KEYSIZE_128:
@@ -188,7 +187,6 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
                break;
 
        default:
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
                return -EINVAL;
        }
 
index 1700f863748c5dbe4de40ce7a8f5828f94476994..aaa9714378e665a7913a0fbe8ab7dc9df00e99ce 100644 (file)
@@ -39,12 +39,9 @@ static int camellia_set_key(struct crypto_tfm *tfm, const u8 *_in_key,
 {
        struct camellia_sparc64_ctx *ctx = crypto_tfm_ctx(tfm);
        const u32 *in_key = (const u32 *) _in_key;
-       u32 *flags = &tfm->crt_flags;
 
-       if (key_len != 16 && key_len != 24 && key_len != 32) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (key_len != 16 && key_len != 24 && key_len != 32)
                return -EINVAL;
-       }
 
        ctx->key_len = key_len;
 
index 1299073285a36510dffd9374f0c86fa366cb056f..4e9323229e7120e12b51a0512bff37dbdfeaa841 100644 (file)
@@ -33,10 +33,8 @@ static int crc32c_sparc64_setkey(struct crypto_shash *hash, const u8 *key,
 {
        u32 *mctx = crypto_shash_ctx(hash);
 
-       if (keylen != sizeof(u32)) {
-               crypto_shash_set_flags(hash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
        *(__le32 *)mctx = le32_to_cpup((__le32 *)key);
        return 0;
 }
index 46d22712264309b65c2f96c4a691d01d7ed1398c..4623189000d894b66a98a97417d4da20a9d3d455 100644 (file)
@@ -144,10 +144,8 @@ static int crypto_aegis128_aesni_setkey(struct crypto_aead *aead, const u8 *key,
 {
        struct aegis_ctx *ctx = crypto_aegis128_aesni_ctx(aead);
 
-       if (keylen != AEGIS128_KEY_SIZE) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != AEGIS128_KEY_SIZE)
                return -EINVAL;
-       }
 
        memcpy(ctx->key.bytes, key, AEGIS128_KEY_SIZE);
 
index 670f8fcf2544704ad837d1e56771045aed925f1a..bbbebbd35b5df6e0ea48a6d7f2b3a5a26b4d1815 100644 (file)
@@ -316,14 +316,11 @@ static int aes_set_key_common(struct crypto_tfm *tfm, void *raw_ctx,
                              const u8 *in_key, unsigned int key_len)
 {
        struct crypto_aes_ctx *ctx = aes_ctx(raw_ctx);
-       u32 *flags = &tfm->crt_flags;
        int err;
 
        if (key_len != AES_KEYSIZE_128 && key_len != AES_KEYSIZE_192 &&
-           key_len != AES_KEYSIZE_256) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+           key_len != AES_KEYSIZE_256)
                return -EINVAL;
-       }
 
        if (!crypto_simd_usable())
                err = aes_expandkey(ctx, in_key, key_len);
@@ -641,10 +638,9 @@ static int common_rfc4106_set_key(struct crypto_aead *aead, const u8 *key,
 {
        struct aesni_rfc4106_gcm_ctx *ctx = aesni_rfc4106_gcm_ctx_get(aead);
 
-       if (key_len < 4) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (key_len < 4)
                return -EINVAL;
-       }
+
        /*Account for 4 byte nonce at the end.*/
        key_len -= 4;
 
index 1d9ff8a45e1fdef51186812d090895004ea0a3f9..06ef2d4a470171aecc249d7bbddedccebf67e04e 100644 (file)
@@ -64,10 +64,8 @@ static int crypto_blake2s_setkey(struct crypto_shash *tfm, const u8 *key,
 {
        struct blake2s_tfm_ctx *tctx = crypto_shash_ctx(tfm);
 
-       if (keylen == 0 || keylen > BLAKE2S_KEY_SIZE) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen == 0 || keylen > BLAKE2S_KEY_SIZE)
                return -EINVAL;
-       }
 
        memcpy(tctx->key, key, keylen);
        tctx->keylen = keylen;
index a8cc2c83fe1bb002eb49746e4f585569e2b1fac3..ccda647422d696c0cd75937b6cf90550430f5ecb 100644 (file)
@@ -142,8 +142,7 @@ static const struct common_glue_ctx camellia_dec_xts = {
 static int camellia_setkey(struct crypto_skcipher *tfm, const u8 *key,
                           unsigned int keylen)
 {
-       return __camellia_setkey(crypto_skcipher_ctx(tfm), key, keylen,
-                                &tfm->base.crt_flags);
+       return __camellia_setkey(crypto_skcipher_ctx(tfm), key, keylen);
 }
 
 static int ecb_encrypt(struct skcipher_request *req)
index 31a82a79f4ac99e1de124dc0be72199604c630b4..4e5de6ef206e1394cf20c0605e0d9b84164effd4 100644 (file)
@@ -144,8 +144,7 @@ static const struct common_glue_ctx camellia_dec_xts = {
 static int camellia_setkey(struct crypto_skcipher *tfm, const u8 *key,
                           unsigned int keylen)
 {
-       return __camellia_setkey(crypto_skcipher_ctx(tfm), key, keylen,
-                                &tfm->base.crt_flags);
+       return __camellia_setkey(crypto_skcipher_ctx(tfm), key, keylen);
 }
 
 static int ecb_encrypt(struct skcipher_request *req)
@@ -177,7 +176,6 @@ int xts_camellia_setkey(struct crypto_skcipher *tfm, const u8 *key,
                        unsigned int keylen)
 {
        struct camellia_xts_ctx *ctx = crypto_skcipher_ctx(tfm);
-       u32 *flags = &tfm->base.crt_flags;
        int err;
 
        err = xts_verify_key(tfm, key, keylen);
@@ -185,13 +183,12 @@ int xts_camellia_setkey(struct crypto_skcipher *tfm, const u8 *key,
                return err;
 
        /* first half of xts-key is for crypt */
-       err = __camellia_setkey(&ctx->crypt_ctx, key, keylen / 2, flags);
+       err = __camellia_setkey(&ctx->crypt_ctx, key, keylen / 2);
        if (err)
                return err;
 
        /* second half of xts-key is for tweak */
-       return __camellia_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2,
-                               flags);
+       return __camellia_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2);
 }
 EXPORT_SYMBOL_GPL(xts_camellia_setkey);
 
index 5f3ed5af68d70a056c75f63b6d4c189b7eb2e7fc..242c056e5fa85149eb266ea775d583d8350446db 100644 (file)
@@ -1227,12 +1227,10 @@ static void camellia_setup192(const unsigned char *key, u64 *subkey)
 }
 
 int __camellia_setkey(struct camellia_ctx *cctx, const unsigned char *key,
-                     unsigned int key_len, u32 *flags)
+                     unsigned int key_len)
 {
-       if (key_len != 16 && key_len != 24 && key_len != 32) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (key_len != 16 && key_len != 24 && key_len != 32)
                return -EINVAL;
-       }
 
        cctx->key_length = key_len;
 
@@ -1255,8 +1253,7 @@ EXPORT_SYMBOL_GPL(__camellia_setkey);
 static int camellia_setkey(struct crypto_tfm *tfm, const u8 *key,
                           unsigned int key_len)
 {
-       return __camellia_setkey(crypto_tfm_ctx(tfm), key, key_len,
-                                &tfm->crt_flags);
+       return __camellia_setkey(crypto_tfm_ctx(tfm), key, key_len);
 }
 
 static int camellia_setkey_skcipher(struct crypto_skcipher *tfm, const u8 *key,
index da5297475f9ec9aa1fa402b4ba85346428b9c70d..48e0f37796fa0215dd2296255ff018b80f6f3273 100644 (file)
@@ -173,7 +173,6 @@ static int xts_cast6_setkey(struct crypto_skcipher *tfm, const u8 *key,
                            unsigned int keylen)
 {
        struct cast6_xts_ctx *ctx = crypto_skcipher_ctx(tfm);
-       u32 *flags = &tfm->base.crt_flags;
        int err;
 
        err = xts_verify_key(tfm, key, keylen);
@@ -181,13 +180,12 @@ static int xts_cast6_setkey(struct crypto_skcipher *tfm, const u8 *key,
                return err;
 
        /* first half of xts-key is for crypt */
-       err = __cast6_setkey(&ctx->crypt_ctx, key, keylen / 2, flags);
+       err = __cast6_setkey(&ctx->crypt_ctx, key, keylen / 2);
        if (err)
                return err;
 
        /* second half of xts-key is for tweak */
-       return __cast6_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2,
-                             flags);
+       return __cast6_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2);
 }
 
 static int xts_encrypt(struct skcipher_request *req)
index cb4ab6645106e444bfe4f5225c3082774f5d1f27..418bd88acac8e74ea139aebbb92c5ff77590d27a 100644 (file)
@@ -94,10 +94,8 @@ static int crc32_pclmul_setkey(struct crypto_shash *hash, const u8 *key,
 {
        u32 *mctx = crypto_shash_ctx(hash);
 
-       if (keylen != sizeof(u32)) {
-               crypto_shash_set_flags(hash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
        *mctx = le32_to_cpup((__le32 *)key);
        return 0;
 }
index eefa0862f309c12b12f5978d2001bff3e1f6c889..c20d1b8a82c38b7a5eab6c95480b4218953e9703 100644 (file)
@@ -91,10 +91,8 @@ static int crc32c_intel_setkey(struct crypto_shash *hash, const u8 *key,
 {
        u32 *mctx = crypto_shash_ctx(hash);
 
-       if (keylen != sizeof(u32)) {
-               crypto_shash_set_flags(hash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
        *mctx = le32_to_cpup((__le32 *)key);
        return 0;
 }
index 04d72a5a8ce9815ffca1db870b4110fe2a4c4166..4a9c9833a7d6a613804a789091495bd277b9ccb5 100644 (file)
@@ -57,10 +57,8 @@ static int ghash_setkey(struct crypto_shash *tfm,
        be128 *x = (be128 *)key;
        u64 a, b;
 
-       if (keylen != GHASH_BLOCK_SIZE) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != GHASH_BLOCK_SIZE)
                return -EINVAL;
-       }
 
        /* perform multiplication by 'x' in GF(2^128) */
        a = be64_to_cpu(x->a);
index 3b36e97ec7abb8281cb80475f0c2f1471adf506e..2dbc8ce3730e53724b16457f298c6a85c0b2dfa4 100644 (file)
@@ -64,7 +64,6 @@ static int xts_twofish_setkey(struct crypto_skcipher *tfm, const u8 *key,
                              unsigned int keylen)
 {
        struct twofish_xts_ctx *ctx = crypto_skcipher_ctx(tfm);
-       u32 *flags = &tfm->base.crt_flags;
        int err;
 
        err = xts_verify_key(tfm, key, keylen);
@@ -72,13 +71,12 @@ static int xts_twofish_setkey(struct crypto_skcipher *tfm, const u8 *key,
                return err;
 
        /* first half of xts-key is for crypt */
-       err = __twofish_setkey(&ctx->crypt_ctx, key, keylen / 2, flags);
+       err = __twofish_setkey(&ctx->crypt_ctx, key, keylen / 2);
        if (err)
                return err;
 
        /* second half of xts-key is for tweak */
-       return __twofish_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2,
-                               flags);
+       return __twofish_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2);
 }
 
 static const struct common_glue_ctx twofish_enc = {
index f1592619dd651b107c3b36f4c56d7f40b47ce69e..f6d91861cb14d4b4992846fd6c9405a08fb15025 100644 (file)
@@ -26,7 +26,7 @@ struct camellia_xts_ctx {
 
 extern int __camellia_setkey(struct camellia_ctx *cctx,
                             const unsigned char *key,
-                            unsigned int key_len, u32 *flags);
+                            unsigned int key_len);
 
 extern int xts_camellia_setkey(struct crypto_skcipher *tfm, const u8 *key,
                               unsigned int keylen);
index 71c11cb5bad13ea15915df514cee5506b66febbc..44fb4956f0dd95eedccef64b47bb398d35e2e34d 100644 (file)
@@ -372,10 +372,8 @@ static int crypto_aegis128_setkey(struct crypto_aead *aead, const u8 *key,
 {
        struct aegis_ctx *ctx = crypto_aead_ctx(aead);
 
-       if (keylen != AEGIS128_KEY_SIZE) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != AEGIS128_KEY_SIZE)
                return -EINVAL;
-       }
 
        memcpy(ctx->key.bytes, key, AEGIS128_KEY_SIZE);
        return 0;
index 22e5867177f146aba33ab3dd712c640b6d222069..27ab2793181374ff142c37cdf3106a878a0eabd8 100644 (file)
@@ -1127,24 +1127,18 @@ EXPORT_SYMBOL_GPL(crypto_it_tab);
  * @in_key:    The input key.
  * @key_len:   The size of the key.
  *
- * Returns 0 on success, on failure the %CRYPTO_TFM_RES_BAD_KEY_LEN flag in tfm
- * is set. The function uses aes_expand_key() to expand the key.
- * &crypto_aes_ctx _must_ be the private data embedded in @tfm which is
- * retrieved with crypto_tfm_ctx().
+ * This function uses aes_expand_key() to expand the key.  &crypto_aes_ctx
+ * _must_ be the private data embedded in @tfm which is retrieved with
+ * crypto_tfm_ctx().
+ *
+ * Return: 0 on success; -EINVAL on failure (only happens for bad key lengths)
  */
 int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
                unsigned int key_len)
 {
        struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm);
-       u32 *flags = &tfm->crt_flags;
-       int ret;
-
-       ret = aes_expandkey(ctx, in_key, key_len);
-       if (!ret)
-               return 0;
 
-       *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
-       return -EINVAL;
+       return aes_expandkey(ctx, in_key, key_len);
 }
 EXPORT_SYMBOL_GPL(crypto_aes_set_key);
 
index f9ce78fde6eeeeca9013cd260471cd8a6cfa4760..5da0241ef453c89557decd0f1cddefd137165047 100644 (file)
@@ -464,7 +464,6 @@ static int anubis_setkey(struct crypto_tfm *tfm, const u8 *in_key,
 {
        struct anubis_ctx *ctx = crypto_tfm_ctx(tfm);
        const __be32 *key = (const __be32 *)in_key;
-       u32 *flags = &tfm->crt_flags;
        int N, R, i, r;
        u32 kappa[ANUBIS_MAX_N];
        u32 inter[ANUBIS_MAX_N];
@@ -474,7 +473,6 @@ static int anubis_setkey(struct crypto_tfm *tfm, const u8 *in_key,
                case 32: case 36: case 40:
                        break;
                default:
-                       *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
                        return -EINVAL;
        }
 
index 3f0ed9402582026dab4d96e99b40a42fef0020c7..0da80632e8721240f161e2fbfd26b89ec712d438 100644 (file)
@@ -91,7 +91,7 @@ static int crypto_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
        int err = -EINVAL;
 
        if (crypto_authenc_extractkeys(&keys, key, keylen) != 0)
-               goto badkey;
+               goto out;
 
        crypto_ahash_clear_flags(auth, CRYPTO_TFM_REQ_MASK);
        crypto_ahash_set_flags(auth, crypto_aead_get_flags(authenc) &
@@ -113,10 +113,6 @@ static int crypto_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
 out:
        memzero_explicit(&keys, sizeof(keys));
        return err;
-
-badkey:
-       crypto_aead_set_flags(authenc, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       goto out;
 }
 
 static void authenc_geniv_ahash_done(struct crypto_async_request *areq, int err)
index adb7554fca297ef5df5a55abb241d76d948e4e06..749527e1b617540260b8e67be4975d8cbc327d22 100644 (file)
@@ -65,7 +65,7 @@ static int crypto_authenc_esn_setkey(struct crypto_aead *authenc_esn, const u8 *
        int err = -EINVAL;
 
        if (crypto_authenc_extractkeys(&keys, key, keylen) != 0)
-               goto badkey;
+               goto out;
 
        crypto_ahash_clear_flags(auth, CRYPTO_TFM_REQ_MASK);
        crypto_ahash_set_flags(auth, crypto_aead_get_flags(authenc_esn) &
@@ -87,10 +87,6 @@ static int crypto_authenc_esn_setkey(struct crypto_aead *authenc_esn, const u8 *
 out:
        memzero_explicit(&keys, sizeof(keys));
        return err;
-
-badkey:
-       crypto_aead_set_flags(authenc_esn, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       goto out;
 }
 
 static int crypto_authenc_esn_genicv_tail(struct aead_request *req,
index d04b1788dc428b5db95278b91995c7a106ee6c72..1d262374fa4e3c4322782c8119b3e32859f521a7 100644 (file)
@@ -147,10 +147,8 @@ static int blake2b_setkey(struct crypto_shash *tfm, const u8 *key,
 {
        struct blake2b_tfm_ctx *tctx = crypto_shash_ctx(tfm);
 
-       if (keylen == 0 || keylen > BLAKE2B_KEYBYTES) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen == 0 || keylen > BLAKE2B_KEYBYTES)
                return -EINVAL;
-       }
 
        memcpy(tctx->key, key, keylen);
        tctx->keylen = keylen;
index ed0c7464047035ca7776caa612bbc80d6ff741e8..005783ff45ad059ec8fc9c415e10954508940bed 100644 (file)
@@ -17,10 +17,8 @@ static int crypto_blake2s_setkey(struct crypto_shash *tfm, const u8 *key,
 {
        struct blake2s_tfm_ctx *tctx = crypto_shash_ctx(tfm);
 
-       if (keylen == 0 || keylen > BLAKE2S_KEY_SIZE) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen == 0 || keylen > BLAKE2S_KEY_SIZE)
                return -EINVAL;
-       }
 
        memcpy(tctx->key, key, keylen);
        tctx->keylen = keylen;
index b6a1121e2478bc8643561492007d40801c4809c3..9a5783e5196a535bc421ba314e7366e05eea81fa 100644 (file)
@@ -970,12 +970,9 @@ camellia_set_key(struct crypto_tfm *tfm, const u8 *in_key,
 {
        struct camellia_ctx *cctx = crypto_tfm_ctx(tfm);
        const unsigned char *key = (const unsigned char *)in_key;
-       u32 *flags = &tfm->crt_flags;
 
-       if (key_len != 16 && key_len != 24 && key_len != 32) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (key_len != 16 && key_len != 24 && key_len != 32)
                return -EINVAL;
-       }
 
        cctx->key_length = key_len;
 
index 85328522c5ca18b3779ed2fdb0350a96b4812025..c77ff6c8a2b21d3516b8116f91f6a2009a66afd8 100644 (file)
@@ -103,17 +103,14 @@ static inline void W(u32 *key, unsigned int i)
        key[7] ^= F2(key[0], Tr[i % 4][7], Tm[i][7]);
 }
 
-int __cast6_setkey(struct cast6_ctx *c, const u8 *in_key,
-                  unsigned key_len, u32 *flags)
+int __cast6_setkey(struct cast6_ctx *c, const u8 *in_key, unsigned int key_len)
 {
        int i;
        u32 key[8];
        __be32 p_key[8]; /* padded key */
 
-       if (key_len % 4 != 0) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (key_len % 4 != 0)
                return -EINVAL;
-       }
 
        memset(p_key, 0, 32);
        memcpy(p_key, in_key, key_len);
@@ -148,8 +145,7 @@ EXPORT_SYMBOL_GPL(__cast6_setkey);
 
 int cast6_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen)
 {
-       return __cast6_setkey(crypto_tfm_ctx(tfm), key, keylen,
-                             &tfm->crt_flags);
+       return __cast6_setkey(crypto_tfm_ctx(tfm), key, keylen);
 }
 EXPORT_SYMBOL_GPL(cast6_setkey);
 
index aadd51cb7250c1af69b4417ed55b996858f3dbe7..0fb7042a709d589d25341194fddf9bf378ee08c8 100644 (file)
@@ -46,10 +46,8 @@ int crypto_cipher_setkey(struct crypto_cipher *tfm,
        unsigned long alignmask = crypto_cipher_alignmask(tfm);
 
        crypto_cipher_clear_flags(tfm, CRYPTO_TFM_RES_MASK);
-       if (keylen < cia->cia_min_keysize || keylen > cia->cia_max_keysize) {
-               crypto_cipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen < cia->cia_min_keysize || keylen > cia->cia_max_keysize)
                return -EINVAL;
-       }
 
        if ((unsigned long)key & alignmask)
                return setkey_unaligned(tfm, key, keylen);
index 9e97912280bdf30df037cff92afcb2be99ff66b8..0e103fb5dd777c625d554114fe32a574674dae42 100644 (file)
@@ -60,10 +60,8 @@ static int crc32_setkey(struct crypto_shash *hash, const u8 *key,
 {
        u32 *mctx = crypto_shash_ctx(hash);
 
-       if (keylen != sizeof(u32)) {
-               crypto_shash_set_flags(hash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
        *mctx = get_unaligned_le32(key);
        return 0;
 }
index 7b25fe82072c054362ef2d4b8aeebe8eaddb42b2..7fa9b0788685b5f46610eb9a2387b3ab0b32ebca 100644 (file)
@@ -74,10 +74,8 @@ static int chksum_setkey(struct crypto_shash *tfm, const u8 *key,
 {
        struct chksum_ctx *mctx = crypto_shash_ctx(tfm);
 
-       if (keylen != sizeof(mctx->key)) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(mctx->key))
                return -EINVAL;
-       }
        mctx->key = get_unaligned_le32(key);
        return 0;
 }
index e4b32c2ea7ec166a0f4f78f317686c844a0a2491..f49bd6fc6972f61ec6e6064ff6471e1703efc48f 100644 (file)
@@ -117,10 +117,8 @@ static int essiv_aead_setkey(struct crypto_aead *tfm, const u8 *key,
        if (err)
                return err;
 
-       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0) {
-               crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0)
                return -EINVAL;
-       }
 
        desc->tfm = tctx->hash;
        err = crypto_shash_init(desc) ?:
index 5027b3461c921eb90fddbbf1401b529452a63c4b..c70d163c1ac9a6214d59b5f7ea7d1a4d37d1922c 100644 (file)
@@ -58,10 +58,8 @@ static int ghash_setkey(struct crypto_shash *tfm,
        struct ghash_ctx *ctx = crypto_shash_ctx(tfm);
        be128 k;
 
-       if (keylen != GHASH_BLOCK_SIZE) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != GHASH_BLOCK_SIZE)
                return -EINVAL;
-       }
 
        if (ctx->gf128)
                gf128mul_free_4k(ctx->gf128);
index 20e6220f46f6a3420e7e108b78fb6cfab9dd536d..63350c4ad461700d3bf9a64993925e09511f25c6 100644 (file)
@@ -137,10 +137,8 @@ static int michael_setkey(struct crypto_shash *tfm, const u8 *key,
 
        const __le32 *data = (const __le32 *)key;
 
-       if (keylen != 8) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != 8)
                return -EINVAL;
-       }
 
        mctx->l = le32_to_cpu(data[0]);
        mctx->r = le32_to_cpu(data[1]);
index 457e4ddc1482b59b825cd2470594e120700652cc..8c8735f75478f518b28c0e9dac7643654cf53a87 100644 (file)
@@ -603,10 +603,8 @@ int crypto_skcipher_setkey(struct crypto_skcipher *tfm, const u8 *key,
        unsigned long alignmask = crypto_skcipher_alignmask(tfm);
        int err;
 
-       if (keylen < cipher->min_keysize || keylen > cipher->max_keysize) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen < cipher->min_keysize || keylen > cipher->max_keysize)
                return -EINVAL;
-       }
 
        if ((unsigned long)key & alignmask)
                err = skcipher_setkey_unaligned(tfm, key, keylen);
index 71ffb343709a5985d0236238624c895c00ce7980..016dbc595705968cf94d4343fdac464ac097993f 100644 (file)
@@ -143,29 +143,23 @@ int crypto_sm4_expand_key(struct crypto_sm4_ctx *ctx, const u8 *in_key,
 EXPORT_SYMBOL_GPL(crypto_sm4_expand_key);
 
 /**
- * crypto_sm4_set_key - Set the AES key.
+ * crypto_sm4_set_key - Set the SM4 key.
  * @tfm:       The %crypto_tfm that is used in the context.
  * @in_key:    The input key.
  * @key_len:   The size of the key.
  *
- * Returns 0 on success, on failure the %CRYPTO_TFM_RES_BAD_KEY_LEN flag in tfm
- * is set. The function uses crypto_sm4_expand_key() to expand the key.
+ * This function uses crypto_sm4_expand_key() to expand the key.
  * &crypto_sm4_ctx _must_ be the private data embedded in @tfm which is
  * retrieved with crypto_tfm_ctx().
+ *
+ * Return: 0 on success; -EINVAL on failure (only happens for bad key lengths)
  */
 int crypto_sm4_set_key(struct crypto_tfm *tfm, const u8 *in_key,
                       unsigned int key_len)
 {
        struct crypto_sm4_ctx *ctx = crypto_tfm_ctx(tfm);
-       u32 *flags = &tfm->crt_flags;
-       int ret;
-
-       ret = crypto_sm4_expand_key(ctx, in_key, key_len);
-       if (!ret)
-               return 0;
 
-       *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
-       return -EINVAL;
+       return crypto_sm4_expand_key(ctx, in_key, key_len);
 }
 EXPORT_SYMBOL_GPL(crypto_sm4_set_key);
 
index 222fc765c57a62ce026e80e417b3cdf7bfd41917..d23fa531b91f12e0a92af0f3c346635e62cd88fa 100644 (file)
@@ -567,7 +567,7 @@ static const u8 calc_sb_tbl[512] = {
 
 /* Perform the key setup. */
 int __twofish_setkey(struct twofish_ctx *ctx, const u8 *key,
-                    unsigned int key_len, u32 *flags)
+                    unsigned int key_len)
 {
        int i, j, k;
 
@@ -584,10 +584,7 @@ int __twofish_setkey(struct twofish_ctx *ctx, const u8 *key,
 
        /* Check key length. */
        if (key_len % 8)
-       {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
                return -EINVAL; /* unsupported key length */
-       }
 
        /* Compute the first two words of the S vector.  The magic numbers are
         * the entries of the RS matrix, preprocessed through poly_to_exp. The
@@ -688,8 +685,7 @@ EXPORT_SYMBOL_GPL(__twofish_setkey);
 
 int twofish_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int key_len)
 {
-       return __twofish_setkey(crypto_tfm_ctx(tfm), key, key_len,
-                               &tfm->crt_flags);
+       return __twofish_setkey(crypto_tfm_ctx(tfm), key, key_len);
 }
 EXPORT_SYMBOL_GPL(twofish_setkey);
 
index f50a85060b39f4359be9c05445bfd90735403a6f..0bbb34dc87c4f34c92e7ffd5c5016b64cb6aa016 100644 (file)
@@ -435,10 +435,8 @@ static int vmac_setkey(struct crypto_shash *tfm,
        unsigned int i;
        int err;
 
-       if (keylen != VMAC_KEY_LEN) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != VMAC_KEY_LEN)
                return -EINVAL;
-       }
 
        err = crypto_cipher_setkey(tctx->cipher, key, keylen);
        if (err)
index 4aad2c0f40a9f6a07e2f1382f3d529c0eb1758b5..55d1c8a761273e5d2a1a8897ee0c9971820a6957 100644 (file)
@@ -22,10 +22,8 @@ static int xxhash64_setkey(struct crypto_shash *tfm, const u8 *key,
 {
        struct xxhash64_tfm_ctx *tctx = crypto_shash_ctx(tfm);
 
-       if (keylen != sizeof(tctx->seed)) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(tctx->seed))
                return -EINVAL;
-       }
        tctx->seed = get_unaligned_le64(key);
        return 0;
 }
index cb2b0874f68fead79181968d6eb671c24375a357..7f22d305178edf68dc9d7a9061d24249c2ab1531 100644 (file)
@@ -541,7 +541,6 @@ int sun4i_ss_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
                break;
        default:
                dev_dbg(ss->dev, "ERROR: Invalid keylen %u\n", keylen);
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
        op->keylen = keylen;
index 37d0b6c386a020233fb4f80cb2a0ee9370dff2e9..b102da74b731412f28fa57cdd653eca8fd121e5b 100644 (file)
@@ -394,7 +394,6 @@ int sun8i_ce_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
                break;
        default:
                dev_dbg(ce->dev, "ERROR: Invalid keylen %u\n", keylen);
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
        if (op->key) {
index f222979a562329041c3b3b3a6d5f19152c1f41bd..84d52fc3a2da6e9175908c17e9b0431938a271d5 100644 (file)
@@ -390,7 +390,6 @@ int sun8i_ss_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
                break;
        default:
                dev_dbg(ss->dev, "ERROR: Invalid keylen %u\n", keylen);
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
        if (op->key) {
@@ -416,7 +415,6 @@ int sun8i_ss_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
 
        if (unlikely(keylen != 3 * DES_KEY_SIZE)) {
                dev_dbg(ss->dev, "Invalid keylen %u\n", keylen);
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
index a42f8619589d3949426863044b5e844e651e685b..121eb81df64f73b1a2811062deff72750e32efee 100644 (file)
@@ -128,12 +128,9 @@ static int crypto4xx_setkey_aes(struct crypto_skcipher *cipher,
        struct dynamic_sa_ctl *sa;
        int    rc;
 
-       if (keylen != AES_KEYSIZE_256 &&
-               keylen != AES_KEYSIZE_192 && keylen != AES_KEYSIZE_128) {
-               crypto_skcipher_set_flags(cipher,
-                               CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != AES_KEYSIZE_256 && keylen != AES_KEYSIZE_192 &&
+           keylen != AES_KEYSIZE_128)
                return -EINVAL;
-       }
 
        /* Create SA */
        if (ctx->sa_in || ctx->sa_out)
@@ -551,10 +548,8 @@ int crypto4xx_setkey_aes_gcm(struct crypto_aead *cipher,
        struct dynamic_sa_ctl *sa;
        int    rc = 0;
 
-       if (crypto4xx_aes_gcm_validate_keylen(keylen) != 0) {
-               crypto_aead_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (crypto4xx_aes_gcm_validate_keylen(keylen) != 0)
                return -EINVAL;
-       }
 
        rc = crypto4xx_aead_setup_fallback(ctx, cipher, key, keylen);
        if (rc)
index e589015aac1cb58bb85d658baa875c1ad3048b75..9819dd50fbadf8e577a091df08eed394cd748e70 100644 (file)
@@ -366,7 +366,6 @@ int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
                break;
        default:
                dev_dbg(mc->dev, "ERROR: Invalid keylen %u\n", keylen);
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
        if (op->key) {
index b001fdcd9d9537d0807e52b0b36144f858834b21..898f66cb2eb2675324f2c0dd1d01ab0b71a737a4 100644 (file)
@@ -1140,10 +1140,8 @@ static int atmel_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
 
        if (keylen != AES_KEYSIZE_128 &&
            keylen != AES_KEYSIZE_192 &&
-           keylen != AES_KEYSIZE_256) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+           keylen != AES_KEYSIZE_256)
                return -EINVAL;
-       }
 
        memcpy(ctx->key, key, keylen);
        ctx->keylen = keylen;
@@ -1716,10 +1714,8 @@ static int atmel_aes_gcm_setkey(struct crypto_aead *tfm, const u8 *key,
 
        if (keylen != AES_KEYSIZE_256 &&
            keylen != AES_KEYSIZE_192 &&
-           keylen != AES_KEYSIZE_128) {
-               crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+           keylen != AES_KEYSIZE_128)
                return -EINVAL;
-       }
 
        memcpy(ctx->key, key, keylen);
        ctx->keylen = keylen;
@@ -2073,7 +2069,6 @@ static int atmel_aes_authenc_setkey(struct crypto_aead *tfm, const u8 *key,
        return 0;
 
 badkey:
-       crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 }
index 22ebe40f09f53dc5ec53f6078de2b31adf5ce42e..fcf1effc7661ec1437555bf2603fc828867b494a 100644 (file)
@@ -1249,10 +1249,8 @@ static int artpec6_crypto_aead_set_key(struct crypto_aead *tfm, const u8 *key,
 {
        struct artpec6_cryptotfm_context *ctx = crypto_tfm_ctx(&tfm->base);
 
-       if (len != 16 && len != 24 && len != 32) {
-               crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (len != 16 && len != 24 && len != 32)
                return -EINVAL;
-       }
 
        ctx->key_length = len;
 
@@ -1606,8 +1604,6 @@ artpec6_crypto_cipher_set_key(struct crypto_skcipher *cipher, const u8 *key,
        case 32:
                break;
        default:
-               crypto_skcipher_set_flags(cipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
@@ -1634,8 +1630,6 @@ artpec6_crypto_xts_set_key(struct crypto_skcipher *cipher, const u8 *key,
        case 64:
                break;
        default:
-               crypto_skcipher_set_flags(cipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
index 1564a6f8c9cb21d9c95c088592cc681f002368e8..184a3e1245cf83ab286878ca90434da89a8cf5eb 100644 (file)
@@ -1846,7 +1846,6 @@ static int aes_setkey(struct crypto_skcipher *cipher, const u8 *key,
                ctx->cipher_type = CIPHER_TYPE_AES256;
                break;
        default:
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
        WARN_ON((ctx->max_payload != SPU_MAX_PAYLOAD_INF) &&
@@ -2916,7 +2915,6 @@ badkey:
        ctx->authkeylen = 0;
        ctx->digestsize = 0;
 
-       crypto_aead_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
        return -EINVAL;
 }
 
@@ -2992,7 +2990,6 @@ badkey:
        ctx->authkeylen = 0;
        ctx->digestsize = 0;
 
-       crypto_aead_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
        return -EINVAL;
 }
 
index 2912006b946b018f13af84322342633cd4284ff7..ef1a65f4fc92048a0cb961b6777d26f02e942e17 100644 (file)
@@ -548,10 +548,8 @@ static int chachapoly_setkey(struct crypto_aead *aead, const u8 *key,
        unsigned int ivsize = crypto_aead_ivsize(aead);
        unsigned int saltlen = CHACHAPOLY_IV_SIZE - ivsize;
 
-       if (keylen != CHACHA_KEY_SIZE + saltlen) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != CHACHA_KEY_SIZE + saltlen)
                return -EINVAL;
-       }
 
        ctx->cdata.key_virt = key;
        ctx->cdata.keylen = keylen - saltlen;
@@ -619,7 +617,6 @@ skip_split_key:
        memzero_explicit(&keys, sizeof(keys));
        return aead_set_sh_desc(aead);
 badkey:
-       crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 }
@@ -649,10 +646,8 @@ static int gcm_setkey(struct crypto_aead *aead,
        int err;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        print_hex_dump_debug("key in @"__stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -672,10 +667,8 @@ static int rfc4106_setkey(struct crypto_aead *aead,
        int err;
 
        err = aes_check_keylen(keylen - 4);
-       if (err) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        print_hex_dump_debug("key in @"__stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -700,10 +693,8 @@ static int rfc4543_setkey(struct crypto_aead *aead,
        int err;
 
        err = aes_check_keylen(keylen - 4);
-       if (err) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        print_hex_dump_debug("key in @"__stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -762,11 +753,8 @@ static int aes_skcipher_setkey(struct crypto_skcipher *skcipher,
        int err;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, 0);
 }
@@ -786,11 +774,8 @@ static int rfc3686_skcipher_setkey(struct crypto_skcipher *skcipher,
        keylen -= CTR_RFC3686_NONCE_SIZE;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, ctx1_iv_off);
 }
@@ -809,11 +794,8 @@ static int ctr_skcipher_setkey(struct crypto_skcipher *skcipher,
        ctx1_iv_off = 16;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, ctx1_iv_off);
 }
@@ -846,7 +828,6 @@ static int xts_skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key,
        u32 *desc;
 
        if (keylen != 2 * AES_MIN_KEY_SIZE  && keylen != 2 * AES_MAX_KEY_SIZE) {
-               crypto_skcipher_set_flags(skcipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
                dev_err(jrdev, "key size mismatch\n");
                return -EINVAL;
        }
index 8e3449670d2f0517a0a9ae1ca2e6b0eb3a59db80..4a29e0ef9d6349af1be0a7ceae4261fb9d4be4ee 100644 (file)
@@ -268,7 +268,6 @@ skip_split_key:
        memzero_explicit(&keys, sizeof(keys));
        return ret;
 badkey:
-       crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 }
@@ -356,10 +355,8 @@ static int gcm_setkey(struct crypto_aead *aead,
        int ret;
 
        ret = aes_check_keylen(keylen);
-       if (ret) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        print_hex_dump_debug("key in @" __stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -462,10 +459,8 @@ static int rfc4106_setkey(struct crypto_aead *aead,
        int ret;
 
        ret = aes_check_keylen(keylen - 4);
-       if (ret) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        print_hex_dump_debug("key in @" __stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -570,10 +565,8 @@ static int rfc4543_setkey(struct crypto_aead *aead,
        int ret;
 
        ret = aes_check_keylen(keylen - 4);
-       if (ret) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        print_hex_dump_debug("key in @" __stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -644,7 +637,7 @@ static int skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key,
                                          ctx->sh_desc_enc);
                if (ret) {
                        dev_err(jrdev, "driver enc context update failed\n");
-                       goto badkey;
+                       return -EINVAL;
                }
        }
 
@@ -653,14 +646,11 @@ static int skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key,
                                          ctx->sh_desc_dec);
                if (ret) {
                        dev_err(jrdev, "driver dec context update failed\n");
-                       goto badkey;
+                       return -EINVAL;
                }
        }
 
        return ret;
-badkey:
-       crypto_skcipher_set_flags(skcipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
 }
 
 static int aes_skcipher_setkey(struct crypto_skcipher *skcipher,
@@ -669,11 +659,8 @@ static int aes_skcipher_setkey(struct crypto_skcipher *skcipher,
        int err;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, 0);
 }
@@ -693,11 +680,8 @@ static int rfc3686_skcipher_setkey(struct crypto_skcipher *skcipher,
        keylen -= CTR_RFC3686_NONCE_SIZE;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, ctx1_iv_off);
 }
@@ -716,11 +700,8 @@ static int ctr_skcipher_setkey(struct crypto_skcipher *skcipher,
        ctx1_iv_off = 16;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, ctx1_iv_off);
 }
@@ -748,7 +729,7 @@ static int xts_skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key,
 
        if (keylen != 2 * AES_MIN_KEY_SIZE  && keylen != 2 * AES_MAX_KEY_SIZE) {
                dev_err(jrdev, "key size mismatch\n");
-               goto badkey;
+               return -EINVAL;
        }
 
        ctx->cdata.keylen = keylen;
@@ -765,7 +746,7 @@ static int xts_skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key,
                                          ctx->sh_desc_enc);
                if (ret) {
                        dev_err(jrdev, "driver enc context update failed\n");
-                       goto badkey;
+                       return -EINVAL;
                }
        }
 
@@ -774,14 +755,11 @@ static int xts_skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key,
                                          ctx->sh_desc_dec);
                if (ret) {
                        dev_err(jrdev, "driver dec context update failed\n");
-                       goto badkey;
+                       return -EINVAL;
                }
        }
 
        return ret;
-badkey:
-       crypto_skcipher_set_flags(skcipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
 }
 
 /*
index 3aeacc36ce230b90c299fec2ffe0f354eae888fe..fe2a628e8905f23dfe7be4ca4e51df0522e4fc46 100644 (file)
@@ -313,7 +313,6 @@ static int aead_setkey(struct crypto_aead *aead, const u8 *key,
        memzero_explicit(&keys, sizeof(keys));
        return aead_set_sh_desc(aead);
 badkey:
-       crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 }
@@ -326,11 +325,11 @@ static int des3_aead_setkey(struct crypto_aead *aead, const u8 *key,
 
        err = crypto_authenc_extractkeys(&keys, key, keylen);
        if (unlikely(err))
-               goto badkey;
+               goto out;
 
        err = -EINVAL;
        if (keys.enckeylen != DES3_EDE_KEY_SIZE)
-               goto badkey;
+               goto out;
 
        err = crypto_des3_ede_verify_key(crypto_aead_tfm(aead), keys.enckey) ?:
              aead_setkey(aead, key, keylen);
@@ -338,10 +337,6 @@ static int des3_aead_setkey(struct crypto_aead *aead, const u8 *key,
 out:
        memzero_explicit(&keys, sizeof(keys));
        return err;
-
-badkey:
-       crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       goto out;
 }
 
 static struct aead_edesc *aead_edesc_alloc(struct aead_request *req,
@@ -634,10 +629,8 @@ static int chachapoly_setkey(struct crypto_aead *aead, const u8 *key,
        unsigned int ivsize = crypto_aead_ivsize(aead);
        unsigned int saltlen = CHACHAPOLY_IV_SIZE - ivsize;
 
-       if (keylen != CHACHA_KEY_SIZE + saltlen) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != CHACHA_KEY_SIZE + saltlen)
                return -EINVAL;
-       }
 
        ctx->cdata.key_virt = key;
        ctx->cdata.keylen = keylen - saltlen;
@@ -725,10 +718,8 @@ static int gcm_setkey(struct crypto_aead *aead,
        int ret;
 
        ret = aes_check_keylen(keylen);
-       if (ret) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
        print_hex_dump_debug("key in @" __stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
 
@@ -822,10 +813,8 @@ static int rfc4106_setkey(struct crypto_aead *aead,
        int ret;
 
        ret = aes_check_keylen(keylen - 4);
-       if (ret) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        print_hex_dump_debug("key in @" __stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -923,10 +912,8 @@ static int rfc4543_setkey(struct crypto_aead *aead,
        int ret;
 
        ret = aes_check_keylen(keylen - 4);
-       if (ret) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        print_hex_dump_debug("key in @" __stringify(__LINE__)": ",
                             DUMP_PREFIX_ADDRESS, 16, 4, key, keylen, 1);
@@ -992,11 +979,8 @@ static int aes_skcipher_setkey(struct crypto_skcipher *skcipher,
        int err;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, 0);
 }
@@ -1016,11 +1000,8 @@ static int rfc3686_skcipher_setkey(struct crypto_skcipher *skcipher,
        keylen -= CTR_RFC3686_NONCE_SIZE;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, ctx1_iv_off);
 }
@@ -1039,11 +1020,8 @@ static int ctr_skcipher_setkey(struct crypto_skcipher *skcipher,
        ctx1_iv_off = 16;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, ctx1_iv_off);
 }
@@ -1051,11 +1029,8 @@ static int ctr_skcipher_setkey(struct crypto_skcipher *skcipher,
 static int chacha20_skcipher_setkey(struct crypto_skcipher *skcipher,
                                    const u8 *key, unsigned int keylen)
 {
-       if (keylen != CHACHA_KEY_SIZE) {
-               crypto_skcipher_set_flags(skcipher,
-                                         CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != CHACHA_KEY_SIZE)
                return -EINVAL;
-       }
 
        return skcipher_setkey(skcipher, key, keylen, 0);
 }
@@ -1084,7 +1059,6 @@ static int xts_skcipher_setkey(struct crypto_skcipher *skcipher, const u8 *key,
 
        if (keylen != 2 * AES_MIN_KEY_SIZE  && keylen != 2 * AES_MAX_KEY_SIZE) {
                dev_err(dev, "key size mismatch\n");
-               crypto_skcipher_set_flags(skcipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
@@ -3277,7 +3251,6 @@ static int ahash_setkey(struct crypto_ahash *ahash, const u8 *key,
        return ret;
 bad_free_key:
        kfree(hashed_key);
-       crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN);
        return -EINVAL;
 }
 
index 50a8852ad276bfe850e827157362b60128654a7b..8d9143407fc5f5cedc6b88061afc539bc8430823 100644 (file)
@@ -473,7 +473,6 @@ static int ahash_setkey(struct crypto_ahash *ahash,
        return ahash_set_sh_desc(ahash);
  bad_free_key:
        kfree(hashed_key);
-       crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN);
        return -EINVAL;
 }
 
@@ -483,10 +482,8 @@ static int axcbc_setkey(struct crypto_ahash *ahash, const u8 *key,
        struct caam_hash_ctx *ctx = crypto_ahash_ctx(ahash);
        struct device *jrdev = ctx->jrdev;
 
-       if (keylen != AES_KEYSIZE_128) {
-               crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != AES_KEYSIZE_128)
                return -EINVAL;
-       }
 
        memcpy(ctx->key, key, keylen);
        dma_sync_single_for_device(jrdev, ctx->adata.key_dma, keylen,
@@ -506,10 +503,8 @@ static int acmac_setkey(struct crypto_ahash *ahash, const u8 *key,
        int err;
 
        err = aes_check_keylen(keylen);
-       if (err) {
-               crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (err)
                return err;
-       }
 
        /* key is immediate data for all cmac shared descriptors */
        ctx->adata.key_virt = key;
index 1ad66677d88ee29997fd2aaa1a9d7f82918e8041..1be1adffff1d5bd7bee28c6bb24276acb2ab2497 100644 (file)
@@ -295,8 +295,6 @@ static int cvm_setkey(struct crypto_skcipher *cipher, const u8 *key,
                memcpy(ctx->enc_key, key, keylen);
                return 0;
        } else {
-               crypto_skcipher_set_flags(cipher,
-                                           CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 }
index 6f80cc3b5c84b3726758de786ced9b2446dea2e3..dce5423a58831382b4c039b1f924bd95b20358ab 100644 (file)
@@ -40,10 +40,8 @@ static int nitrox_aes_gcm_setkey(struct crypto_aead *aead, const u8 *key,
        union fc_ctx_flags flags;
 
        aes_keylen = flexi_aes_keylen(keylen);
-       if (aes_keylen < 0) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (aes_keylen < 0)
                return -EINVAL;
-       }
 
        /* fill crypto context */
        fctx = nctx->u.fctx;
index 97af4d50d0030fce462aa9855a0a7945b5101eee..18088b0a22579f960e9768c6b91d3ee03e488e2b 100644 (file)
@@ -200,10 +200,8 @@ static int nitrox_aes_setkey(struct crypto_skcipher *cipher, const u8 *key,
        int aes_keylen;
 
        aes_keylen = flexi_aes_keylen(keylen);
-       if (aes_keylen < 0) {
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (aes_keylen < 0)
                return -EINVAL;
-       }
        return nitrox_skcipher_setkey(cipher, aes_keylen, key, keylen);
 }
 
@@ -351,10 +349,8 @@ static int nitrox_aes_xts_setkey(struct crypto_skcipher *cipher,
        keylen /= 2;
 
        aes_keylen = flexi_aes_keylen(keylen);
-       if (aes_keylen < 0) {
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (aes_keylen < 0)
                return -EINVAL;
-       }
 
        fctx = nctx->u.fctx;
        /* copy KEY2 */
@@ -382,10 +378,8 @@ static int nitrox_aes_ctr_rfc3686_setkey(struct crypto_skcipher *cipher,
        keylen -= CTR_RFC3686_NONCE_SIZE;
 
        aes_keylen = flexi_aes_keylen(keylen);
-       if (aes_keylen < 0) {
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (aes_keylen < 0)
                return -EINVAL;
-       }
        return nitrox_skcipher_setkey(cipher, aes_keylen, key, keylen);
 }
 
index 32f19f402073728104d7c82ac78a765be8d95b73..5eba7ee49e8156e0d3a92dfcfb39de16994c9e13 100644 (file)
@@ -276,7 +276,6 @@ static int ccp_aes_cmac_setkey(struct crypto_ahash *tfm, const u8 *key,
                ctx->u.aes.type = CCP_AES_TYPE_256;
                break;
        default:
-               crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
        ctx->u.aes.mode = alg->mode;
index ff50ee80d22357102e31d564da7bcae1f9910e36..9e8f07c1afac2b8ae153196ef5eb245388b27e05 100644 (file)
@@ -42,7 +42,6 @@ static int ccp_aes_gcm_setkey(struct crypto_aead *tfm, const u8 *key,
                ctx->u.aes.type = CCP_AES_TYPE_256;
                break;
        default:
-               crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
index 33328a153225ebf6769d7f836242313153392390..51e12fbd11592417e7842965a26867a4217ee9d7 100644 (file)
@@ -51,7 +51,6 @@ static int ccp_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
                ctx->u.aes.type = CCP_AES_TYPE_256;
                break;
        default:
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
        ctx->u.aes.mode = alg->mode;
index 453b9797f93ff439b7a423422e998df64b5b9a76..474e6f1a6a84ecf7998ba4b1b7945ff09e143c09 100644 (file)
@@ -293,10 +293,8 @@ static int ccp_sha_setkey(struct crypto_ahash *tfm, const u8 *key,
 
                ret = crypto_shash_digest(sdesc, key, key_len,
                                          ctx->u.sha.key);
-               if (ret) {
-                       crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+               if (ret)
                        return -EINVAL;
-               }
 
                key_len = digest_size;
        } else {
index b0085db7e2114a7c2e5c5b0fc386bb7f47d73226..d014c8e063a7c688ad5826b1a596039a0d2761f6 100644 (file)
@@ -562,7 +562,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
 
                rc = crypto_authenc_extractkeys(&keys, key, keylen);
                if (rc)
-                       goto badkey;
+                       return rc;
                enckey = keys.enckey;
                authkey = keys.authkey;
                ctx->enc_keylen = keys.enckeylen;
@@ -570,10 +570,9 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
 
                if (ctx->cipher_mode == DRV_CIPHER_CTR) {
                        /* the nonce is stored in bytes at end of key */
-                       rc = -EINVAL;
                        if (ctx->enc_keylen <
                            (AES_MIN_KEY_SIZE + CTR_RFC3686_NONCE_SIZE))
-                               goto badkey;
+                               return -EINVAL;
                        /* Copy nonce from last 4 bytes in CTR key to
                         *  first 4 bytes in CTR IV
                         */
@@ -591,7 +590,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
 
        rc = validate_keys_sizes(ctx);
        if (rc)
-               goto badkey;
+               return rc;
 
        /* STAT_PHASE_1: Copy key to ctx */
 
@@ -605,7 +604,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
        } else if (ctx->auth_mode != DRV_HASH_NULL) { /* HMAC */
                rc = cc_get_plain_hmac_key(tfm, authkey, ctx->auth_keylen);
                if (rc)
-                       goto badkey;
+                       return rc;
        }
 
        /* STAT_PHASE_2: Create sequence */
@@ -622,8 +621,7 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
                break; /* No auth. key setup */
        default:
                dev_err(dev, "Unsupported authenc (%d)\n", ctx->auth_mode);
-               rc = -ENOTSUPP;
-               goto badkey;
+               return -ENOTSUPP;
        }
 
        /* STAT_PHASE_3: Submit sequence to HW */
@@ -632,18 +630,12 @@ static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
                rc = cc_send_sync_request(ctx->drvdata, &cc_req, desc, seq_len);
                if (rc) {
                        dev_err(dev, "send_request() failed (rc=%d)\n", rc);
-                       goto setkey_error;
+                       return rc;
                }
        }
 
        /* Update STAT_PHASE_3 */
        return rc;
-
-badkey:
-       crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-
-setkey_error:
-       return rc;
 }
 
 static int cc_des3_aead_setkey(struct crypto_aead *aead, const u8 *key,
index 61b9dcaa0c054eda5d068b3075a6d128a58f3249..7493a32f12b987735315a420090869da07c63176 100644 (file)
@@ -291,7 +291,6 @@ static int cc_cipher_sethkey(struct crypto_skcipher *sktfm, const u8 *key,
        /* This check the size of the protected key token */
        if (keylen != sizeof(hki)) {
                dev_err(dev, "Unsupported protected key size %d.\n", keylen);
-               crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
@@ -304,7 +303,6 @@ static int cc_cipher_sethkey(struct crypto_skcipher *sktfm, const u8 *key,
 
        if (validate_keys_sizes(ctx_p, keylen)) {
                dev_err(dev, "Unsupported key size %d.\n", keylen);
-               crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
@@ -395,7 +393,6 @@ static int cc_cipher_setkey(struct crypto_skcipher *sktfm, const u8 *key,
 
        if (validate_keys_sizes(ctx_p, keylen)) {
                dev_err(dev, "Unsupported key size %d.\n", keylen);
-               crypto_tfm_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
index aee5db5f8538fd6687882a2f7079b099ee2afa97..912e5ce5079d11ae63b09577ccc8061c709ad6d5 100644 (file)
@@ -899,9 +899,6 @@ static int cc_hash_setkey(struct crypto_ahash *ahash, const u8 *key,
        rc = cc_send_sync_request(ctx->drvdata, &cc_req, desc, idx);
 
 out:
-       if (rc)
-               crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN);
-
        if (ctx->key_params.key_dma_addr) {
                dma_unmap_single(dev, ctx->key_params.key_dma_addr,
                                 ctx->key_params.keylen, DMA_TO_DEVICE);
@@ -990,9 +987,6 @@ static int cc_xcbc_setkey(struct crypto_ahash *ahash,
 
        rc = cc_send_sync_request(ctx->drvdata, &cc_req, desc, idx);
 
-       if (rc)
-               crypto_ahash_set_flags(ahash, CRYPTO_TFM_RES_BAD_KEY_LEN);
-
        dma_unmap_single(dev, ctx->key_params.key_dma_addr,
                         ctx->key_params.keylen, DMA_TO_DEVICE);
        dev_dbg(dev, "Unmapped key-buffer: key_dma_addr=%pad keylen=%u\n",
index 5b7dbe7cdb17e03987d1af898055cd27cb4b0e37..720b2ff5546404ac1897d794ee64b019e87bbbd7 100644 (file)
@@ -912,7 +912,6 @@ static int chcr_aes_cbc_setkey(struct crypto_skcipher *cipher,
        ablkctx->ciph_mode = CHCR_SCMD_CIPHER_MODE_AES_CBC;
        return 0;
 badkey_err:
-       crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
        ablkctx->enckey_len = 0;
 
        return err;
@@ -943,7 +942,6 @@ static int chcr_aes_ctr_setkey(struct crypto_skcipher *cipher,
 
        return 0;
 badkey_err:
-       crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
        ablkctx->enckey_len = 0;
 
        return err;
@@ -981,7 +979,6 @@ static int chcr_aes_rfc3686_setkey(struct crypto_skcipher *cipher,
 
        return 0;
 badkey_err:
-       crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
        ablkctx->enckey_len = 0;
 
        return err;
@@ -2174,7 +2171,6 @@ static int chcr_aes_xts_setkey(struct crypto_skcipher *cipher, const u8 *key,
        ablkctx->ciph_mode = CHCR_SCMD_CIPHER_MODE_AES_XTS;
        return 0;
 badkey_err:
-       crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
        ablkctx->enckey_len = 0;
 
        return err;
@@ -3284,7 +3280,6 @@ static int chcr_ccm_common_setkey(struct crypto_aead *aead,
                ck_size = CHCR_KEYCTX_CIPHER_KEY_SIZE_256;
                mk_size = CHCR_KEYCTX_MAC_KEY_SIZE_256;
        } else {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
                aeadctx->enckey_len = 0;
                return  -EINVAL;
        }
@@ -3322,7 +3317,6 @@ static int chcr_aead_rfc4309_setkey(struct crypto_aead *aead, const u8 *key,
        int error;
 
        if (keylen < 3) {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
                aeadctx->enckey_len = 0;
                return  -EINVAL;
        }
@@ -3372,7 +3366,6 @@ static int chcr_gcm_setkey(struct crypto_aead *aead, const u8 *key,
        } else if (keylen == AES_KEYSIZE_256) {
                ck_size = CHCR_KEYCTX_CIPHER_KEY_SIZE_256;
        } else {
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
                pr_err("GCM: Invalid key length %d\n", keylen);
                ret = -EINVAL;
                goto out;
@@ -3429,10 +3422,8 @@ static int chcr_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
        if (err)
                goto out;
 
-       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0) {
-               crypto_aead_set_flags(authenc, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0)
                goto out;
-       }
 
        if (get_alg_config(&param, max_authsize)) {
                pr_err("chcr : Unsupported digest size\n");
@@ -3559,10 +3550,9 @@ static int chcr_aead_digest_null_setkey(struct crypto_aead *authenc,
        if (err)
                goto out;
 
-       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0) {
-               crypto_aead_set_flags(authenc, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (crypto_authenc_extractkeys(&keys, key, keylen) != 0)
                goto out;
-       }
+
        subtype = get_aead_subtype(authenc);
        if (subtype == CRYPTO_ALG_SUB_TYPE_CTR_SHA ||
            subtype == CRYPTO_ALG_SUB_TYPE_CTR_NULL) {
index 73a899e6f837ec3572498641c0efbd1ca952bcd3..eb6e6b618361ccc47c60df41498d69dfd3f5c5b4 100644 (file)
@@ -119,11 +119,9 @@ static int geode_setkey_cip(struct crypto_tfm *tfm, const u8 *key,
                return 0;
        }
 
-       if (len != AES_KEYSIZE_192 && len != AES_KEYSIZE_256) {
+       if (len != AES_KEYSIZE_192 && len != AES_KEYSIZE_256)
                /* not supported at all */
-               tfm->crt_flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
                return -EINVAL;
-       }
 
        /*
         * The requested key size is not supported by HW, do a fallback
@@ -154,11 +152,9 @@ static int geode_setkey_skcipher(struct crypto_skcipher *tfm, const u8 *key,
                return 0;
        }
 
-       if (len != AES_KEYSIZE_192 && len != AES_KEYSIZE_256) {
+       if (len != AES_KEYSIZE_192 && len != AES_KEYSIZE_256)
                /* not supported at all */
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
-       }
 
        /*
         * The requested key size is not supported by HW, do a fallback
index f4ece0d8bd6cf7de21940445b53fac5c1793d904..5ee66532f336793774c33b24496d985a208e7bcb 100644 (file)
@@ -380,10 +380,8 @@ static int safexcel_skcipher_aes_setkey(struct crypto_skcipher *ctfm,
        int ret, i;
 
        ret = aes_expandkey(&aes, key, len);
-       if (ret) {
-               crypto_skcipher_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
                for (i = 0; i < len / sizeof(u32); i++) {
@@ -433,12 +431,12 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8 *key,
        case SAFEXCEL_DES:
                err = verify_aead_des_key(ctfm, keys.enckey, keys.enckeylen);
                if (unlikely(err))
-                       goto badkey_expflags;
+                       goto badkey;
                break;
        case SAFEXCEL_3DES:
                err = verify_aead_des3_key(ctfm, keys.enckey, keys.enckeylen);
                if (unlikely(err))
-                       goto badkey_expflags;
+                       goto badkey;
                break;
        case SAFEXCEL_AES:
                err = aes_expandkey(&aes, keys.enckey, keys.enckeylen);
@@ -521,8 +519,6 @@ static int safexcel_aead_setkey(struct crypto_aead *ctfm, const u8 *key,
        return 0;
 
 badkey:
-       crypto_aead_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-badkey_expflags:
        memzero_explicit(&keys, sizeof(keys));
        return err;
 }
@@ -1444,10 +1440,8 @@ static int safexcel_skcipher_aesctr_setkey(struct crypto_skcipher *ctfm,
        /* exclude the nonce here */
        keylen = len - CTR_RFC3686_NONCE_SIZE;
        ret = aes_expandkey(&aes, key, keylen);
-       if (ret) {
-               crypto_skcipher_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
                for (i = 0; i < keylen / sizeof(u32); i++) {
@@ -2459,10 +2453,8 @@ static int safexcel_skcipher_aesxts_setkey(struct crypto_skcipher *ctfm,
        /* Only half of the key data is cipher key */
        keylen = (len >> 1);
        ret = aes_expandkey(&aes, key, keylen);
-       if (ret) {
-               crypto_skcipher_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
                for (i = 0; i < keylen / sizeof(u32); i++) {
@@ -2478,10 +2470,8 @@ static int safexcel_skcipher_aesxts_setkey(struct crypto_skcipher *ctfm,
 
        /* The other half is the tweak key */
        ret = aes_expandkey(&aes, (u8 *)(key + keylen), keylen);
-       if (ret) {
-               crypto_skcipher_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) {
                for (i = 0; i < keylen / sizeof(u32); i++) {
@@ -2570,7 +2560,6 @@ static int safexcel_aead_gcm_setkey(struct crypto_aead *ctfm, const u8 *key,
 
        ret = aes_expandkey(&aes, key, len);
        if (ret) {
-               crypto_aead_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                memzero_explicit(&aes, sizeof(aes));
                return ret;
        }
@@ -2684,7 +2673,6 @@ static int safexcel_aead_ccm_setkey(struct crypto_aead *ctfm, const u8 *key,
 
        ret = aes_expandkey(&aes, key, len);
        if (ret) {
-               crypto_aead_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                memzero_explicit(&aes, sizeof(aes));
                return ret;
        }
@@ -2815,10 +2803,9 @@ static int safexcel_skcipher_chacha20_setkey(struct crypto_skcipher *ctfm,
 {
        struct safexcel_cipher_ctx *ctx = crypto_skcipher_ctx(ctfm);
 
-       if (len != CHACHA_KEY_SIZE) {
-               crypto_skcipher_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (len != CHACHA_KEY_SIZE)
                return -EINVAL;
-       }
+
        safexcel_chacha20_setkey(ctx, key);
 
        return 0;
@@ -2872,10 +2859,9 @@ static int safexcel_aead_chachapoly_setkey(struct crypto_aead *ctfm,
                len -= EIP197_AEAD_IPSEC_NONCE_SIZE;
                ctx->nonce = *(u32 *)(key + len);
        }
-       if (len != CHACHA_KEY_SIZE) {
-               crypto_aead_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (len != CHACHA_KEY_SIZE)
                return -EINVAL;
-       }
+
        safexcel_chacha20_setkey(ctx, key);
 
        return 0;
@@ -3070,10 +3056,8 @@ static int safexcel_skcipher_sm4_setkey(struct crypto_skcipher *ctfm,
        struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm);
        struct safexcel_crypto_priv *priv = ctx->priv;
 
-       if (len != SM4_KEY_SIZE) {
-               crypto_skcipher_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (len != SM4_KEY_SIZE)
                return -EINVAL;
-       }
 
        if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma)
                if (memcmp(ctx->key, key, SM4_KEY_SIZE))
index 25e49d1c96e8428bdd06f0079faa2ca3e6a2acbb..088d7f8aab5e88700442a58736a738ccf0594e94 100644 (file)
@@ -1919,10 +1919,8 @@ static int safexcel_crc32_setkey(struct crypto_ahash *tfm, const u8 *key,
 {
        struct safexcel_ahash_ctx *ctx = crypto_tfm_ctx(crypto_ahash_tfm(tfm));
 
-       if (keylen != sizeof(u32)) {
-               crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
 
        memcpy(ctx->ipad, key, sizeof(u32));
        return 0;
@@ -1995,10 +1993,8 @@ static int safexcel_cbcmac_setkey(struct crypto_ahash *tfm, const u8 *key,
        int ret, i;
 
        ret = aes_expandkey(&aes, key, len);
-       if (ret) {
-               crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        memset(ctx->ipad, 0, 2 * AES_BLOCK_SIZE);
        for (i = 0; i < len / sizeof(u32); i++)
@@ -2065,10 +2061,8 @@ static int safexcel_xcbcmac_setkey(struct crypto_ahash *tfm, const u8 *key,
        int ret, i;
 
        ret = aes_expandkey(&aes, key, len);
-       if (ret) {
-               crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        /* precompute the XCBC key material */
        crypto_cipher_clear_flags(ctx->kaes, CRYPTO_TFM_REQ_MASK);
@@ -2168,10 +2162,8 @@ static int safexcel_cmac_setkey(struct crypto_ahash *tfm, const u8 *key,
        int ret, i;
 
        ret = aes_expandkey(&aes, key, len);
-       if (ret) {
-               crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        for (i = 0; i < len / sizeof(u32); i++)
                ctx->ipad[i + 8] =
index 391e3b4df364f124eb5b2afef2ba1488e4e036e1..f64bde506ae80e2a6988f5e57bb92fa2e22a24cf 100644 (file)
@@ -740,7 +740,6 @@ static int setup_cipher(struct crypto_tfm *tfm, int encrypt,
        u32 keylen_cfg = 0;
        struct ix_sa_dir *dir;
        struct ixp_ctx *ctx = crypto_tfm_ctx(tfm);
-       u32 *flags = &tfm->crt_flags;
 
        dir = encrypt ? &ctx->encrypt : &ctx->decrypt;
        cinfo = dir->npe_ctx;
@@ -757,7 +756,6 @@ static int setup_cipher(struct crypto_tfm *tfm, int encrypt,
                case 24: keylen_cfg = MOD_AES192; break;
                case 32: keylen_cfg = MOD_AES256; break;
                default:
-                       *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
                        return -EINVAL;
                }
                cipher_cfg |= keylen_cfg;
@@ -1169,7 +1167,6 @@ static int aead_setkey(struct crypto_aead *tfm, const u8 *key,
        memzero_explicit(&keys, sizeof(keys));
        return aead_setup(tfm, crypto_aead_authsize(tfm));
 badkey:
-       crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 }
index d8e8c857770c8dcf69abefb92a4df34d1ab189e1..c24f34a48cef1daa28f7abc06fdbf9a3a915950f 100644 (file)
@@ -255,10 +255,8 @@ static int mv_cesa_aes_setkey(struct crypto_skcipher *cipher, const u8 *key,
        int i;
 
        ret = aes_expandkey(&ctx->aes, key, len);
-       if (ret) {
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (ret)
                return ret;
-       }
 
        remaining = (ctx->aes.key_length - 16) / 4;
        offset = ctx->aes.key_length + 24 - remaining;
index 90880a81c534e1d2cfd4a0e57a5d9cd0b3226720..00e580bf8536d43f7e33a21e805fbe237a7148f4 100644 (file)
@@ -652,7 +652,6 @@ static int mtk_aes_setkey(struct crypto_skcipher *tfm,
                break;
 
        default:
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
@@ -1022,7 +1021,6 @@ static int mtk_aes_gcm_setkey(struct crypto_aead *aead, const u8 *key,
                break;
 
        default:
-               crypto_aead_set_flags(aead, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
index 63bd565048f42b618ad1c5013f34b4db546ab304..f5c468f2cc82e95595556b3693fab86e02bd902b 100644 (file)
@@ -746,7 +746,6 @@ static int n2_aes_setkey(struct crypto_skcipher *skcipher, const u8 *key,
                ctx->enc_type |= ENC_TYPE_ALG_AES256;
                break;
        default:
-               crypto_skcipher_set_flags(skcipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
                return -EINVAL;
        }
 
index c5b60f50e1b5cc73aac71df745c3b749a0c27ac4..594d6b1695d597575ed657b2a4d63dd6822feaf9 100644 (file)
@@ -108,14 +108,11 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
 {
        struct aes_ctx *ctx = aes_ctx(tfm);
        const __le32 *key = (const __le32 *)in_key;
-       u32 *flags = &tfm->crt_flags;
        struct crypto_aes_ctx gen_aes;
        int cpu;
 
-       if (key_len % 8) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (key_len % 8)
                return -EINVAL;
-       }
 
        /*
         * If the hardware is capable of generating the extended key
@@ -146,10 +143,8 @@ static int aes_set_key(struct crypto_tfm *tfm, const u8 *in_key,
        ctx->cword.encrypt.keygen = 1;
        ctx->cword.decrypt.keygen = 1;
 
-       if (aes_expandkey(&gen_aes, in_key, key_len)) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (aes_expandkey(&gen_aes, in_key, key_len))
                return -EINVAL;
-       }
 
        memcpy(ctx->E, gen_aes.key_enc, AES_MAX_KEYLENGTH);
        memcpy(ctx->D, gen_aes.key_dec, AES_MAX_KEYLENGTH);
index d187312b986463f395115fc911d7e55e7e88ef5e..ced4cbed9ea04c89f8d80de6201385cad72d52af 100644 (file)
@@ -490,7 +490,6 @@ static int spacc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
        return 0;
 
 badkey:
-       crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 }
@@ -780,10 +779,8 @@ static int spacc_aes_setkey(struct crypto_skcipher *cipher, const u8 *key,
        struct spacc_ablk_ctx *ctx = crypto_tfm_ctx(tfm);
        int err = 0;
 
-       if (len > AES_MAX_KEY_SIZE) {
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (len > AES_MAX_KEY_SIZE)
                return -EINVAL;
-       }
 
        /*
         * IPSec engine only supports 128 and 256 bit AES keys. If we get a
@@ -830,7 +827,6 @@ static int spacc_kasumi_f8_setkey(struct crypto_skcipher *cipher,
        int err = 0;
 
        if (len > AES_MAX_KEY_SIZE) {
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
                err = -EINVAL;
                goto out;
        }
index 35bca76b640f4452278906c7a5a16a8c5ef48dd7..833bb1d3a11bc5e8b6a6ef25e289d46de48c0cfe 100644 (file)
@@ -570,7 +570,6 @@ static int qat_alg_aead_init_sessions(struct crypto_aead *tfm, const u8 *key,
        memzero_explicit(&keys, sizeof(keys));
        return 0;
 bad_key:
-       crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 error:
@@ -586,14 +585,11 @@ static int qat_alg_skcipher_init_sessions(struct qat_alg_skcipher_ctx *ctx,
        int alg;
 
        if (qat_alg_validate_key(keylen, &alg, mode))
-               goto bad_key;
+               return -EINVAL;
 
        qat_alg_skcipher_init_enc(ctx, alg, key, keylen, mode);
        qat_alg_skcipher_init_dec(ctx, alg, key, keylen, mode);
        return 0;
-bad_key:
-       crypto_skcipher_set_flags(ctx->tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
 }
 
 static int qat_alg_aead_rekey(struct crypto_aead *tfm, const uint8_t *key,
index 95ab16fc8fd6b5180f1833a21e60ba06ced6d665..1ab62e7d5f3cbc726001dbbdd8e98e789e4943b1 100644 (file)
@@ -396,8 +396,6 @@ static int qce_ahash_hmac_setkey(struct crypto_ahash *tfm, const u8 *key,
        ahash_request_set_crypt(req, &sg, ctx->authkey, keylen);
 
        ret = crypto_wait_req(crypto_ahash_digest(req), &wait);
-       if (ret)
-               crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
 
        kfree(buf);
 err_free_req:
index ca4de4ddfe1f4e326ba42550bbcd252edb90aab9..4a75c8e1fa6c1993479745529eba732cf2eae8b8 100644 (file)
@@ -34,10 +34,8 @@ static int rk_aes_setkey(struct crypto_skcipher *cipher,
        struct rk_cipher_ctx *ctx = crypto_tfm_ctx(tfm);
 
        if (keylen != AES_KEYSIZE_128 && keylen != AES_KEYSIZE_192 &&
-           keylen != AES_KEYSIZE_256) {
-               crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
+           keylen != AES_KEYSIZE_256)
                return -EINVAL;
-       }
        ctx->keylen = keylen;
        memcpy_toio(ctx->dev->reg + RK_CRYPTO_AES_KEY_0, key, keylen);
        return 0;
index 9e11c3480353ff23d4c1c5a2e86d0568141200db..8e92e4ac79f11fbb94352ffc7d510c26af1af1ca 100644 (file)
@@ -85,10 +85,8 @@ static int stm32_crc_setkey(struct crypto_shash *tfm, const u8 *key,
 {
        struct stm32_crc_ctx *mctx = crypto_shash_ctx(tfm);
 
-       if (keylen != sizeof(u32)) {
-               crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != sizeof(u32))
                return -EINVAL;
-       }
 
        mctx->key = get_unaligned_le32(key);
        return 0;
index d71d65846e4799c862308708c429d195d1937659..9c6db7f698c440958cdbe62ae55f0f84697c21bf 100644 (file)
@@ -914,7 +914,6 @@ static int aead_setkey(struct crypto_aead *authenc,
        return 0;
 
 badkey:
-       crypto_aead_set_flags(authenc, CRYPTO_TFM_RES_BAD_KEY_LEN);
        memzero_explicit(&keys, sizeof(keys));
        return -EINVAL;
 }
@@ -929,11 +928,11 @@ static int aead_des3_setkey(struct crypto_aead *authenc,
 
        err = crypto_authenc_extractkeys(&keys, key, keylen);
        if (unlikely(err))
-               goto badkey;
+               goto out;
 
        err = -EINVAL;
        if (keys.authkeylen + keys.enckeylen > TALITOS_MAX_KEY_SIZE)
-               goto badkey;
+               goto out;
 
        err = verify_aead_des3_key(authenc, keys.enckey, keys.enckeylen);
        if (err)
@@ -954,10 +953,6 @@ static int aead_des3_setkey(struct crypto_aead *authenc,
 out:
        memzero_explicit(&keys, sizeof(keys));
        return err;
-
-badkey:
-       crypto_aead_set_flags(authenc, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       goto out;
 }
 
 static void talitos_sg_unmap(struct device *dev,
@@ -1528,8 +1523,6 @@ static int skcipher_aes_setkey(struct crypto_skcipher *cipher,
            keylen == AES_KEYSIZE_256)
                return skcipher_setkey(cipher, key, keylen);
 
-       crypto_skcipher_set_flags(cipher, CRYPTO_TFM_RES_BAD_KEY_LEN);
-
        return -EINVAL;
 }
 
@@ -2234,10 +2227,8 @@ static int ahash_setkey(struct crypto_ahash *tfm, const u8 *key,
                /* Must get the hash of the long key */
                ret = keyhash(tfm, key, keylen, hash);
 
-               if (ret) {
-                       crypto_ahash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+               if (ret)
                        return -EINVAL;
-               }
 
                keysize = digestsize;
                memcpy(ctx->key, hash, digestsize);
index 95fb694a26674b02c92cac47197164335c325bf8..800dfc4d16c4d529a28191f2a69cb25869cfc462 100644 (file)
@@ -951,7 +951,6 @@ static int aes_skcipher_setkey(struct crypto_skcipher *cipher,
                                 const u8 *key, unsigned int keylen)
 {
        struct cryp_ctx *ctx = crypto_skcipher_ctx(cipher);
-       u32 *flags = &cipher->base.crt_flags;
 
        pr_debug(DEV_DBG_NAME " [%s]", __func__);
 
@@ -970,7 +969,6 @@ static int aes_skcipher_setkey(struct crypto_skcipher *cipher,
 
        default:
                pr_err(DEV_DBG_NAME "[%s]: Unknown keylen!", __func__);
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
                return -EINVAL;
        }
 
index 4b71e80951b70521a9e1804b21f9537f27d67788..fd045e64972a5b95542f8c474b57751f4b611f8a 100644 (file)
@@ -272,11 +272,11 @@ static int virtio_crypto_alg_skcipher_init_sessions(
 
        if (keylen > vcrypto->max_cipher_key_len) {
                pr_err("virtio_crypto: the key is too long\n");
-               goto bad_key;
+               return -EINVAL;
        }
 
        if (virtio_crypto_alg_validate_key(keylen, &alg))
-               goto bad_key;
+               return -EINVAL;
 
        /* Create encryption session */
        ret = virtio_crypto_alg_skcipher_init_session(ctx,
@@ -291,10 +291,6 @@ static int virtio_crypto_alg_skcipher_init_sessions(
                return ret;
        }
        return 0;
-
-bad_key:
-       crypto_skcipher_set_flags(ctx->tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
-       return -EINVAL;
 }
 
 /* Note: kernel crypto API realization */
index 4c8d0c72f78d48eb04adde8a914e0acf59d254e0..38f490cd50a874c465778420380c9feaf7989a03 100644 (file)
@@ -15,8 +15,7 @@ struct cast6_ctx {
        u8 Kr[12][4];
 };
 
-int __cast6_setkey(struct cast6_ctx *ctx, const u8 *key,
-                  unsigned int keylen, u32 *flags);
+int __cast6_setkey(struct cast6_ctx *ctx, const u8 *key, unsigned int keylen);
 int cast6_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen);
 
 void __cast6_encrypt(const void *ctx, u8 *dst, const u8 *src);
index f62a2bb1866bd1b23fe113145bb1f1f0255656a0..355ddaae38064c33ce8c95688fa39c6fd75f7fc5 100644 (file)
@@ -120,20 +120,16 @@ static inline int verify_skcipher_des3_key(struct crypto_skcipher *tfm,
 static inline int verify_aead_des_key(struct crypto_aead *tfm, const u8 *key,
                                      int keylen)
 {
-       if (keylen != DES_KEY_SIZE) {
-               crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != DES_KEY_SIZE)
                return -EINVAL;
-       }
        return crypto_des_verify_key(crypto_aead_tfm(tfm), key);
 }
 
 static inline int verify_aead_des3_key(struct crypto_aead *tfm, const u8 *key,
                                       int keylen)
 {
-       if (keylen != DES3_EDE_KEY_SIZE) {
-               crypto_aead_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen != DES3_EDE_KEY_SIZE)
                return -EINVAL;
-       }
        return crypto_des3_ede_verify_key(crypto_aead_tfm(tfm), key);
 }
 
index 2e2c09673d88ec54288543cfe74192c8a0291f24..f6b307a58554ea1f1d064c826eb946beddd592be 100644 (file)
@@ -19,7 +19,7 @@ struct twofish_ctx {
 };
 
 int __twofish_setkey(struct twofish_ctx *ctx, const u8 *key,
-                    unsigned int key_len, u32 *flags);
+                    unsigned int key_len);
 int twofish_setkey(struct crypto_tfm *tfm, const u8 *key, unsigned int key_len);
 
 #endif
index 15ae7fdc04789757eb1c7e0487512a6fd77c5f97..57b2c52928db79e625f3a3317621aaf68d899960 100644 (file)
@@ -17,10 +17,8 @@ static inline int xts_check_key(struct crypto_tfm *tfm,
         * key consists of keys of equal size concatenated, therefore
         * the length must be even.
         */
-       if (keylen % 2) {
-               *flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
+       if (keylen % 2)
                return -EINVAL;
-       }
 
        /* ensure that the AES and tweak key are not identical */
        if (fips_enabled &&
@@ -39,10 +37,8 @@ static inline int xts_verify_key(struct crypto_skcipher *tfm,
         * key consists of keys of equal size concatenated, therefore
         * the length must be even.
         */
-       if (keylen % 2) {
-               crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+       if (keylen % 2)
                return -EINVAL;
-       }
 
        /* ensure that the AES and tweak key are not identical */
        if ((fips_enabled || (crypto_skcipher_get_flags(tfm) &
index 719a301af3f2479874cf249a099221acc9c0a24f..61fccc7d0efbd164fcb85ab11281e0b28f92d6a3 100644 (file)
 #define CRYPTO_TFM_REQ_MAY_SLEEP       0x00000200
 #define CRYPTO_TFM_REQ_MAY_BACKLOG     0x00000400
 #define CRYPTO_TFM_RES_WEAK_KEY                0x00100000
-#define CRYPTO_TFM_RES_BAD_KEY_LEN     0x00200000
 
 /*
  * Miscellaneous stuff.