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 <[email protected]>
---
 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


Reply via email to