| 859 | |
| 860 | #[allow(clippy::needless_range_loop)] |
| 861 | fn sign_assertions(assn: Assertions) -> Signatures { |
| 862 | let (ps, fs, hs) = (assn.0, assn.1, assn.2); |
| 863 | let secret = MOCK_SECRET; |
| 864 | |
| 865 | let mut psig: Vec<<Wots32 as Wots>::Signature> = vec![]; |
| 866 | for i in 0..NUM_PUBS { |
| 867 | let secret = format!("{secret}{:04x}", i); |
| 868 | let psi = Wots32::sign(&Wots16::secret_from_str(&secret), &ps[i]); |
| 869 | psig.push(psi); |
| 870 | } |
| 871 | let psig: Box<[<Wots32 as Wots>::Signature; NUM_PUBS]> = Box::new(psig.try_into().unwrap()); |
| 872 | |
| 873 | let mut fsig: Vec<<Wots32 as Wots>::Signature> = vec![]; |
| 874 | for i in 0..NUM_U256 { |
| 875 | let secret = format!("{secret}{:04x}", NUM_PUBS + i); |
| 876 | let fsi = Wots32::sign(&Wots16::secret_from_str(&secret), &fs[i]); |
| 877 | fsig.push(fsi); |
| 878 | } |
| 879 | let fsig: Box<[<Wots32 as Wots>::Signature; NUM_U256]> = Box::new(fsig.try_into().unwrap()); |
| 880 | |
| 881 | let mut hsig: Vec<<Wots16 as Wots>::Signature> = vec![]; |
| 882 | for i in 0..NUM_HASH { |
| 883 | let secret = format!("{secret}{:04x}", NUM_PUBS + NUM_U256 + i); |
| 884 | let hsi = Wots16::sign(&Wots16::secret_from_str(&secret), &hs[i]); |
| 885 | hsig.push(hsi); |
| 886 | } |
| 887 | let hsig: Box<[<Wots16 as Wots>::Signature; NUM_HASH]> = Box::new(hsig.try_into().unwrap()); |
| 888 | |
| 889 | (psig, fsig, hsig) |
| 890 | } |
| 891 | |
| 892 | // Step 1: Anyone can Generate Operation (mul & hash) part of tapscript: same for all vks |
| 893 | #[test] |