Struct sequoia_openpgp::cert::amalgamation::key::KeyAmalgamation

source ·
pub struct KeyAmalgamation<'a, P, R, R2>
where P: 'a + KeyParts, R: 'a + KeyRole,
{ /* private fields */ }
Expand description

A key, and its associated data, and useful methods.

A KeyAmalgamation is like a ComponentAmalgamation, but specialized for keys. Due to the requirement to keep track of the key’s role when it is erased (see the module’s documentation for more details), this is a different data structure rather than a specialized type alias.

Generally, you won’t use this type directly, but instead use PrimaryKeyAmalgamation, SubordinateKeyAmalgamation, or ErasedKeyAmalgamation.

A KeyAmalgamation is returned by Cert::primary_key, and Cert::keys.

KeyAmalgamation implements ValidateAmalgamation, which allows you to turn a KeyAmalgamation into a ValidKeyAmalgamation using KeyAmalgamation::with_policy.

§Examples

Iterating over all keys:

for ka in cert.keys() {
    let ka: ErasedKeyAmalgamation<_> = ka;
}

Getting the primary key:

let ka: PrimaryKeyAmalgamation<_> = cert.primary_key();

Iterating over just the subkeys:

// We can skip the primary key (it's always first):
for ka in cert.keys().skip(1) {
    let ka: ErasedKeyAmalgamation<_> = ka;
}

// Or use `subkeys`, which returns a more accurate type:
for ka in cert.keys().subkeys() {
    let ka: SubordinateKeyAmalgamation<_> = ka;
}

Implementations§

source§

impl<'a, P> KeyAmalgamation<'a, P, PrimaryRole, ()>
where P: KeyParts,

source

