From a6400246465d254b6610e275bc5ae1bbb9ad54e8 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Mon, 17 Mar 2025 10:49:15 -0700 Subject: [PATCH] deoxys: cosmetic changes to `authenticate_message` --- deoxys/src/modes.rs | 56 ++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/deoxys/src/modes.rs b/deoxys/src/modes.rs index d02d586a..ccb2b117 100644 --- a/deoxys/src/modes.rs +++ b/deoxys/src/modes.rs @@ -294,38 +294,46 @@ where subkeys: &Array, tag: &mut Tag, ) { - if !buffer.is_empty() { - tweak[0] = TWEAK_M; + if buffer.is_empty() { + return; + } + tweak[0] = TWEAK_M; - for (index, data) in buffer.chunks(16).enumerate() { - // Copy block number - tweak[8..].copy_from_slice(&(index as u64).to_be_bytes()); + let (chunks, tail) = Block::slice_as_chunks(buffer); - if data.len() == 16 { - let mut block = Block::default(); - block.copy_from_slice(data); + for (index, data) in chunks.iter().enumerate() { + // Copy block number + tweak[8..].copy_from_slice(&(index as u64).to_be_bytes()); - B::encrypt_in_place(&mut block, tweak, subkeys); + let mut block = *data; + B::encrypt_in_place(&mut block, tweak, subkeys); - for (t, b) in tag.iter_mut().zip(block.iter()) { - *t ^= b; - } - } else { - // Last block - tweak[0] = TWEAK_M_LAST; + for (t, b) in tag.iter_mut().zip(block.iter()) { + *t ^= b; + } + } - let mut block = Block::default(); - block[0..data.len()].copy_from_slice(data); + let index = chunks.len(); + let data = tail; + if data.is_empty() { + return; + } - block[data.len()] = 0x80; + // Copy block number + tweak[8..].copy_from_slice(&(index as u64).to_be_bytes()); - B::encrypt_in_place(&mut block, tweak, subkeys); + // Last block + tweak[0] = TWEAK_M_LAST; - for (t, b) in tag.iter_mut().zip(block.iter()) { - *t ^= b; - } - } - } + let mut block = Block::default(); + block[0..data.len()].copy_from_slice(data); + + block[data.len()] = 0x80; + + B::encrypt_in_place(&mut block, tweak, subkeys); + + for (t, b) in tag.iter_mut().zip(block.iter()) { + *t ^= b; } }