Botan 3.9.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 X509_Certificate &issuer, const std::vector< X509_Certificate > &cert_path, std::vector< std::set< Certificate_Status_Code > > &cert_status, size_t pos)

Static Public Member Functions

static OID static_oid ()

Protected Member Functions

virtual bool should_encode () const

Detailed Description

Basic Constraints Extension

Definition at line 33 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 293 of file x509_ext.cpp.

293 :
294 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:293
std::optional< size_t > path_length_constraint() const
Definition x509_ext.h:53

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 296 of file x509_ext.cpp.

296 :
297 m_is_ca(is_ca), m_path_length_constraint(path_length_constraint) {
298 if(!m_is_ca && m_path_length_constraint.has_value()) {
299 // RFC 5280 Sec 4.2.1.9 "CAs MUST NOT include the pathLenConstraint field unless the cA boolean is asserted"
300 throw Invalid_Argument(
301 "Basic_Constraints nonsensical to set a path length constraint for a non-CA basicConstraints");
302 }
303}

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 35 of file x509_ext.h.

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

◆ get_is_ca()

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

Definition at line 43 of file x509_ext.h.

43{ 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 308 of file x509_ext.cpp.

308 {
309 if(m_is_ca) {
310 return m_path_length_constraint.value_or(NO_CERT_PATH_LIMIT);
311 } else {
312 throw Invalid_State("Basic_Constraints::get_path_limit: Not a CA");
313 }
314}

◆ is_ca()

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

Definition at line 51 of file x509_ext.h.

51{ return m_is_ca; }

References is_ca().

Referenced by Basic_Constraints(), Basic_Constraints(), and is_ca().

◆ oid_of()

OID Botan::Cert_Extension::Basic_Constraints::oid_of ( ) const
inlineoverridevirtual
Returns
OID representing this extension

Implements Botan::Certificate_Extension.

Definition at line 57 of file x509_ext.h.

57{ 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 53 of file x509_ext.h.

53{ 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 465 of file pkix_types.h.

465{ return true; }

◆ static_oid()

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

Definition at line 55 of file x509_ext.h.

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

Referenced by oid_of().

◆ validate()

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

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