use kyberlib::{
KemCore, KyberLibError, MlKem768, MlKem768Ciphertext,
MlKem768DecapKey, MlKem768EncapKey,
};
use rand_chacha::ChaCha20Rng;
use rand_core::SeedableRng;
#[test]
fn debug_redaction_decap_key() {
let mut rng = ChaCha20Rng::from_seed([0xA5_u8; 32]);
let (dk, _) = MlKem768::generate(&mut rng).expect("keygen");
insta::assert_snapshot!(format!("{:?}", dk));
}
#[test]
fn debug_redaction_encap_key() {
let mut rng = ChaCha20Rng::from_seed([0xA5_u8; 32]);
let (_, ek) = MlKem768::generate(&mut rng).expect("keygen");
insta::assert_snapshot!(format!("{:?}", ek));
}
#[test]
fn debug_redaction_shared_secret() {
let mut rng = ChaCha20Rng::from_seed([0xA5_u8; 32]);
let (_, ek) = MlKem768::generate(&mut rng).expect("keygen");
let (_ct, ss) = ek.encapsulate(&mut rng).expect("encap");
insta::assert_snapshot!(format!("{:?}", ss));
}
#[test]
fn debug_ciphertext_is_opaque() {
let mut rng = ChaCha20Rng::from_seed([0xA5_u8; 32]);
let (_, ek) = MlKem768::generate(&mut rng).expect("keygen");
let (ct, _ss) = ek.encapsulate(&mut rng).expect("encap");
let _: &MlKem768Ciphertext = &ct;
insta::assert_snapshot!(format!("{:?}", ct));
}
#[test]
fn error_display_messages_stable() {
insta::assert_snapshot!(
"error_invalid_input",
format!("{}", KyberLibError::InvalidInput)
);
insta::assert_snapshot!(
"error_invalid_key",
format!("{}", KyberLibError::InvalidKey)
);
insta::assert_snapshot!(
"error_invalid_length",
format!("{}", KyberLibError::InvalidLength)
);
insta::assert_snapshot!(
"error_decapsulation",
format!("{}", KyberLibError::Decapsulation)
);
insta::assert_snapshot!(
"error_random_bytes",
format!("{}", KyberLibError::RandomBytesGeneration)
);
}
#[test]
fn algorithm_id_table_stable() {
insta::assert_snapshot!(
"ml_kem_768_algorithm_id",
<MlKem768 as KemCore>::ALGORITHM_ID
);
insta::assert_snapshot!(
"ml_kem_768_oid",
<MlKem768 as KemCore>::OID
);
}
#[allow(dead_code)]
fn _types(_: MlKem768EncapKey, _: MlKem768DecapKey) {}