Switch from the old AES library functions (which use struct
crypto_aes_ctx) to the new ones (which use struct aes_enckey). This
eliminates the unnecessary computation and caching of the decryption
round keys. The new AES en/decryption functions are also much faster
and use AES instructions when supported by the CPU.
Note: aes_encrypt_new() will be renamed to aes_encrypt() once all
callers of the old aes_encrypt() have been updated.
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
---
drivers/staging/rtl8723bs/core/rtw_security.c | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/staging/rtl8723bs/core/rtw_security.c
index 2f941ffbd465..79825324e70f 100644
--- a/drivers/staging/rtl8723bs/core/rtw_security.c
+++ b/drivers/staging/rtl8723bs/core/rtw_security.c
@@ -635,15 +635,15 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
/* Performs a 128 bit AES encrypt with */
/* 128 bit data. */
/****************************************/
static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext)
{
- struct crypto_aes_ctx ctx;
+ struct aes_enckey aes;
- aes_expandkey(&ctx, key, 16);
- aes_encrypt(&ctx, ciphertext, data);
- memzero_explicit(&ctx, sizeof(ctx));
+ aes_prepareenckey(&aes, key, 16);
+ aes_encrypt_new(&aes, ciphertext, data);
+ memzero_explicit(&aes, sizeof(aes));
}
/************************************************/
/* construct_mic_iv() */
/* Builds the MIC IV from header fields and PN */
@@ -1404,17 +1404,17 @@ static void gf_mulx(u8 *pad)
* (SP) 800-38B.
*/
static int omac1_aes_128_vector(u8 *key, size_t num_elem,
u8 *addr[], size_t *len, u8 *mac)
{
- struct crypto_aes_ctx ctx;
+ struct aes_enckey aes;
u8 cbc[AES_BLOCK_SIZE], pad[AES_BLOCK_SIZE];
u8 *pos, *end;
size_t i, e, left, total_len;
int ret;
- ret = aes_expandkey(&ctx, key, 16);
+ ret = aes_prepareenckey(&aes, key, 16);
if (ret)
return -1;
memset(cbc, 0, AES_BLOCK_SIZE);
total_len = 0;
@@ -1434,16 +1434,16 @@ static int omac1_aes_128_vector(u8 *key, size_t num_elem,
pos = addr[e];
end = pos + len[e];
}
}
if (left > AES_BLOCK_SIZE)
- aes_encrypt(&ctx, cbc, cbc);
+ aes_encrypt_new(&aes, cbc, cbc);
left -= AES_BLOCK_SIZE;
}
memset(pad, 0, AES_BLOCK_SIZE);
- aes_encrypt(&ctx, pad, pad);
+ aes_encrypt_new(&aes, pad, pad);
gf_mulx(pad);
if (left || total_len == 0) {
for (i = 0; i < left; i++) {
cbc[i] ^= *pos++;
@@ -1457,12 +1457,12 @@ static int omac1_aes_128_vector(u8 *key, size_t num_elem,
gf_mulx(pad);
}
for (i = 0; i < AES_BLOCK_SIZE; i++)
pad[i] ^= cbc[i];
- aes_encrypt(&ctx, pad, mac);
- memzero_explicit(&ctx, sizeof(ctx));
+ aes_encrypt_new(&aes, pad, mac);
+ memzero_explicit(&aes, sizeof(aes));
return 0;
}
/**
* omac1_aes_128 - One-Key CBC MAC (OMAC1) hash with AES-128 (aka AES-CMAC)
--
2.52.0