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;

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…