From 770146bb69a3717ad953fa5458383fdc66236a2b Mon Sep 17 00:00:00 2001 From: Avril Date: Tue, 26 May 2020 13:51:10 +0100 Subject: [PATCH] disable hashing has opt --- Makefile | 3 ++- generator-native/src/arg.rs | 3 +++ generator-native/src/main.rs | 41 ++++++++++++++++++++++---------- generator-native/src/opt/mod.rs | 1 + generator-v0.2.0 | Bin 355064 -> 372688 bytes generator-v0.2.0.gpg | Bin 152629 -> 162689 bytes generator-v0.2.0.sha256 | 2 +- 7 files changed, 36 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 905734d..e332bee 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ VERSION:= v0.2.0 +FEATURES:= --features hash all: clean deps sign trust @@ -14,7 +15,7 @@ trust: ln -sf generator-$(VERSION) generator generator: - cd generator-native && cargo build --release + cd generator-native && cargo build --release $(FEATURES) ln -sf generator-native/target/release/generator-native generator cp -f `readlink generator` ./generator-$(VERSION) diff --git a/generator-native/src/arg.rs b/generator-native/src/arg.rs index 2ebcbb8..d0b92d3 100644 --- a/generator-native/src/arg.rs +++ b/generator-native/src/arg.rs @@ -48,6 +48,9 @@ pub fn parse() -> Result } i += 1; }, + "-u" if look => { + opt |= Opt::NoHash; + }, "-" if look => look=false, other => { files.push(other.to_owned()); diff --git a/generator-native/src/main.rs b/generator-native/src/main.rs index a31a35f..96af170 100644 --- a/generator-native/src/main.rs +++ b/generator-native/src/main.rs @@ -47,7 +47,7 @@ fn usage() -> ! { { let prog = &arg::program_name(); version(true); - println!("Usage: {} [-s] [-e ] [-o ] [-] ", prog); + println!("Usage: {} [-s] [-e ] [-o ] [-u] [-] ", prog); println!("Usage: {} -h", prog); println!("Usage: {} -v|-V", prog); println!(); @@ -58,6 +58,10 @@ fn usage() -> ! { println!(" -s\t\tSilent mode."); println!(" -e \tScript to run after extraction."); println!(" -o \tOutput filename."); + #[cfg(feature = "hash")] + println!(" -u\t\tUnchecked mode. Do not compute hashes of inputs."); + #[cfg(not(feature = "hash"))] + println!(" -u\t\tUnchecked mode. (default as generator is not compiled with `hash` feature)."); } std::process::exit(1) } @@ -67,7 +71,11 @@ type Sha256Hash = [u8; 32]; #[cfg(not(feature = "hash"))] type Sha256Hash = (); -fn write_file(from: From, to: &mut To) -> io::Result<(Sha256Hash, usize)> +const WF_BUFFER_SIZE: usize = 1024; +const WF_GROUP_SIZE: usize = 16; + +#[allow(unused_variables)] +fn write_file(from: From, to: &mut To, hash: bool) -> io::Result<(Sha256Hash, usize)> where From: Read, To: Write + ?Sized { @@ -78,25 +86,32 @@ where From: Read, let mut hash_output = [0u8; 32]; let mut count =0; let mut digest = Sha256::new(); - for buf in from.into_iter(8) - .map(|byte| (digest.input(&[byte]), format!("0x{:02x},", byte)).1) - .group_at(8) + let lambda: Box String> = if hash { + Box::new(|byte| (digest.input(&[byte]), format!("0x{:02x},", byte)).1) + } else { + Box::new(|byte| format!("0x{:02x},", byte)) + }; + for buf in from.into_iter(WF_BUFFER_SIZE) + .map(lambda) + .group_at(WF_GROUP_SIZE) .map(|bytes| (count += bytes.len(), bytes).1) .map(|strs| format!("\t{}", strs.join(" "))) { writeln!(to, "{}", buf)?; } - copy_slice(&mut hash_output[..], &digest.result()[..]); - + if hash { + copy_slice(&mut hash_output[..], &digest.result()[..]); + } + Ok((hash_output, count)) } #[cfg(not(feature = "hash"))] { let mut count =0; - for buf in from.into_iter(8) + for buf in from.into_iter(WF_BUFFER_SIZE) .map(|byte| format!("0x{:02x},", byte)) - .group_at(8) + .group_at(WF_GROUP_SIZE) .map(|bytes| (count += bytes.len(), bytes).1) .map(|strs| format!("\t{}", strs.join(" "))) { @@ -152,6 +167,7 @@ fn main() -> Result<(), Box> _ => None }); let silent = options.has_tag(&Opt::Silent); + let no_hash = options.has_tag(&Opt::NoHash); println!("Writing to {}...", output); let mut fp = OpenOptions::new() @@ -187,7 +203,7 @@ fn main() -> Result<(), Box> .read(true) .open(file)?; - sizes.push(match write_file(file, &mut fp) { + sizes.push(match write_file(file, &mut fp, !no_hash) { Ok((hash, size)) => { hashes.push(hash); println!(" OK"); @@ -211,6 +227,7 @@ fn main() -> Result<(), Box> writeln!(fp, "\n}};")?; #[cfg(feature="hash")] + if !no_hash { println!("Adding hashes..."); writeln!(fp, "#define DATA_HASHED")?; @@ -237,7 +254,7 @@ fn main() -> Result<(), Box> } }; - match write!(fp, "\t\"{}\",", translate::c_escape(file)) { + match writeln!(fp, "\t\"{}\",", translate::c_escape(file)) { Err(error) => { println!(" FAILED: write: {}", error); @@ -247,7 +264,7 @@ fn main() -> Result<(), Box> }; println!(" OK"); } - writeln!(fp, "\n}};")?; + writeln!(fp, "}};")?; }, arg::OperationMode::Help => { usage(); diff --git a/generator-native/src/opt/mod.rs b/generator-native/src/opt/mod.rs index c31c799..0534895 100644 --- a/generator-native/src/opt/mod.rs +++ b/generator-native/src/opt/mod.rs @@ -9,6 +9,7 @@ pub enum Opt Silent, Execute(String), Output(String), + NoHash, } #[derive(Debug, Clone, PartialEq, Eq)] diff --git a/generator-v0.2.0 b/generator-v0.2.0 index 5a548f0af7a3a466596b9343289828e15c263756..4bb4bcc4f853c9460086fce9c4e84095feaf2cb8 100755 GIT binary patch delta 135171 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