feat: use blake3 instead of blake2b for hashing

This commit is contained in:
Anna 2023-02-20 17:14:43 -05:00
parent 13f0fd4391
commit 8ee4afb639
3 changed files with 12 additions and 9 deletions

View File

@ -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

View File

@ -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::<U32>::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();

View File

@ -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::<RawTextureHeader>();
let mut buf = [0; Self::BLOCK_SIZE];
let mut hasher = Blake2b::<U32>::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::<U32>::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::<U32>::default();
let mut hasher = Blake3::default();
let infos = self.write_blocks(data, &mut hasher)?;
let hash = hasher.finalize();