Skip to content

Commit 481f375

Browse files
committed
deoxys: cosmetic changes to authenticate_message
1 parent 725bdab commit 481f375

File tree

1 file changed

+33
-24
lines changed

1 file changed

+33
-24
lines changed

deoxys/src/modes.rs

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -294,38 +294,47 @@ where
294294
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
295295
tag: &mut Tag,
296296
) {
297-
if !buffer.is_empty() {
298-
tweak[0] = TWEAK_M;
297+
if buffer.is_empty() {
298+
return;
299+
}
300+
tweak[0] = TWEAK_M;
299301

300-
for (index, data) in buffer.chunks(16).enumerate() {
301-
// Copy block number
302-
tweak[8..].copy_from_slice(&(index as u64).to_be_bytes());
302+
let (chunks, tail) = Block::slice_as_chunks(buffer);
303+
let chunks_len = chunks.len();
303304

304-
if data.len() == 16 {
305-
let mut block = Block::default();
306-
block.copy_from_slice(data);
305+
for (index, data) in chunks.into_iter().enumerate() {
306+
// Copy block number
307+
tweak[8..].copy_from_slice(&(index as u64).to_be_bytes());
307308

308-
B::encrypt_in_place(&mut block, tweak, subkeys);
309+
let mut block = data.clone();
310+
B::encrypt_in_place(&mut block, tweak, subkeys);
309311

310-
for (t, b) in tag.iter_mut().zip(block.iter()) {
311-
*t ^= b;
312-
}
313-
} else {
314-
// Last block
315-
tweak[0] = TWEAK_M_LAST;
312+
for (t, b) in tag.iter_mut().zip(block.iter()) {
313+
*t ^= b;
314+
}
315+
}
316316

317-
let mut block = Block::default();
318-
block[0..data.len()].copy_from_slice(data);
317+
let index = chunks_len;
318+
let data = tail;
319+
if data.is_empty() {
320+
return;
321+
}
319322

320-
block[data.len()] = 0x80;
323+
// Copy block number
324+
tweak[8..].copy_from_slice(&(index as u64).to_be_bytes());
321325

322-
B::encrypt_in_place(&mut block, tweak, subkeys);
326+
// Last block
327+
tweak[0] = TWEAK_M_LAST;
323328

324-
for (t, b) in tag.iter_mut().zip(block.iter()) {
325-
*t ^= b;
326-
}
327-
}
328-
}
329+
let mut block = Block::default();
330+
block[0..data.len()].copy_from_slice(data);
331+
332+
block[data.len()] = 0x80;
333+
334+
B::encrypt_in_place(&mut block, tweak, subkeys);
335+
336+
for (t, b) in tag.iter_mut().zip(block.iter()) {
337+
*t ^= b;
329338
}
330339
}
331340

0 commit comments

Comments
 (0)