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

#include <x509_ext.h>

Inheritance diagram for Botan::Cert_Extension::Authority_Information_Access:
Botan::Certificate_Extension

Classes

class  AccessDescription

Public Member Functions

const std::vector< AccessDescription > & access_descriptions () const
void add_access_description (AccessDescription ad)
 Authority_Information_Access ()=default
 Authority_Information_Access (const std::vector< std::string > &ocsp_responders, const std::vector< std::string > &ca_issuers=std::vector< std::string >())
 Authority_Information_Access (std::string_view ocsp, const std::vector< std::string > &ca_issuers=std::vector< std::string >())
 Authority_Information_Access (std::vector< AccessDescription > access_descriptions)
 Authority_Information_Access (std::vector< URI > ocsp_responders, std::vector< URI > ca_issuers=std::vector< URI >())
const std::vector< URI > & ca_issuer_uris () const
std::vector< std::string > ca_issuers () const
std::unique_ptr< Certificate_Extensioncopy () const override
std::string ocsp_responder () const
const std::vector< URI > & ocsp_responder_uris () const
std::vector< std::string > ocsp_responders () const
OID oid_of () const override
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 ()

Detailed Description

Authority Information Access Extension

Definition at line 370 of file x509_ext.h.

Constructor & Destructor Documentation

◆ Authority_Information_Access() [1/5]

Botan::Cert_Extension::Authority_Information_Access::Authority_Information_Access ( )
default

◆ Authority_Information_Access() [2/5]

Botan::Cert_Extension::Authority_Information_Access::Authority_Information_Access ( std::string_view ocsp,
const std::vector< std::string > & ca_issuers = std::vector<std::string>() )
explicit

Definition at line 983 of file x509_ext.cpp.

984 :
985 m_ca_issuers(parse_aia_uris(ca_issuers, "AuthorityInformationAccess CA issuers")) {
986 if(!ocsp.empty()) {
987 if(auto parsed = URI::from_string(ocsp)) {
988 m_ocsp_responders.push_back(std::move(*parsed));
989 } else {
990 throw Invalid_Argument("Invalid URI in AuthorityInformationAccess OCSP responder");
991 }
992 }
993 m_access_descriptions = uri_access_descriptions(m_ocsp_responders, m_ca_issuers);
994}
std::vector< std::string > ca_issuers() const
static std::optional< URI > from_string(std::string_view raw)
Definition uri.cpp:164

References ca_issuers().

◆ Authority_Information_Access() [3/5]

Botan::Cert_Extension::Authority_Information_Access::Authority_Information_Access ( const std::vector< std::string > & ocsp_responders,
const std::vector< std::string > & ca_issuers = std::vector<std::string>() )
explicit

Definition at line 996 of file x509_ext.cpp.

997 :
998 m_ocsp_responders(parse_aia_uris(ocsp_responders, "AuthorityInformationAccess OCSP responders")),
999 m_ca_issuers(parse_aia_uris(ca_issuers, "AuthorityInformationAccess CA issuers")),
1000 m_access_descriptions(uri_access_descriptions(m_ocsp_responders, m_ca_issuers)) {}
std::vector< std::string > ocsp_responders() const

References Authority_Information_Access(), ca_issuers(), and ocsp_responders().

◆ Authority_Information_Access() [4/5]

Botan::Cert_Extension::Authority_Information_Access::Authority_Information_Access ( std::vector< URI > ocsp_responders,
std::vector< URI > ca_issuers = std::vector<URI>() )
explicit

Definition at line 1002 of file x509_ext.cpp.

1003 :
1004 m_ocsp_responders(std::move(ocsp_responders)),
1005 m_ca_issuers(std::move(ca_issuers)),
1006 m_access_descriptions(uri_access_descriptions(m_ocsp_responders, m_ca_issuers)) {}

References ca_issuers(), and ocsp_responders().

◆ Authority_Information_Access() [5/5]

Botan::Cert_Extension::Authority_Information_Access::Authority_Information_Access ( std::vector< AccessDescription > access_descriptions)
explicit

Construct an AIA from raw AccessDescriptions, allowing the caller to emit access methods beyond id-ad-ocsp / id-ad-caIssuers and access locations beyond URIs. The typed URI accessors (ocsp_responder_uris, ca_issuer_uris) are also populated from any URI-form entries whose accessMethod is id-ad-ocsp or id-ad-caIssuers so the two views stay consistent.

