mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
crypto: arm64/aes - use SHA-256 library instead of crypto_shash
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>
This commit is contained in:
parent
9aa7e045f4
commit
01834444d9
|
|
@ -71,6 +71,7 @@ config CRYPTO_POLYVAL_ARM64_CE
|
||||||
config CRYPTO_AES_ARM64
|
config CRYPTO_AES_ARM64
|
||||||
tristate "Ciphers: AES, modes: ECB, CBC, CTR, CTS, XCTR, XTS"
|
tristate "Ciphers: AES, modes: ECB, CBC, CTR, CTS, XCTR, XTS"
|
||||||
select CRYPTO_AES
|
select CRYPTO_AES
|
||||||
|
select CRYPTO_LIB_SHA256
|
||||||
help
|
help
|
||||||
Block ciphers: AES cipher algorithms (FIPS-197)
|
Block ciphers: AES cipher algorithms (FIPS-197)
|
||||||
Length-preserving ciphers: AES with ECB, CBC, CTR, CTS,
|
Length-preserving ciphers: AES with ECB, CBC, CTR, CTS,
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,6 @@ struct crypto_aes_xts_ctx {
|
||||||
struct crypto_aes_essiv_cbc_ctx {
|
struct crypto_aes_essiv_cbc_ctx {
|
||||||
struct crypto_aes_ctx key1;
|
struct crypto_aes_ctx key1;
|
||||||
struct crypto_aes_ctx __aligned(8) key2;
|
struct crypto_aes_ctx __aligned(8) key2;
|
||||||
struct crypto_shash *hash;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mac_tfm_ctx {
|
struct mac_tfm_ctx {
|
||||||
|
|
@ -171,7 +170,7 @@ static int __maybe_unused essiv_cbc_set_key(struct crypto_skcipher *tfm,
|
||||||
if (ret)
|
if (ret)
|
||||||
return 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));
|
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);
|
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)
|
static int __maybe_unused essiv_cbc_encrypt(struct skcipher_request *req)
|
||||||
{
|
{
|
||||||
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
|
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
|
||||||
|
|
@ -793,8 +776,6 @@ static struct skcipher_alg aes_algs[] = { {
|
||||||
.setkey = essiv_cbc_set_key,
|
.setkey = essiv_cbc_set_key,
|
||||||
.encrypt = essiv_cbc_encrypt,
|
.encrypt = essiv_cbc_encrypt,
|
||||||
.decrypt = essiv_cbc_decrypt,
|
.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,
|
static int cbcmac_setkey(struct crypto_shash *tfm, const u8 *in_key,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user