35 m_start_time(
std::chrono::system_clock::time_point::min()),
40 m_extended_master_secret(false),
41 m_encrypt_then_mac(false)
47 Session(
const std::vector<uint8_t>& session_id,
52 bool supports_extended_master_secret,
53 bool supports_encrypt_then_mac,
54 const std::vector<X509_Certificate>& peer_certs,
55 const std::vector<uint8_t>& session_ticket,
57 const std::string& srp_identifier,
58 uint16_t srtp_profile);
65 Session(
const uint8_t ber[],
size_t ber_len);
71 explicit Session(
const std::string& pem);
93 static Session decrypt(
const uint8_t ctext[],
105 return Session::decrypt(ctext.data(), ctext.size(), key);
113 std::string PEM_encode()
const;
149 const std::vector<uint8_t>&
session_id()
const {
return m_identifier; }
163 const std::vector<X509_Certificate>&
peer_certs()
const {
return m_peer_certs; }
168 std::chrono::system_clock::time_point
start_time()
const {
return m_start_time; }
173 std::chrono::seconds session_age()
const;
186 enum { TLS_SESSION_PARAM_STRUCT_VERSION = 20160812 };
188 std::chrono::system_clock::time_point m_start_time;
190 std::vector<uint8_t> m_identifier;
191 std::vector<uint8_t> m_session_ticket;
194 Protocol_Version m_version;
195 uint16_t m_ciphersuite;
196 Connection_Side m_connection_side;
197 uint16_t m_srtp_profile;
198 bool m_extended_master_secret;
199 bool m_encrypt_then_mac;
201 std::vector<X509_Certificate> m_peer_certs;
202 Server_Information m_server_info;
203 std::string m_srp_identifier;