[][src]Struct sequoia_openpgp::cert::amalgamation::ValidComponentAmalgamation

pub struct ValidComponentAmalgamation<'a, C> { /* fields omitted */ }

A certificate's component and its associated data.

Methods from Deref<Target = ComponentAmalgamation<'a, C>>

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

Changes the key's parts tag to PublicParts.

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

Changes the key's parts tag to SecretParts.

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

Changes the key's parts tag to UnspecifiedParts.

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

Changes the key's role tag to PrimaryRole.

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

Changes the key's role tag to SubordinateRole.

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

Changes the key's role tag to UnspecifiedRole.

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

Returns the certificate that the component came from.

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

Returns this amalgamation's bundle.

Note: although Amalgamation derefs to a ComponentBundle, this method provides a more accurate lifetime, which is helpful when returning the reference from a function.

Consider the following, which doesn't work:

This example deliberately fails to compile
use openpgp::cert::prelude::*;
use openpgp::packet::prelude::*;

cert.keys()
    .map(|ka| {
        let b : &KeyBundle<_, _> = &ka;
        b
    })
    .collect::<Vec<&KeyBundle<_, _>>>();

Compiling the above code results in the following error:

b returns a value referencing data owned by the current function

This error occurs because the Deref trait says that the lifetime of the target, i.e., &KeyBundle, is bounded by ka's lifetime, whose lifetime is indeed limited to the closure. But, &KeyBundle is independent of ka! It is a copy of the KeyAmalgamation's reference to the KeyBundle whose lifetime is 'a. Unfortunately, this can't be expressed using Deref, but it can be done using a separate method:

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

cert.keys().map(|ka| ka.bundle())
    .collect::<Vec<&KeyBundle<_, _>>>();

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

Returns this amalgamation's component.

Note: although Amalgamation derefs to a Component (via ComponentBundle), this method provides a more accurate lifetime, which is helpful when returning the reference from a function.

Consider the following, which doesn't work:

This example deliberately fails to compile
use openpgp::cert::prelude::*;
use openpgp::packet::prelude::*;

cert.keys()
    .map(|ka| {
        let k : &Key<_, _> = &ka;
        k
    })
    .collect::<Vec<&Key<_, _>>>();

Compiling the above code results in the following error:

k returns a value referencing data owned by the current function

This error occurs because the Deref trait says that the lifetime of the target, i.e., &Key, is bounded by the ka's lifetime, whose lifetime is indeed limited to the closure. But, &Key is independent of ka! It is a copy of the KeyAmalgamation's reference to the Key whose lifetime is 'a. Unfortunately, this can't be expressed using Deref, but it can be done using a separate method:

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

cert.keys().map(|ka| ka.key())
    .collect::<Vec<&Key<_, _>>>();

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

The component's self-signatures.

This method is a forwarder for ComponentBundle::self_signatures. 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.

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

The component's third-party certifications.

This method is a forwarder for ComponentBundle::certifications. 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.

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

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

This method is a forwarder for ComponentBundle::self_revocations. 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.

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

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

This method is a forwarder for ComponentBundle::other_revocations. 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.

Trait Implementations

impl<'a, C> ValidateAmalgamation<'a, C> for ValidComponentAmalgamation<'a, C>[src]

type V = Self

The type returned by with_policy.

impl<'a, C> ValidAmalgamation<'a, C> for ValidComponentAmalgamation<'a, C>[src]

fn time(&self) -> SystemTime[src]

Returns the amalgamation's reference time.

For queries that are with respect to a point in time, this determines that point in time. For instance, if a component is created at t_c and expires at t_e, then ValidComponentAmalgamation::alive will return true if the reference time is greater than or equal to t_c and less than t_e.

fn policy(&self) -> &'a dyn Policy[src]

Returns the amalgamation's policy.

fn binding_signature(&self) -> &'a Signature[src]

Returns the component's binding signature as of the reference time.

fn revoked(&self) -> RevocationStatus<'a>[src]

Returns the component's revocation status as of the amalgamation's reference time.

Note: this does not return whether the certificate is valid.

fn direct_key_signature(&self) -> Result<&'a Signature>[src]

Returns the Certificate's direct key signature as of the reference time, if any. Read more

fn map<F: Fn(&'a Signature) -> Option<T>, T>(&self, f: F) -> Option<T>[src]

Maps the given function over binding and direct key signature. Read more

fn revocation_keys(&self) -> Box<dyn Iterator<Item = &'a RevocationKey> + 'a>[src]

Returns the value of the Revocation Key subpacket, which contains a designated revoker. Read more

impl<'a, C> Preferences<'a> for ValidComponentAmalgamation<'a, C>[src]

impl<'a, C: 'a> From<ValidComponentAmalgamation<'a, C>> for ComponentAmalgamation<'a, C>[src]

impl<'a, C> Clone for ValidComponentAmalgamation<'a, C>[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl<'a, C> Deref for ValidComponentAmalgamation<'a, C>[src]

type Target = ComponentAmalgamation<'a, C>

The resulting type after dereferencing.

impl<'a, C: Debug> Debug for ValidComponentAmalgamation<'a, C>[src]

Auto Trait Implementations

impl<'a, C> !Send for ValidComponentAmalgamation<'a, C>

impl<'a, C> !Sync for ValidComponentAmalgamation<'a, C>

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip for T where
    V: MultiLane<T>,