Skip to main content

miden_test_utils/
crypto.rs

1use alloc::vec::Vec;
2
3// RE-EXPORTS
4// ================================================================================================
5pub use miden_core::crypto::{
6    dsa::*,
7    hash::Poseidon2,
8    merkle::{
9        EmptySubtreeRoots, LeafIndex, MerkleError, MerklePath, MerkleStore, MerkleTree, Mmr,
10        MmrPeaks, NodeIndex, PartialMerkleTree, SimpleSmt, Smt,
11    },
12};
13
14use super::{Felt, Word, ZERO};
15
16// CRYPTO HELPER FUNCTIONS
17// ================================================================================================
18
19pub fn init_merkle_store(values: &[u64]) -> (Vec<Word>, MerkleStore) {
20    let leaves = init_merkle_leaves(values);
21    let merkle_tree = MerkleTree::new(leaves.clone()).unwrap();
22    let store = MerkleStore::from(&merkle_tree);
23    (leaves, store)
24}
25
26pub fn init_merkle_leaves(values: &[u64]) -> Vec<Word> {
27    values.iter().map(|&v| init_merkle_leaf(v)).collect()
28}
29
30pub fn init_merkle_leaf(value: u64) -> Word {
31    [Felt::new(value), ZERO, ZERO, ZERO].into()
32}