feat: 0.7.2, remove direct sha256 dependency

This commit is contained in:
2023-11-12 23:19:34 +08:00
parent 9c5b28eb2a
commit 4b426f7b13
5 changed files with 17 additions and 100 deletions

95
Cargo.lock generated
View File

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

View File

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

View File

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

View File

@@ -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<Vec<u8>> {
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<u8> {
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()
}

View File

@@ -45,6 +45,14 @@ impl DigestWrite {
}
}
pub fn sha256_digest(input: &[u8]) -> Vec<u8> {
let mut digest = Sha256::new();
digest.input(input);
let mut buf: Vec<u8> = repeat(0).take((digest.output_bits() + 7) / 8).collect();
digest.result(&mut buf);
buf
}
fn get_digest_by_algorithm(algo: &str) -> Option<Box<dyn Digest>> {
let algo = algo.to_uppercase();
match algo.as_str() {