diff options
author | Daniel Schadt <kingdread@gmx.de> | 2025-06-13 17:50:12 +0200 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2025-06-13 17:50:12 +0200 |
commit | d146075205d3115ebfb0cd560e224af47604f5c8 (patch) | |
tree | 3f14e3ffccc938ec86b7b10576b4f7251de532f0 /src | |
parent | 34cc371f5f47a4ce180bd81a3d7ecc3b53a3c67a (diff) | |
download | zears-d146075205d3115ebfb0cd560e224af47604f5c8.tar.gz zears-d146075205d3115ebfb0cd560e224af47604f5c8.tar.bz2 zears-d146075205d3115ebfb0cd560e224af47604f5c8.zip |
don't (always) allocate in decrypt
This is the same thing we do in encrypt
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -359,8 +359,16 @@ fn decrypt<'a>( let tau_block = Block::from_int(tau * 8); let tau_bytes = tau_block.bytes(); - let mut tweaks = vec![&tau_bytes, nonce]; - tweaks.extend(ad); + let mut tweaks_vec; + let tweaks = match ad.len() { + 0 => &[&tau_bytes, nonce] as &[&[u8]], + 1 => &[&tau_bytes, nonce, ad[0]], + _ => { + tweaks_vec = vec![&tau_bytes, nonce]; + tweaks_vec.extend(ad); + &tweaks_vec + } + }; if ciphertext.len() == tau as usize { aez_prf(aez, &tweaks, ciphertext); |