From 8ee4afb639886d2ea71475dd50f34d4f6b836d83 Mon Sep 17 00:00:00 2001 From: Anna Date: Mon, 20 Feb 2023 17:14:43 -0500 Subject: [PATCH] feat: use blake3 instead of blake2b for hashing --- Cargo.toml | 7 ++++--- examples/extract_dedupe_in_memory.rs | 5 +++-- src/mpd_encoder.rs | 9 +++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 41f06ef..45938df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,8 +7,8 @@ autoexamples = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -blake2 = "0.10" -flate2 = "1" +blake3 = { version = "1", features = ["traits-preview"] } +flate2 = { version = "1", default-features = false, features = ["zlib-ng"] } serde = { version = "1", features = ["derive"] } serde_json = "1" sqpack = { git = "https://git.anna.lgbt/ascclemens/sqpack-rs", features = ["read", "write"] } @@ -17,7 +17,7 @@ thiserror = "1" zip = { version = "0.6", default-features = false, features = ["deflate"] } [dev-dependencies] -blake2 = "0.10" +blake3 = { version = "1", features = ["traits-preview"] } criterion = "0.4" data-encoding = "2" sha3 = "0.10" @@ -29,3 +29,4 @@ harness = false [profile.release] debug = 1 +lto = true diff --git a/examples/extract_dedupe_in_memory.rs b/examples/extract_dedupe_in_memory.rs index 75a645c..42a8fc5 100644 --- a/examples/extract_dedupe_in_memory.rs +++ b/examples/extract_dedupe_in_memory.rs @@ -3,12 +3,13 @@ use std::fs::File; use std::io::{Seek, SeekFrom}; use std::path::Path; -use blake2::{Blake2b, Digest, digest::consts::U32}; +use blake3::Hasher as Blake3; +use blake3::traits::digest::Digest; use ttmp::ttmp_extractor::TtmpExtractor; pub fn main() { - let mut blake = Blake2b::::default(); + let mut blake = Blake3::new(); let arg = std::env::args().skip(1).next().unwrap(); let file = File::open(&arg).unwrap(); let extractor = TtmpExtractor::new(file).unwrap(); diff --git a/src/mpd_encoder.rs b/src/mpd_encoder.rs index 7171470..d5f67e9 100644 --- a/src/mpd_encoder.rs +++ b/src/mpd_encoder.rs @@ -2,7 +2,8 @@ use std::collections::{HashMap, HashSet}; use std::fs::File; use std::io::{BufWriter, Read, Seek, SeekFrom, Write}; -use blake2::{Blake2b, Digest, digest::consts::U32}; +use blake3::Hasher as Blake3; +use blake3::traits::digest::Digest; use flate2::Compression; use flate2::write::DeflateEncoder; use sqpack::{DatBlockHeader, DatStdFileBlockInfos, FileKind, LodBlock, ModelBlock, SqPackFileInfo, SqPackFileInfoHeader}; @@ -134,7 +135,7 @@ impl MpdEncoder { const HEADER_SIZE: usize = std::mem::size_of::(); let mut buf = [0; Self::BLOCK_SIZE]; - let mut hasher = Blake2b::::default(); + let mut hasher = Blake3::default(); // read the texture file's header let header: RawTextureHeader = read_struct(&mut data, &mut buf)?; @@ -297,7 +298,7 @@ impl MpdEncoder { } let mut buf = [0; Self::BLOCK_SIZE]; - let mut hasher = Blake2b::::default(); + let mut hasher = Blake3::default(); // read the model file's header let header: RawModelHeader = read_struct(&mut data, &mut buf)?; @@ -510,7 +511,7 @@ impl MpdEncoder { let after_header = self.writer.stream_position().map_err(Error::Io)?; // write the data - let mut hasher = Blake2b::::default(); + let mut hasher = Blake3::default(); let infos = self.write_blocks(data, &mut hasher)?; let hash = hasher.finalize();