arnaucube
arnaucube/miden-cryptoPublic Self-hosted repository
miden-crypto/src/merkle/mod.rs
src/merkle/mod.rsRaw
 1use super::{
 2    hash::rpo::{Rpo256, RpoDigest as Digest},
 3    utils::collections::{BTreeMap, Vec},
 4    Felt, Word, ZERO,
 5};
 6
 7mod merkle_tree;
 8pub use merkle_tree::MerkleTree;
 9
10mod merkle_path_set;
11pub use merkle_path_set::MerklePathSet;
12
13// ERRORS
14// ================================================================================================
15
16#[derive(Clone, Debug)]
17pub enum MerkleError {
18    DepthTooSmall,
19    DepthTooBig(u32),
20    NumLeavesNotPowerOfTwo(usize),
21    InvalidIndex(u32, u64),
22    InvalidDepth(u32, u32),
23    InvalidPath(Vec<Word>),
24    NodeNotInSet(u64),
25}
26
27// HELPER FUNCTIONS
28// ================================================================================================
29
30#[cfg(test)]
31const fn int_to_node(value: u64) -> Word {
32    [Felt::new(value), ZERO, ZERO, ZERO]
33}