INNER CODE UNIT · Rust
remaining_bytes
AChep/keyguard-app · thirdParty/rust/ocb3-0.1.0-keyguard/src/lib.rs:272
let remaining_bytes = buffer.len() - processed_bytes;
// offset_* = offset_m xor L_*
inplace_xor(&mut offset_i, &self.ll_star);
// Pad = ENCIPHER(K, offset_*)
let mut pad = Block::default();
inplace_xor(&mut pad, &offset_i);
self.cipher.encrypt_block(&mut pad);
// checksum_* = checksum_m xor (P_* || 1 || zeros(127-bitlen(P_*)))
let checksum_rhs = &mut [0u8; 16];
checksum_rhs[..remaining_bytes].copy_from_slice(&buffer[processed_bytes..]);
checksum_rhs[remaining_bytes] = 0b1000_0000;
inplace_xor(&mut checksum_i, Block::from_slice(checksum_rhs));
// C_* = P_* xor Pad[1..bitlen(P_*)]
let p_star = &mut buffer[processed_bytes..];
let pad = &mut pad[..p_star.len()];
for (aa, bb) in p_star.iter_mut().zip(pad) {
*aa ^= *bb;