8#include <botan/x509_crl.h>
10#include <botan/asn1_obj.h>
11#include <botan/asn1_time.h>
12#include <botan/ber_dec.h>
13#include <botan/bigint.h>
14#include <botan/der_enc.h>
15#include <botan/x509_ext.h>
16#include <botan/x509cert.h>
20class CRL_Entry_Data final {
22 CRL_Entry_Data(
const X509_Certificate& cert,
CRL_Code why) :
23 m_serial(cert.serial_number()), m_time(
X509_Time(std::chrono::system_clock::now())), m_reason(why) {
25 m_extensions.add(std::make_unique<Cert_Extension::CRL_ReasonCode>(why));
29 CRL_Entry_Data() =
default;
32 std::vector<uint8_t> m_serial;
35 Extensions m_extensions;
43 m_data = std::make_shared<CRL_Entry_Data>(cert, why);
86 auto data = std::make_unique<CRL_Entry_Data>();
94 entry.
decode(data->m_time);
97 entry.
decode(data->m_extensions);
99 data->m_reason = ext->get_reason();
107 m_data = std::move(data);
110const CRL_Entry_Data& CRL_Entry::data()
const {
119 return data().m_serial;
123 return data().m_time;
127 return data().m_reason;
131 return data().m_extensions;
BER_Decoder & decode(bool &out)
BER_Decoder start_sequence()
static BigInt from_bytes(std::span< const uint8_t > bytes)
T serialize(size_t len) const
CRL_Code reason_code() const
void encode_into(DER_Encoder &to) const override
const X509_Time & expire_time() const
const std::vector< uint8_t > & serial_number() const
void decode_from(BER_Decoder &from) override
const Extensions & extensions() const
DER_Encoder & start_sequence()
DER_Encoder & encode(bool b)
bool operator!=(const AlgorithmIdentifier &a1, const AlgorithmIdentifier &a2)
bool operator==(const AlgorithmIdentifier &a1, const AlgorithmIdentifier &a2)