11#include <botan/asn1_obj.h>
12#include <botan/asn1_time.h>
13#include <botan/bigint.h>
14#include <botan/pkix_types.h>
15#include <botan/x509cert.h>
46 std::vector<uint8_t> m_issuer_dn_hash;
47 std::vector<uint8_t> m_issuer_key_hash;
68 std::optional<CRL_Code> reason,
81 const std::optional<X509_Time>&
revocation_time()
const {
return m_revocation_time; }
95 std::optional<X509_Time> revocation_time,
96 std::optional<CRL_Code> revocation_reason,
101 size_t m_cert_status = 2;
104 std::optional<X509_Time> m_revocation_time;
105 std::optional<CRL_Code> m_revocation_reason;
106 bool m_has_unknown_critical_ext =
false;
146 const std::vector<uint8_t>&
issuer_key_hash()
const {
return m_certid.issuer_key_hash(); }
187 Response(response_bits.data(), response_bits.size()) {}
194 Response(
const uint8_t response_bits[],
size_t response_bits_len);
206 std::optional<X509_Certificate> find_signing_certificate(
257 const std::vector<uint8_t>&
raw_bits()
const {
return m_response_bits; }
278 std::chrono::system_clock::time_point ref_time = std::chrono::system_clock::now(),
279 std::chrono::seconds max_age = std::chrono::seconds::zero())
const;
284 const std::vector<X509_Certificate>&
certificates()
const {
return m_certs; }
290 const std::vector<SingleResponse>&
responses()
const {
return m_responses; }
312 std::optional<Certificate_Status_Code>
dummy_status()
const {
return m_dummy_response_status; }
319 std::vector<uint8_t> m_response_bits;
322 std::vector<uint8_t> m_key_hash;
323 std::vector<uint8_t> m_tbs_bits;
325 std::vector<uint8_t> m_signature;
326 std::vector<X509_Certificate> m_certs;
328 std::vector<SingleResponse> m_responses;
330 std::optional<Certificate_Status_Code> m_dummy_response_status;
332 bool m_has_unknown_critical_ext =
false;
335#if defined(BOTAN_HAS_HTTP_UTIL)
347 const
BigInt& subject_serial,
348 const
URI& ocsp_responder,
349 std::chrono::milliseconds timeout = std::chrono::milliseconds(3000));
361 const
BigInt& subject_serial,
362 std::string_view ocsp_responder,
363 std::chrono::milliseconds timeout = std::chrono::milliseconds(3000));
375 std::chrono::milliseconds timeout = std::chrono::milliseconds(3000));
#define BOTAN_PUBLIC_API(maj, min)
#define BOTAN_FUTURE_EXPLICIT
#define BOTAN_DEPRECATED_API(msg)
void decode_from(BER_Decoder &from) override
const std::vector< uint8_t > & issuer_key_hash() const
void encode_into(DER_Encoder &to) const override
bool is_id_for(const X509_Certificate &issuer, const X509_Certificate &subject) const
std::string base64_encode() const
const X509_Certificate & subject() const
const std::vector< uint8_t > & issuer_key_hash() const
Request(const X509_Certificate &issuer_cert, const X509_Certificate &subject_cert)
const X509_Certificate & issuer() const
std::vector< uint8_t > BER_encode() const
BOTAN_FUTURE_EXPLICIT Response(Certificate_Status_Code status)
const std::vector< SingleResponse > & responses() const
Response_Status_Code status() const
static Response dummy_server_not_available_response()
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
static Response dummy_no_revocation_url_response()
const std::vector< uint8_t > & signer_key_hash() const
BOTAN_FUTURE_EXPLICIT Response(const std::vector< uint8_t > &response_bits)
const std::optional< X509_Time > & revocation_time() const
The revocationTime; set only when cert_status() is 1 (revoked).
const CertID & certid() const
static SingleResponse unknown(CertID certid, X509_Time this_update, X509_Time next_update)
As good(), but asserting an unknown status.
const X509_Time & next_update() const
static SingleResponse revoked(CertID certid, X509_Time revocation_time, std::optional< CRL_Code > reason, X509_Time this_update, X509_Time next_update)
As good(), but asserting a revoked status with the given RevokedInfo.
static SingleResponse good(CertID certid, X509_Time this_update, X509_Time next_update)
bool has_unknown_critical_extension() const
const std::optional< CRL_Code > & revocation_reason() const
The revocationReason, when cert_status() is 1 and one was provided.
const X509_Time & this_update() const
size_t cert_status() const
@ OCSP_SERVER_NOT_AVAILABLE
bool verify_signature(std::span< const uint8_t, ED448_LEN > pk, bool phflag, std::span< const uint8_t > context, std::span< const uint8_t > sig, std::span< const uint8_t > msg)
Verify a signature(RFC 8032 5.2.7).