#[no_mangle]
pub fn resize_block(block: &[u8], count: usize) -> Vec<u8> {
let mut result = block.to_vec();
result.resize(count, 0);
result
}
#[no_mangle]
pub fn pad_block(block: &[u8], count: usize) -> Vec<u8> {
let remainder = block.len() % count;
let extend = (count - remainder) % count;
resize_block(block, block.len() + extend)
}
#[no_mangle]
pub fn xor_blocks(lhs: &mut [u8], rhs: &[u8]) {
let max_len = lhs.len().min(rhs.len());
(0..max_len).for_each(|i| lhs[i] ^= rhs[i]);
}
#[no_mangle]
pub fn inc_block(block: &mut [u8]) {
for elem in block {
*elem = elem.wrapping_add(1);
if *elem != 0 {
return;
}
}
}