From e8492b1859e9e0807d565ec03364d47979109993 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Thu, 5 Feb 2026 23:03:08 +0100 Subject: [PATCH] Zero the state afetr AES decryption --- .../crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c | 6 +++++- .../aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c b/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c index b9ce4b94..7ebccbe3 100644 --- a/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c +++ b/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c @@ -970,6 +970,7 @@ crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *k) { CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + int ret; PREFETCH_WRITE(m); PREFETCH_READ(c); @@ -977,8 +978,11 @@ crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, unsigned char *nsec, crypto_aead_aes256gcm_beforenm(&st, k); - return crypto_aead_aes256gcm_decrypt_detached_afternm( + ret = crypto_aead_aes256gcm_decrypt_detached_afternm( m, nsec, c, clen, mac, ad, adlen, npub, (const crypto_aead_aes256gcm_state *) &st); + sodium_memzero(&st, sizeof st); + + return ret; } int 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 f7d7a5f1..60f40bdd 100644 --- a/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c +++ b/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c @@ -988,6 +988,7 @@ crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, unsigned char *nsec, const unsigned char *k) { CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state st; + int ret; PREFETCH_WRITE(m); PREFETCH_READ(c); @@ -995,8 +996,11 @@ crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, unsigned char *nsec, crypto_aead_aes256gcm_beforenm(&st, k); - return crypto_aead_aes256gcm_decrypt_detached_afternm( + ret = crypto_aead_aes256gcm_decrypt_detached_afternm( m, nsec, c, clen, mac, ad, adlen, npub, (const crypto_aead_aes256gcm_state *) &st); + sodium_memzero(&st, sizeof st); + + return ret; } int