From b4cd238892b6a5cee6edb0e68055f227a3aa4dee Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Wed, 21 May 2025 23:04:56 +0200 Subject: [PATCH] Improve AES256-GCM performance on ARM --- .../aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c b/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c index 85ab45d4..6f214a46 100644 --- a/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c +++ b/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c @@ -46,9 +46,10 @@ typedef uint64x2_t BlockVec; #define LOAD128(a) vld1q_u64((const uint64_t *) (const void *) (a)) #define STORE128(a, b) vst1q_u64((uint64_t *) (void *) (a), (b)) #define AES_XENCRYPT(block_vec, rkey) \ - vreinterpretq_u64_u8(vaesmcq_u8(vaeseq_u8(vreinterpretq_u8_u64(block_vec), rkey))) + vreinterpretq_u64_u8( \ + vaesmcq_u8(vaeseq_u8(rkey, vreinterpretq_u8_u64(block_vec)))) #define AES_XENCRYPTLAST(block_vec, rkey) \ - vreinterpretq_u64_u8(vaeseq_u8(vreinterpretq_u8_u64(block_vec), rkey)) + vreinterpretq_u64_u8(vaeseq_u8(rkey, vreinterpretq_u8_u64(block_vec))) #define XOR128(a, b) veorq_u64((a), (b)) #define AND128(a, b) vandq_u64((a), (b)) #define OR128(a, b) vorrq_u64((a), (b))