Skip to content

Commit cafa7a0

Browse files
author
Eric Biggers
committed
crypto: chelsio - Use new AES library API
Switch from the old AES library functions (which use struct crypto_aes_ctx) to the new ones (which use struct aes_key and struct aes_enckey). In encryption-only use cases, 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 that in addition to the change in the key preparation function and the key struct type itself, the change in the type of the key struct results in aes_encrypt() (which is temporarily a type-generic macro) calling the new encryption function rather than the old one. Likewise for decryption. Acked-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20260112192035.10427-28-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
1 parent 0f5f496 commit cafa7a0

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

drivers/crypto/chelsio/chcr_algo.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ static int chcr_update_tweak(struct skcipher_request *req, u8 *iv,
10281028
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
10291029
struct ablk_ctx *ablkctx = ABLK_CTX(c_ctx(tfm));
10301030
struct chcr_skcipher_req_ctx *reqctx = skcipher_request_ctx(req);
1031-
struct crypto_aes_ctx aes;
1031+
struct aes_key aes;
10321032
int ret, i;
10331033
u8 *key;
10341034
unsigned int keylen;
@@ -1044,9 +1044,9 @@ static int chcr_update_tweak(struct skcipher_request *req, u8 *iv,
10441044
*/
10451045
if (KEY_CONTEXT_CK_SIZE_G(ntohl(ablkctx->key_ctx_hdr))
10461046
== CHCR_KEYCTX_CIPHER_KEY_SIZE_192)
1047-
ret = aes_expandkey(&aes, key, keylen - 8);
1047+
ret = aes_preparekey(&aes, key, keylen - 8);
10481048
else
1049-
ret = aes_expandkey(&aes, key, keylen);
1049+
ret = aes_preparekey(&aes, key, keylen);
10501050
if (ret)
10511051
return ret;
10521052
aes_encrypt(&aes, iv, iv);
@@ -3406,7 +3406,7 @@ static int chcr_gcm_setkey(struct crypto_aead *aead, const u8 *key,
34063406
struct chcr_gcm_ctx *gctx = GCM_CTX(aeadctx);
34073407
unsigned int ck_size;
34083408
int ret = 0, key_ctx_size = 0;
3409-
struct crypto_aes_ctx aes;
3409+
struct aes_enckey aes;
34103410

34113411
aeadctx->enckey_len = 0;
34123412
crypto_aead_clear_flags(aeadctx->sw_cipher, CRYPTO_TFM_REQ_MASK);
@@ -3444,7 +3444,7 @@ static int chcr_gcm_setkey(struct crypto_aead *aead, const u8 *key,
34443444
/* Calculate the H = CIPH(K, 0 repeated 16 times).
34453445
* It will go in key context
34463446
*/
3447-
ret = aes_expandkey(&aes, key, keylen);
3447+
ret = aes_prepareenckey(&aes, key, keylen);
34483448
if (ret) {
34493449
aeadctx->enckey_len = 0;
34503450
goto out;

0 commit comments

Comments
 (0)