Botan 2.19.1
Crypto and TLS for C&
Public Types | Public Member Functions | Static Public Member Functions | List of all members
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< std::shared_ptr< const X509_Certificate > > & cert_path () const
 
bool no_warnings () const
 
 Path_Validation_Result (Certificate_Status_Code status)
 
 Path_Validation_Result (CertificatePathStatusCodes status, std::vector< std::shared_ptr< const X509_Certificate > > &&cert_chain)
 
Certificate_Status_Code result () const
 
std::string result_string () const
 
bool successful_validation () const
 
const X509_Certificatetrust_root () const
 
std::set< std::string > trusted_hashes () 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 125 of file x509path.h.

Member Typedef Documentation

◆ Code

Definition at line 128 of file x509path.h.

Constructor & Destructor Documentation

◆ Path_Validation_Result() [1/2]

Botan::Path_Validation_Result::Path_Validation_Result ( CertificatePathStatusCodes  status,
std::vector< std::shared_ptr< const 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 1014 of file x509path.cpp.

1015 :
1016 m_all_status(status),
1017 m_warnings(find_warnings(m_all_status)),
1018 m_cert_path(cert_chain),
1019 m_overall(PKIX::overall_status(m_all_status))
1020 {
1021 }
Certificate_Status_Code overall_status(const CertificatePathStatusCodes &cert_status)
Definition: x509path.cpp:823

◆ 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 202 of file x509path.h.

202: 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 166 of file x509path.h.

167 { return m_all_status; }

◆ cert_path()

const std::vector< std::shared_ptr< const 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 146 of file x509path.h.

146{ return m_cert_path; }

◆ no_warnings()

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

Definition at line 1048 of file x509path.cpp.

1049 {
1050 for(auto status_set_i : m_warnings)
1051 if(!status_set_i.empty())
1052 return false;
1053 return true;
1054 }

◆ result()

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

Definition at line 161 of file x509path.h.

161{ 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 1061 of file x509path.cpp.

1062 {
1063 return status_string(result());
1064 }
Certificate_Status_Code result() const
Definition: x509path.h:161
static const char * status_string(Certificate_Status_Code code)
Definition: x509path.cpp:1066

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 1066 of file x509path.cpp.

1067 {
1068 if(const char* s = to_string(code))
1069 return s;
1070
1071 return "Unknown error";
1072 }
std::string to_string(ErrorType type)
Convert an ErrorType to string.
Definition: exceptn.cpp:11

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 1023 of file x509path.cpp.

1024 {
1025 if(m_cert_path.empty())
1026 throw Invalid_State("Path_Validation_Result::trust_root no path set");
1028 throw Invalid_State("Path_Validation_Result::trust_root meaningless with invalid status");
1029
1030 return *m_cert_path[m_cert_path.size()-1];
1031 }

References result(), and Botan::VERIFIED.

◆ trusted_hashes()

std::set< std::string > Botan::Path_Validation_Result::trusted_hashes ( ) const
Returns
the set of hash functions you are implicitly trusting by trusting this result.

Definition at line 1033 of file x509path.cpp.

1034 {
1035 std::set<std::string> hashes;
1036 for(size_t i = 0; i != m_cert_path.size(); ++i)
1037 hashes.insert(m_cert_path[i]->hash_used_for_signature());
1038 return hashes;
1039 }

◆ warnings()

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

Definition at line 1056 of file x509path.cpp.

1057 {
1058 return m_warnings;
1059 }

◆ warnings_string()

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

Definition at line 1074 of file x509path.cpp.

1075 {
1076 const std::string sep(", ");
1077 std::string res;
1078 for(size_t i = 0; i < m_warnings.size(); i++)
1079 {
1080 for(auto code : m_warnings[i])
1081 res += "[" + std::to_string(i) + "] " + status_string(code) + sep;
1082 }
1083 // remove last sep
1084 if(res.size() >= sep.size())
1085 res = res.substr(0, res.size() - sep.size());
1086 return res;
1087 }
std::string to_string(const BER_Object &obj)
Definition: asn1_obj.cpp:213

References status_string(), and Botan::ASN1::to_string().


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