From 57badb6e56bbe0d74169a400f91b0c28506b8ade Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 6 Dec 2022 17:54:43 -0500 Subject: [PATCH] Also test AES-GCM decrypt and bad decrypt cases. --- crypto/src/aes.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/crypto/src/aes.rs b/crypto/src/aes.rs index 08c4d3069..8ba3e9f62 100644 --- a/crypto/src/aes.rs +++ b/crypto/src/aes.rs @@ -528,9 +528,22 @@ mod tests { let mut ciphertext = Vec::new(); ciphertext.resize(tv.plaintext.len(), 0); gcm.crypt(tv.plaintext, ciphertext.as_mut()); - let tag = gcm.finish_encrypt(); + let mut tag = gcm.finish_encrypt(); assert!(tag.eq(tv.tag)); assert!(ciphertext.as_slice().eq(tv.ciphertext)); + + let mut gcm = AesGcm::new(tv.key, false); + gcm.init(tv.nonce); + gcm.aad(tv.aad); + let mut ct_copy = ciphertext.clone(); + gcm.crypt_in_place(ct_copy.as_mut()); + assert!(gcm.finish_decrypt(&tag)); + + gcm.init(tv.nonce); + gcm.aad(tv.aad); + gcm.crypt_in_place(ciphertext.as_mut()); + tag[0] ^= 1; + assert!(!gcm.finish_decrypt(&tag)); } }