Expand description

A certificate component and its associated signatures.

Certificates (Certs) are a collection of components where each component corresponds to a Packet, and each component has zero or more associated Signatures. A ComponentBundle encapsulates a component and its associated signatures.

Sequoia supports four different kinds of components: Keys, UserIDs, UserAttributes, 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 Keys, which are deprecated, or v5 Keys, which are still being standardized. Because these keys are effectively unusable, they are stored as Unknown components instead of Keys.

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.


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.


A certificate component and its associated signatures.

Type Definitions

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.