[][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 mark_role_primary_ref(
    &'a self
) -> &'a ComponentAmalgamation<'a, Key<P, PrimaryRole>>
[src]

Changes the key's role tag to PrimaryRole.

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

Changes the key's role tag to SubordinateRole.

pub fn mark_role_unspecified_ref(
    &'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 userid(&self) -> &'a UserID[src]

Returns a reference to the User ID.

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

Returns a reference to the User Attribute.

Trait Implementations

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

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

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

type Target = ComponentAmalgamation<'a, C>

The resulting type after dereferencing.

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

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

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 direct_key_signature(&self) -> Result<&'a Signature>[src]

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

Subpackets on direct key signatures apply to all components of the certificate.

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 key_expiration_time(&self) -> Option<SystemTime>[src]

Returns the key's expiration time as of the amalgamtion's reference time.

If this function returns None, the key does not expire.

Considers both the binding signature and the direct key signature. Information in the binding signature takes precedence over the direct key signature. See also Section 5.2.3.3 of RFC 4880.

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

type V = Self

The type returned by with_policy.

Auto Trait Implementations

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

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

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

impl<'a, C> Unpin for ValidComponentAmalgamation<'a, C>

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

Blanket Implementations

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

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

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

impl<T> From<T> for T[src]

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

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

type Owned = T

The resulting type after obtaining ownership.

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

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> 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<V> for T where
    V: MultiLane<T>,