Type Definition sequoia_openpgp::cert::amalgamation::UserIDAmalgamation
source · [−]pub type UserIDAmalgamation<'a> = ComponentAmalgamation<'a, UserID>;
Expand description
A User ID and its associated data.
A specialized version of ComponentAmalgamation
.
Implementations
sourceimpl<'a> UserIDAmalgamation<'a>
impl<'a> UserIDAmalgamation<'a>
sourcepub fn userid(&self) -> &'a UserID
pub fn userid(&self) -> &'a UserID
Returns a reference to the User ID.
Note: although ComponentAmalgamation<UserID>
derefs to a
&UserID
(via &ComponentBundle
), this method provides a
more accurate lifetime, which is helpful when returning the
reference from a function. See the module’s documentation
for more details.
sourcepub fn attest_certifications<C, S>(
&self,
policy: &dyn Policy,
primary_signer: &mut dyn Signer,
certifications: C
) -> Result<Vec<Signature>> where
C: IntoIterator<Item = S>,
S: Borrow<Signature>,
pub fn attest_certifications<C, S>(
&self,
policy: &dyn Policy,
primary_signer: &mut dyn Signer,
certifications: C
) -> Result<Vec<Signature>> where
C: IntoIterator<Item = S>,
S: Borrow<Signature>,
Attests to third-party certifications.
This feature is experimental.
Allows the certificate owner to attest to third party certifications. See Section 5.2.3.30 of RFC 4880bis for details. This can be used to address certificate flooding concerns.
A policy is needed, because the expiration is updated by updating the current binding signatures.
Examples
let (alice, _) = CertBuilder::new()
.add_userid("alice@example.org")
.generate()?;
let mut alice_signer =
alice.primary_key().key().clone().parts_into_secret()?
.into_keypair()?;
let (bob, _) = CertBuilder::new()
.add_userid("bob@example.org")
.generate()?;
let mut bob_signer =
bob.primary_key().key().clone().parts_into_secret()?
.into_keypair()?;
let bob_pristine = bob.clone();
// Have Alice certify the binding between "bob@example.org" and
// Bob's key.
let alice_certifies_bob
= bob.userids().next().unwrap().userid().bind(
&mut alice_signer, &bob,
SignatureBuilder::new(SignatureType::GenericCertification))?;
let bob = bob.insert_packets(vec![alice_certifies_bob.clone()])?;
// Have Bob attest that certification.
let bobs_uid = bob.userids().next().unwrap();
let attestations =
bobs_uid.attest_certifications(
policy,
&mut bob_signer,
bobs_uid.certifications())?;
let bob = bob.insert_packets(attestations)?;
assert_eq!(bob.bad_signatures().count(), 0);
assert_eq!(bob.userids().next().unwrap().certifications().next(),
Some(&alice_certifies_bob));