summaryrefslogtreecommitdiffstats
path: root/tool
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-05-28 22:21:47 +0200
committerJustus Winter <justus@sequoia-pgp.org>2019-05-30 12:09:47 +0200
commitbe8bf91c14485a844a2c6143893105a21fd6f26e (patch)
treeb2e632196964ebe6e94fb709b77d24d031c0ea2f /tool
parenta0378343f6f0d311021437435c14670a6d7dc3e2 (diff)
openpgp: Make PKESK::decrypt use crypto::Decryptor.
Diffstat (limited to 'tool')
-rw-r--r--tool/src/commands/decrypt.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/tool/src/commands/decrypt.rs b/tool/src/commands/decrypt.rs
index c762c454..a8c72f96 100644
--- a/tool/src/commands/decrypt.rs
+++ b/tool/src/commands/decrypt.rs
@@ -122,8 +122,9 @@ impl<'a> DecryptionHelper for Helper<'a> {
for pkesk in pkesks {
let keyid = pkesk.recipient();
if let Some(key) = self.secret_keys.get(&keyid) {
- if let Some(SecretKey::Unencrypted { mpis }) = key.secret() {
- if let Ok(sk) = pkesks[0].decrypt(key, mpis)
+ if let Some(SecretKey::Unencrypted { .. }) = key.secret() {
+ if let Ok(sk) = key.clone().into_keypair()
+ .and_then(|mut keypair| pkesks[0].decrypt(&mut keypair))
.and_then(|(algo, sk)| { decrypt(algo, &sk)?; Ok(sk) })
{
if self.dump_session_key {
@@ -159,10 +160,14 @@ impl<'a> DecryptionHelper for Helper<'a> {
self.key_hints.get(&keyid).unwrap())))
?.into();
- if let Ok(mpis) =
- key.secret().unwrap().decrypt(key.pk_algo(), &p)
+ let mut key = key.clone();
+ let algo = key.pk_algo();
+ if let Some(()) =
+ key.secret_mut()
+ .and_then(|s| s.decrypt_in_place(algo, &p).ok())
{
- match pkesk.decrypt(key, &mpis)
+ let mut keypair = key.into_keypair().unwrap();
+ match pkesk.decrypt(&mut keypair)
.and_then(|(algo, sk)| {
decrypt(algo, &sk)?; Ok(sk)
})