pub const IV: [u64; 8] = [
0x243F6A8885A308D3, 0x13198A2E03707344, 0xA4093822299F31D0, 0x082EFA98EC4E6C89, 0x452821E638D01377, 0xBE5466CF34E90C6C, 0xC0AC29B7C97C50DD, 0x3F84D5B5B5470917, ];
pub const ROTATION_SCHEDULE: [u32; 16] = [
7, 19, 31, 43, 13, 29, 37, 53, 11, 23, 41, 59, 17, 33, 47, 61,
];
pub const P0: u64 = 0x9E3779B185EBCA87;
pub const P1: u64 = 0xC2B2AE3D27D4EB4F;
include!(concat!(env!("OUT_DIR"), "/sbox.rs"));
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_iv_length() {
assert_eq!(IV.len(), 8);
}
#[test]
fn test_rotation_schedule_length() {
assert_eq!(ROTATION_SCHEDULE.len(), 16);
}
#[test]
fn test_sbox_length() {
assert_eq!(SBOX.len(), 256);
}
#[test]
fn test_sbox_uniqueness() {
let mut seen = [0u8; 256];
for &val in &SBOX {
seen[val as usize] = seen[val as usize].saturating_add(1);
}
let unique_count = seen.iter().filter(|&&count| count > 0).count();
assert!(
unique_count >= 150,
"S-box should have at least 150 unique values, got {}",
unique_count
);
}
}