diff options
| author | Santo Cariotti <santo@dcariotti.me> | 2025-06-17 10:18:16 +0000 |
|---|---|---|
| committer | Santo Cariotti <santo@dcariotti.me> | 2025-06-17 10:18:16 +0000 |
| commit | 8ea1195068d39cba871b0f3babc15b9c90cfb337 (patch) | |
| tree | 18c69e9148b244d8f5da05945c4c836b7526fd99 | |
| parent | cf2b979d2ea4f60b2e158f01a5aa84df6ebb7230 (diff) | |
Add test on lib.rs
| -rw-r--r-- | Cargo.lock | 2 | ||||
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/lib.rs | 55 | ||||
| -rw-r--r-- | tests/pics/cubbit.png.enc.0 | bin | 0 -> 4255 bytes | |||
| -rw-r--r-- | tests/pics/cubbit.png.enc.1 | bin | 0 -> 4255 bytes | |||
| -rw-r--r-- | tests/pics/cubbit.png.enc.2 | bin | 0 -> 4255 bytes |
6 files changed, 56 insertions, 3 deletions
@@ -69,7 +69,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] -name = "mt" +name = "mt-rs" version = "0.1.0" dependencies = [ "hex", @@ -1,5 +1,5 @@ [package] -name = "mt" +name = "mt-rs" author = "Santo Cariotti <santo@dcariotti.me>" version = "0.1.0" edition = "2024" @@ -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; diff --git a/tests/pics/cubbit.png.enc.0 b/tests/pics/cubbit.png.enc.0 Binary files differnew file mode 100644 index 0000000..c91fc05 --- /dev/null +++ b/tests/pics/cubbit.png.enc.0 diff --git a/tests/pics/cubbit.png.enc.1 b/tests/pics/cubbit.png.enc.1 Binary files differnew file mode 100644 index 0000000..afdda5b --- /dev/null +++ b/tests/pics/cubbit.png.enc.1 diff --git a/tests/pics/cubbit.png.enc.2 b/tests/pics/cubbit.png.enc.2 Binary files differnew file mode 100644 index 0000000..5221dba --- /dev/null +++ b/tests/pics/cubbit.png.enc.2 |
