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

Function test_winternitz_success

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

Source from the content-addressed store, hash-verified

849
850 #[test]
851 fn test_winternitz_success() {
852 let secret_key = match Vec::<u8>::from_hex(SAMPLE_SECRET_KEY) {
853 Ok(bytes) => bytes,
854 Err(_) => panic!("Invalid hex string"),
855 };
856 let mut prng = ChaCha20Rng::seed_from_u64(37);
857 for _ in 0..TEST_COUNT {
858 let ps = Parameters::new(prng.gen_range(1..200), prng.gen_range(4..=8));
859 let message_byte_size = ps.message_digit_len * ps.log2_base / 8;
860 let mut message = vec![0u8; message_byte_size as usize];
861 let mut return_message = vec![0; ps.message_byte_len() as usize];
862 for i in 0..message_byte_size {
863 message[i as usize] = prng.gen_range(0u8..=255);
864 return_message[i as usize] = message[i as usize];
865 }
866 let public_key = generate_public_key(&ps, &secret_key);
867 let message_checker = script! {
868 for i in 0..ps.message_byte_len() {
869 {return_message[i as usize]}
870 if i == ps.message_byte_len() - 1 {
871 OP_EQUAL
872 } else {
873 OP_EQUALVERIFY
874 }
875 }
876 };
877
878 run_winternitz_test::<ListpickVerifier, ToBytesConverter>(
879 &ps,
880 &secret_key,
881 &public_key,
882 &message,
883 message_checker.clone(),
884 true,
885 );
886 run_winternitz_test::<BruteforceVerifier, ToBytesConverter>(
887 &ps,
888 &secret_key,
889 &public_key,
890 &message,
891 message_checker.clone(),
892 true,
893 );
894 run_winternitz_test::<BinarysearchVerifier, ToBytesConverter>(
895 &ps,
896 &secret_key,
897 &public_key,
898 &message,
899 message_checker,
900 true,
901 );
902
903 let message_digits = message_to_digits(ps.message_digit_len, ps.log2_base, &message);
904 let void_message_checker = script! {
905 for i in (0..ps.message_digit_len).rev() {
906 { message_digits[i as usize] }
907 if i == 0 {
908 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