8#include <botan/tls_messages.h>
10#include <botan/internal/loadstor.h>
16 throw Decoding_Error(
"Invalid Certificate_Status message: too small");
20 throw Decoding_Error(
"Unexpected Certificate_Status message: unexpected response type");
23 const size_t len =
make_uint32(0, buf[1], buf[2], buf[3]);
26 if(buf.size() != len + 4) {
27 throw Decoding_Error(
"Invalid Certificate_Status: invalid length field");
30 m_response.assign(buf.begin() + 4, buf.end());
34 m_response(std::move(raw_response_bytes)) {}
37 if(m_response.size() > 0xFFFFFF) {
41 const uint32_t response_len =
static_cast<uint32_t
>(m_response.size());
43 std::vector<uint8_t> buf;
44 buf.reserve(1 + 3 + m_response.size());
46 for(
size_t i = 1; i < 4; ++i) {
50 buf.insert(buf.end(), m_response.begin(), m_response.end());
Decoding_Error(std::string_view name)
Encoding_Error(std::string_view name)
std::vector< uint8_t > serialize() const final
Certificate_Status(const std::vector< uint8_t > &buf, Connection_Side from)
constexpr uint32_t make_uint32(uint8_t i0, uint8_t i1, uint8_t i2, uint8_t i3)
constexpr uint8_t get_byte_var(size_t byte_num, T input)