Botan 3.12.0
Crypto and TLS for C&
Botan::Path_Validation_Result Class Referencefinal

#include <x509path.h>

Public Types

typedef Certificate_Status_Code Code

Public Member Functions

const CertificatePathStatusCodesall_statuses () const
const std::vector< X509_Certificate > & cert_path () const
bool no_warnings () const
 Path_Validation_Result (Certificate_Status_Code status)
 Path_Validation_Result (CertificatePathStatusCodes status, std::vector< X509_Certificate > &&cert_chain)
Certificate_Status_Code result () const
std::string result_string () const
bool successful_validation () const
const X509_Certificatetrust_root () const
CertificatePathStatusCodes warnings () const
std::string warnings_string () const

Static Public Member Functions

static const char * status_string (Certificate_Status_Code code)

Detailed Description

Represents the result of a PKIX path validation

Definition at line 175 of file x509path.h.

Member Typedef Documentation

◆ Code

Constructor & Destructor Documentation

◆ Path_Validation_Result() [1/2]

Botan::Path_Validation_Result::Path_Validation_Result ( CertificatePathStatusCodes status,
std::vector< X509_Certificate > && cert_chain )

Create a Path_Validation_Result

Parameters
statuslist of validation status codes
cert_chainthe certificate chain that was validated

Definition at line 1128 of file x509path.cpp.

1129 :
1130 m_all_status(std::move(status)),
1131 m_warnings(find_warnings(m_all_status)),
1132 m_cert_path(std::move(cert_chain)),
1133 m_overall(PKIX::overall_status(m_all_status)) {}
Certificate_Status_Code overall_status(const CertificatePathStatusCodes &cert_status)
Definition x509path.cpp:913

◆ Path_Validation_Result() [2/2]

Botan::Path_Validation_Result::Path_Validation_Result ( Certificate_Status_Code status)
inlineexplicit

Create a Path_Validation_Result

Parameters
statusvalidation status code

Definition at line 243 of file x509path.h.

243: m_overall(status) {}

Member Function Documentation

◆ all_statuses()

const CertificatePathStatusCodes & Botan::Path_Validation_Result::all_statuses ( ) const
inline
Returns
a set of status codes for each certificate in the chain

Definition at line 209 of file x509path.h.

209{ return m_all_status; }

◆ cert_path()

const std::vector< X509_Certificate > & Botan::Path_Validation_Result::cert_path ( ) const
inline
Returns
the full path from subject to trust root This path may be empty

Definition at line 189 of file x509path.h.

189{ return m_cert_path; }

◆ no_warnings()

bool Botan::Path_Validation_Result::no_warnings ( ) const
Returns
true iff no warnings occurred during validation

Definition at line 1151 of file x509path.cpp.

1151 {
1152 for(const auto& status_set_i : m_warnings) {
1153 if(!status_set_i.empty()) {
1154 return false;
1155 }
1156 }
1157 return true;
1158}

◆ result()

Certificate_Status_Code Botan::Path_Validation_Result::result ( ) const
inline
Returns
overall validation result code

Definition at line 204 of file x509path.h.

204{ return m_overall; }

Referenced by result_string(), successful_validation(), and trust_root().

◆ result_string()

std::string Botan::Path_Validation_Result::result_string ( ) const
Returns
string representation of the validation result

Definition at line 1164 of file x509path.cpp.

1164 {
1165 return status_string(result());
1166}
Certificate_Status_Code result() const
Definition x509path.h:204
static const char * status_string(Certificate_Status_Code code)

References result(), and status_string().

Referenced by Botan::TLS::Callbacks::tls_verify_cert_chain().

◆ status_string()

const char * Botan::Path_Validation_Result::status_string ( Certificate_Status_Code code)
static
Parameters
codevalidation status code
Returns
corresponding validation status message

Definition at line 1168 of file x509path.cpp.

1168 {
1169 if(const char* s = to_string(code)) {
1170 return s;
1171 }
1172
1173 return "Unknown error";
1174}
std::string to_string(ErrorType type)
Convert an ErrorType to string.
Definition exceptn.cpp:13

References Botan::to_string().

Referenced by result_string(), and warnings_string().

◆ successful_validation()

bool Botan::Path_Validation_Result::successful_validation ( ) const

◆ trust_root()

const X509_Certificate & Botan::Path_Validation_Result::trust_root ( ) const
Returns
the trust root of the validation if successful throws an exception if the validation failed

Definition at line 1135 of file x509path.cpp.

1135 {
1136 if(m_cert_path.empty()) {
1137 throw Invalid_State("Path_Validation_Result::trust_root no path set");
1138 }
1140 throw Invalid_State("Path_Validation_Result::trust_root meaningless with invalid status");
1141 }
1142
1143 return m_cert_path[m_cert_path.size() - 1];
1144}

References result(), and Botan::VERIFIED.

◆ warnings()

CertificatePathStatusCodes Botan::Path_Validation_Result::warnings ( ) const
Returns
the subset of status codes that are warnings

Definition at line 1160 of file x509path.cpp.

1160 {
1161 return m_warnings;
1162}

◆ warnings_string()

std::string Botan::Path_Validation_Result::warnings_string ( ) const
Returns
string representation of the warnings

Definition at line 1176 of file x509path.cpp.

1176 {
1177 const std::string sep(", ");
1178 std::ostringstream oss;
1179 for(size_t i = 0; i < m_warnings.size(); i++) {
1180 for(auto code : m_warnings[i]) {
1181 oss << "[" << std::to_string(i) << "] " << status_string(code) << sep;
1182 }
1183 }
1184
1185 std::string res = oss.str();
1186 // remove last sep
1187 if(res.size() >= sep.size()) {
1188 res = res.substr(0, res.size() - sep.size());
1189 }
1190 return res;
1191}

References status_string().


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