From a66babb82847b546564761bb7627e082e36f31fc Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Thu, 19 Oct 2023 23:24:03 +0800 Subject: [PATCH] feat: update version --- src/cmd_encrypt.rs | 2 +- src/cmd_version.rs | 8 ++--- src/util.rs | 75 +++++++++++++++++++++++++++++++------------- src/util_enc_file.rs | 9 +++--- src/util_pgp.rs | 1 - 5 files changed, 63 insertions(+), 32 deletions(-) diff --git a/src/cmd_encrypt.rs b/src/cmd_encrypt.rs index c186b74..1f8f824 100644 --- a/src/cmd_encrypt.rs +++ b/src/cmd_encrypt.rs @@ -197,7 +197,7 @@ fn process_compatible_with_1_0(cmd_encrypt: &CmdEncrypt, mut encrypt_meta: TinyE Ok(encrypt_meta) } -fn encrypt_file(file_in: &mut File, file_len: u64, file_out: &mut File, +fn encrypt_file(file_in: &mut File, file_len: u64, file_out: &mut impl Write, key: &[u8], nonce: &[u8], compress: bool, compress_level: &Option) -> XResult { let mut total_len = 0_u64; let mut write_len = 0_u64; diff --git a/src/cmd_version.rs b/src/cmd_version.rs index ab8bb28..adc9ab2 100644 --- a/src/cmd_version.rs +++ b/src/cmd_version.rs @@ -1,15 +1,15 @@ use clap::Args; use rust_util::XResult; +use crate::util; #[derive(Debug, Args)] pub struct CmdVersion {} pub fn version(_cmd_version: CmdVersion) -> XResult<()> { println!( - "{} - v{}\n{}\n", - env!("CARGO_PKG_NAME"), - env!("CARGO_PKG_VERSION"), - env!("CARGO_PKG_DESCRIPTION") + "User-Agent: {}\n{}", + util::get_user_agent(), + env!("CARGO_PKG_DESCRIPTION"), ); Ok(()) } \ No newline at end of file diff --git a/src/util.rs b/src/util.rs index 8ecc244..84da037 100644 --- a/src/util.rs +++ b/src/util.rs @@ -133,31 +133,62 @@ pub fn read_number(hint: &str, from: usize, to: usize) -> usize { } pub fn get_user_agent() -> String { - format!("TinyEncrypt-rs v{}@{}", env!("CARGO_PKG_VERSION"), - if cfg!(target_os = "macos") { - "MacOS" - } else if cfg!(target_os = "ios") { - "iOS" - } else if cfg!(target_os = "android") { - "Android" - } else if cfg!(target_os = "windows") { - "Windows" - } else if cfg!(target_os = "linux") { - "Linux" - } else if cfg!(target_os = "freebsd") { - "FreeBSD" - } else if cfg!(target_os = "dragonfly") { - "Dragonfly" - } else if cfg!(target_os = "openbsd") { - "OpenBSD" - } else if cfg!(target_os = "netbsd") { - "NetBSD" - } else { - panic!("Unsupported OS!"); - } + format!("TinyEncrypt-rs v{}@{}-{}", + env!("CARGO_PKG_VERSION"), + get_os(), get_arch(), ) } +pub fn get_os() -> String { + if cfg!(target_os = "macos") { + "MacOS" + } else if cfg!(target_os = "ios") { + "iOS" + } else if cfg!(target_os = "android") { + "Android" + } else if cfg!(target_os = "windows") { + "Windows" + } else if cfg!(target_os = "linux") { + "Linux" + } else if cfg!(target_os = "freebsd") { + "FreeBSD" + } else if cfg!(target_os = "dragonfly") { + "Dragonfly" + } else if cfg!(target_os = "openbsd") { + "OpenBSD" + } else if cfg!(target_os = "netbsd") { + "NetBSD" + } else { + "UnknownOS" + }.to_string() +} + +pub fn get_arch() -> String { + if cfg!(target_arch = "x86_64") { + "x86-64" + } else if cfg!(target_arch = "x86") { + "x86" + } else if cfg!(target_arch = "aarch64") { + "aarch64" + } else if cfg!(target_arch = "arm") { + "arm" + } else if cfg!(target_arch = "riscv64") { + "riscv64" + } else if cfg!(target_arch = "riscv32") { + "riscv32" + } else if cfg!(target_arch = "mips64") { + "mips64" + } else if cfg!(target_arch = "mips") { + "mips" + } else if cfg!(target_arch = "powerpc64") { + "powerpc64" + } else if cfg!(target_arch = "powerpc") { + "powerpc" + } else { + "unknown" + }.to_string() +} + pub fn zeroize(object: impl Zeroize) { let mut object = object; object.zeroize(); diff --git a/src/util_enc_file.rs b/src/util_enc_file.rs index f27b1c9..e3fac04 100644 --- a/src/util_enc_file.rs +++ b/src/util_enc_file.rs @@ -7,7 +7,7 @@ use crate::compress; use crate::consts::{TINY_ENC_COMPRESSED_MAGIC_TAG, TINY_ENC_MAGIC_TAG}; use crate::spec::TinyEncryptMeta; -pub fn write_tiny_encrypt_meta(w: &mut W, meta: &TinyEncryptMeta, compress_meta: bool) -> XResult { +pub fn write_tiny_encrypt_meta(w: &mut impl Write, meta: &TinyEncryptMeta, compress_meta: bool) -> XResult { let tag = iff!(compress_meta, TINY_ENC_COMPRESSED_MAGIC_TAG, TINY_ENC_MAGIC_TAG); opt_result!(w.write_all(&tag.to_be_bytes()), "Write tag failed: {}"); let mut encrypted_meta_bytes = opt_result!(serde_json::to_vec(&meta), "Generate meta json bytes failed: {}"); @@ -23,13 +23,13 @@ pub fn write_tiny_encrypt_meta(w: &mut W, meta: &TinyEncryptMeta, comp Ok(encrypted_meta_bytes.len() + 2 + 4) } -pub fn read_tiny_encrypt_meta_and_normalize(r: &mut R) -> XResult { +pub fn read_tiny_encrypt_meta_and_normalize(r: &mut impl Read) -> XResult { let mut meta = read_tiny_encrypt_meta(r); let _ = meta.as_mut().map(|meta| meta.normalize()); meta } -pub fn read_tiny_encrypt_meta(r: &mut R) -> XResult { +pub fn read_tiny_encrypt_meta(r: &mut impl Read) -> XResult { let mut tag_buff = [0_u8; 2]; opt_result!(r.read_exact(&mut tag_buff), "Read tag failed: {}"); let tag = u16::from_be_bytes(tag_buff); @@ -42,7 +42,7 @@ pub fn read_tiny_encrypt_meta(r: &mut R) -> XResult { let mut length_buff = [0_u8; 4]; opt_result!(r.read_exact(&mut length_buff), "Read length failed: {}"); let length = u32::from_be_bytes(length_buff); - if length > 1024 * 1024 { + if length > 100 * 1024 * 1024 { return simple_error!("Meta too large: {}", length); } @@ -53,6 +53,7 @@ pub fn read_tiny_encrypt_meta(r: &mut R) -> XResult { debugging!("Tiny enc meta compressed: {}", is_compressed_tiny_enc); if is_compressed_tiny_enc { meta_buff = opt_result!(compress::decompress(&meta_buff), "Decompress meta failed: {}"); + debugging!("Encrypted meta decompressed: {} byte(s) -> {} byte(s)", length, meta_buff.len()); } debugging!("Encrypted meta: {}", String::from_utf8_lossy(&meta_buff)); diff --git a/src/util_pgp.rs b/src/util_pgp.rs index 6085ed0..aa5c1a5 100644 --- a/src/util_pgp.rs +++ b/src/util_pgp.rs @@ -17,7 +17,6 @@ pub fn read_and_verify_openpgp_pin(trans: &mut OpenPgpTransaction, pin: &Option< pub fn get_openpgp() -> XResult { let card = match get_card() { Err(e) => { - failure!("Get PGP card failed: {}", e); return simple_error!("Get card failed: {}", e); } Ok(card) => card