Botan 3.13.0
Crypto and TLS for C&
Botan::Cert_Extension::Basic_Constraints Class Referencefinal

#include <x509_ext.h>

Inheritance diagram for Botan::Cert_Extension::Basic_Constraints:
Botan::Certificate_Extension

Public Member Functions

 Basic_Constraints (bool is_ca, std::optional< size_t > path_length_constraint)
BOTAN_FUTURE_EXPLICIT Basic_Constraints (bool is_ca=false, size_t path_length_constraint=0)
std::unique_ptr< Certificate_Extensioncopy () const override
bool get_is_ca () const
size_t get_path_limit () const
bool is_ca () const
OID oid_of () const override
std::optional< size_t > path_length_constraint () const
virtual void validate (const X509_Certificate &subject, const std::optional< X509_Certificate > &issuer, const std::vector< X509_Certificate > &cert_path, std::vector< std::set< Certificate_Status_Code > > &cert_status, size_t pos) const

Static Public Member Functions

static OID static_oid ()

Protected Member Functions

virtual bool should_encode () const

Detailed Description

Basic Constraints Extension

Definition at line 35 of file x509_ext.h.

Constructor & Destructor Documentation

◆ Basic_Constraints() [1/2]

Botan::Cert_Extension::Basic_Constraints::Basic_Constraints ( bool is_ca = false,
size_t path_length_constraint = 0 )

Definition at line 445 of file x509_ext.cpp.

445 :
446 Basic_Constraints(is_ca, is_ca ? std::optional<size_t>(path_length_constraint) : std::nullopt) {}
BOTAN_FUTURE_EXPLICIT Basic_Constraints(bool is_ca=false, size_t path_length_constraint=0)
Definition x509_ext.cpp:445
std::optional< size_t > path_length_constraint() const
Definition x509_ext.h:55

References Basic_Constraints(), is_ca(), and path_length_constraint().

Referenced by Basic_Constraints().

◆ Basic_Constraints() [2/2]

Botan::Cert_Extension::Basic_Constraints::Basic_Constraints ( bool is_ca,
std::optional< size_t > path_length_constraint )

Definition at line 448 of file x509_ext.cpp.

448 :
449 m_is_ca(is_ca), m_path_length_constraint(path_length_constraint) {
450 if(!m_is_ca && m_path_length_constraint.has_value()) {
451 // RFC 5280 Sec 4.2.1.9 "CAs MUST NOT include the pathLenConstraint field unless the cA boolean is asserted"
452 throw Invalid_Argument(
453 "Basic_Constraints nonsensical to set a path length constraint for a non-CA basicConstraints");
454 }
455}

References is_ca(), and path_length_constraint().

Member Function Documentation

◆ copy()

std::unique_ptr< Certificate_Extension > Botan::Cert_Extension::Basic_Constraints::copy ( ) const
inlineoverridevirtual

Make a copy of this extension

Returns
copy of this

Implements Botan::Certificate_Extension.

Definition at line 37 of file x509_ext.h.

37 {
38 return std::make_unique<Basic_Constraints>(m_is_ca, m_path_length_constraint);
39 }

◆ get_is_ca()

bool Botan::Cert_Extension::Basic_Constraints::get_is_ca ( ) const
inline

Definition at line 45 of file x509_ext.h.

45{ return m_is_ca; }

References get_is_ca().

Referenced by get_is_ca().

◆ get_path_limit()

size_t Botan::Cert_Extension::Basic_Constraints::get_path_limit ( ) const

Note that this function returns NO_CERT_PATH_LIMIT if the value was not set in the extension.

Definition at line 460 of file x509_ext.cpp.

460 {
461 if(m_is_ca) {
462 return m_path_length_constraint.value_or(NO_CERT_PATH_LIMIT);
463 } else {
464 throw Invalid_State("Basic_Constraints::get_path_limit: Not a CA");
465 }
466}

◆ is_ca()

bool Botan::Cert_Extension::Basic_Constraints::is_ca ( ) const
inline

Definition at line 53 of file x509_ext.h.

53{ return m_is_ca; }

References is_ca().

Referenced by Basic_Constraints(), Basic_Constraints(), is_ca(), and Botan::Cert_Extension::NoRevocationAvailable::validate().

◆ oid_of()

OID Botan::Cert_Extension::Basic_Constraints::oid_of ( ) const
inlineoverridevirtual

Return object identifier for this extension

Returns
OID representing this extension

Implements Botan::Certificate_Extension.

Definition at line 59 of file x509_ext.h.

59{ return static_oid(); }

References static_oid().

◆ path_length_constraint()

std::optional< size_t > Botan::Cert_Extension::Basic_Constraints::path_length_constraint ( ) const
inline

Definition at line 55 of file x509_ext.h.

55{ return m_path_length_constraint; }

Referenced by Basic_Constraints(), and Basic_Constraints().

◆ should_encode()

virtual bool Botan::Certificate_Extension::should_encode ( ) const
inlineprotectedvirtualinherited

Definition at line 863 of file pkix_types.h.

863{ return true; }

◆ static_oid()

OID Botan::Cert_Extension::Basic_Constraints::static_oid ( )
inlinestatic

Definition at line 57 of file x509_ext.h.

57{ return OID({2, 5, 29, 19}); }

Referenced by oid_of().

◆ validate()

void Botan::Certificate_Extension::validate ( const X509_Certificate & subject,
const std::optional< X509_Certificate > & issuer,
const std::vector< X509_Certificate > & cert_path,
std::vector< std::set< Certificate_Status_Code > > & cert_status,
size_t pos ) const
virtualinherited

Callback visited during path validation.

An extension can implement this callback to inspect the path during path validation.

If an error occurs during validation of this extension, an appropriate status code shall be added to cert_status.

Parameters
subjectSubject certificate that contains this extension
issuerIssuer certificate. nullopt for certificates with no available issuer (e.g. non self-signed trust anchors).
cert_pathCertificate path which is currently validated
cert_statusCertificate validation status codes for subject certificate
posPosition of subject certificate in cert_path

Reimplemented in Botan::Cert_Extension::ASBlocks, Botan::Cert_Extension::Certificate_Policies, Botan::Cert_Extension::IPAddressBlocks, Botan::Cert_Extension::Name_Constraints, Botan::Cert_Extension::NoRevocationAvailable, Botan::Cert_Extension::OCSP_NoCheck, and Botan::Cert_Extension::Unknown_Extension.

Definition at line 181 of file x509_ext.cpp.

185 {}

Referenced by is_appropriate_context().


The documentation for this class was generated from the following files: