Botan 3.9.0
Crypto and TLS for C&
Botan::TLS::Session_Summary Class Reference

#include <tls_session.h>

Inheritance diagram for Botan::TLS::Session_Summary:
Botan::TLS::Session_Base

Public Member Functions

std::string cipher_algo () const
Ciphersuite ciphersuite () const
uint16_t ciphersuite_code () const
uint16_t dtls_srtp_profile () const
const std::optional< std::string > & external_psk_identity () const
std::string kex_algo () const
std::optional< std::string > kex_parameters () const
std::string mac_algo () const
const std::vector< X509_Certificate > & peer_certs () const
std::shared_ptr< const Public_Keypeer_raw_public_key () const
std::string prf_algo () const
bool psk_used () const
const Server_Informationserver_info () const
const Session_IDsession_id () const
const std::optional< Session_Ticket > & session_ticket () const
Connection_Side side () const
std::chrono::system_clock::time_point start_time () const
bool supports_encrypt_then_mac () const
bool supports_extended_master_secret () const
Protocol_Version version () const
bool was_resumption () const

Protected Attributes

uint16_t m_ciphersuite = 0
Connection_Side m_connection_side {}
bool m_encrypt_then_mac = false
bool m_extended_master_secret = false
std::vector< X509_Certificatem_peer_certs
std::shared_ptr< const Public_Keym_peer_raw_public_key
Server_Information m_server_info
uint16_t m_srtp_profile = 0
std::chrono::system_clock::time_point m_start_time
Protocol_Version m_version

Friends

class Client_Impl_12
class Client_Impl_13
class Server_Impl_12
class Server_Impl_13

Detailed Description

Summarizes the negotiated features after a TLS handshake. Applications may query those in Callbacks::tls_session_established().

Definition at line 249 of file tls_session.h.

Member Function Documentation

◆ cipher_algo()

std::string Botan::TLS::Session_Summary::cipher_algo ( ) const
inline

Definition at line 296 of file tls_session.h.

296{ return ciphersuite().cipher_algo(); }
std::string cipher_algo() const
Ciphersuite ciphersuite() const

References Botan::TLS::Session_Base::ciphersuite().

◆ ciphersuite()

Ciphersuite Botan::TLS::Session_Base::ciphersuite ( ) const
inherited

Get the ciphersuite info of the negotiated TLS session

Definition at line 86 of file tls_session.cpp.

86 {
88 if(!suite.has_value()) {
89 throw Decoding_Error("Failed to find cipher suite for ID " + std::to_string(m_ciphersuite));
90 }
91 return suite.value();
92}
static std::optional< Ciphersuite > by_id(uint16_t suite)

References Botan::TLS::Ciphersuite::by_id(), and m_ciphersuite.

Referenced by Botan::TLS::Session_Summary::cipher_algo(), Botan::TLS::Session_Summary::mac_algo(), Botan::TLS::Session_Summary::prf_algo(), Botan::TLS::Session::Session(), Botan::TLS::Session::Session(), Botan::TLS::Session::Session(), and Session_Base().

◆ ciphersuite_code()

uint16_t Botan::TLS::Session_Base::ciphersuite_code ( ) const
inlineinherited

Get the ciphersuite code of the negotiated TLS session

Definition at line 180 of file tls_session.h.

180{ return m_ciphersuite; }

References m_ciphersuite.

Referenced by Botan::TLS::Client_Hello_12::Client_Hello_12(), and Botan::TLS::Session::Session().

◆ dtls_srtp_profile()

uint16_t Botan::TLS::Session_Base::dtls_srtp_profile ( ) const
inlineinherited

Get the negotiated DTLS-SRTP algorithm (RFC 5764)

Definition at line 195 of file tls_session.h.

195{ return m_srtp_profile; }

References m_srtp_profile.

◆ external_psk_identity()

const std::optional< std::string > & Botan::TLS::Session_Summary::external_psk_identity ( ) const
inline

The negotiated identity of an externally provided preshared key used to establish this session. For TLS 1.3 this may be any of the externally provided PSKs offered by the client. PSK identities used as session tickets for TLS 1.3 session resumption won't be shown here.

Definition at line 271 of file tls_session.h.

271{ return m_external_psk_identity; }

◆ kex_algo()

std::string Botan::TLS::Session_Summary::kex_algo ( ) const
inline

Definition at line 292 of file tls_session.h.

292{ return m_kex_algo; }

◆ kex_parameters()

std::optional< std::string > Botan::TLS::Session_Summary::kex_parameters ( ) const
inline

Definition at line 294 of file tls_session.h.

294{ return m_kex_parameters; }

◆ mac_algo()

std::string Botan::TLS::Session_Summary::mac_algo ( ) const
inline

Definition at line 298 of file tls_session.h.

298{ return ciphersuite().mac_algo(); }
std::string mac_algo() const

References Botan::TLS::Session_Base::ciphersuite().

◆ peer_certs()

const std::vector< X509_Certificate > & Botan::TLS::Session_Base::peer_certs ( ) const
inlineinherited

Return the certificate chain of the peer (possibly empty)

Definition at line 212 of file tls_session.h.

212{ return m_peer_certs; }
std::vector< X509_Certificate > m_peer_certs

References m_peer_certs.

Referenced by Botan::TLS::Session_Summary::Client_Impl_13, Botan::TLS::Session::Session(), Botan::TLS::Session::Session(), and Session_Base().

◆ peer_raw_public_key()

std::shared_ptr< const Public_Key > Botan::TLS::Session_Base::peer_raw_public_key ( ) const
inlineinherited

Return the raw public key of the peer (possibly empty)

Definition at line 217 of file tls_session.h.

217{ return m_peer_raw_public_key; }
std::shared_ptr< const Public_Key > m_peer_raw_public_key

References m_peer_raw_public_key.

Referenced by Botan::TLS::Session_Summary::Client_Impl_13, Botan::TLS::Session::Session(), Botan::TLS::Session::Session(), and Session_Base().

◆ prf_algo()

std::string Botan::TLS::Session_Summary::prf_algo ( ) const
inline

Definition at line 300 of file tls_session.h.

300{ return ciphersuite().prf_algo(); }
std::string prf_algo() const

References Botan::TLS::Session_Base::ciphersuite().

◆ psk_used()

bool Botan::TLS::Session_Summary::psk_used ( ) const
inline

Indicates that the session was established using an externally provided PSK. Session resumptions in TLS 1.3 (while technically implemented using a PSK) are not considered here.

See also
was_resumption()
Note
Botan 3.0 and 3.1 did incorrectly report true for session resumption.
Returns
true if the session was established using an externally provided PSK.

Definition at line 283 of file tls_session.h.

283{ return m_external_psk_identity.has_value(); }

◆ server_info()

const Server_Information & Botan::TLS::Session_Base::server_info ( ) const
inlineinherited

Get information about the TLS server

Returns information that identifies the server side of the connection. This is useful for the client in that it identifies what was originally passed to the constructor. For the server, it includes the name the client specified in the server name indicator extension.

Definition at line 227 of file tls_session.h.

227{ return m_server_info; }
Server_Information m_server_info

References m_server_info.

Referenced by Botan::TLS::Client_Hello_12::Client_Hello_12(), Botan::TLS::Session_Summary::Client_Impl_13, Botan::TLS::Session::Session(), Botan::TLS::Session::Session(), Session_Base(), and Botan::TLS::Session_Manager_SQL::store().

◆ session_id()

const Session_ID & Botan::TLS::Session_Summary::session_id ( ) const
inline

The Session_ID negotiated during the handshake. Note that this does not carry any meaning in TLS 1.3 and might even be empty.

Definition at line 256 of file tls_session.h.

256{ return m_session_id; }

◆ session_ticket()

const std::optional< Session_Ticket > & Botan::TLS::Session_Summary::session_ticket ( ) const
inline

