pub struct Capabilities {
pub key_usage: KeyUsages,
pub basic_constraints: BasicConstraints,
}Expand description
An abstraction over X.509 Extensions and PKCS#10 Attributes, representing the capabilities of a certificate. Capabilities can be converted from and to both Attributes and Extensions.
This struct only covers the Attributes/Extensions currently relevant to polyproto.
Fields§
§key_usage: KeyUsagesThe key usage extension defines the purpose of the key contained in the certificate.
basic_constraints: BasicConstraintsExtension type that defines whether a given certificate is allowed to sign additional certificates and what path length restrictions may exist.
Implementations§
Source§impl Capabilities
impl Capabilities
Sourcepub fn default_actor() -> Self
pub fn default_actor() -> Self
Sane default for actor ID-CSR/ID-Cert Capabilities. Uses the
DigitalSignature flag, not the ContentCommitment flag.
Sourcepub fn default_home_server() -> Self
pub fn default_home_server() -> Self
Sane default for home server ID-CSR/ID-Cert Capabilities.
Sourcepub fn validate(&self) -> Result<(), ConstraintError>
pub fn validate(&self) -> Result<(), ConstraintError>
Validates that these capabilities are well-formed according to X.509 and polyproto constraints. This validation is target-independent.
§Errors
Returns a crate::errors::ConstraintError if the capabilities are malformed.
Sourcepub fn validate_for_actor(&self) -> Result<(), ConstraintError>
pub fn validate_for_actor(&self) -> Result<(), ConstraintError>
Validates that these capabilities are correct for an actor certificate.
In addition to the base validation, this checks:
- The
CAflag must befalse - Must have
DigitalSignatureorContentCommitment - Must not have
KeyCertSign
§Errors
Returns a crate::errors::ConstraintError if the capabilities are not valid for an actor.
Sourcepub fn validate_for_home_server(&self) -> Result<(), ConstraintError>
pub fn validate_for_home_server(&self) -> Result<(), ConstraintError>
Validates that these capabilities are correct for a home server certificate.
In addition to the base validation, this checks:
- The
CAflag must betrue - Must have
KeyCertSign
§Errors
Returns a crate::errors::ConstraintError if the capabilities are not valid for a home server.
Trait Implementations§
Source§impl Clone for Capabilities
impl Clone for Capabilities
Source§fn clone(&self) -> Capabilities
fn clone(&self) -> Capabilities
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Capabilities
impl Debug for Capabilities
Source§impl Default for Capabilities
impl Default for Capabilities
impl Eq for Capabilities
Source§impl From<ActorCapabilities> for Capabilities
impl From<ActorCapabilities> for Capabilities
Source§fn from(value: ActorCapabilities) -> Self
fn from(value: ActorCapabilities) -> Self
Source§impl From<HomeServerCapabilities> for Capabilities
impl From<HomeServerCapabilities> for Capabilities
Source§fn from(value: HomeServerCapabilities) -> Self
fn from(value: HomeServerCapabilities) -> Self
Source§impl Hash for Capabilities
impl Hash for Capabilities
Source§impl Ord for Capabilities
impl Ord for Capabilities
Source§fn cmp(&self, other: &Capabilities) -> Ordering
fn cmp(&self, other: &Capabilities) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for Capabilities
impl PartialEq for Capabilities
Source§fn eq(&self, other: &Capabilities) -> bool
fn eq(&self, other: &Capabilities) -> bool
self and other values to be equal, and is used by ==.Source§impl PartialOrd for Capabilities
impl PartialOrd for Capabilities
impl StructuralPartialEq for Capabilities
Source§impl TryFrom<Capabilities> for Attributes
impl TryFrom<Capabilities> for Attributes
Source§fn try_from(value: Capabilities) -> Result<Self, Self::Error>
fn try_from(value: Capabilities) -> Result<Self, Self::Error>
Performs the conversion.
Fails, if Capabilities::validate() fails.
Source§type Error = CertificateConversionError
type Error = CertificateConversionError
Source§impl TryFrom<Capabilities> for Extensions
impl TryFrom<Capabilities> for Extensions
Source§fn try_from(value: Capabilities) -> Result<Self, Self::Error>
fn try_from(value: Capabilities) -> Result<Self, Self::Error>
Performs the conversion.
try_from does not check whether the resulting Extensions are well-formed.
Source§type Error = CertificateConversionError
type Error = CertificateConversionError
Source§impl TryFrom<Capabilities> for ActorCapabilities
impl TryFrom<Capabilities> for ActorCapabilities
Source§type Error = ConstraintError
type Error = ConstraintError
Source§impl TryFrom<Capabilities> for HomeServerCapabilities
impl TryFrom<Capabilities> for HomeServerCapabilities
Source§type Error = ConstraintError
type Error = ConstraintError
Source§impl TryFrom<SetOfVec<Attribute>> for Capabilities
impl TryFrom<SetOfVec<Attribute>> for Capabilities
Source§fn try_from(value: Attributes) -> Result<Self, Self::Error>
fn try_from(value: Attributes) -> Result<Self, Self::Error>
Performs the conversion.
Fails if the BasicConstraints or KeyUsages are malformed. The
constraints returned by this method are not guaranteed to be valid.
You should call validate() on the result to ensure that the
constraints are valid according to the X.509 standard and the polyproto
specification.
Source§type Error = CertificateConversionError
type Error = CertificateConversionError
Source§impl TryFrom<Vec<Extension>> for Capabilities
impl TryFrom<Vec<Extension>> for Capabilities
Source§fn try_from(value: Extensions) -> Result<Self, Self::Error>
fn try_from(value: Extensions) -> Result<Self, Self::Error>
Performs the conversion.
try_from does not check whether the resulting Capabilities are
well-formed. If this property is critical, use the
Capabilities::validate() method to verify the well-formedness of
these resulting Capabilities.