diff --git a/src/cmd_encrypt.rs b/src/cmd_encrypt.rs index 907f867..c399b3e 100644 --- a/src/cmd_encrypt.rs +++ b/src/cmd_encrypt.rs @@ -33,7 +33,7 @@ pub struct CmdEncrypt { /// Encryption profile (use default when --key-filter is assigned) #[arg(long, short = 'p')] pub profile: Option, - /// Encryption key filter (key_id or type:TYPE(e.g. ecdh, pgp, ecdh-p384, pgp-ed25519), multiple joined by ',') + /// Encryption key filter (key_id or type:TYPE(e.g. ecdh, pgp, ecdh-p384, pgp-ed25519), multiple joined by ',', ALL for all) #[arg(long, short = 'k')] pub key_filter: Option, /// Compress before encrypt diff --git a/src/config.rs b/src/config.rs index 9b7ee50..5d7736c 100644 --- a/src/config.rs +++ b/src/config.rs @@ -92,7 +92,7 @@ impl TinyEncryptConfig { pub fn find_by_kid_or_type(&self, k_filter: &str) -> Vec<&TinyEncryptConfigEnvelop> { self.find_by_kid_or_filter(k_filter, |e| { - k_filter == &format!("type:{}", &e.r#type.get_name()) + k_filter == "ALL" || k_filter == &format!("type:{}", &e.r#type.get_name()) }) } diff --git a/src/util_envelop.rs b/src/util_envelop.rs index 25f80c6..6086291 100644 --- a/src/util_envelop.rs +++ b/src/util_envelop.rs @@ -1,25 +1,26 @@ -use rust_util::iff; - -use crate::config::TinyEncryptConfig; +use crate::config::{TinyEncryptConfig, TinyEncryptConfigEnvelop}; use crate::spec::TinyEncryptEnvelop; pub fn format_envelop(envelop: &TinyEncryptEnvelop, config: &Option) -> String { - let kid = iff!(envelop.kid.is_empty(), "".into(), format!(", Kid: {}", envelop.kid)); - let envelop_desc = get_envelop_desc(&kid, envelop, &config); + let config_envelop = config.as_ref().and_then(|c| c.find_by_kid(&envelop.kid)); + let envelop_kid = config_envelop.and_then(|e| e.sid.as_ref()).map(|sid| + format!(", Sid: {}", sid) + ).unwrap_or_else(|| { + format!(", Kid: {}", envelop.kid) + }); + let envelop_desc = get_envelop_desc(envelop, &config_envelop); let desc = envelop_desc.as_ref() .map(|desc| format!(", Desc: {}", desc)) .unwrap_or_else(|| "".to_string()); - format!("{}{}{}", envelop.r#type.get_upper_name(), kid, desc) + format!("{}{}{}", envelop.r#type.get_upper_name(), envelop_kid, desc) } -pub fn get_envelop_desc(kid: &str, envelop: &TinyEncryptEnvelop, config: &Option) -> Option { +fn get_envelop_desc(envelop: &TinyEncryptEnvelop, config_envelop: &Option<&TinyEncryptConfigEnvelop>) -> Option { if let Some(desc) = &envelop.desc { return Some(desc.to_string()); } - if let Some(config) = config { - if let Some(config_envelop) = config.find_by_kid(kid) { - return config_envelop.desc.clone(); - } + if let Some(config_envelop) = config_envelop { + return config_envelop.desc.clone(); } None }