9 #include <botan/tls_messages.h>
10 #include <botan/tls_extensions.h>
11 #include <botan/internal/tls_reader.h>
12 #include <botan/internal/tls_session_key.h>
13 #include <botan/internal/tls_handshake_io.h>
14 #include <botan/internal/tls_handshake_hash.h>
15 #include <botan/internal/stl_util.h>
26 const std::vector<uint8_t>& reneg_info,
29 const std::string next_protocol) :
30 m_version(server_settings.protocol_version()),
31 m_session_id(server_settings.session_id()),
33 m_ciphersuite(server_settings.ciphersuite()),
34 m_comp_method(server_settings.compression())
66 const std::vector<uint16_t> server_srtp = policy.
srtp_profiles();
67 const std::vector<uint16_t> client_srtp = client_hello.
srtp_profiles();
69 if(!server_srtp.empty() && !client_srtp.empty())
73 for(
auto s_srtp : server_srtp)
74 for(
auto c_srtp : client_srtp)
76 if(shared == 0 && s_srtp == c_srtp)
93 const std::vector<uint8_t>& reneg_info,
96 bool offer_session_ticket,
97 const std::string& next_protocol) :
98 m_version(resumed_session.version()),
99 m_session_id(client_hello.session_id()),
101 m_ciphersuite(resumed_session.ciphersuite_code()),
102 m_comp_method(resumed_session.compression_method())
150 const uint8_t major_version = reader.
get_byte();
151 const uint8_t minor_version = reader.
get_byte();
155 m_random = reader.
get_fixed<uint8_t>(32);
157 m_session_id = reader.
get_range<uint8_t>(1, 0, 32);
169 std::vector<uint8_t> Server_Hello::serialize()
const
171 std::vector<uint8_t> buf;
179 buf.push_back(
get_byte(0, m_ciphersuite));
180 buf.push_back(
get_byte(1, m_ciphersuite));
182 buf.push_back(m_comp_method);
204 throw Decoding_Error(
"Server_Hello_Done: Must be empty, and is not");
210 std::vector<uint8_t> Server_Hello_Done::serialize()
const
212 return std::vector<uint8_t>();
std::vector< uint8_t > serialize() const
bool supports_cert_status_message() const
std::vector< T > get_fixed(size_t size)
bool cbc_ciphersuite() const
virtual std::vector< uint8_t > send(const Handshake_Message &msg)=0
uint8_t minor_version() const
Server_Hello_Done(Handshake_IO &io, Handshake_Hash &hash)
bool supports_session_ticket() const
Ciphersuite ciphersuite() const
virtual std::vector< uint16_t > srtp_profiles() const
void add(Extension *extn)
bool ecc_ciphersuite() const
bool supports_alpn() const
Server_Hello(Handshake_IO &io, Handshake_Hash &hash, const Policy &policy, RandomNumberGenerator &rng, const std::vector< uint8_t > &secure_reneg_info, const Client_Hello &client_hello, const Server_Hello::Settings &settings, const std::string next_protocol)
bool offer_session_ticket() const
std::vector< T > get_range(size_t len_bytes, size_t min_elems, size_t max_elems)
void update(const uint8_t in[], size_t length)
uint8_t major_version() const
bool supports_encrypt_then_mac() const
std::vector< uint8_t > make_hello_random(RandomNumberGenerator &rng, const Policy &policy)
virtual bool use_ecc_point_compression() const
static Ciphersuite by_id(uint16_t suite)
bool supports_extended_master_secret() const
std::vector< uint16_t > srtp_profiles() const
uint8_t get_byte(size_t byte_num, T input)
void deserialize(TLS_Data_Reader &reader)
bool is_datagram_protocol() const
bool secure_renegotiation() const
virtual bool negotiate_encrypt_then_mac() const
void append_tls_length_value(std::vector< uint8_t, Alloc > &buf, const T *vals, size_t vals_size, size_t tag_size)