From 4b426f7b134291d39b87c30781af7c0c606a9a78 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 12 Nov 2023 23:19:34 +0800 Subject: [PATCH] feat: 0.7.2, remove direct sha256 dependency --- Cargo.lock | 95 +--------------------------------------- Cargo.toml | 3 +- src/cmd_directdecrypt.rs | 7 +-- src/crypto_simple.rs | 4 +- src/util_digest.rs | 8 ++++ 5 files changed, 17 insertions(+), 100 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 20b772b..08d8d41 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - [[package]] name = "adler" version = "1.0.2" @@ -143,38 +134,12 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "async-trait" -version = "0.1.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.39", -] - [[package]] name = "autocfg" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "backtrace" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "base16ct" version = "0.2.0" @@ -243,12 +208,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" -[[package]] -name = "bytes" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" - [[package]] name = "cc" version = "1.0.83" @@ -692,12 +651,6 @@ dependencies = [ "polyval", ] -[[package]] -name = "gimli" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" - [[package]] name = "group" version = "0.13.0" @@ -970,15 +923,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" -[[package]] -name = "object" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" -dependencies = [ - "memchr", -] - [[package]] name = "oid-registry" version = "0.6.1" @@ -1099,12 +1043,6 @@ dependencies = [ "base64ct", ] -[[package]] -name = "pin-project-lite" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" - [[package]] name = "pkcs1" version = "0.7.5" @@ -1399,12 +1337,6 @@ dependencies = [ "term_size", ] -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - [[package]] name = "rustc_version" version = "0.4.0" @@ -1530,19 +1462,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sha256" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7895c8ae88588ccead14ff438b939b0c569cd619116f14b4d13fdff7b8333386" -dependencies = [ - "async-trait", - "bytes", - "hex", - "sha2", - "tokio", -] - [[package]] name = "signature" version = "2.1.0" @@ -1738,7 +1657,7 @@ dependencies = [ [[package]] name = "tiny-encrypt" -version = "0.7.1" +version = "0.7.2" dependencies = [ "aes-gcm-stream", "base64", @@ -1760,7 +1679,6 @@ dependencies = [ "rust_util", "serde", "serde_json", - "sha256", "simpledateformat", "tabled", "x25519-dalek", @@ -1769,17 +1687,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "tokio" -version = "1.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" -dependencies = [ - "backtrace", - "bytes", - "pin-project-lite", -] - [[package]] name = "typenum" version = "1.17.0" diff --git a/Cargo.toml b/Cargo.toml index 414175f..bc631be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tiny-encrypt" -version = "0.7.1" +version = "0.7.2" edition = "2021" license = "MIT" description = "A simple and tiny file encrypt tool" @@ -34,7 +34,6 @@ rust-crypto = "0.2" rust_util = "0.6" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -sha256 = "1.4" simpledateformat = "0.1" tabled = "0.14" x25519-dalek = "2.0" diff --git a/src/cmd_directdecrypt.rs b/src/cmd_directdecrypt.rs index b06b547..bc0ddb7 100644 --- a/src/cmd_directdecrypt.rs +++ b/src/cmd_directdecrypt.rs @@ -8,8 +8,8 @@ use clap::Args; use rust_util::{debugging, information, opt_result, simple_error, success, warning, XResult}; use zeroize::Zeroize; +use crate::{util, util_digest}; use crate::crypto_cryptor::{Cryptor, KeyNonce}; -use crate::util; use crate::util_progress::Progress; #[derive(Debug, Args)] @@ -61,8 +61,9 @@ pub fn direct_decrypt(cmd_direct_decrypt: CmdDirectDecrypt) -> XResult<()> { } let mut key_digest = [0_u8; 32]; opt_result!(file_in.read_exact(&mut key_digest), "Read encryption key digest failed: {}"); - if sha256::digest(&key) != hex::encode(key_digest) { - debugging!("Encryption key digest mismatch: {} vs {}", sha256::digest(&key), hex::encode(key_digest)); + if hex::encode(util_digest::sha256_digest(&key)) != hex::encode(key_digest) { + debugging!("Encryption key digest mismatch: {} vs {}", + hex::encode(util_digest::sha256_digest(&key)), hex::encode(key_digest)); return simple_error!("Encryption key digest mismatch."); } let mut nonce = [0_u8; 12]; diff --git a/src/crypto_simple.rs b/src/crypto_simple.rs index 170694f..663c876 100644 --- a/src/crypto_simple.rs +++ b/src/crypto_simple.rs @@ -1,6 +1,7 @@ use rust_util::XResult; use crate::crypto_cryptor::{Cryptor, KeyNonce}; +use crate::util_digest; pub fn try_decrypt_with_salt(crypto: Cryptor, key_nonce: &KeyNonce, salt: &[u8], message: &[u8]) -> XResult> { let new_nonce = build_salted_nonce(key_nonce.n, salt); @@ -28,6 +29,7 @@ pub fn encrypt(crypto: Cryptor, key_nonce: &KeyNonce, message: &[u8]) -> XResult fn build_salted_nonce(nonce: &[u8], salt: &[u8]) -> Vec { let mut nonce_with_salt = nonce.to_vec(); nonce_with_salt.extend_from_slice(salt); - let input = hex::decode(sha256::digest(nonce_with_salt)).unwrap(); + let input = util_digest::sha256_digest(&nonce_with_salt); + // let input = hex::decode(sha256::digest(nonce_with_salt)).unwrap(); input[0..12].to_vec() } diff --git a/src/util_digest.rs b/src/util_digest.rs index c089a50..d79f6f1 100644 --- a/src/util_digest.rs +++ b/src/util_digest.rs @@ -45,6 +45,14 @@ impl DigestWrite { } } +pub fn sha256_digest(input: &[u8]) -> Vec { + let mut digest = Sha256::new(); + digest.input(input); + let mut buf: Vec = repeat(0).take((digest.output_bits() + 7) / 8).collect(); + digest.result(&mut buf); + buf +} + fn get_digest_by_algorithm(algo: &str) -> Option> { let algo = algo.to_uppercase(); match algo.as_str() {