Botan 2.19.5 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 CertificatePathStatusCodes & | all_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_Certificate & | trust_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

typedef Certificate_Status_Code Botan::Path_Validation_Result::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

  status | list of validation status codes
  cert_chain | the certificate chain that was validated

Definition at line 1049 of file x509path.cpp.

1050 :
1051 m_all_status(status),
1052 m_warnings(find_warnings(m_all_status)),
1053 m_cert_path(cert_chain),
1054 m_overall(PKIX::overall_status(m_all_status))
1055 {
1056 }
Botan::PKIX::overall_status
Certificate_Status_Code overall_status(const CertificatePathStatusCodes &cert_status)
Definition: x509path.cpp:858

## ◆ Path_Validation_Result() [2/2]

Botan::Path_Validation_Result::Path_Validation_Result | ( | Certificate_Status_Code | status | ) |
| inline explicit

Create a Path_Validation_Result

Parameters

  status | validation 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 1083 of file x509path.cpp.

1084 {
1085 for(auto status_set_i : m_warnings)
1086 if(!status_set_i.empty())
1087 return false;
1088 return true;
1089 }

## ◆ 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 1096 of file x509path.cpp.

1097 {
1098 return status_string(result());
1099 }
Botan::Path_Validation_Result::result
Certificate_Status_Code result() const
Definition: x509path.h:161
Botan::Path_Validation_Result::status_string
static const char * status_string(Certificate_Status_Code code)
Definition: x509path.cpp:1101

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

  code | validation status code

Returns
  corresponding validation status message

Definition at line 1101 of file x509path.cpp.

1102 {
1103 if(const char* s = to_string(code))
1104 return s;
1105
1106 return "Unknown error";
1107 }
Botan::to_string
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

Returns
  true iff the validation was successful

Definition at line 1076 of file x509path.cpp.

1077 {
1078 return (result() == Certificate_Status_Code::VERIFIED ||
1079 result() == Certificate_Status_Code::OCSP_RESPONSE_GOOD ||
1080 result() == Certificate_Status_Code::VALID_CRL_CHECKED);
1081 }
Botan::Certificate_Status_Code::VERIFIED
@ VERIFIED
Botan::Certificate_Status_Code::VALID_CRL_CHECKED
@ VALID_CRL_CHECKED
Botan::Certificate_Status_Code::OCSP_RESPONSE_GOOD
@ OCSP_RESPONSE_GOOD

References Botan::OCSP_RESPONSE_GOOD, result(), Botan::VALID_CRL_CHECKED, and Botan::VERIFIED.

Referenced by Botan::TLS::Callbacks::tls_verify_cert_chain(), and Botan::x509_path_validate().

## ◆ 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 1058 of file x509path.cpp.

1059 {
1060 if(m_cert_path.empty())
1061 throw Invalid_State("Path_Validation_Result::trust_root no path set");
1062 if(result() != Certificate_Status_Code::VERIFIED)
1063 throw Invalid_State("Path_Validation_Result::trust_root meaningless with invalid status");
1064
1065 return *m_cert_path[m_cert_path.size()-1];
1066 }

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

1069 {
1070 std::set<std::string> hashes;
1071 for(size_t i = 0; i != m_cert_path.size(); ++i)
1072 hashes.insert(m_cert_path[i]->hash_used_for_signature());
1073 return hashes;
1074 }

## ◆ warnings()

CertificatePathStatusCodes Botan::Path_Validation_Result::warnings | ( |  | ) | const

Returns
  the subset of status codes that are warnings

Definition at line 1091 of file x509path.cpp.

1092 {
1093 return m_warnings;
1094 }

## ◆ warnings_string()

std::string Botan::Path_Validation_Result::warnings_string | ( |  | ) | const

Returns
  string representation of the warnings

Definition at line 1109 of file x509path.cpp.

1110 {
1111 const std::string sep(", ");
1112 std::string res;
1113 for(size_t i = 0; i < m_warnings.size(); i++)
1114 {
1115 for(auto code : m_warnings[i])
1116 res += "[" + std::to_string(i) + "] " + status_string(code) + sep;
1117 }
1118 // remove last sep
1119 if(res.size() >= sep.size())
1120 res = res.substr(0, res.size() - sep.size());
1121 return res;
1122 }
Botan::ASN1::to_string
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:

- src/lib/x509/x509path.h
- src/lib/x509/x509path.cpp