wots sign byte array using secrets mirror of get_assertions_from_signature
(assn: Assertions, secrets: Vec<String>)
| 296 | // wots sign byte array using secrets |
| 297 | // mirror of get_assertions_from_signature |
| 298 | pub(crate) fn get_signature_from_assertion(assn: Assertions, secrets: Vec<String>) -> Signatures { |
| 299 | println!("get_signature_from_assertion"); |
| 300 | // sign and return Signatures |
| 301 | let (ps, fs, hs) = (assn.0, assn.1, assn.2); |
| 302 | |
| 303 | let mut psig: Vec<<Wots32 as Wots>::Signature> = vec![]; |
| 304 | for i in 0..NUM_PUBS { |
| 305 | let secret = Wots32::secret_from_str(secrets[i].as_str()); |
| 306 | let psi = Wots32::sign(&secret, &ps[i]); |
| 307 | psig.push(psi); |
| 308 | } |
| 309 | let psig: Box<[<Wots32 as Wots>::Signature; NUM_PUBS]> = Box::new(psig.try_into().unwrap()); |
| 310 | |
| 311 | let mut fsig: Vec<<Wots32 as Wots>::Signature> = vec![]; |
| 312 | for i in 0..fs.len() { |
| 313 | let secret = Wots32::secret_from_str(secrets[i + NUM_PUBS].as_str()); |
| 314 | let fsi = Wots32::sign(&secret, &fs[i]); |
| 315 | fsig.push(fsi); |
| 316 | } |
| 317 | let fsig: Box<[<Wots32 as Wots>::Signature; NUM_U256]> = Box::new(fsig.try_into().unwrap()); |
| 318 | |
| 319 | let mut hsig: Vec<<Wots16 as Wots>::Signature> = vec![]; |
| 320 | for i in 0..hs.len() { |
| 321 | let secret = Wots16::secret_from_str(secrets[i + NUM_PUBS + NUM_U256].as_str()); |
| 322 | let hsi = Wots16::sign(&secret, &hs[i]); |
| 323 | hsig.push(hsi); |
| 324 | } |
| 325 | let hsig: Box<[<Wots16 as Wots>::Signature; NUM_HASH]> = Box::new(hsig.try_into().unwrap()); |
| 326 | |
| 327 | (psig, fsig, hsig) |
| 328 | } |
| 329 | |
| 330 | // decode signature to assertion |
| 331 | // mirror of get_signature_from_assertion |