Definition at line 1082 of file x509_ext.cpp.

1082 :
1083 m_access_descriptions(std::move(access_descriptions)) {
1084 for(const auto& ad : m_access_descriptions) {
1085 validate_access_description(ad);
1086 populate_uri_view_from_access_description(ad, m_ocsp_responders, m_ca_issuers);
1087 }
1088}
const std::vector< AccessDescription > & access_descriptions() const
Definition x509_ext.h:466

References access_descriptions().

Member Function Documentation

◆ access_descriptions()

const std::vector< AccessDescription > & Botan::Cert_Extension::Authority_Information_Access::access_descriptions ( ) const
inline

The full set of AccessDescriptions, including access methods that are not id-ad-ocsp or id-ad-caIssuers and access locations that are not URIs

Definition at line 466 of file x509_ext.h.

466{ return m_access_descriptions; }

Referenced by Authority_Information_Access(), and Authority_Information_Access().

◆ add_access_description()

void Botan::Cert_Extension::Authority_Information_Access::add_access_description ( AccessDescription ad)

Append a single AccessDescription. URI-form id-ad-ocsp / id-ad-caIssuers entries also populate the corresponding typed URI accessor list.

Definition at line 1090 of file x509_ext.cpp.

1090 {
1091 validate_access_description(ad);
1092 populate_uri_view_from_access_description(ad, m_ocsp_responders, m_ca_issuers);
1093 m_access_descriptions.push_back(std::move(ad));
1094}

Referenced by Authority_Information_Access().

◆ ca_issuer_uris()

const std::vector< URI > & Botan::Cert_Extension::Authority_Information_Access::ca_issuer_uris ( ) const
inline

Definition at line 474 of file x509_ext.h.

474{ return m_ca_issuers; }

References ca_issuer_uris().

Referenced by ca_issuer_uris().

◆ ca_issuers()

std::vector< std::string > Botan::Cert_Extension::Authority_Information_Access::ca_issuers ( ) const

Definition at line 1096 of file x509_ext.cpp.

1096 {
1097 std::vector<std::string> out;
1098 out.reserve(m_ca_issuers.size());
1099 for(const auto& uri : m_ca_issuers) {
1100 out.push_back(uri.original_input());
1101 }
1102 return out;
1103}

Referenced by Authority_Information_Access(), Authority_Information_Access(), Authority_Information_Access(), and Authority_Information_Access().

◆ copy()

std::unique_ptr< Certificate_Extension > Botan::Cert_Extension::Authority_Information_Access::copy ( ) const
overridevirtual

Make a copy of this extension

Returns
copy of this

Implements Botan::Certificate_Extension.

Definition at line 1017 of file x509_ext.cpp.

1017 {
1018 return std::make_unique<Authority_Information_Access>(*this);
1019}

◆ ocsp_responder()

std::string Botan::Cert_Extension::Authority_Information_Access::ocsp_responder ( ) const
inline

Definition at line 451 of file x509_ext.h.

451 {
452 if(m_ocsp_responders.empty()) {
453 return {};
454 }
455 return m_ocsp_responders[0].original_input();
456 }

References BOTAN_DEPRECATED, and ocsp_responder().

Referenced by ocsp_responder().

◆ ocsp_responder_uris()

const std::vector< URI > & Botan::Cert_Extension::Authority_Information_Access::ocsp_responder_uris ( ) const
inline

Definition at line 460 of file x509_ext.h.

460{ return m_ocsp_responders; }

References ocsp_responder_uris().

Referenced by ocsp_responder_uris().

◆ ocsp_responders()

std::vector< std::string > Botan::Cert_Extension::Authority_Information_Access::ocsp_responders ( ) const

Definition at line 1008 of file x509_ext.cpp.

1008 {
1009 std::vector<std::string> out;
1010 out.reserve(m_ocsp_responders.size());
1011 for(const auto& uri : m_ocsp_responders) {
1012 out.push_back(uri.original_input());
1013 }
1014 return out;
1015}

Referenced by Authority_Information_Access(), Authority_Information_Access(), and Authority_Information_Access().

◆ oid_of()

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

Return object identifier for this extension

Returns
OID representing this extension

Implements Botan::Certificate_Extension.

Definition at line 470 of file x509_ext.h.

References static_oid().

◆ static_oid()

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

Definition at line 468 of file x509_ext.h.

468{ return OID({1, 3, 6, 1, 5, 5, 7, 1, 1}); }

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: