Skip to main content

substrate/tree/
mod.rs

1//! Tree hashing for spores.
2
3use anyhow::{anyhow, Result};
4
5pub mod blob_tree_blake3_nfc;
6
7pub use blob_tree_blake3_nfc::{compute_hash_from_entries, TreeEntry};
8
9pub fn compute_tree_hash_from_entries(
10    entries: &[TreeEntry],
11    tree: &crate::model::SporeTree,
12) -> Result<String> {
13    match tree.algorithm.as_str() {
14        blob_tree_blake3_nfc::ALGORITHM => {
15            blob_tree_blake3_nfc::compute_hash_from_entries(entries, &tree.exclude_names)
16        }
17        other => Err(anyhow!("Unsupported tree algorithm: '{}'", other)),
18    }
19}
20
21/// Compute tree hash and total uncompressed source size in bytes.
22pub fn compute_tree_hash_and_size_from_entries(
23    entries: &[TreeEntry],
24    tree: &crate::model::SporeTree,
25) -> Result<(String, u64)> {
26    match tree.algorithm.as_str() {
27        blob_tree_blake3_nfc::ALGORITHM => {
28            blob_tree_blake3_nfc::compute_hash_and_size_from_entries(entries, &tree.exclude_names)
29        }
30        other => Err(anyhow!("Unsupported tree algorithm: '{}'", other)),
31    }
32}