summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-05-13 14:23:00 +0200
committerJustus Winter <justus@sequoia-pgp.org>2020-05-13 16:04:03 +0200
commit408fb6fede41bd9ba4e773bbb4470fa0f4a53c58 (patch)
treef3c6d436d4396d69ebeb3d996688d7f72998edd5
parenteed16580ecd7539f53860e3f557dd02493bf8204 (diff)
openpgp: Make Encryptor::for_recipients polymorphic.
-rw-r--r--guide/src/chapter_02.md8
-rw-r--r--ipc/tests/gpg-agent.rs4
-rw-r--r--openpgp/examples/encrypt-for.rs2
-rw-r--r--openpgp/examples/generate-encrypt-decrypt.rs2
-rw-r--r--openpgp/src/serialize/stream.rs30
5 files changed, 24 insertions, 22 deletions
diff --git a/guide/src/chapter_02.md b/guide/src/chapter_02.md
index e820fae0..95e466f9 100644
--- a/guide/src/chapter_02.md
+++ b/guide/src/chapter_02.md
@@ -59,7 +59,7 @@ fn main() {
# let recipients =
# recipient.keys().with_policy(policy, None).alive().revoked(false)
# .for_transport_encryption()
-# .map(|ka| ka.key().into())
+# .map(|ka| ka.key())
# .collect::<Vec<_>>();
#
# // Start streaming an OpenPGP message.
@@ -207,7 +207,7 @@ fn generate() -> openpgp::Result<openpgp::Cert> {
# let recipients =
# recipient.keys().with_policy(policy, None).alive().revoked(false)
# .for_transport_encryption()
-# .map(|ka| ka.key().into())
+# .map(|ka| ka.key())
# .collect::<Vec<_>>();
#
# // Start streaming an OpenPGP message.
@@ -355,7 +355,7 @@ fn encrypt(policy: &dyn Policy,
let recipients =
recipient.keys().with_policy(policy, None).alive().revoked(false)
.for_transport_encryption()
- .map(|ka| ka.key().into())
+ .map(|ka| ka.key())
.collect::<Vec<_>>();
// Start streaming an OpenPGP message.
@@ -517,7 +517,7 @@ Decrypted data can be read from this using [`io::Read`].
# let recipients =
# recipient.keys().with_policy(policy, None).alive().revoked(false)
# .for_transport_encryption()
-# .map(|ka| ka.key().into())
+# .map(|ka| ka.key())
# .collect::<Vec<_>>();
#
# // Start streaming an OpenPGP message.
diff --git a/ipc/tests/gpg-agent.rs b/ipc/tests/gpg-agent.rs
index d4800847..9b0e2fc9 100644
--- a/ipc/tests/gpg-agent.rs
+++ b/ipc/tests/gpg-agent.rs
@@ -213,8 +213,8 @@ fn decrypt() -> openpgp::Result<()> {
let recipients =
cert.keys().with_policy(p, None).alive().revoked(false)
.for_transport_encryption()
- .map(|ka| ka.key().into())
- .collect();
+ .map(|ka| ka.key())
+ .collect::<Vec<_>>();
// Start streaming an OpenPGP message.
let message = Message::new(&mut message);
diff --git a/openpgp/examples/encrypt-for.rs b/openpgp/examples/encrypt-for.rs
index 505c34fe..d31f2cc9 100644
--- a/openpgp/examples/encrypt-for.rs
+++ b/openpgp/examples/encrypt-for.rs
@@ -44,7 +44,7 @@ fn main() {
cert.keys()
.with_policy(p, None).alive().revoked(false).key_flags(&mode)
})
- .map(|ka| ka.key().into())
+ .map(|ka| ka.key())
.collect::<Vec<_>>();
// Compose a writer stack corresponding to the output format and
diff --git a/openpgp/examples/generate-encrypt-decrypt.rs b/openpgp/examples/generate-encrypt-decrypt.rs
index 7154ce0a..dba5ebf8 100644
--- a/openpgp/examples/generate-encrypt-decrypt.rs
+++ b/openpgp/examples/generate-encrypt-decrypt.rs
@@ -51,7 +51,7 @@ fn encrypt(p: &dyn Policy, sink: &mut dyn Write, plaintext: &str,
let recipients =
recipient.keys().with_policy(p, None).alive().revoked(false)
.for_transport_encryption()
- .map(|ka| ka.key().into())
+ .map(|ka| ka.key())
.collect::<Vec<_>>();
// Start streaming an OpenPGP message.
diff --git a/openpgp/src/serialize/stream.rs b/openpgp/src/serialize/stream.rs
index dafebe8c..33fe4dc4 100644
--- a/openpgp/src/serialize/stream.rs
+++ b/openpgp/src/serialize/stream.rs
@@ -103,8 +103,8 @@
//! recipient.keys().with_policy(p, None).alive().revoked(false)
//! // Or `for_storage_encryption()`, for data at rest.
//! .for_transport_encryption()
-//! .map(|ka| ka.key().into())
-//! .collect();
+//! .map(|ka| ka.key())
+//! .collect::<Vec<_>>();
//!
//! # let mut sink = vec![];
//! let message = Message::new(&mut sink);
@@ -1863,8 +1863,8 @@ impl<'a> Recipient<'a> {
/// cert.keys().with_policy(p, None).alive().revoked(false)
/// // Or `for_storage_encryption()`, for data at rest.
/// .for_transport_encryption()
- /// .map(|ka| ka.key().into())
- /// .collect();
+ /// .map(|ka| ka.key())
+ /// .collect::<Vec<_>>();
///
/// # let mut sink = vec![];
/// let message = Message::new(&mut sink);
@@ -2018,7 +2018,7 @@ impl<'a> Recipient<'a> {
/// r.set_keyid(KeyID::wildcard());
/// r
/// })
- /// .collect();
+ /// .collect::<Vec<_>>();
///
/// # let mut sink = vec![];
/// let message = Message::new(&mut sink);
@@ -2122,8 +2122,8 @@ impl<'a> Encryptor<'a> {
/// cert.keys().with_policy(p, None).alive().revoked(false)
/// // Or `for_storage_encryption()`, for data at rest.
/// .for_transport_encryption()
- /// .map(|ka| ka.key().into())
- /// .collect();
+ /// .map(|ka| ka.key())
+ /// .collect::<Vec<_>>();
///
/// # let mut sink = vec![];
/// let message = Message::new(&mut sink);
@@ -2133,11 +2133,13 @@ impl<'a> Encryptor<'a> {
/// w.finalize()?;
/// # Ok(()) }
/// ```
- pub fn for_recipients(inner: Message<'a>,
- recipients: Vec<Recipient<'a>>) -> Self {
- Self {
+ pub fn for_recipients<R>(inner: Message<'a>, recipients: R) -> Self
+ where R: IntoIterator,
+ R::Item: Into<Recipient<'a>>,
+ {
+ Self {
inner: Some(inner.into()),
- recipients,
+ recipients: recipients.into_iter().map(|r| r.into()).collect(),
passwords: Vec::new(),
sym_algo: Default::default(),
aead_algo: Default::default(),
@@ -2340,8 +2342,8 @@ impl<'a> Encryptor<'a> {
/// cert.keys().with_policy(p, None).alive().revoked(false)
/// // Or `for_storage_encryption()`, for data at rest.
/// .for_transport_encryption()
- /// .map(|ka| ka.key().into())
- /// .collect();
+ /// .map(|ka| ka.key())
+ /// .collect::<Vec<_>>();
///
/// # let mut sink = vec![];
/// let message = Message::new(&mut sink);
@@ -3082,7 +3084,7 @@ mod test {
let recipients = tsk
.keys().with_policy(p, None)
.for_storage_encryption().for_transport_encryption()
- .map(|ka| ka.key().into()).collect();
+ .map(|ka| ka.key()).collect::<Vec<_>>();
let encryptor = Encryptor::for_recipients(m, recipients)
.aead_algo(AEADAlgorithm::EAX)
.build().unwrap();