Botan 3.9.0
Crypto and TLS for C&
Botan::TLS::Server_Hello Class Referenceabstract

#include <tls_messages.h>

Inheritance diagram for Botan::TLS::Server_Hello:
Botan::TLS::Handshake_Message Botan::TLS::Server_Hello_12 Botan::TLS::Server_Hello_13 Botan::TLS::Hello_Retry_Request

Public Member Functions

uint16_t ciphersuite () const
const Extensionsextensions () const
Server_Hellooperator= (const Server_Hello &)=delete
Server_Hellooperator= (Server_Hello &&) noexcept
virtual Protocol_Version selected_version () const =0
std::vector< uint8_t > serialize () const override
 Server_Hello (const Server_Hello &)=delete
 Server_Hello (Server_Hello &&) noexcept
const Session_IDsession_id () const
Handshake_Type type () const override
std::string type_string () const
virtual Handshake_Type wire_type () const
 ~Server_Hello () override

Protected Member Functions

uint8_t compression_method () const
std::set< Extension_Codeextension_types () const
Protocol_Version legacy_version () const
const std::vector< uint8_t > & random () const
 Server_Hello (std::unique_ptr< Server_Hello_Internal > data)

Protected Attributes

std::unique_ptr< Server_Hello_Internal > m_data

Detailed Description

Server Hello Message

Definition at line 274 of file tls_messages.h.

Constructor & Destructor Documentation

◆ Server_Hello() [1/3]

◆ Server_Hello() [2/3]

Botan::TLS::Server_Hello::Server_Hello ( Server_Hello && )
defaultnoexcept

References Server_Hello().

◆ ~Server_Hello()

Botan::TLS::Server_Hello::~Server_Hello ( )
overridedefault

◆ Server_Hello() [3/3]

Botan::TLS::Server_Hello::Server_Hello ( std::unique_ptr< Server_Hello_Internal > data)
explicitprotected

Definition at line 167 of file msg_server_hello.cpp.

167: m_data(std::move(data)) {}
std::unique_ptr< Server_Hello_Internal > m_data

References m_data.

Member Function Documentation

◆ ciphersuite()

uint16_t Botan::TLS::Server_Hello::ciphersuite ( ) const

Definition at line 217 of file msg_server_hello.cpp.

217 {
218 return m_data->ciphersuite();
219}

References m_data.

Referenced by Botan::TLS::Client_Hello_13::retry(), Botan::TLS::Server_Hello_12::Server_Hello_12(), and ~Server_Hello().

◆ compression_method()

uint8_t Botan::TLS::Server_Hello::compression_method ( ) const
protected

Definition at line 209 of file msg_server_hello.cpp.

209 {
210 return m_data->comp_method();
211}

References m_data.

Referenced by Botan::TLS::Server_Hello_13::basic_validation(), selected_version(), and Botan::TLS::Server_Hello_12::Server_Hello_13.

◆ extension_types()

std::set< Extension_Code > Botan::TLS::Server_Hello::extension_types ( ) const
protected

Definition at line 221 of file msg_server_hello.cpp.

221 {
222 return m_data->extensions().extension_types();
223}

References m_data.

Referenced by selected_version(), and Botan::TLS::Server_Hello_12::Server_Hello_13.

◆ extensions()

const Extensions & Botan::TLS::Server_Hello::extensions ( ) const

◆ legacy_version()

Protocol_Version Botan::TLS::Server_Hello::legacy_version ( ) const
protected

Definition at line 201 of file msg_server_hello.cpp.

201 {
202 return m_data->legacy_version();
203}

References m_data.

Referenced by Botan::TLS::Server_Hello_13::basic_validation(), selected_version(), and Botan::TLS::Server_Hello_12::Server_Hello_13.

◆ operator=() [1/2]

Server_Hello & Botan::TLS::Server_Hello::operator= ( const Server_Hello & )
delete

References Server_Hello().

◆ operator=() [2/2]

Server_Hello & Botan::TLS::Server_Hello::operator= ( Server_Hello && )
defaultnoexcept

References Server_Hello().

◆ random()

const std::vector< uint8_t > & Botan::TLS::Server_Hello::random ( ) const
protected

Definition at line 205 of file msg_server_hello.cpp.

205 {
206 return m_data->random();
207}

References m_data.

Referenced by selected_version(), and Botan::TLS::Server_Hello_12::Server_Hello_13.

◆ selected_version()

virtual Protocol_Version Botan::TLS::Server_Hello::selected_version ( ) const
pure virtual

◆ serialize()

std::vector< uint8_t > Botan::TLS::Server_Hello::serialize ( ) const
overridevirtual
Returns
DER representation of this message

Implements Botan::TLS::Handshake_Message.

Definition at line 177 of file msg_server_hello.cpp.

177 {
178 std::vector<uint8_t> buf;
179 buf.reserve(1024); // working around GCC warning
180
181 buf.push_back(m_data->legacy_version().major_version());
182 buf.push_back(m_data->legacy_version().minor_version());
183 buf += m_data->random();
184
185 append_tls_length_value(buf, m_data->session_id().get(), 1);
186
187 buf.push_back(get_byte<0>(m_data->ciphersuite()));
188 buf.push_back(get_byte<1>(m_data->ciphersuite()));
189
190 buf.push_back(m_data->comp_method());
191
192 buf += m_data->extensions().serialize(Connection_Side::Server);
193
194 return buf;
195}
void append_tls_length_value(std::vector< uint8_t, Alloc > &buf, const T *vals, size_t vals_size, size_t tag_size)
Definition tls_reader.h:184
constexpr uint8_t get_byte(T input)
Definition loadstor.h:79

References Botan::TLS::append_tls_length_value(), Botan::get_byte(), m_data, serialize(), Botan::TLS::Server, and Server_Hello().

Referenced by serialize(), and ~Server_Hello().

◆ session_id()

◆ type()

Handshake_Type Botan::TLS::Server_Hello::type ( ) const
overridevirtual
Returns
the message type

Implements Botan::TLS::Handshake_Message.

Definition at line 197 of file msg_server_hello.cpp.

References Botan::TLS::ServerHello.

Referenced by Botan::TLS::Server_Hello_12::random(), and ~Server_Hello().

◆ type_string()

std::string Botan::TLS::Handshake_Message::type_string ( ) const
inherited
Returns
string representation of this message type

Definition at line 19 of file tls_handshake_state.cpp.

19 {
21}
virtual Handshake_Type type() const =0
const char * handshake_type_to_string(Handshake_Type type)

References Botan::TLS::handshake_type_to_string(), and type().

◆ wire_type()

virtual Handshake_Type Botan::TLS::Handshake_Message::wire_type ( ) const
inlinevirtualinherited
Returns
the wire representation of the message's type

Reimplemented in Botan::TLS::Hello_Retry_Request.

Definition at line 39 of file tls_handshake_msg.h.

39 {
40 // Usually equal to the Handshake_Type enum value,
41 // with the exception of TLS 1.3 Hello Retry Request.
42 return type();
43 }

References type().

Referenced by Botan::TLS::Stream_Handshake_IO::send().

Member Data Documentation

◆ m_data


The documentation for this class was generated from the following files: