From b43c8ea324fcf484191b7fcf097b1b0dd6234c1d Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Sat, 12 Jul 2025 17:02:56 +0200 Subject: manually implement addition-by-one The int conversion is quite costly, so this is a lot faster (especially in the non-simd build). --- src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 919e91b..f327959 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -705,17 +705,17 @@ fn aez_hash(aez: &Aez, tweaks: Tweak) -> Block { /// XOR's the result of aez_prf into the given buffer fn aez_prf(aez: &Aez, tweaks: Tweak, buffer: &mut [u8]) { - let mut index = 0u128; + let mut index = Block::null(); let delta = aez_hash(aez, tweaks); for chunk in buffer.chunks_exact_mut(16) { let chunk: &mut [u8; 16] = chunk.try_into().unwrap(); - let block = e(-1, 3, aez, delta ^ Block::from_int(index)); + let block = e(-1, 3, aez, delta ^ index); (block ^ Block::from(*chunk)).write_to(chunk); - index += 1; + index.count_up(); } let suffix_start = buffer.len() - buffer.len() % 16; let chunk = &mut buffer[suffix_start..]; - let block = e(-1, 3, aez, delta ^ Block::from_int(index)); + let block = e(-1, 3, aez, delta ^ index); for (a, b) in chunk.iter_mut().zip(block.bytes().iter()) { *a ^= *b; } -- cgit v1.2.3