From 1ddc1dd61b45b41801c1d1c364cd6789314cb8f3 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 19 Nov 2019 15:50:23 +0100 Subject: openpgp: Use the builder pattern for stream::Signer. - See #375. --- ipc/examples/gpg-agent-sign.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'ipc/examples/gpg-agent-sign.rs') diff --git a/ipc/examples/gpg-agent-sign.rs b/ipc/examples/gpg-agent-sign.rs index 1a089622..c4b3d6c0 100644 --- a/ipc/examples/gpg-agent-sign.rs +++ b/ipc/examples/gpg-agent-sign.rs @@ -38,14 +38,11 @@ fn main() { }).collect::>(); // Construct a KeyPair for every signing-capable (sub)key. - let mut keypairs = tpks.iter().flat_map(|tpk| tpk.keys_valid().signing_capable().filter_map(|(_, _, key)| { - KeyPair::new(&ctx, key).ok() - })).collect::>>(); - - // Well, this is awkward... - let signers = keypairs.iter_mut() - .map(|s| -> &mut dyn openpgp::crypto::Signer<_> { s }) - .collect(); + let mut signers = tpks.iter().flat_map(|tpk| { + tpk.keys_valid().signing_capable().filter_map(|(_, _, key)| { + KeyPair::new(&ctx, key).ok() + }) + }).collect::>>(); // Compose a writer stack corresponding to the output format and // packet structure we want. First, we want the output to be @@ -56,9 +53,13 @@ fn main() { // Stream an OpenPGP message. let message = Message::new(sink); - // Now, create a signer that emits a signature. - let signer = Signer::new(message, signers, None) - .expect("Failed to create signer"); + // Now, create a signer that emits the signature(s). + let mut signer = + Signer::new(message, signers.pop().expect("No key for signing")); + for s in signers { + signer = signer.add_signer(s); + } + let signer = signer.build().expect("Failed to create signer"); // Then, create a literal writer to wrap the data in a literal // message packet. -- cgit v1.2.3