diff options
-rw-r--r-- | ripple/Cargo.lock | 12 | ||||
-rw-r--r-- | ripple/fossil/Cargo.toml | 1 | ||||
-rw-r--r-- | ripple/fossil/src/lib.rs | 11 |
3 files changed, 19 insertions, 5 deletions
diff --git a/ripple/Cargo.lock b/ripple/Cargo.lock index b857ee0..359d48d 100644 --- a/ripple/Cargo.lock +++ b/ripple/Cargo.lock @@ -47,6 +47,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] +name = "bao" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f51ef7e16e840728c95d71045a7f67fb0c17e0c03560b0aa99ae607bd31a3c" +dependencies = [ + "arrayref", + "arrayvec", + "blake3", +] + +[[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -209,6 +220,7 @@ checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" name = "fossil" version = "0.1.0" dependencies = [ + "bao", "blake3", "byteorder", "bytes", diff --git a/ripple/fossil/Cargo.toml b/ripple/fossil/Cargo.toml index 70554ea..ecfa5b4 100644 --- a/ripple/fossil/Cargo.toml +++ b/ripple/fossil/Cargo.toml @@ -17,6 +17,7 @@ log = "0.4.14" libc = "0.2.112" env_logger = "0.9.0" lazy_static = "1.4.0" +bao = "0.12.0" [build-dependencies] prost-build = "0.8.0" diff --git a/ripple/fossil/src/lib.rs b/ripple/fossil/src/lib.rs index 3492789..9e380f2 100644 --- a/ripple/fossil/src/lib.rs +++ b/ripple/fossil/src/lib.rs @@ -7,7 +7,7 @@ use { std::{ collections::BTreeMap, fs, - io::{self, BufRead, Read}, + io::{self, BufRead, Read, Write}, os::unix::fs::PermissionsExt, path::Path, }, @@ -107,10 +107,11 @@ impl Store { let mut buffer = Vec::new(); self.raw_blob(ident).read_to_end(&mut buffer).unwrap(); - let computed_ident = { - let mut h = blake3::Hasher::new(); - h.update_rayon(&buffer); - h.finalize() + let mut outboard = Vec::new(); + let computed_ident: blake3::Hash = { + let mut encoder = bao::encode::Encoder::new_outboard(io::Cursor::new(&mut outboard)); + encoder.write_all(&buffer).unwrap(); + encoder.finalize().unwrap() }; if computed_ident != ident { |