From 8ea1195068d39cba871b0f3babc15b9c90cfb337 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Tue, 17 Jun 2025 12:18:16 +0200 Subject: Add test on lib.rs --- src/lib.rs | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index aaae31c..497dbac 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,59 @@ //! This library provides modular components to build and verify binary Merkle trees //! with pluggable hash functions. - +//! +//! ## Example: Merkle Tree with File Inputs and Proof Verification +//! +//! ```rust +//! use mt_rs::hasher::SHA256Hasher; +//! use mt_rs::merkletree::MerkleTree; +//! use mt_rs::proof::{DefaultProofer, Proofer}; +//! use std::fs; +//! +//! let hasher = SHA256Hasher::new(); +//! +//! let files = [ +//! fs::read("tests/pics/cubbit.png.enc.0").expect("file 0 not found"), +//! fs::read("tests/pics/cubbit.png.enc.1").expect("file 1 not found"), +//! fs::read("tests/pics/cubbit.png.enc.2").expect("file 2 not found"), +//! ]; +//! +//! let tree = MerkleTree::new(hasher.clone(), files.clone()); +//! +//! assert_eq!(tree.height(), 3); +//! assert_eq!(tree.len(), 4); +//! assert_eq!( +//! tree.root().hash(), +//! "a08c44656fb3f561619b8747a0d1dabe97126d9ed6e0cafbd7ce08ebe12d55ca" +//! ); +//! +//! let proofer = DefaultProofer::new(&hasher, tree.leaves().clone()); +//! +//! let proof = proofer.generate(0).expect("proof generation failed"); +//! +//! assert!(proofer.verify( +//! &proof, +//! &files[0], +//! "a08c44656fb3f561619b8747a0d1dabe97126d9ed6e0cafbd7ce08ebe12d55ca", +//! &hasher +//! )); +//! +//! assert!(!proofer.verify( +//! &proof, +//! &files[0], +//! "a08c44656fb3f561619b87_NOT_VALID_HASH_9ed6e0cafbd7ce08ebe12d55ca", +//! &hasher +//! )); +//! +//! let proof = proofer.generate(1).expect("proof generation failed"); +//! +//! assert!(proofer.verify( +//! &proof, +//! &files[1], +//! "a08c44656fb3f561619b8747a0d1dabe97126d9ed6e0cafbd7ce08ebe12d55ca", +//! &hasher +//! )); +//! +//! ``` pub mod hasher; pub mod merkletree; pub mod node; -- cgit v1.2.3-71-g8e6c