use kyberlib::{derive, KyberLibError};
fn main() -> Result<(), KyberLibError> {
let seed = [0x42u8; 64];
let keys_a = derive(&seed)?;
assert_eq!(
keys_a.public.len(),
1184,
"ML-KEM-768 EncapKey length per FIPS 203"
);
assert_eq!(
keys_a.secret.len(),
2400,
"ML-KEM-768 DecapKey length per FIPS 203"
);
let keys_b = derive(&seed)?;
assert_eq!(keys_a.public, keys_b.public);
assert_eq!(keys_a.secret, keys_b.secret);
assert!(derive(&[0u8; 63]).is_err(), "63-byte seed must fail");
assert!(derive(&[0u8; 65]).is_err(), "65-byte seed must fail");
println!(
"Deterministic ML-KEM-768 keygen reproduced from a fixed \
seed: pk={} B, sk={} B (byte-identical across both calls).",
keys_a.public.len(),
keys_a.secret.len(),
);
Ok(())
}