10#ifndef BOTAN_TLS_CALLBACKS_H_
11#define BOTAN_TLS_CALLBACKS_H_
13#include <botan/tls_session.h>
14#include <botan/tls_alert.h>
15#include <botan/pubkey.h>
16#include <botan/ocsp.h>
22class Certificate_Store;
23class X509_Certificate;
33class Handshake_Message;
36class Certificate_Status_Request;
114 virtual bool tls_session_ticket_received(
const Session& session);
146 virtual void tls_verify_cert_chain(
147 const std::vector<X509_Certificate>& cert_chain,
148 const std::vector<std::optional<OCSP::Response>>& ocsp_responses,
149 const std::vector<Certificate_Store*>& trusted_roots,
151 const std::string& hostname,
163 return std::chrono::milliseconds(0);
181 return std::vector<uint8_t>();
198 virtual std::vector<uint8_t> tls_sign_message(
201 const std::string& emsa,
203 const std::vector<uint8_t>& msg);
219 virtual bool tls_verify_message(
221 const std::string& emsa,
223 const std::vector<uint8_t>& msg,
224 const std::vector<uint8_t>& sig);
246 virtual std::pair<secure_vector<uint8_t>, std::vector<uint8_t>> tls_dh_agree(
247 const std::vector<uint8_t>& modulus,
248 const std::vector<uint8_t>& generator,
249 const std::vector<uint8_t>& peer_public_value,
273 virtual std::pair<secure_vector<uint8_t>, std::vector<uint8_t>> tls_ecdh_agree(
274 const std::string& curve_name,
275 const std::vector<uint8_t>& peer_public_value,
310 virtual std::string tls_server_choose_app_protocol(
const std::vector<std::string>& client_protos);
356 virtual std::string tls_decode_group_param(
Group_Params group_param);
374 virtual std::optional<OCSP::Response> tls_parse_ocsp_response(
const std::vector<uint8_t>& raw_response);
386 virtual std::string tls_peer_network_identity();
397 virtual std::chrono::system_clock::time_point tls_current_timestamp();
#define BOTAN_UNUSED(...)
virtual std::vector< uint8_t > tls_provide_cert_status(const std::vector< X509_Certificate > &chain, const Certificate_Status_Request &csr)
virtual std::chrono::milliseconds tls_verify_cert_chain_ocsp_timeout() const
virtual void tls_emit_data(const uint8_t data[], size_t size)=0
virtual ~Callbacks()=default
virtual void tls_log_debug(const char *what)
virtual void tls_session_activated()
virtual bool tls_session_established(const Session &session)=0
virtual void tls_log_debug_bin(const char *descr, const uint8_t val[], size_t val_len)
virtual void tls_record_received(uint64_t seq_no, const uint8_t data[], size_t size)=0
virtual void tls_log_error(const char *err)
virtual void tls_alert(Alert alert)=0
#define BOTAN_PUBLIC_API(maj, min)