feat: find kid first arg

This commit is contained in:
2023-10-09 22:28:16 +08:00
parent 6833a1a7d3
commit 308c6561bc
3 changed files with 14 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
# tiny-encrypt-rs
**IMPORTANT**: To use tiny-encrypt, a Yubikey(https://www.yubico.com/products/) or CanoKey(https://www.canokeys.org/) is
required, the Key NEED supports PIV or OpenPGP.
**IMPORTANT**: To use tiny-encrypt, a Yubikey(https://www.yubico.com/products/) is
required, the key MUST support PIV or OpenPGP.
![](https://cdn.hatter.ink/doc/7684_4DB4452911E2A25AB993429AA7FFCD65/yubikey-5-family.png)
@@ -37,7 +37,7 @@ Encrypt config `~/.tinyencrypt/config-rs.json`:
"KID-1",
"KID-2"
],
"leve2": [
"l2,leve2": [
"KID-2"
]
}

View File

@@ -270,13 +270,9 @@ fn read_slot(config: &Option<TinyEncryptConfig>, kid: &str, slot: &Option<String
Some(slot) => Ok(slot.to_string()),
None => {
if let Some(config) = config {
if let Some(e) = config.find_by_kid(kid) {
if let Some(args) = &e.args {
if let Some(first_arg) = args.iter().next() {
information!("Found kid: {}'s slot: {}", kid, first_arg);
return Ok(first_arg.to_string());
}
}
if let Some(first_arg) = config.find_first_arg_by_kid(kid) {
information!("Found kid: {}'s slot: {}", kid, first_arg);
return Ok(first_arg.to_string());
}
}
print!("Input slot(eg 82, 83 ...): ");

View File

@@ -72,6 +72,14 @@ impl TinyEncryptConfig {
Ok(config)
}
pub fn find_first_arg_by_kid(&self, kid: &str) -> Option<&String> {
self.find_args_by_kid(kid).map(|a| a.iter().next()).flatten()
}
pub fn find_args_by_kid(&self, kid: &str) -> Option<&Vec<String>> {
self.find_by_kid(kid).map(|e| e.args.as_ref()).flatten()
}
pub fn find_by_kid(&self, kid: &str) -> Option<&TinyEncryptConfigEnvelop> {
self.envelops.iter().find(|e| e.kid == kid)
}