From 017f1b04df0701e21e7cb44e3e4f6fc505d95638 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 18 Apr 2020 05:16:57 -0400 Subject: better decrypt_cipher error handling --- src/bin/rbw/commands.rs | 56 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 16 deletions(-) (limited to 'src/bin/rbw/commands.rs') 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 { +fn decrypt_cipher(entry: &rbw::db::Entry) -> anyhow::Result { + 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, }) } -- cgit v1.2.3-54-g00ecf