diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 55 |
1 files changed, 54 insertions, 1 deletions
@@ -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; |
