11#include <botan/asn1_obj.h>
12#include <botan/pkix_types.h>
13#include <botan/x509cert.h>
14#include <botan/bigint.h>
21class Certificate_Store;
31 const BigInt& subject_serial);
44 std::vector<uint8_t> m_issuer_dn_hash;
45 std::vector<uint8_t> m_issuer_key_hash;
65 size_t m_cert_status = 2;
85 const BigInt& subject_serial);
90 std::vector<uint8_t> BER_encode()
const;
108 {
return m_certid.issuer_key_hash(); }
151 Response(
const std::vector<uint8_t>& response_bits) :
152 Response(response_bits.data(), response_bits.size())
160 Response(
const uint8_t response_bits[],
161 size_t response_bits_len);
173 std::optional<X509_Certificate>
210 const std::vector<uint8_t>&
raw_bits()
const {
return m_response_bits; }
230 std::chrono::system_clock::time_point ref_time = std::chrono::system_clock::now(),
231 std::chrono::seconds max_age = std::chrono::seconds::zero())
const;
236 const std::vector<X509_Certificate> &
certificates()
const {
return m_certs; }
241 std::optional<Certificate_Status_Code>
dummy_status()
const {
return m_dummy_response_status; }
246 return (!m_signer_name.empty() && candidate.
subject_dn() == m_signer_name) ||
251 Response_Status_Code m_status;
252 std::vector<uint8_t> m_response_bits;
255 std::vector<uint8_t> m_key_hash;
256 std::vector<uint8_t> m_tbs_bits;
258 std::vector<uint8_t> m_signature;
259 std::vector<X509_Certificate> m_certs;
261 std::vector<SingleResponse> m_responses;
263 std::optional<Certificate_Status_Code> m_dummy_response_status;
266#if defined(BOTAN_HAS_HTTP_UTIL)
277Response online_check(const X509_Certificate& issuer,
278 const BigInt& subject_serial,
279 std::string_view ocsp_responder,
280 std::chrono::milliseconds timeout =
std::chrono::milliseconds(3000));
290Response online_check(const X509_Certificate& issuer,
291 const X509_Certificate& subject,
292 std::chrono::milliseconds timeout =
std::chrono::milliseconds(3000));
const std::vector< uint8_t > & issuer_key_hash() const
const X509_Certificate & subject() const
const std::vector< uint8_t > & issuer_key_hash() const
const X509_Certificate & issuer() const
Response(const std::vector< uint8_t > &response_bits)
Response_Status_Code status() const
const X509_DN & signer_name() const
const X509_Time & produced_at() const
std::optional< Certificate_Status_Code > dummy_status() const
const std::vector< X509_Certificate > & certificates() const
const std::vector< uint8_t > & raw_bits() const
const std::vector< uint8_t > & signer_key_hash() const
const CertID & certid() const
X509_Time next_update() const
X509_Time this_update() const
size_t cert_status() const
const X509_DN & subject_dn() const
const std::vector< uint8_t > & subject_public_key_bitstring_sha1() const
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
size_t base64_encode(char out[], const uint8_t in[], size_t input_length, size_t &input_consumed, bool final_inputs)