(
ps: &Parameters,
secret_key: &SecretKey,
message_digits: Vec<i32>,
)
| 1062 | } |
| 1063 | |
| 1064 | fn sign_signed_digits( |
| 1065 | ps: &Parameters, |
| 1066 | secret_key: &SecretKey, |
| 1067 | message_digits: Vec<i32>, |
| 1068 | ) -> Witness { |
| 1069 | let digits = add_message_signed_checksum(ps, message_digits); |
| 1070 | let mut result = Witness::new(); |
| 1071 | for i in 0..ps.total_digit_len() { |
| 1072 | let mut impersonator_digit = digits[i as usize]; |
| 1073 | impersonator_digit = impersonator_digit.max(0); |
| 1074 | impersonator_digit = impersonator_digit.min(ps.max_digit() as i32); |
| 1075 | let sig = digit_signature(secret_key, i, impersonator_digit as u32); |
| 1076 | // FIXME: Do trailing zeroes violate Bitcoin Script's minimum data push requirement? |
| 1077 | // Maybe the script! macro removes the zeroes. |
| 1078 | // There is a 1/256 chance that a signature contains a trailing zero. |
| 1079 | result.push(sig); |
| 1080 | result.push(bitcoin_representation(digits[i as usize])); |
| 1081 | } |
| 1082 | result |
| 1083 | } |
| 1084 | |
| 1085 | assert!( |
| 1086 | execute_script(script! { |
nothing calls this directly
no test coverage detected