pub fn parts_into_public(self) -> PrimaryKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_public(&'a self) -> &'a PrimaryKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_public_mut( &'a mut self, ) -> &'a mut PrimaryKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_into_secret( self, ) -> Result<PrimaryKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_secret( &'a self, ) -> Result<&'a PrimaryKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_secret_mut( &'a mut self, ) -> Result<&'a mut PrimaryKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_into_unspecified( self, ) -> PrimaryKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn parts_as_unspecified( &'a self, ) -> &PrimaryKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn parts_as_unspecified_mut( &'a mut self, ) -> &mut PrimaryKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source§

impl<'a, P> KeyAmalgamation<'a, P, SubordinateRole, ()>
where P: KeyParts,

source

pub fn parts_into_public(self) -> SubordinateKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_public( &'a self, ) -> &'a SubordinateKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_public_mut( &'a mut self, ) -> &'a mut SubordinateKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_into_secret( self, ) -> Result<SubordinateKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_secret( &'a self, ) -> Result<&'a SubordinateKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_secret_mut( &'a mut self, ) -> Result<&'a mut SubordinateKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_into_unspecified( self, ) -> SubordinateKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn parts_as_unspecified( &'a self, ) -> &SubordinateKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn parts_as_unspecified_mut( &'a mut self, ) -> &mut SubordinateKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source§

impl<'a, P> KeyAmalgamation<'a, P, UnspecifiedRole, bool>
where P: KeyParts,

source

pub fn parts_into_public(self) -> ErasedKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_public(&'a self) -> &'a ErasedKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_public_mut( &'a mut self, ) -> &'a mut ErasedKeyAmalgamation<'a, PublicParts>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_into_secret(self) -> Result<ErasedKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_secret( &'a self, ) -> Result<&'a ErasedKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_secret_mut( &'a mut self, ) -> Result<&'a mut ErasedKeyAmalgamation<'a, SecretParts>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_into_unspecified( self, ) -> ErasedKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn parts_as_unspecified( &'a self, ) -> &ErasedKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn parts_as_unspecified_mut( &'a mut self, ) -> &mut ErasedKeyAmalgamation<'a, UnspecifiedParts>

Changes the key’s parts tag to UnspecifiedParts.

source§

impl<'a, P, R, R2> KeyAmalgamation<'a, P, R, R2>
where P: 'a + KeyParts, R: 'a + KeyRole,

source

pub fn component_amalgamation(&self) -> &ComponentAmalgamation<'a, Key<P, R>>

Returns the KeyAmalgamation’s ComponentAmalgamation.

source

pub fn key(&self) -> &'a Key<P, R>

Returns the KeyAmalgamation’s key.

Normally, a type implementing KeyAmalgamation eventually derefs to a Key, however, this method provides a more accurate lifetime. See the documentation for ComponentAmalgamation::component for an explanation.

source§

impl<'a, P, R, R2> KeyAmalgamation<'a, P, R, R2>
where Self: PrimaryKey<'a, P, R>, P: 'a + KeyParts, R: 'a + KeyRole,

source

pub fn valid_certifications_by_key<T, PK>( &self, policy: &'a dyn Policy, reference_time: T, issuer: PK, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the third-party certifications issued by the specified key, and valid at the specified time.

This function returns the certifications issued by the specified key. Specifically, it returns a certification if:

  • it is well formed,
  • it is live with respect to the reference time,
  • it conforms to the policy, and
  • the signature is cryptographically valid.

This method is implemented on a KeyAmalgamation and not a ValidKeyAmalgamation, because a third-party certification does not require the key to be self signed.

§Examples

Alice has certified that a certificate belongs to Bob on two occasions. Whereas KeyAmalgamation::valid_certifications_by_key returns both certifications, KeyAmalgamation::active_certifications_by_key only returns the most recent certification.

use sequoia_openpgp as openpgp;
use openpgp::cert::prelude::*;
use openpgp::policy::StandardPolicy;

const P: &StandardPolicy = &StandardPolicy::new();

let alice: Cert = // ...
let bob: Cert = // ...

let bob_pk = bob.primary_key();

let valid_certifications = bob_pk.valid_certifications_by_key(
    P, None, alice.primary_key().key());
// Alice certified Bob's certificate twice.
assert_eq!(valid_certifications.count(), 2);

let active_certifications = bob_pk.active_certifications_by_key(
    P, None, alice.primary_key().key());
// But only the most recent one is active.
assert_eq!(active_certifications.count(), 1);
source

pub fn active_certifications_by_key<T, PK>( &self, policy: &'a dyn Policy, reference_time: T, issuer: PK, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns any active third-party certifications issued by the specified key.

This function is like KeyAmalgamation::valid_certifications_by_key, but it only returns active certifications. Active certifications are the most recent valid certifications with respect to the reference time.

Although there is normally only a single active certification, there can be multiple certifications with the same timestamp. In this case, all of them are returned.

Unlike self-signatures, multiple third-party certifications issued by the same key at the same time can be sensible. For instance, Alice may fully trust a CA for user IDs in a particular domain, and partially trust it for everything else. This can only be expressed using multiple certifications.

This method is implemented on a KeyAmalgamation and not a ValidKeyAmalgamation, because a third-party certification does not require the user ID to be self signed.

§Examples

See the examples for KeyAmalgamation::valid_certifications_by_key.

source

pub fn valid_third_party_revocations_by_key<T, PK>( &self, policy: &'a dyn Policy, reference_time: T, issuer: PK, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the third-party revocations issued by the specified key, and valid at the specified time.

This function returns the revocations issued by the specified key. Specifically, it returns a revocation if:

  • it is well formed,
  • it is a hard revocation, or it is live with respect to the reference time,
  • it conforms to the policy, and
  • the signature is cryptographically valid.

This method is implemented on a KeyAmalgamation and not a ValidKeyAmalgamation, because a third-party revocation does not require the key to be self signed.

§Examples

Alice revoked Bob’s certificate.

use sequoia_openpgp as openpgp;
use openpgp::cert::prelude::*;
use openpgp::policy::StandardPolicy;

const P: &StandardPolicy = &StandardPolicy::new();

let alice: Cert = // ...
let bob: Cert = // ...

let ka = bob.primary_key();

let revs = ka.valid_third_party_revocations_by_key(
    P, None, alice.primary_key().key());
// Alice revoked Bob's certificate.
assert_eq!(revs.count(), 1);

Methods from Deref<Target = ComponentAmalgamation<'a, Key<P, R>>>§

source

pub fn parts_as_public( &'a self, ) -> &'a ComponentAmalgamation<'a, Key<PublicParts, R>>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_secret( &'a self, ) -> Result<&'a ComponentAmalgamation<'a, Key<SecretParts, R>>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_unspecified( &'a self, ) -> &ComponentAmalgamation<'a, Key<UnspecifiedParts, R>>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn role_as_primary( &'a self, ) -> &'a ComponentAmalgamation<'a, Key<P, PrimaryRole>>

Changes the key’s role tag to PrimaryRole.

source

pub fn role_as_subordinate( &'a self, ) -> &'a ComponentAmalgamation<'a, Key<P, SubordinateRole>>

Changes the key’s role tag to SubordinateRole.

source

pub fn role_as_unspecified( &'a self, ) -> &'a ComponentAmalgamation<'a, Key<P, UnspecifiedRole>>

Changes the key’s role tag to UnspecifiedRole.

source

pub fn cert(&self) -> &'a Cert

Returns the component’s associated certificate.

for u in cert.userids() {
    // It's not only an identical `Cert`, it's the same one.
    assert!(std::ptr::eq(u.cert(), &cert));
}
source

pub fn bundle(&self) -> &'a ComponentBundle<C>

Returns this amalgamation’s bundle.

Note: although ComponentAmalgamation derefs to a &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.

§Examples
use openpgp::cert::prelude::*;
use openpgp::packet::prelude::*;

cert.userids()
    .map(|ua| {
        // The following doesn't work:
        //
        //   let b: &ComponentBundle<_> = &ua; b
        //
        // Because ua's lifetime is this closure and autoderef
        // assigns `b` the same lifetime as `ua`.  `bundle()`,
        // however, returns a reference whose lifetime is that
        // of `cert`.
        ua.bundle()
    })
    .collect::<Vec<&ComponentBundle<_>>>();
source

pub fn component(&self) -> &'a C

Returns this amalgamation’s component.

Note: although ComponentAmalgamation derefs to a &Component (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.

source

pub fn self_signatures( &self, ) -> impl Iterator<Item = &'a Signature> + Send + Sync

The component’s self-signatures.

source

pub fn certifications( &self, ) -> impl Iterator<Item = &'a Signature> + Send + Sync

The component’s third-party certifications.

source

pub fn certifications_by_key<'b>( &'b self, issuers: &'b [KeyHandle], ) -> impl Iterator<Item = &'a Signature> + Send + Sync + 'b

Returns third-party certifications that appear to issued by any of the specified keys.

A certification is returned if one of the provided key handles matches an Issuer subpacket or Issuer Fingerprint subpacket in the certification.

This function does not check that a certification is valid. It can’t. To check that a certification was actually issued by a specific key, we also need a policy and the public key, which we don’t have. To only get valid certifications, use UserIDAmalgamation::valid_certifications_by_key or UserIDAmalgamation::active_certifications_by_key instead of this function.

source

pub fn self_revocations( &self, ) -> impl Iterator<Item = &'a Signature> + Send + Sync

The component’s revocations that were issued by the certificate holder.

source

pub fn other_revocations( &self, ) -> impl Iterator<Item = &'a Signature> + Send + Sync

The component’s revocations that were issued by other certificates.

source

pub fn signatures(&self) -> impl Iterator<Item = &'a Signature> + Send + Sync

Returns all of the component’s signatures.

source

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.

source

pub fn valid_certifications_by_key<T, PK>( &self, policy: &'a dyn Policy, reference_time: T, issuer: PK, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the third-party certifications issued by the specified key, and valid at the specified time.

This function returns the certifications issued by the specified key. Specifically, it returns a certification if:

  • it is well formed,
  • it is live with respect to the reference time,
  • it conforms to the policy, and
  • the signature is cryptographically valid.

This method is implemented on a UserIDAmalgamation and not a ValidUserIDAmalgamation, because a third-party certification does not require the user ID to be self signed.

§Examples

Alice has certified that a certificate belongs to Bob on two occasions. Whereas UserIDAmalgamation::valid_certifications_by_key returns both certifications, UserIDAmalgamation::active_certifications_by_key only returns the most recent certification.

use sequoia_openpgp as openpgp;
use openpgp::cert::prelude::*;
use openpgp::policy::StandardPolicy;

const P: &StandardPolicy = &StandardPolicy::new();

let alice: Cert = // ...
let bob: Cert = // ...

let ua = bob.userids().next().expect("have user id");

let valid_certifications = ua.valid_certifications_by_key(
    P, None, alice.primary_key().key());
// Alice certified Bob's certificate twice.
assert_eq!(valid_certifications.count(), 2);

let active_certifications = ua.active_certifications_by_key(
    P, None, alice.primary_key().key());
// But only the most recent one is active.
assert_eq!(active_certifications.count(), 1);
source

pub fn active_certifications_by_key<T, PK>( &self, policy: &'a dyn Policy, reference_time: T, issuer: PK, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns any active third-party certifications issued by the specified key.

This function is like UserIDAmalgamation::valid_certifications_by_key, but it only returns active certifications. Active certifications are the most recent valid certifications with respect to the reference time.

Although there is normally only a single active certification, there can be multiple certifications with the same timestamp. In this case, all of them are returned.

Unlike self-signatures, multiple third-party certifications issued by the same key at the same time can be sensible. For instance, Alice may fully trust a CA for user IDs in a particular domain, and partially trust it for everything else. This can only be expressed using multiple certifications.

This method is implemented on a UserIDAmalgamation and not a ValidUserIDAmalgamation, because a third-party certification does not require the user ID to be self signed.

§Examples

See the examples for UserIDAmalgamation::valid_certifications_by_key.

source

pub fn valid_third_party_revocations_by_key<T, PK>( &self, policy: &'a dyn Policy, reference_time: T, issuer: PK, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the third-party revocations issued by the specified key, and valid at the specified time.

This function returns the revocations issued by the specified key. Specifically, it returns a revocation if:

  • it is well formed,
  • it is live with respect to the reference time,
  • it conforms to the policy, and
  • the signature is cryptographically valid.

This method is implemented on a UserIDAmalgamation and not a ValidUserIDAmalgamation, because a third-party revocation does not require the user ID to be self signed.

§Examples

Alice revokes a user ID on Bob’s certificate.

use sequoia_openpgp as openpgp;
use openpgp::cert::prelude::*;
use openpgp::policy::StandardPolicy;

const P: &StandardPolicy = &StandardPolicy::new();

let alice: Cert = // ...
let bob: Cert = // ...

let ua = bob.userids().next().expect("have user id");

let revs = ua.valid_third_party_revocations_by_key(
    P, None, alice.primary_key().key());
// Alice revoked the User ID.
assert_eq!(revs.count(), 1);
source

pub fn attest_certifications2<T, C, S>( &self, policy: &dyn Policy, time: T, primary_signer: &mut dyn Signer, certifications: C, ) -> Result<Vec<Signature>>
where T: Into<Option<SystemTime>>, 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 draft-dkg-openpgp-1pa3pc 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_certifications2(
        policy,
        None,
        &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));
source

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>,

👎Deprecated: Use attest_certifications2 instead.

Attests to third-party certifications.

This feature is experimental.

This function is deprecated in favor of UserIDAmalgamation::attest_certifications2, which includes a reference time parameter.

source

pub fn user_attribute(&self) -> &'a UserAttribute

Returns a reference to the User Attribute.

Note: although ComponentAmalgamation<UserAttribute> derefs to a &UserAttribute (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.

source

pub fn attest_certifications2<T, C, S>( &self, policy: &dyn Policy, time: T, primary_signer: &mut dyn Signer, certifications: C, ) -> Result<Vec<Signature>>
where T: Into<Option<SystemTime>>, 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

See UserIDAmalgamation::attest_certifications#examples.

source

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>,

👎Deprecated: Use attest_certifications2 instead.

Attests to third-party certifications.

This feature is experimental.

This function is deprecated in favor of UserAttributeAmalgamation::attest_certifications2, which includes a reference time parameter.

Methods from Deref<Target = ComponentBundle<C>>§

source

pub fn parts_as_public(&self) -> &KeyBundle<PublicParts, R>

Changes the key’s parts tag to PublicParts.

source

pub fn parts_as_secret(&self) -> Result<&KeyBundle<SecretParts, R>>

Changes the key’s parts tag to SecretParts.

source

pub fn parts_as_unspecified(&self) -> &KeyBundle<UnspecifiedParts, R>

Changes the key’s parts tag to UnspecifiedParts.

source

pub fn role_as_primary(&self) -> &KeyBundle<P, PrimaryRole>

Changes the key’s role tag to PrimaryRole.

source

pub fn role_as_subordinate(&self) -> &KeyBundle<P, SubordinateRole>

Changes the key’s role tag to SubordinateRole.

source

pub fn role_as_unspecified(&self) -> &KeyBundle<P, UnspecifiedRole>

Changes the key’s role tag to UnspecifiedRole.

source

pub fn component(&self) -> &C

Returns a reference to the bundle’s component.

§Examples
// Display some information about any unknown components.
for u in cert.unknowns() {
    eprintln!(" - {:?}", u.component());
}
source

pub fn binding_signature<T>( &self, policy: &dyn Policy, t: T, ) -> Result<&Signature>
where T: Into<Option<SystemTime>>,

Returns the active binding signature at time t.

The active binding signature is the most recent, non-revoked self-signature that is valid according to the policy and alive at time t (creation time <= t, t < expiry). If there are multiple such signatures then the signatures are ordered by their MPIs interpreted as byte strings.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

// Display information about each User ID's current active
// binding signature (the `time` parameter is `None`), if any.
for ua in cert.userids() {
    eprintln!("{:?}", ua.binding_signature(p, None));
}
source

pub fn self_signatures2(&self) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the component’s self-signatures.

The signatures are validated, and they are sorted by their creation time, most recent first.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

for (i, ka) in cert.keys().enumerate() {
    eprintln!("Key #{} ({}) has {:?} self signatures",
              i, ka.fingerprint(),
              ka.bundle().self_signatures2().count());
}
source

pub fn self_signatures(&self) -> &[Signature]

👎Deprecated: Use self_signatures2 instead.

Returns the component’s self-signatures.

source

pub fn certifications2(&self) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the component’s third-party certifications.

The signatures are not validated. They are sorted by their creation time, most recent first.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

for ua in cert.userids() {
    eprintln!("User ID {} has {:?} unverified, third-party certifications",
              String::from_utf8_lossy(ua.userid().value()),
              ua.bundle().certifications2().count());
}
source

pub fn certifications(&self) -> &[Signature]

👎Deprecated: Use certifications2 instead.

Returns the component’s third-party certifications.

source

pub fn self_revocations2( &self, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the component’s revocations that were issued by the certificate holder.

The revocations are validated, and they are sorted by their creation time, most recent first.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

for u in cert.userids() {
    eprintln!("User ID {} has {:?} revocation certificates.",
              String::from_utf8_lossy(u.userid().value()),
              u.bundle().self_revocations2().count());
}
source

pub fn self_revocations(&self) -> &[Signature]

👎Deprecated: Use self_revocations2 instead.

Returns the component’s revocations that were issued by the certificate holder.

source

pub fn other_revocations2( &self, ) -> impl Iterator<Item = &Signature> + Send + Sync

Returns the component’s revocations that were issued by other certificates.

The revocations are not validated. They are sorted by their creation time, most recent first.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

for u in cert.userids() {
    eprintln!("User ID {} has {:?} unverified, third-party revocation certificates.",
              String::from_utf8_lossy(u.userid().value()),
              u.bundle().other_revocations2().count());
}
source

pub fn other_revocations(&self) -> &[Signature]

👎Deprecated: Use other_revocations2 instead.

Returns the component’s revocations that were issued by other certificates.

source

pub fn attestations(&self) -> impl Iterator<Item = &Signature> + Send + Sync

Returns all of the component’s Attestation Key Signatures.

This feature is experimental.

The signatures are validated, and they are sorted by their creation time, most recent first.

A certificate owner can use Attestation Key Signatures to attest to third party certifications. Currently, only userid and user attribute certifications can be attested. See Section 5.2.3.30 of RFC 4880bis for details.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

for (i, uid) in cert.userids().enumerate() {
    eprintln!("UserID #{} ({:?}) has {:?} attestation key signatures",
              i, uid.email(),
              uid.attestations().count());
}
source

pub fn signatures(&self) -> impl Iterator<Item = &Signature> + Send + Sync

Returns all of the component’s signatures.

Only the self-signatures are validated. The signatures are sorted first by type, then by creation time. The self revocations come first, then the self signatures, then any key attestation signatures, certifications, and third-party revocations coming last. This function may return additional types of signatures that could be associated to this component.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

for (i, ka) in cert.keys().enumerate() {
    eprintln!("Key #{} ({}) has {:?} signatures",
              i, ka.fingerprint(),
              ka.signatures().count());
}
source

pub fn key(&self) -> &Key<P, R>

Returns a reference to the key.

This is just a type-specific alias for ComponentBundle::component.

§Examples
// Display some information about the keys.
for ka in cert.keys() {
    eprintln!(" - {:?}", ka.key());
}
source

pub fn revocation_status<T>( &self, policy: &dyn Policy, t: T, ) -> RevocationStatus<'_>
where T: Into<Option<SystemTime>>,

Returns the subkey’s revocation status at time t.

A subkey is revoked at time t if:

  • There is a live revocation at time t that is newer than all live self signatures at time t, or

  • There is a hard revocation (even if it is not live at time t, and even if there is a newer self-signature).

Note: Certs and subkeys have different criteria from User IDs and User Attributes.

Note: this only returns whether this subkey is revoked; it does not imply anything about the Cert or other components.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

// Display the subkeys' revocation status.
for ka in cert.keys().subkeys() {
    eprintln!(" Revocation status of {}: {:?}",
              ka.fingerprint(), ka.revocation_status(p, None));
}
source

pub fn userid(&self) -> &UserID

Returns a reference to the User ID.

This is just a type-specific alias for ComponentBundle::component.

§Examples
// Display some information about the User IDs.
for ua in cert.userids() {
    eprintln!(" - {:?}", ua.userid());
}
source

pub fn revocation_status<T>( &self, policy: &dyn Policy, t: T, ) -> RevocationStatus<'_>
where T: Into<Option<SystemTime>>,

Returns the User ID’s revocation status at time t.

A User ID is revoked at time t if:

  • There is a live revocation at time t that is newer than all live self signatures at time t.

Note: Certs and subkeys have different criteria from User IDs and User Attributes.

Note: this only returns whether this User ID is revoked; it does not imply anything about the Cert or other components.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

// Display the User IDs' revocation status.
for ua in cert.userids() {
    eprintln!(" Revocation status of {}: {:?}",
              String::from_utf8_lossy(ua.userid().value()),
              ua.revocation_status(p, None));
}
source

pub fn user_attribute(&self) -> &UserAttribute

Returns a reference to the User Attribute.

This is just a type-specific alias for ComponentBundle::component.

§Examples
// Display some information about the User Attributes
for ua in cert.user_attributes() {
    eprintln!(" - {:?}", ua.user_attribute());
}
source

pub fn revocation_status<T>( &self, policy: &dyn Policy, t: T, ) -> RevocationStatus<'_>
where T: Into<Option<SystemTime>>,

Returns the User Attribute’s revocation status at time t.

A User Attribute is revoked at time t if:

  • There is a live revocation at time t that is newer than all live self signatures at time t.

Note: Certs and subkeys have different criteria from User IDs and User Attributes.

Note: this only returns whether this User Attribute is revoked; it does not imply anything about the Cert or other components.

§Examples
use openpgp::policy::StandardPolicy;
let p = &StandardPolicy::new();

// Display the User Attributes' revocation status.
for (i, ua) in cert.user_attributes().enumerate() {
    eprintln!(" Revocation status of User Attribute #{}: {:?}",
              i, ua.revocation_status(p, None));
}
source

pub fn unknown(&self) -> &Unknown

Returns a reference to the unknown component.

This is just a type-specific alias for ComponentBundle::component.

§Examples
// Display some information about the User Attributes
for u in cert.unknowns() {
    eprintln!(" - {:?}", u.unknown());
}

Trait Implementations§

source§

impl<'a, P, R, R2> Clone for KeyAmalgamation<'a, P, R, R2>
where P: 'a + KeyParts, R: 'a + KeyRole, R2: Copy,

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a, P, R, R2: Debug> Debug for KeyAmalgamation<'a, P, R, R2>
where P: 'a + KeyParts + Debug, R: 'a + KeyRole + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> From<&'a KeyAmalgamation<'a, PublicParts, PrimaryRole, ()>> for &'a PrimaryKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a PrimaryKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, PublicParts, SubordinateRole, ()>> for &'a SubordinateKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a SubordinateKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, PublicParts, UnspecifiedRole, bool>> for &'a ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a ErasedKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for &'a PrimaryKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for &'a PrimaryKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for &'a SubordinateKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for &'a SubordinateKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, SecretParts, UnspecifiedRole, bool>> for &'a ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a ErasedKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, SecretParts, UnspecifiedRole, bool>> for &'a ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a ErasedKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, UnspecifiedParts, PrimaryRole, ()>> for &'a PrimaryKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a PrimaryKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, UnspecifiedParts, SubordinateRole, ()>> for &'a SubordinateKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a SubordinateKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a KeyAmalgamation<'a, UnspecifiedParts, UnspecifiedRole, bool>> for &'a ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a ErasedKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, PublicParts, PrimaryRole, ()>> for &'a mut PrimaryKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a mut PrimaryKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, PublicParts, SubordinateRole, ()>> for &'a mut SubordinateKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a mut SubordinateKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, PublicParts, UnspecifiedRole, bool>> for &'a mut ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a mut ErasedKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for &'a mut PrimaryKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a mut PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for &'a mut PrimaryKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a mut PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for &'a mut SubordinateKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a mut SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for &'a mut SubordinateKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a mut SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, SecretParts, UnspecifiedRole, bool>> for &'a mut ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a mut ErasedKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, SecretParts, UnspecifiedRole, bool>> for &'a mut ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: &'a mut ErasedKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, UnspecifiedParts, PrimaryRole, ()>> for &'a mut PrimaryKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a mut PrimaryKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, UnspecifiedParts, SubordinateRole, ()>> for &'a mut SubordinateKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a mut SubordinateKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut KeyAmalgamation<'a, UnspecifiedParts, UnspecifiedRole, bool>> for &'a mut ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(p: &'a mut ErasedKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a, P: 'a + KeyParts> From<KeyAmalgamation<'a, P, PrimaryRole, ()>> for ErasedKeyAmalgamation<'a, P>

source§

fn from(ka: PrimaryKeyAmalgamation<'a, P>) -> Self

Converts to this type from the input type.
source§

impl<'a, P: 'a + KeyParts> From<KeyAmalgamation<'a, P, SubordinateRole, ()>> for ErasedKeyAmalgamation<'a, P>

source§

fn from(ka: SubordinateKeyAmalgamation<'a, P>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, PublicParts, PrimaryRole, ()>> for PrimaryKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: PrimaryKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, PublicParts, PrimaryRole, ()>> for ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(ka: PrimaryKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, PublicParts, SubordinateRole, ()>> for SubordinateKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: SubordinateKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, PublicParts, SubordinateRole, ()>> for ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(ka: SubordinateKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, PublicParts, UnspecifiedRole, bool>> for ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: ErasedKeyAmalgamation<'a, PublicParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for PrimaryKeyAmalgamation<'a, PublicParts>

source§

fn from(p: PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(ka: PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for PrimaryKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, PrimaryRole, ()>> for ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(ka: PrimaryKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for SubordinateKeyAmalgamation<'a, PublicParts>

source§

fn from(p: SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(ka: SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for SubordinateKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, SubordinateRole, ()>> for ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(ka: SubordinateKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, UnspecifiedRole, bool>> for ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(p: ErasedKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, SecretParts, UnspecifiedRole, bool>> for ErasedKeyAmalgamation<'a, UnspecifiedParts>

source§

fn from(p: ErasedKeyAmalgamation<'a, SecretParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, UnspecifiedParts, PrimaryRole, ()>> for PrimaryKeyAmalgamation<'a, PublicParts>

source§

fn from(p: PrimaryKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, UnspecifiedParts, PrimaryRole, ()>> for ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(ka: PrimaryKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, UnspecifiedParts, SubordinateRole, ()>> for SubordinateKeyAmalgamation<'a, PublicParts>

source§

fn from(p: SubordinateKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, UnspecifiedParts, SubordinateRole, ()>> for ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(ka: SubordinateKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<KeyAmalgamation<'a, UnspecifiedParts, UnspecifiedRole, bool>> for ErasedKeyAmalgamation<'a, PublicParts>

source§

fn from(p: ErasedKeyAmalgamation<'a, UnspecifiedParts>) -> Self

Converts to this type from the input type.
source§

impl<'a, P, R, R2> From<ValidKeyAmalgamation<'a, P, R, R2>> for KeyAmalgamation<'a, P, R, R2>
where P: 'a + KeyParts, R: 'a + KeyRole, R2: Copy,

source§

fn from(vka: ValidKeyAmalgamation<'a, P, R, R2>) -> Self

Converts to this type from the input type.
source§

impl<'a> TryFrom<&'a KeyAmalgamation<'a, PublicParts, PrimaryRole, ()>> for &'a PrimaryKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: &'a PrimaryKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a KeyAmalgamation<'a, PublicParts, SubordinateRole, ()>> for &'a SubordinateKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: &'a SubordinateKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a KeyAmalgamation<'a, PublicParts, UnspecifiedRole, bool>> for &'a ErasedKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: &'a ErasedKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a KeyAmalgamation<'a, UnspecifiedParts, PrimaryRole, ()>> for &'a PrimaryKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: &'a PrimaryKeyAmalgamation<'a, UnspecifiedParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a KeyAmalgamation<'a, UnspecifiedParts, SubordinateRole, ()>> for &'a SubordinateKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from( p: &'a SubordinateKeyAmalgamation<'a, UnspecifiedParts>, ) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a KeyAmalgamation<'a, UnspecifiedParts, UnspecifiedRole, bool>> for &'a ErasedKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: &'a ErasedKeyAmalgamation<'a, UnspecifiedParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a mut KeyAmalgamation<'a, PublicParts, PrimaryRole, ()>> for &'a mut PrimaryKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: &'a mut PrimaryKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a mut KeyAmalgamation<'a, PublicParts, SubordinateRole, ()>> for &'a mut SubordinateKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from( p: &'a mut SubordinateKeyAmalgamation<'a, PublicParts>, ) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a mut KeyAmalgamation<'a, PublicParts, UnspecifiedRole, bool>> for &'a mut ErasedKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: &'a mut ErasedKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a mut KeyAmalgamation<'a, UnspecifiedParts, PrimaryRole, ()>> for &'a mut PrimaryKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from( p: &'a mut PrimaryKeyAmalgamation<'a, UnspecifiedParts>, ) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a mut KeyAmalgamation<'a, UnspecifiedParts, SubordinateRole, ()>> for &'a mut SubordinateKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from( p: &'a mut SubordinateKeyAmalgamation<'a, UnspecifiedParts>, ) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<&'a mut KeyAmalgamation<'a, UnspecifiedParts, UnspecifiedRole, bool>> for &'a mut ErasedKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from( p: &'a mut ErasedKeyAmalgamation<'a, UnspecifiedParts>, ) -> Result<Self>

Performs the conversion.
source§

impl<'a, P, P2> TryFrom<KeyAmalgamation<'a, P, UnspecifiedRole, bool>> for PrimaryKeyAmalgamation<'a, P2>
where P: 'a + KeyParts, P2: 'a + KeyParts,

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(ka: ErasedKeyAmalgamation<'a, P>) -> Result<Self>

Performs the conversion.
source§

impl<'a, P, P2> TryFrom<KeyAmalgamation<'a, P, UnspecifiedRole, bool>> for SubordinateKeyAmalgamation<'a, P2>
where P: 'a + KeyParts, P2: 'a + KeyParts,

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(ka: ErasedKeyAmalgamation<'a, P>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<KeyAmalgamation<'a, PublicParts, PrimaryRole, ()>> for PrimaryKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: PrimaryKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<KeyAmalgamation<'a, PublicParts, SubordinateRole, ()>> for SubordinateKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: SubordinateKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<KeyAmalgamation<'a, PublicParts, UnspecifiedRole, bool>> for ErasedKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: ErasedKeyAmalgamation<'a, PublicParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<KeyAmalgamation<'a, UnspecifiedParts, PrimaryRole, ()>> for PrimaryKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: PrimaryKeyAmalgamation<'a, UnspecifiedParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<KeyAmalgamation<'a, UnspecifiedParts, SubordinateRole, ()>> for SubordinateKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: SubordinateKeyAmalgamation<'a, UnspecifiedParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a> TryFrom<KeyAmalgamation<'a, UnspecifiedParts, UnspecifiedRole, bool>> for ErasedKeyAmalgamation<'a, SecretParts>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(p: ErasedKeyAmalgamation<'a, UnspecifiedParts>) -> Result<Self>

Performs the conversion.
source§

impl<'a, P, R, R2> Deref for KeyAmalgamation<'a, P, R, R2>
where P: 'a + KeyParts, R: 'a + KeyRole,

§

type Target = ComponentAmalgamation<'a, Key<P, R>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'a, P, R, R2> Freeze for KeyAmalgamation<'a, P, R, R2>
where R2: Freeze,

§

impl<'a, P, R, R2> RefUnwindSafe for KeyAmalgamation<'a, P, R, R2>

§

impl<'a, P, R, R2> Send for KeyAmalgamation<'a, P, R, R2>
where R2: Send, P: Sync, R: Sync,

§

impl<'a, P, R, R2> Sync for KeyAmalgamation<'a, P, R, R2>
where R2: Sync, P: Sync, R: Sync,

§

impl<'a, P, R, R2> Unpin for KeyAmalgamation<'a, P, R, R2>
where R2: Unpin,

§

impl<'a, P, R, R2> UnwindSafe for KeyAmalgamation<'a, P, R, R2>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T