9#include <botan/tls_messages.h>
11#include <botan/tls_callbacks.h>
12#include <botan/tls_exceptn.h>
13#include <botan/internal/tls_reader.h>
38 }
else if(record_size_limit.has_value() && record_size_limit.value() < max_record_size) {
44 "Server cannot enforce record size limit without the client supporting it");
81 if(!next_protocol.empty()) {
99 throw TLS_Exception(Alert::DecodeError,
"Server sent an empty Encrypted Extensions message");
111 const auto allowed_exts = std::set<Extension_Code>{
128 throw TLS_Exception(Alert::IllegalParameter,
"Encrypted Extensions contained an extension that is not allowed");
virtual void tls_modify_extensions(Extensions &extn, Connection_Side which_side, Handshake_Type which_message)
virtual std::string tls_server_choose_app_protocol(const std::vector< std::string > &client_protos)
const Extensions & extensions() const
std::vector< uint8_t > serialize() const override
Handshake_Type type() const override
Encrypted_Extensions(const std::vector< uint8_t > &buf)
bool contains_implemented_extensions_other_than(const std::set< Extension_Code > &allowed_extensions) const
std::vector< uint8_t > serialize(Connection_Side whoami) const
void deserialize(TLS_Data_Reader &reader, Connection_Side from, Handshake_Type message_type)
void add(std::unique_ptr< Extension > extn)
virtual std::vector< Group_Params > key_exchange_groups() const
virtual bool request_client_certificate_authentication() const
virtual std::optional< uint16_t > record_size_limit() const
@ ApplicationLayerProtocolNegotiation