From 367623a430f7a02186c3b0031ef26815befe4023 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 21 Apr 2020 13:02:06 +0200 Subject: sq: Rework recipient handling. --- tool/src/commands/mod.rs | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'tool/src/commands') diff --git a/tool/src/commands/mod.rs b/tool/src/commands/mod.rs index fa8ed857..a2c2e8cb 100644 --- a/tool/src/commands/mod.rs +++ b/tool/src/commands/mod.rs @@ -86,16 +86,12 @@ fn get_signing_keys(certs: &[openpgp::Cert], p: &dyn Policy, } pub fn encrypt(policy: &dyn Policy, - mapping: &mut store::Mapping, input: &mut dyn io::Read, output: &mut dyn io::Write, - npasswords: usize, recipients: Vec<&str>, - mut certs: Vec, signers: Vec, + npasswords: usize, recipients: &[openpgp::Cert], + signers: Vec, mode: openpgp::types::KeyFlags, compression: &str, time: Option) -> Result<()> { - for r in recipients { - certs.push(mapping.lookup(r).context("No such key found")?.cert()?); - } let mut passwords: Vec = Vec::with_capacity(npasswords); for n in 0..npasswords { let nprompt = format!("Enter password {}: ", n + 1); @@ -107,19 +103,16 @@ pub fn encrypt(policy: &dyn Policy, }))?.into()); } - if certs.len() + passwords.len() == 0 { + if recipients.len() + passwords.len() == 0 { return Err(anyhow::anyhow!( "Neither recipient nor password given")); } let mut signers = get_signing_keys(&signers, policy, time)?; - // Build a vector of references to hand to Signer. - let recipients: Vec<&openpgp::Cert> = certs.iter().collect(); - // Build a vector of recipients to hand to Encryptor. let mut recipient_subkeys: Vec = Vec::new(); - for cert in certs.iter() { + for cert in recipients.iter() { let mut count = 0; for key in cert.keys().with_policy(policy, None).alive().revoked(false) .key_flags(&mode).map(|ka| ka.key()) @@ -167,7 +160,7 @@ pub fn encrypt(policy: &dyn Policy, signer = signer.creation_time(time); } } - for r in recipients { + for r in recipients.iter() { signer = signer.add_intended_recipient(r); } sink = signer.build()?; -- cgit v1.2.3