diff options
-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); |