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: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
28a220aac5
commit
da3e7a9715
|
@ -312,7 +312,7 @@ config CRYPTO_DEV_PPC4XX
|
|||
depends on PPC && 4xx
|
||||
select CRYPTO_HASH
|
||||
select CRYPTO_AEAD
|
||||
select CRYPTO_AES
|
||||
select CRYPTO_LIB_AES
|
||||
select CRYPTO_CCM
|
||||
select CRYPTO_CTR
|
||||
select CRYPTO_GCM
|
||||
|
|
|
@ -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,
|
||||
unsigned int keylen)
|
||||
{
|
||||
struct crypto_cipher *aes_tfm = NULL;
|
||||
struct crypto_aes_ctx ctx;
|
||||
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);
|
||||
rc = aes_expandkey(&ctx, key, keylen);
|
||||
if (rc) {
|
||||
pr_err("aes_expandkey() failed: %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = crypto_cipher_setkey(aes_tfm, key, keylen);
|
||||
if (rc) {
|
||||
pr_err("setkey() failed: %d\n", rc);
|
||||
goto out;
|
||||
}
|
||||
|
||||
crypto_cipher_encrypt_one(aes_tfm, src, src);
|
||||
aes_encrypt(&ctx, src, src);
|
||||
crypto4xx_memcpy_to_le32(hash_start, src, 16);
|
||||
out:
|
||||
crypto_free_cipher(aes_tfm);
|
||||
return rc;
|
||||
memzero_explicit(&ctx, sizeof(ctx));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int crypto4xx_setkey_aes_gcm(struct crypto_aead *cipher,
|
||||
|
|
Loading…
Reference in a new issue