feat: 0.7.2, remove direct sha256 dependency
This commit is contained in:
@@ -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];
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user