Commit da3e7a97 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Herbert Xu

crypto: amcc - switch to AES library for GCM key derivation

The AMCC code for GCM key derivation allocates a AES cipher to
perform a single block encryption. So let's switch to the new
and more lightweight AES library instead.
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 28a220aa
...@@ -312,7 +312,7 @@ config CRYPTO_DEV_PPC4XX ...@@ -312,7 +312,7 @@ config CRYPTO_DEV_PPC4XX
depends on PPC && 4xx depends on PPC && 4xx
select CRYPTO_HASH select CRYPTO_HASH
select CRYPTO_AEAD select CRYPTO_AEAD
select CRYPTO_AES select CRYPTO_LIB_AES
select CRYPTO_CCM select CRYPTO_CCM
select CRYPTO_CTR select CRYPTO_CTR
select CRYPTO_GCM select CRYPTO_GCM
......
...@@ -527,28 +527,20 @@ static int crypto4xx_aes_gcm_validate_keylen(unsigned int keylen) ...@@ -527,28 +527,20 @@ static int crypto4xx_aes_gcm_validate_keylen(unsigned int keylen)
static int crypto4xx_compute_gcm_hash_key_sw(__le32 *hash_start, const u8 *key, static int crypto4xx_compute_gcm_hash_key_sw(__le32 *hash_start, const u8 *key,
unsigned int keylen) unsigned int keylen)
{ {
struct crypto_cipher *aes_tfm = NULL; struct crypto_aes_ctx ctx;
uint8_t src[16] = { 0 }; uint8_t src[16] = { 0 };
int rc = 0; int rc;
aes_tfm = crypto_alloc_cipher("aes", 0, CRYPTO_ALG_NEED_FALLBACK);
if (IS_ERR(aes_tfm)) {
rc = PTR_ERR(aes_tfm);
pr_warn("could not load aes cipher driver: %d\n", rc);
return rc;
}
rc = crypto_cipher_setkey(aes_tfm, key, keylen); rc = aes_expandkey(&ctx, key, keylen);
if (rc) { if (rc) {
pr_err("setkey() failed: %d\n", rc); pr_err("aes_expandkey() failed: %d\n", rc);
goto out; return rc;
} }
crypto_cipher_encrypt_one(aes_tfm, src, src); aes_encrypt(&ctx, src, src);
crypto4xx_memcpy_to_le32(hash_start, src, 16); crypto4xx_memcpy_to_le32(hash_start, src, 16);
out: memzero_explicit(&ctx, sizeof(ctx));
crypto_free_cipher(aes_tfm); return 0;
return rc;
} }
int crypto4xx_setkey_aes_gcm(struct crypto_aead *cipher, int crypto4xx_setkey_aes_gcm(struct crypto_aead *cipher,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment