feat: encrypt, decrypt statistics
This commit is contained in:
@@ -39,16 +39,42 @@ pub struct CmdDecrypt {
|
|||||||
|
|
||||||
pub fn decrypt(cmd_decrypt: CmdDecrypt) -> XResult<()> {
|
pub fn decrypt(cmd_decrypt: CmdDecrypt) -> XResult<()> {
|
||||||
debugging!("Cmd decrypt: {:?}", cmd_decrypt);
|
debugging!("Cmd decrypt: {:?}", cmd_decrypt);
|
||||||
|
let start = Instant::now();
|
||||||
|
let mut succeed_count = 0;
|
||||||
|
let mut failed_count = 0;
|
||||||
|
let mut total_len = 0_u64;
|
||||||
for path in &cmd_decrypt.paths {
|
for path in &cmd_decrypt.paths {
|
||||||
|
let start_decrypt_single = Instant::now();
|
||||||
match decrypt_single(path, &cmd_decrypt.pin, &cmd_decrypt.slot, &cmd_decrypt) {
|
match decrypt_single(path, &cmd_decrypt.pin, &cmd_decrypt.slot, &cmd_decrypt) {
|
||||||
Ok(_) => success!("Decrypt {} succeed", path.to_str().unwrap_or("N/A")),
|
Ok(len) => {
|
||||||
Err(e) => failure!("Decrypt {} failed: {}", path.to_str().unwrap_or("N/A"), e),
|
succeed_count += 1;
|
||||||
|
total_len += len;
|
||||||
|
success!(
|
||||||
|
"Decrypt {} succeed, cost {} ms, file size {} byte(s)",
|
||||||
|
path.to_str().unwrap_or("N/A"),
|
||||||
|
start_decrypt_single.elapsed().as_millis(),
|
||||||
|
len
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
Err(e) => {
|
||||||
|
failed_count += 1;
|
||||||
|
failure!("Decrypt {} failed: {}", path.to_str().unwrap_or("N/A"), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (succeed_count + failed_count) > 1 {
|
||||||
|
success!(
|
||||||
|
"Decrypt succeed {} file(s) {} byte(s), failed {} file(s), total cost {} ms",
|
||||||
|
succeed_count,
|
||||||
|
total_len,
|
||||||
|
failed_count,
|
||||||
|
start.elapsed().as_millis(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn decrypt_single(path: &PathBuf, pin: &Option<String>, slot: &Option<String>, cmd_decrypt: &CmdDecrypt) -> XResult<()> {
|
pub fn decrypt_single(path: &PathBuf, pin: &Option<String>, slot: &Option<String>, cmd_decrypt: &CmdDecrypt) -> XResult<u64> {
|
||||||
let path_display = format!("{}", path.display());
|
let path_display = format!("{}", path.display());
|
||||||
util::require_tiny_enc_file_and_exists(path)?;
|
util::require_tiny_enc_file_and_exists(path)?;
|
||||||
|
|
||||||
@@ -84,7 +110,7 @@ pub fn decrypt_single(path: &PathBuf, pin: &Option<String>, slot: &Option<String
|
|||||||
Ok(_) => information!("Remove file: {} succeed", path_display),
|
Ok(_) => information!("Remove file: {} succeed", path_display),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(meta.file_length)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn decrypt_file(file_in: &mut File, file_out: &mut File, key: &[u8], nonce: &[u8], compress: bool) -> XResult<usize> {
|
fn decrypt_file(file_in: &mut File, file_out: &mut File, key: &[u8], nonce: &[u8], compress: bool) -> XResult<usize> {
|
||||||
@@ -106,7 +132,7 @@ fn decrypt_file(file_in: &mut File, file_out: &mut File, key: &[u8], nonce: &[u8
|
|||||||
last_block
|
last_block
|
||||||
};
|
};
|
||||||
opt_result!(file_out.write_all(&last_block), "Write file failed: {}");
|
opt_result!(file_out.write_all(&last_block), "Write file failed: {}");
|
||||||
success!("Decrypt finished, total bytes: {}", total_len);
|
debugging!("Decrypt finished, total bytes: {}", total_len);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
total_len += len;
|
total_len += len;
|
||||||
|
|||||||
@@ -55,16 +55,42 @@ pub fn encrypt(cmd_encrypt: CmdEncrypt) -> XResult<()> {
|
|||||||
information!("Matched {} envelop(s): \n- {}", envelops.len(), envelop_tkids.join("\n- "));
|
information!("Matched {} envelop(s): \n- {}", envelops.len(), envelop_tkids.join("\n- "));
|
||||||
|
|
||||||
debugging!("Cmd encrypt: {:?}", cmd_encrypt);
|
debugging!("Cmd encrypt: {:?}", cmd_encrypt);
|
||||||
|
let start = Instant::now();
|
||||||
|
let mut succeed_count = 0;
|
||||||
|
let mut failed_count = 0;
|
||||||
|
let mut total_len = 0_u64;
|
||||||
for path in &cmd_encrypt.paths {
|
for path in &cmd_encrypt.paths {
|
||||||
|
let start_encrypt_single = Instant::now();
|
||||||
match encrypt_single(path, &envelops, &cmd_encrypt) {
|
match encrypt_single(path, &envelops, &cmd_encrypt) {
|
||||||
Ok(_) => success!("Encrypt {} succeed", path.to_str().unwrap_or("N/A")),
|
Ok(len) => {
|
||||||
Err(e) => failure!("Encrypt {} failed: {}", path.to_str().unwrap_or("N/A"), e),
|
succeed_count += 1;
|
||||||
|
total_len += len;
|
||||||
|
success!(
|
||||||
|
"Encrypt {} succeed, cost {} ms, file size {} byte(s)",
|
||||||
|
path.to_str().unwrap_or("N/A"),
|
||||||
|
start_encrypt_single.elapsed().as_millis(),
|
||||||
|
len
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
Err(e) => {
|
||||||
|
failed_count += 1;
|
||||||
|
failure!("Encrypt {} failed: {}", path.to_str().unwrap_or("N/A"), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (succeed_count + failed_count) > 1 {
|
||||||
|
success!(
|
||||||
|
"Encrypt succeed {} file(s) {} byte(s), failed {} file(s), total cost {} ms",
|
||||||
|
succeed_count,
|
||||||
|
total_len,
|
||||||
|
failed_count,
|
||||||
|
start.elapsed().as_millis(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn encrypt_single(path: &PathBuf, envelops: &[&TinyEncryptConfigEnvelop], cmd_encrypt: &CmdEncrypt) -> XResult<()> {
|
fn encrypt_single(path: &PathBuf, envelops: &[&TinyEncryptConfigEnvelop], cmd_encrypt: &CmdEncrypt) -> XResult<u64> {
|
||||||
let path_display = format!("{}", path.display());
|
let path_display = format!("{}", path.display());
|
||||||
util::require_none_tiny_enc_file_and_exists(path)?;
|
util::require_none_tiny_enc_file_and_exists(path)?;
|
||||||
|
|
||||||
@@ -136,7 +162,7 @@ fn encrypt_single(path: &PathBuf, envelops: &[&TinyEncryptConfigEnvelop], cmd_en
|
|||||||
Ok(_) => information!("Remove file: {} succeed", path_display),
|
Ok(_) => information!("Remove file: {} succeed", path_display),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(file_metadata.len())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -170,7 +196,7 @@ fn encrypt_file(file_in: &mut File, file_out: &mut File, key: &[u8], nonce: &[u8
|
|||||||
last_block
|
last_block
|
||||||
};
|
};
|
||||||
opt_result!(file_out.write_all(&last_block), "Write file failed: {}");
|
opt_result!(file_out.write_all(&last_block), "Write file failed: {}");
|
||||||
success!("Decrypt finished, total bytes: {}", total_len);
|
debugging!("Encrypt finished, total bytes: {}", total_len);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
total_len += len;
|
total_len += len;
|
||||||
|
|||||||
Reference in New Issue
Block a user