aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/rbw/commands.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-04-18 05:16:57 -0400
committerJesse Luehrs <doy@tozt.net>2020-04-18 05:16:57 -0400
commit017f1b04df0701e21e7cb44e3e4f6fc505d95638 (patch)
tree5b693b3b2486702752d8b3087b887282e3097d78 /src/bin/rbw/commands.rs
parente5ccbac220b1f14e3cede1b55bad92a4f537c8c9 (diff)
downloadrbw-017f1b04df0701e21e7cb44e3e4f6fc505d95638.tar.gz
rbw-017f1b04df0701e21e7cb44e3e4f6fc505d95638.zip
better decrypt_cipher error handling
Diffstat (limited to 'src/bin/rbw/commands.rs')
-rw-r--r--src/bin/rbw/commands.rs56
1 files changed, 40 insertions, 16 deletions
diff --git a/src/bin/rbw/commands.rs b/src/bin/rbw/commands.rs
index f3977d8..da94ffa 100644
--- a/src/bin/rbw/commands.rs
+++ b/src/bin/rbw/commands.rs
@@ -333,25 +333,49 @@ fn find_entry(
}
}
-fn decrypt_cipher(entry: rbw::db::Entry) -> anyhow::Result<DecryptedCipher> {
+fn decrypt_cipher(entry: &rbw::db::Entry) -> anyhow::Result<DecryptedCipher> {
+ let username = entry
+ .username
+ .as_ref()
+ .map(|username| crate::actions::decrypt(username))
+ .transpose();
+ let username = match username {
+ Ok(username) => username,
+ Err(e) => {
+ log::warn!("failed to decrypt username: {}", e);
+ None
+ }
+ };
+ let password = entry
+ .password
+ .as_ref()
+ .map(|password| crate::actions::decrypt(password))
+ .transpose();
+ let password = match password {
+ Ok(password) => password,
+ Err(e) => {
+ log::warn!("failed to decrypt password: {}", e);
+ None
+ }
+ };
+ let notes = entry
+ .notes
+ .as_ref()
+ .map(|notes| crate::actions::decrypt(notes))
+ .transpose();
+ let notes = match notes {
+ Ok(notes) => notes,
+ Err(e) => {
+ log::warn!("failed to decrypt notes: {}", e);
+ None
+ }
+ };
Ok(DecryptedCipher {
id: entry.id.clone(),
name: crate::actions::decrypt(&entry.name)?,
- username: entry
- .username
- .as_ref()
- .map(|username| crate::actions::decrypt(username))
- .transpose()?,
- password: entry
- .password
- .as_ref()
- .map(|password| crate::actions::decrypt(password))
- .transpose()?,
- notes: entry
- .notes
- .as_ref()
- .map(|notes| crate::actions::decrypt(notes))
- .transpose()?,
+ username,
+ password,
+ notes,
})
}