summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-10-09 12:14:33 +0200
committerJustus Winter <justus@sequoia-pgp.org>2020-10-09 12:30:30 +0200
commitbd41b17285a66340b917d8aef6ae567889cf47e4 (patch)
treeba295ba451d83400474df09296d71792c3d0a07f
parentf1e778a9ee3e0dfef2ae3e5d2958526e6b8a8743 (diff)
openpgp: Make Recipient::set_keyid easier to use.
-rw-r--r--openpgp-ffi/include/sequoia/openpgp/serialize.h2
-rw-r--r--openpgp-ffi/src/serialize.rs10
-rw-r--r--openpgp/src/serialize/stream.rs16
3 files changed, 16 insertions, 12 deletions
diff --git a/openpgp-ffi/include/sequoia/openpgp/serialize.h b/openpgp-ffi/include/sequoia/openpgp/serialize.h
index 5f9239b5..77cbfdce 100644
--- a/openpgp-ffi/include/sequoia/openpgp/serialize.h
+++ b/openpgp-ffi/include/sequoia/openpgp/serialize.h
@@ -27,7 +27,7 @@ pgp_keyid_t pgp_recipient_keyid (const pgp_recipient_t);
/*/
/// Sets the KeyID.
/*/
-void pgp_recipient_set_keyid (pgp_recipient_t, pgp_keyid_t);
+void pgp_recipient_set_keyid (pgp_recipient_t *, pgp_keyid_t);
/*/
/// Collects recipients from a `pgp_cert_key_iter_t`.
diff --git a/openpgp-ffi/src/serialize.rs b/openpgp-ffi/src/serialize.rs
index 972ce7a5..982bafc0 100644
--- a/openpgp-ffi/src/serialize.rs
+++ b/openpgp-ffi/src/serialize.rs
@@ -266,8 +266,14 @@ fn pgp_recipient_keyid(recipient: *const Recipient) -> *mut KeyID {
///
/// Consumes `keyid`.
#[::sequoia_ffi_macros::extern_fn] #[no_mangle] pub extern "C"
-fn pgp_recipient_set_keyid(recipient: *mut Recipient, keyid: *mut KeyID) {
- recipient.ref_mut_raw().set_keyid(keyid.move_from_raw());
+fn pgp_recipient_set_keyid(recipient: *mut *mut Recipient, keyid: *mut KeyID) {
+ assert!(! recipient.is_null());
+ unsafe {
+ *recipient =
+ (*recipient).move_from_raw()
+ .set_keyid(keyid.move_from_raw())
+ .move_into_raw();
+ }
}
/// Collects recipients from a `pgp_cert_key_iter_t`.
diff --git a/openpgp/src/serialize/stream.rs b/openpgp/src/serialize/stream.rs
index ccd7ea41..1ad270d7 100644
--- a/openpgp/src/serialize/stream.rs
+++ b/openpgp/src/serialize/stream.rs
@@ -107,8 +107,7 @@
//! let recipients =
//! recipient.keys().with_policy(p, None).alive().revoked(false)
//! // Or `for_storage_encryption()`, for data at rest.
-//! .for_transport_encryption()
-//! .map(|ka| ka.key());
+//! .for_transport_encryption();
//!
//! # let mut sink = vec![];
//! let message = Message::new(&mut sink);
@@ -1984,12 +1983,10 @@ 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| {
- /// let mut r: Recipient = ka.into();
+ /// .map(|ka| Recipient::from(ka)
/// // Set the recipient keyid to the wildcard id.
- /// r.set_keyid(KeyID::wildcard());
- /// r
- /// });
+ /// .set_keyid(KeyID::wildcard())
+ /// );
///
/// # let mut sink = vec![];
/// let message = Message::new(&mut sink);
@@ -1997,8 +1994,9 @@ impl<'a> Recipient<'a> {
/// # let _ = message;
/// # Ok(()) }
/// ```
- pub fn set_keyid(&mut self, keyid: KeyID) -> KeyID {
- std::mem::replace(&mut self.keyid, keyid)
+ pub fn set_keyid(mut self, keyid: KeyID) -> Self {
+ self.keyid = keyid;
+ self
}
}