use metamorphic_crypto::{
SignatureLevel, generate_signing_keypair_with_level, on_signing_stack, sign, verify,
};
fn roundtrip_on_guarded_stack(level: SignatureLevel) {
let ok = on_signing_stack(move || {
let keypair = generate_signing_keypair_with_level(level);
let message = b"metamorphic large-stack signing regression";
let context = "metamorphic.signing-stack-test";
let signature = sign(message, context, &keypair.secret_key)
.expect("ML-DSA hybrid sign should succeed on the guarded stack");
verify(message, context, &signature, &keypair.public_key).expect("verify should not error")
});
assert!(ok, "hybrid signature must verify for {level:?}");
}
#[test]
fn signs_and_verifies_cat3_on_guarded_stack() {
roundtrip_on_guarded_stack(SignatureLevel::Cat3);
}
#[test]
fn signs_and_verifies_cat5_on_guarded_stack() {
roundtrip_on_guarded_stack(SignatureLevel::Cat5);
}