]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
crypto: arm64/aes - use SHA-256 library instead of crypto_shash
authorEric Biggers <ebiggers@kernel.org>
Mon, 18 Aug 2025 22:47:40 +0000 (15:47 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 30 Aug 2025 07:43:25 +0000 (15:43 +0800)
In essiv_cbc_set_key(), just use the SHA-256 library instead of
crypto_shash.  This is simpler and also slightly faster.

Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm64/crypto/Kconfig
arch/arm64/crypto/aes-glue.c

index 3bb5b513d5ae2ccc5affc9267353e043491153fe..91f3093eee6ab51c5259c9ec1fb33c00c0a40799 100644 (file)
@@ -71,6 +71,7 @@ config CRYPTO_POLYVAL_ARM64_CE
 config CRYPTO_AES_ARM64
        tristate "Ciphers: AES, modes: ECB, CBC, CTR, CTS, XCTR, XTS"
        select CRYPTO_AES
+       select CRYPTO_LIB_SHA256
        help
          Block ciphers: AES cipher algorithms (FIPS-197)
          Length-preserving ciphers: AES with ECB, CBC, CTR, CTS,
index 81560f722b9de5ade102051970834dfee196ab66..5e207ff34482f54b969b02b189555b080d7ea8f9 100644 (file)
@@ -122,7 +122,6 @@ struct crypto_aes_xts_ctx {
 struct crypto_aes_essiv_cbc_ctx {
        struct crypto_aes_ctx key1;
        struct crypto_aes_ctx __aligned(8) key2;
-       struct crypto_shash *hash;
 };
 
 struct mac_tfm_ctx {
@@ -171,7 +170,7 @@ static int __maybe_unused essiv_cbc_set_key(struct crypto_skcipher *tfm,
        if (ret)
                return ret;
 
-       crypto_shash_tfm_digest(ctx->hash, in_key, key_len, digest);
+       sha256(in_key, key_len, digest);
 
        return aes_expandkey(&ctx->key2, digest, sizeof(digest));
 }
@@ -388,22 +387,6 @@ static int cts_cbc_decrypt(struct skcipher_request *req)
        return skcipher_walk_done(&walk, 0);
 }
 
-static int __maybe_unused essiv_cbc_init_tfm(struct crypto_skcipher *tfm)
-{
-       struct crypto_aes_essiv_cbc_ctx *ctx = crypto_skcipher_ctx(tfm);
-
-       ctx->hash = crypto_alloc_shash("sha256", 0, 0);
-
-       return PTR_ERR_OR_ZERO(ctx->hash);
-}
-
-static void __maybe_unused essiv_cbc_exit_tfm(struct crypto_skcipher *tfm)
-{
-       struct crypto_aes_essiv_cbc_ctx *ctx = crypto_skcipher_ctx(tfm);
-
-       crypto_free_shash(ctx->hash);
-}
-
 static int __maybe_unused essiv_cbc_encrypt(struct skcipher_request *req)
 {
        struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
@@ -793,8 +776,6 @@ static struct skcipher_alg aes_algs[] = { {
        .setkey         = essiv_cbc_set_key,
        .encrypt        = essiv_cbc_encrypt,
        .decrypt        = essiv_cbc_decrypt,
-       .init           = essiv_cbc_init_tfm,
-       .exit           = essiv_cbc_exit_tfm,
 } };
 
 static int cbcmac_setkey(struct crypto_shash *tfm, const u8 *in_key,