(
ps: &Parameters,
secret_key: &SecretKey,
public_key: &PublicKey,
message: &[u8],
message_checker: Script,
desired_outcome: bool,
)
| 781 | } |
| 782 | |
| 783 | fn run_winternitz_test<VERIFIER: Verifier, CONVERTER: Converter>( |
| 784 | ps: &Parameters, |
| 785 | secret_key: &SecretKey, |
| 786 | public_key: &PublicKey, |
| 787 | message: &[u8], |
| 788 | message_checker: Script, |
| 789 | desired_outcome: bool, |
| 790 | ) { |
| 791 | let o = Winternitz::<VERIFIER, CONVERTER>::new(); |
| 792 | let standard_script = script! { |
| 793 | { o.sign(ps, secret_key, message) } |
| 794 | if desired_outcome == false { |
| 795 | { try_malicious(ps, message, &get_type_name::<VERIFIER>()) } |
| 796 | } |
| 797 | { o.checksig_verify(ps, &public_key) } |
| 798 | }; |
| 799 | |
| 800 | println!( |
| 801 | "For message_digit_len: {} and log2_base: {} {} with {} =>", |
| 802 | ps.message_digit_len, |
| 803 | ps.log2_base, |
| 804 | get_type_name::<VERIFIER>(), |
| 805 | get_type_name::<CONVERTER>() |
| 806 | ); |
| 807 | test_script(ps, standard_script, message_checker, desired_outcome); |
| 808 | if desired_outcome == true { |
| 809 | let message_remove_script = script! { |
| 810 | { o.sign(ps, secret_key, message) } |
| 811 | { o.checksig_verify_and_clear_stack(ps, public_key) } |
| 812 | OP_TRUE |
| 813 | }; |
| 814 | assert!(execute_script(message_remove_script).success == true); |
| 815 | } |
| 816 | } |
| 817 | |
| 818 | #[test] |
| 819 | fn test_winternitz_with_actual_message_success() { |
nothing calls this directly
no test coverage detected