The session ticket a TLS 1.2 server issued for this session. Note that this may be set in TLS 1.2 clients only. It is not the ticket used to establish this session.

Definition at line 263 of file tls_session.h.

263{ return m_session_ticket; }

◆ side()

Connection_Side Botan::TLS::Session_Base::side ( ) const
inlineinherited

◆ start_time()

std::chrono::system_clock::time_point Botan::TLS::Session_Base::start_time ( ) const
inlineinherited

Get the wall clock time this session began

Definition at line 170 of file tls_session.h.

170{ return m_start_time; }
std::chrono::system_clock::time_point m_start_time

References m_start_time.

Referenced by Botan::TLS::Session::Session(), Session_Base(), and Botan::TLS::Session_Manager_SQL::store().

◆ supports_encrypt_then_mac()

bool Botan::TLS::Session_Base::supports_encrypt_then_mac ( ) const
inlineinherited

Returns true if a TLS 1.2 session negotiated "encrypt then MAC"; TLS 1.3 sessions will always return false as they always use an AEAD.

Definition at line 201 of file tls_session.h.

References m_encrypt_then_mac.

Referenced by Botan::TLS::Client_Hello_12::Client_Hello_12().

◆ supports_extended_master_secret()

bool Botan::TLS::Session_Base::supports_extended_master_secret ( ) const
inlineinherited

Returns true if a TLS 1.2 session negotiated "extended master secret"; TLS 1.3 sessions will always return true (see RFC 8446 Appendix D).

Definition at line 207 of file tls_session.h.

References m_extended_master_secret.

◆ version()

◆ was_resumption()

bool Botan::TLS::Session_Summary::was_resumption ( ) const
inline

Indicates that the session was resumed from a previous handshake state.

Returns
true if this session is a resumption, otherwise false

Definition at line 290 of file tls_session.h.

290{ return m_was_resumption; }

Referenced by Client_Impl_13.

◆ Client_Impl_12

friend class Client_Impl_12
friend

Definition at line 305 of file tls_session.h.

References Client_Impl_12.

Referenced by Client_Impl_12.

◆ Client_Impl_13

◆ Server_Impl_12

friend class Server_Impl_12
friend

Definition at line 303 of file tls_session.h.

References Server_Impl_12.

Referenced by Server_Impl_12.

◆ Server_Impl_13

friend class Server_Impl_13
friend

Definition at line 304 of file tls_session.h.

References Server_Impl_13.

Referenced by Server_Impl_13.

Member Data Documentation

◆ m_ciphersuite

uint16_t Botan::TLS::Session_Base::m_ciphersuite = 0
protectedinherited

◆ m_connection_side

Connection_Side Botan::TLS::Session_Base::m_connection_side {}
protectedinherited

Definition at line 234 of file tls_session.h.

234{}; // NOLINT(*non-private-member-variable*)

Referenced by Botan::TLS::Session::DER_encode(), Botan::TLS::Session::Session(), Session_Base(), and side().

◆ m_encrypt_then_mac

bool Botan::TLS::Session_Base::m_encrypt_then_mac = false
protectedinherited

◆ m_extended_master_secret

bool Botan::TLS::Session_Base::m_extended_master_secret = false
protectedinherited

◆ m_peer_certs

std::vector<X509_Certificate> Botan::TLS::Session_Base::m_peer_certs
protectedinherited

◆ m_peer_raw_public_key

std::shared_ptr<const Public_Key> Botan::TLS::Session_Base::m_peer_raw_public_key
protectedinherited

◆ m_server_info

Server_Information Botan::TLS::Session_Base::m_server_info
protectedinherited

◆ m_srtp_profile

uint16_t Botan::TLS::Session_Base::m_srtp_profile = 0
protectedinherited

◆ m_start_time

std::chrono::system_clock::time_point Botan::TLS::Session_Base::m_start_time
protectedinherited

◆ m_version

Protocol_Version Botan::TLS::Session_Base::m_version
protectedinherited

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