verity_verify_local/
merkle.rs1use rs_merkle::{algorithms::Sha256, Hasher, MerkleTree};
2
3pub fn generate_merkle_tree(leaves: &Vec<[u8; 32]>) -> MerkleTree<Sha256> {
5 let tree: MerkleTree<Sha256> = MerkleTree::<Sha256>::from_leaves(&leaves);
6 return tree;
7}
8
9pub fn validate_merkle_tree(leaves: &Vec<String>, root_hash: &String) -> bool {
11 let leaves: Vec<[u8; 32]> = leaves
14 .iter()
15 .map(|proof_response| {
16 let proof_byte_content = proof_response.as_bytes();
17
18 Sha256::hash(proof_byte_content)
19 })
20 .collect();
21
22 let merkle_tree = generate_merkle_tree(&leaves);
23
24 let root = merkle_tree.root().unwrap();
25 let derived_root_hash = hex::encode(root);
26 let root_hash = root_hash.to_owned();
27
28 return derived_root_hash == root_hash;
32}