1use libzeropool::{
2 constants,
3 fawkes_crypto::{
4 ff_uint::{Num, PrimeField},
5 native::poseidon::MerkleProof,
6 },
7 native::{boundednum::BoundedNum, note::Note},
8};
9
10pub fn keccak256(data: &[u8]) -> [u8; 32] {
11 use sha3::Digest;
12
13 let mut hasher = sha3::Keccak256::new();
14 hasher.update(data);
15 let mut res = [0u8; 32];
16 res.iter_mut()
17 .zip(hasher.finalize().into_iter())
18 .for_each(|(l, r)| *l = r);
19 res
20}
21
22pub fn zero_note<Fr: PrimeField>() -> Note<Fr> {
23 Note {
24 d: BoundedNum::new(Num::ZERO),
25 p_d: Num::ZERO,
26 b: BoundedNum::new(Num::ZERO),
27 t: BoundedNum::new(Num::ZERO),
28 }
29}
30
31pub fn zero_proof<Fr: PrimeField>() -> MerkleProof<Fr, { constants::HEIGHT }> {
32 MerkleProof {
33 sibling: (0..constants::HEIGHT).map(|_| Num::ZERO).collect(),
34 path: (0..constants::HEIGHT).map(|_| false).collect(),
35 }
36}