summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2025-06-17 10:18:16 +0000
committerSanto Cariotti <santo@dcariotti.me>2025-06-17 10:18:16 +0000
commit8ea1195068d39cba871b0f3babc15b9c90cfb337 (patch)
tree18c69e9148b244d8f5da05945c4c836b7526fd99 /src/lib.rs
parentcf2b979d2ea4f60b2e158f01a5aa84df6ebb7230 (diff)
Add test on lib.rs
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs55
1 files changed, 54 insertions, 1 deletions
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;