Module sequoia_openpgp::cert::bundle
source · Expand description
A certificate component and its associated signatures.
Certificates (Cert
s) are a collection of components where each
component corresponds to a Packet
, and each component has zero
or more associated Signature
s. A ComponentBundle
encapsulates a component and its associated signatures.
Sequoia supports four different kinds of components: Key
s,
UserID
s, UserAttribute
s, and Unknown
components. The
Unknown
component has two purposes. First, it is used to store
packets that appear in a certificate and have an unknown Tag
.
By not silently dropping these packets, it is possible to round
trip certificates without losing any information. This provides a
measure of future compatibility. Second, the Unknown
component
is used to store unsupported components. For instance, Sequoia
doesn’t support v3 Key
s, which are deprecated, or v5 Key
s,
which are still being standardized. Because these keys are
effectively unusable, they are stored as Unknown
components
instead of Key
s.
There are four types of signatures associated with a component: self signatures, self revocations, third-party signatures, and third-party revocations. When parsing a certificate, self signatures and self revocations are checked for validity and invalid signatures and revocations are discarded. Since the keys are not normally available, third-party signatures and third-party revocations cannot be rigorously (i.e., cryptographically) checked for validity.
With the exception of the primary key, a component’s self signatures are binding signatures. A binding signature firstly binds the component to the certificate. That is, it provides cryptographic evidence that the certificate holder intended for the component to be associated with the certificate. Binding signatures also provide information about the component. For instance, the binding signature for a subkey includes its capabilities, and its expiry time.
Since the primary key is the embodiment of the certificate, there
is nothing to bind it to. Correspondingly, self signatures on a
primary key are called direct key signatures. Direct key
signatures are used to provide information about the whole
certificate. For instance, they can include the default Key
expiry time. This is used if a subkey’s binding signature doesn’t
include a expiry.
Self-revocations are revocation certificates issued by the key certificate holder.
Third-party signatures are typically signatures certifying that a
User ID
or User Attribute
accurately describes the certificate
holder. This information is used by trust models, like the Web of
Trust, to indirectly authenticate keys.
Third-party revocations are revocations issued by another certificate. They should normally only be respected if the certificate holder made the issuer a so-called designated revoker.
§Important
When looking up information about a component, it is generally
better to use the ComponentAmalgamation
or KeyAmalgamation
data structures. These data structures provide convenience
methods that implement the complicated semantics for correctly
locating information.
Structs§
- A certificate component and its associated signatures.
Type Aliases§
- A key (primary or subkey, public or private) and any associated signatures.
- A primary key and any associated signatures.
- A subkey and any associated signatures.
- An unknown component and any associated signatures.
- A User Attribute and any associated signatures.
- A User ID and any associated signatures.