MCPcopy Create free account
hub / github.com/BitVM/BitVM / test_winternitz_fail

Function test_winternitz_fail

bitvm/src/signatures/winternitz.rs:943–1032  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

941
942 #[test]
943 fn test_winternitz_fail() {
944 let secret_key = match Vec::<u8>::from_hex(SAMPLE_SECRET_KEY) {
945 Ok(bytes) => bytes,
946 Err(_) => panic!("Invalid hex string"),
947 };
948 let mut prng = ChaCha20Rng::seed_from_u64(37);
949 for _ in 0..TEST_COUNT {
950 let ps = Parameters::new(prng.gen_range(1..200), prng.gen_range(4..=8));
951 let message_byte_size = ps.message_digit_len * ps.log2_base / 8;
952 let mut message = vec![0u8; message_byte_size as usize];
953 let mut return_message = vec![0; ps.message_byte_len() as usize];
954 for i in 0..message_byte_size {
955 message[i as usize] = prng.gen_range(0u8..=255);
956 return_message[i as usize] = message[i as usize];
957 }
958 let public_key = generate_public_key(&ps, &secret_key);
959 let message_checker = script! {
960 for i in 0..ps.message_byte_len() {
961 {return_message[i as usize]}
962 if i == ps.message_byte_len() - 1 {
963 OP_EQUAL
964 } else {
965 OP_EQUALVERIFY
966 }
967 }
968 };
969
970 run_winternitz_test::<ListpickVerifier, ToBytesConverter>(
971 &ps,
972 &secret_key,
973 &public_key,
974 &message,
975 message_checker.clone(),
976 false,
977 );
978 run_winternitz_test::<BruteforceVerifier, ToBytesConverter>(
979 &ps,
980 &secret_key,
981 &public_key,
982 &message,
983 message_checker.clone(),
984 false,
985 );
986 run_winternitz_test::<BinarysearchVerifier, ToBytesConverter>(
987 &ps,
988 &secret_key,
989 &public_key,
990 &message,
991 message_checker,
992 false,
993 );
994
995 let message_digits = message_to_digits(ps.message_digit_len, ps.log2_base, &message);
996 let void_message_checker = script! {
997 for i in (0..ps.message_digit_len).rev() {
998 { message_digits[i as usize] }
999 if i == 0 {
1000 OP_EQUAL

Callers

nothing calls this directly

Calls 3

generate_public_keyFunction · 0.85
message_to_digitsFunction · 0.85
cloneMethod · 0.80

Tested by

no test coverage detected