9#include <botan/tls_messages.h>
10#include <botan/tls_extensions.h>
11#include <botan/internal/tls_reader.h>
12#include <botan/internal/tls_handshake_io.h>
13#include <botan/internal/tls_handshake_state.h>
30 std::pair<std::string, Signature_Format> format =
53 m_signature = reader.
get_range<uint8_t>(2, 0, 65535);
60std::vector<uint8_t> Certificate_Verify::serialize()
const
62 std::vector<uint8_t> buf;
66 const uint16_t scheme_code =
static_cast<uint16_t
>(m_scheme);
67 buf.push_back(
get_byte(0, scheme_code));
68 buf.push_back(
get_byte(1, scheme_code));
71 if(m_signature.size() > 0xFFFF)
72 throw Encoding_Error(
"Certificate_Verify signature too long to encode");
74 const uint16_t sig_len =
static_cast<uint16_t
>(m_signature.size());
87 const Policy& policy)
const
93 std::pair<std::string, Signature_Format> format =
96 const bool signature_valid =
100#if defined(BOTAN_UNSAFE_FUZZER_MODE)
104 return signature_valid;
#define BOTAN_UNUSED(...)
#define BOTAN_ASSERT_NONNULL(ptr)
virtual bool tls_verify_message(const Public_Key &key, const std::string &emsa, Signature_Format format, const std::vector< uint8_t > &msg, const std::vector< uint8_t > &sig)
virtual std::vector< uint8_t > tls_sign_message(const Private_Key &key, RandomNumberGenerator &rng, const std::string &emsa, Signature_Format format, const std::vector< uint8_t > &msg)
Certificate_Verify(Handshake_IO &io, Handshake_State &state, const Policy &policy, RandomNumberGenerator &rng, const Private_Key *key)
bool verify(const X509_Certificate &cert, const Handshake_State &state, const Policy &policy) const
const std::vector< uint8_t > & get_contents() const
void update(const uint8_t in[], size_t length)
virtual std::vector< uint8_t > send(const Handshake_Message &msg)=0
Callbacks & callbacks() const
std::pair< std::string, Signature_Format > parse_sig_format(const Public_Key &key, Signature_Scheme scheme, bool for_client_auth, const Policy &policy) const
std::pair< std::string, Signature_Format > choose_sig_format(const Private_Key &key, Signature_Scheme &scheme, bool for_client_auth, const Policy &policy) const
virtual void check_peer_key_acceptable(const Public_Key &public_key) const
bool supports_negotiable_signature_algorithms() const
std::vector< T > get_range(size_t len_bytes, size_t min_elems, size_t max_elems)
Public_Key * subject_public_key() const
constexpr uint8_t get_byte(size_t byte_num, T input)