diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2020-10-09 12:14:33 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2020-10-09 12:30:30 +0200 |
commit | bd41b17285a66340b917d8aef6ae567889cf47e4 (patch) | |
tree | ba295ba451d83400474df09296d71792c3d0a07f | |
parent | f1e778a9ee3e0dfef2ae3e5d2958526e6b8a8743 (diff) |
openpgp: Make Recipient::set_keyid easier to use.
-rw-r--r-- | openpgp-ffi/include/sequoia/openpgp/serialize.h | 2 | ||||
-rw-r--r-- | openpgp-ffi/src/serialize.rs | 10 | ||||
-rw-r--r-- | openpgp/src/serialize/stream.rs | 16 |
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 } } |