Classes | Typedefs | Functions | Variables
ssl_session.cc File Reference
#include <openssl/ssl.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <utility>
#include <openssl/err.h>
#include <openssl/hmac.h>
#include <openssl/lhash.h>
#include <openssl/mem.h>
#include <openssl/rand.h>
#include "internal.h"
#include "../crypto/internal.h"
Include dependency graph for ssl_session.cc:

Go to the source code of this file.

Classes

struct  timeout_param_st
 

Typedefs

typedef struct timeout_param_st TIMEOUT_PARAM
 

Functions

static bool add_session_locked (SSL_CTX *ctx, UniquePtr< SSL_SESSION > session)
 
static bool remove_session (SSL_CTX *ctx, SSL_SESSION *session, bool lock)
 
int SSL_CTX_add_session (SSL_CTX *ctx, SSL_SESSION *session)
 
void SSL_CTX_flush_sessions (SSL_CTX *ctx, uint64_t time)
 
uint32_t SSL_CTX_get_timeout (const SSL_CTX *ctx)
 
int SSL_CTX_remove_session (SSL_CTX *ctx, SSL_SESSION *session)
 
int ssl_ctx_rotate_ticket_encryption_key (SSL_CTX *ctx)
 
void SSL_CTX_sess_set_get_cb (SSL_CTX *ctx, SSL_SESSION *(*cb)(SSL *ssl, const uint8_t *id, int id_len, int *out_copy))
 
void SSL_CTX_sess_set_new_cb (SSL_CTX *ctx, int(*cb)(SSL *ssl, SSL_SESSION *session))
 
void SSL_CTX_sess_set_remove_cb (SSL_CTX *ctx, void(*cb)(SSL_CTX *ctx, SSL_SESSION *session))
 
void SSL_CTX_set_info_callback (SSL_CTX *ctx, void(*cb)(const SSL *ssl, int type, int value))
 
void SSL_CTX_set_session_psk_dhe_timeout (SSL_CTX *ctx, uint32_t timeout)
 
uint32_t SSL_CTX_set_timeout (SSL_CTX *ctx, uint32_t timeout)
 
int ssl_encrypt_ticket (SSL_HANDSHAKE *hs, CBB *out, const SSL_SESSION *session)
 
static int ssl_encrypt_ticket_with_cipher_ctx (SSL_HANDSHAKE *hs, CBB *out, const uint8_t *session_buf, size_t session_len)
 
static int ssl_encrypt_ticket_with_method (SSL_HANDSHAKE *hs, CBB *out, const uint8_t *session_buf, size_t session_len)
 
SSL_SESSIONSSL_get1_session (SSL *ssl)
 
bool ssl_get_new_session (SSL_HANDSHAKE *hs)
 
enum ssl_hs_wait_t ssl_get_prev_session (SSL_HANDSHAKE *hs, UniquePtr< SSL_SESSION > *out_session, bool *out_tickets_supported, bool *out_renew_ticket, const SSL_CLIENT_HELLO *client_hello)
 
SSL_SESSIONSSL_get_session (const SSL *ssl)
 
uint32_t ssl_hash_session_id (Span< const uint8_t > session_id)
 
static enum ssl_hs_wait_t ssl_lookup_session (SSL_HANDSHAKE *hs, UniquePtr< SSL_SESSION > *out_session, Span< const uint8_t > session_id)
 
SSL_SESSIONSSL_magic_pending_session_ptr (void)
 
SSL_SESSIONSSL_SESSION_copy_without_early_data (SSL_SESSION *session)
 
UniquePtr< SSL_SESSIONSSL_SESSION_dup (SSL_SESSION *session, int dup_flags)
 
int SSL_SESSION_early_data_capable (const SSL_SESSION *session)
 
void SSL_SESSION_free (SSL_SESSION *session)
 
const SSL_CIPHERSSL_SESSION_get0_cipher (const SSL_SESSION *session)
 
const uint8_tSSL_SESSION_get0_id_context (const SSL_SESSION *session, unsigned *out_len)
 
void SSL_SESSION_get0_ocsp_response (const SSL_SESSION *session, const uint8_t **out, size_t *out_len)
 
X509SSL_SESSION_get0_peer (const SSL_SESSION *session)
 
void SSL_SESSION_get0_peer_sha256 (const SSL_SESSION *session, const uint8_t **out_ptr, size_t *out_len)
 
void SSL_SESSION_get0_signed_cert_timestamp_list (const SSL_SESSION *session, const uint8_t **out, size_t *out_len)
 
void SSL_SESSION_get0_ticket (const SSL_SESSION *session, const uint8_t **out_ticket, size_t *out_len)
 
const EVP_MDssl_session_get_digest (const SSL_SESSION *session)
 
void * SSL_SESSION_get_ex_data (const SSL_SESSION *session, int idx)
 
int SSL_SESSION_get_ex_new_index (long argl, void *argp, CRYPTO_EX_unused *unused, CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func)
 
const uint8_tSSL_SESSION_get_id (const SSL_SESSION *session, unsigned *out_len)
 
size_t SSL_SESSION_get_master_key (const SSL_SESSION *session, uint8_t *out, size_t max_out)
 
uint32_t SSL_SESSION_get_ticket_lifetime_hint (const SSL_SESSION *session)
 
uint64_t SSL_SESSION_get_time (const SSL_SESSION *session)
 
uint32_t SSL_SESSION_get_timeout (const SSL_SESSION *session)
 
int SSL_SESSION_has_peer_sha256 (const SSL_SESSION *session)
 
int SSL_SESSION_has_ticket (const SSL_SESSION *session)
 
int ssl_session_is_context_valid (const SSL_HANDSHAKE *hs, const SSL_SESSION *session)
 
int ssl_session_is_resumable (const SSL_HANDSHAKE *hs, const SSL_SESSION *session)
 
int SSL_SESSION_is_resumable (const SSL_SESSION *session)
 
int ssl_session_is_time_valid (const SSL *ssl, const SSL_SESSION *session)
 
static void SSL_SESSION_list_add (SSL_CTX *ctx, SSL_SESSION *session)
 
static void SSL_SESSION_list_remove (SSL_CTX *ctx, SSL_SESSION *session)
 
SSL_SESSIONSSL_SESSION_new (const SSL_CTX *ctx)
 
UniquePtr< SSL_SESSIONssl_session_new (const SSL_X509_METHOD *x509_method)
 
uint16_t ssl_session_protocol_version (const SSL_SESSION *session)
 
void ssl_session_rebase_time (SSL *ssl, SSL_SESSION *session)
 
void ssl_session_renew_timeout (SSL *ssl, SSL_SESSION *session, uint32_t timeout)
 
int SSL_SESSION_set1_id (SSL_SESSION *session, const uint8_t *sid, size_t sid_len)
 
int SSL_SESSION_set1_id_context (SSL_SESSION *session, const uint8_t *sid_ctx, size_t sid_ctx_len)
 
int SSL_SESSION_set_ex_data (SSL_SESSION *session, int idx, void *arg)
 
int SSL_SESSION_set_ticket (SSL_SESSION *session, const uint8_t *ticket, size_t ticket_len)
 
uint64_t SSL_SESSION_set_time (SSL_SESSION *session, uint64_t time)
 
uint32_t SSL_SESSION_set_timeout (SSL_SESSION *session, uint32_t timeout)
 
int SSL_SESSION_should_be_single_use (const SSL_SESSION *session)
 
int SSL_SESSION_up_ref (SSL_SESSION *session)
 
void ssl_set_session (SSL *ssl, SSL_SESSION *session)
 
int SSL_set_session (SSL *ssl, SSL_SESSION *session)
 
void ssl_update_cache (SSL *ssl)
 
const STACK_OF (CRYPTO_BUFFER) *SSL_SESSION_get0_peer_certificates(const SSL_SESSION *session)
 
static void timeout_doall_arg (SSL_SESSION *session, void *void_param)
 

Variables

static CRYPTO_EX_DATA_CLASS g_ex_data_class
 
static const BSSL_NAMESPACE_BEGIN char g_pending_session_magic = 0
 
void(*)(const SSL *ssl, int type, int valueSSL_CTX_get_info_callback (SSL_CTX *ctx)
 
SSL_SESSION *(*)(SSL *ssl, const uint8_t *id, int id_len, int *out_copy) SSL_CTX_sess_get_get_cb (SSL_CTX *ctx)
 
int(*)(SSL *ssl, SSL_SESSION *session) SSL_CTX_sess_get_new_cb (SSL_CTX *ctx)
 
void(*)(SSL_CTX *ctx, SSL_SESSION *session) SSL_CTX_sess_get_remove_cb (SSL_CTX *ctx)
 

Typedef Documentation

◆ TIMEOUT_PARAM

Function Documentation

◆ add_session_locked()

static bool add_session_locked ( SSL_CTX ctx,
UniquePtr< SSL_SESSION session 
)
static

Definition at line 843 of file ssl_session.cc.

◆ remove_session()

static bool remove_session ( SSL_CTX ctx,
SSL_SESSION session,
bool  lock 
)
static

Definition at line 756 of file ssl_session.cc.

◆ SSL_CTX_add_session()

int SSL_CTX_add_session ( SSL_CTX ctx,
SSL_SESSION session 
)

Definition at line 1216 of file ssl_session.cc.

◆ SSL_CTX_flush_sessions()

void SSL_CTX_flush_sessions ( SSL_CTX ctx,
uint64_t  time 
)

Definition at line 1289 of file ssl_session.cc.

◆ SSL_CTX_get_timeout()

uint32_t SSL_CTX_get_timeout ( const SSL_CTX ctx)

Definition at line 1253 of file ssl_session.cc.

◆ SSL_CTX_remove_session()

int SSL_CTX_remove_session ( SSL_CTX ctx,
SSL_SESSION session 
)

Definition at line 1222 of file ssl_session.cc.

◆ ssl_ctx_rotate_ticket_encryption_key()

int ssl_ctx_rotate_ticket_encryption_key ( SSL_CTX ctx)

Definition at line 403 of file ssl_session.cc.

◆ SSL_CTX_sess_set_get_cb()

void SSL_CTX_sess_set_get_cb ( SSL_CTX ctx,
SSL_SESSION *(*)(SSL *ssl, const uint8_t *id, int id_len, int *out_copy)  cb 
)

Definition at line 1321 of file ssl_session.cc.

◆ SSL_CTX_sess_set_new_cb()

void SSL_CTX_sess_set_new_cb ( SSL_CTX ctx,
int(*)(SSL *ssl, SSL_SESSION *session)  cb 
)

Definition at line 1302 of file ssl_session.cc.

◆ SSL_CTX_sess_set_remove_cb()

void SSL_CTX_sess_set_remove_cb ( SSL_CTX ctx,
void(*)(SSL_CTX *ctx, SSL_SESSION *session)  cb 
)

Definition at line 1311 of file ssl_session.cc.

◆ SSL_CTX_set_info_callback()

void SSL_CTX_set_info_callback ( SSL_CTX ctx,
void(*)(const SSL *ssl, int type, int value cb 
)

Definition at line 1334 of file ssl_session.cc.

◆ SSL_CTX_set_session_psk_dhe_timeout()

void SSL_CTX_set_session_psk_dhe_timeout ( SSL_CTX ctx,
uint32_t  timeout 
)

Definition at line 1261 of file ssl_session.cc.

◆ SSL_CTX_set_timeout()

uint32_t SSL_CTX_set_timeout ( SSL_CTX ctx,
uint32_t  timeout 
)

Definition at line 1238 of file ssl_session.cc.

◆ ssl_encrypt_ticket()

int ssl_encrypt_ticket ( SSL_HANDSHAKE hs,
CBB out,
const SSL_SESSION session 
)

Definition at line 563 of file ssl_session.cc.

◆ ssl_encrypt_ticket_with_cipher_ctx()

static int ssl_encrypt_ticket_with_cipher_ctx ( SSL_HANDSHAKE hs,
CBB out,
const uint8_t session_buf,
size_t  session_len 
)
static

Definition at line 453 of file ssl_session.cc.

◆ ssl_encrypt_ticket_with_method()

static int ssl_encrypt_ticket_with_method ( SSL_HANDSHAKE hs,
CBB out,
const uint8_t session_buf,
size_t  session_len 
)
static

Definition at line 532 of file ssl_session.cc.

◆ SSL_get1_session()

SSL_SESSION* SSL_get1_session ( SSL ssl)

Definition at line 1188 of file ssl_session.cc.

◆ ssl_get_new_session()

bool ssl_get_new_session ( SSL_HANDSHAKE hs)

Definition at line 352 of file ssl_session.cc.

◆ ssl_get_prev_session()

enum ssl_hs_wait_t ssl_get_prev_session ( SSL_HANDSHAKE hs,
UniquePtr< SSL_SESSION > *  out_session,
bool out_tickets_supported,
bool out_renew_ticket,
const SSL_CLIENT_HELLO client_hello 
)

Definition at line 710 of file ssl_session.cc.

◆ SSL_get_session()

SSL_SESSION* SSL_get_session ( const SSL ssl)

Definition at line 1171 of file ssl_session.cc.

◆ ssl_hash_session_id()

uint32_t ssl_hash_session_id ( Span< const uint8_t session_id)

Definition at line 171 of file ssl_session.cc.

◆ ssl_lookup_session()

static enum ssl_hs_wait_t ssl_lookup_session ( SSL_HANDSHAKE hs,
UniquePtr< SSL_SESSION > *  out_session,
Span< const uint8_t session_id 
)
static

Definition at line 642 of file ssl_session.cc.

◆ SSL_magic_pending_session_ptr()

SSL_SESSION* SSL_magic_pending_session_ptr ( void  )

Definition at line 1167 of file ssl_session.cc.

◆ SSL_SESSION_copy_without_early_data()

SSL_SESSION* SSL_SESSION_copy_without_early_data ( SSL_SESSION session)

Definition at line 1149 of file ssl_session.cc.

◆ SSL_SESSION_dup()

UniquePtr<SSL_SESSION> SSL_SESSION_dup ( SSL_SESSION session,
int  dup_flags 
)

Definition at line 191 of file ssl_session.cc.

◆ SSL_SESSION_early_data_capable()

int SSL_SESSION_early_data_capable ( const SSL_SESSION session)

Definition at line 1144 of file ssl_session.cc.

◆ SSL_SESSION_free()

void SSL_SESSION_free ( SSL_SESSION session)

Definition at line 966 of file ssl_session.cc.

◆ SSL_SESSION_get0_cipher()

const SSL_CIPHER* SSL_SESSION_get0_cipher ( const SSL_SESSION session)

Definition at line 1125 of file ssl_session.cc.

◆ SSL_SESSION_get0_id_context()

const uint8_t* SSL_SESSION_get0_id_context ( const SSL_SESSION session,
unsigned *  out_len 
)

Definition at line 1073 of file ssl_session.cc.

◆ SSL_SESSION_get0_ocsp_response()

void SSL_SESSION_get0_ocsp_response ( const SSL_SESSION session,
const uint8_t **  out,
size_t *  out_len 
)

Definition at line 1030 of file ssl_session.cc.

◆ SSL_SESSION_get0_peer()

X509* SSL_SESSION_get0_peer ( const SSL_SESSION session)

Definition at line 1009 of file ssl_session.cc.

◆ SSL_SESSION_get0_peer_sha256()

void SSL_SESSION_get0_peer_sha256 ( const SSL_SESSION session,
const uint8_t **  out_ptr,
size_t *  out_len 
)

Definition at line 1133 of file ssl_session.cc.

◆ SSL_SESSION_get0_signed_cert_timestamp_list()

void SSL_SESSION_get0_signed_cert_timestamp_list ( const SSL_SESSION session,
const uint8_t **  out,
size_t *  out_len 
)

Definition at line 1018 of file ssl_session.cc.

◆ SSL_SESSION_get0_ticket()

void SSL_SESSION_get0_ticket ( const SSL_SESSION session,
const uint8_t **  out_ticket,
size_t *  out_len 
)

Definition at line 1108 of file ssl_session.cc.

◆ ssl_session_get_digest()

const EVP_MD* ssl_session_get_digest ( const SSL_SESSION session)

Definition at line 347 of file ssl_session.cc.

◆ SSL_SESSION_get_ex_data()

void* SSL_SESSION_get_ex_data ( const SSL_SESSION session,
int  idx 
)

Definition at line 1212 of file ssl_session.cc.

◆ SSL_SESSION_get_ex_new_index()

int SSL_SESSION_get_ex_new_index ( long  argl,
void *  argp,
CRYPTO_EX_unused unused,
CRYPTO_EX_dup dup_unused,
CRYPTO_EX_free free_func 
)

Definition at line 1196 of file ssl_session.cc.

◆ SSL_SESSION_get_id()

const uint8_t* SSL_SESSION_get_id ( const SSL_SESSION session,
unsigned *  out_len 
)

Definition at line 976 of file ssl_session.cc.

◆ SSL_SESSION_get_master_key()

size_t SSL_SESSION_get_master_key ( const SSL_SESSION session,
uint8_t out,
size_t  max_out 
)

Definition at line 1041 of file ssl_session.cc.

◆ SSL_SESSION_get_ticket_lifetime_hint()

uint32_t SSL_SESSION_get_ticket_lifetime_hint ( const SSL_SESSION session)

Definition at line 1121 of file ssl_session.cc.

◆ SSL_SESSION_get_time()

uint64_t SSL_SESSION_get_time ( const SSL_SESSION session)

Definition at line 1001 of file ssl_session.cc.

◆ SSL_SESSION_get_timeout()

uint32_t SSL_SESSION_get_timeout ( const SSL_SESSION session)

Definition at line 997 of file ssl_session.cc.

◆ SSL_SESSION_has_peer_sha256()

int SSL_SESSION_has_peer_sha256 ( const SSL_SESSION session)

Definition at line 1129 of file ssl_session.cc.

◆ SSL_SESSION_has_ticket()

int SSL_SESSION_has_ticket ( const SSL_SESSION session)

Definition at line 1104 of file ssl_session.cc.

◆ ssl_session_is_context_valid()

int ssl_session_is_context_valid ( const SSL_HANDSHAKE hs,
const SSL_SESSION session 
)

Definition at line 583 of file ssl_session.cc.

◆ ssl_session_is_resumable()

int ssl_session_is_resumable ( const SSL_HANDSHAKE hs,
const SSL_SESSION session 
)

Definition at line 610 of file ssl_session.cc.

◆ SSL_SESSION_is_resumable()

int SSL_SESSION_is_resumable ( const SSL_SESSION session)

Definition at line 1099 of file ssl_session.cc.

◆ ssl_session_is_time_valid()

int ssl_session_is_time_valid ( const SSL ssl,
const SSL_SESSION session 
)

Definition at line 594 of file ssl_session.cc.

◆ SSL_SESSION_list_add()

static void SSL_SESSION_list_add ( SSL_CTX ctx,
SSL_SESSION session 
)
static

Definition at line 825 of file ssl_session.cc.

◆ SSL_SESSION_list_remove()

static void SSL_SESSION_list_remove ( SSL_CTX ctx,
SSL_SESSION session 
)
static

Definition at line 797 of file ssl_session.cc.

◆ SSL_SESSION_new()

SSL_SESSION* SSL_SESSION_new ( const SSL_CTX ctx)

Definition at line 957 of file ssl_session.cc.

◆ ssl_session_new()

UniquePtr<SSL_SESSION> ssl_session_new ( const SSL_X509_METHOD x509_method)

Definition at line 167 of file ssl_session.cc.

◆ ssl_session_protocol_version()

uint16_t ssl_session_protocol_version ( const SSL_SESSION session)

Definition at line 335 of file ssl_session.cc.

◆ ssl_session_rebase_time()

void ssl_session_rebase_time ( SSL ssl,
SSL_SESSION session 
)

Definition at line 290 of file ssl_session.cc.

◆ ssl_session_renew_timeout()

void ssl_session_renew_timeout ( SSL ssl,
SSL_SESSION session,
uint32_t  timeout 
)

Definition at line 319 of file ssl_session.cc.

◆ SSL_SESSION_set1_id()

int SSL_SESSION_set1_id ( SSL_SESSION session,
const uint8_t sid,
size_t  sid_len 
)

Definition at line 984 of file ssl_session.cc.

◆ SSL_SESSION_set1_id_context()

int SSL_SESSION_set1_id_context ( SSL_SESSION session,
const uint8_t sid_ctx,
size_t  sid_ctx_len 
)

Definition at line 1081 of file ssl_session.cc.

◆ SSL_SESSION_set_ex_data()

int SSL_SESSION_set_ex_data ( SSL_SESSION session,
int  idx,
void *  arg 
)

Definition at line 1208 of file ssl_session.cc.

◆ SSL_SESSION_set_ticket()

int SSL_SESSION_set_ticket ( SSL_SESSION session,
const uint8_t ticket,
size_t  ticket_len 
)

Definition at line 1116 of file ssl_session.cc.

◆ SSL_SESSION_set_time()

uint64_t SSL_SESSION_set_time ( SSL_SESSION session,
uint64_t  time 
)

Definition at line 1054 of file ssl_session.cc.

◆ SSL_SESSION_set_timeout()

uint32_t SSL_SESSION_set_timeout ( SSL_SESSION session,
uint32_t  timeout 
)

Definition at line 1063 of file ssl_session.cc.

◆ SSL_SESSION_should_be_single_use()

int SSL_SESSION_should_be_single_use ( const SSL_SESSION session)

Definition at line 1095 of file ssl_session.cc.

◆ SSL_SESSION_up_ref()

int SSL_SESSION_up_ref ( SSL_SESSION session)

Definition at line 961 of file ssl_session.cc.

◆ ssl_set_session()

void ssl_set_session ( SSL ssl,
SSL_SESSION session 
)

Definition at line 788 of file ssl_session.cc.

◆ SSL_set_session()

int SSL_set_session ( SSL ssl,
SSL_SESSION session 
)

Definition at line 1226 of file ssl_session.cc.

◆ ssl_update_cache()

void ssl_update_cache ( SSL ssl)

Definition at line 888 of file ssl_session.cc.

◆ STACK_OF()

const STACK_OF ( CRYPTO_BUFFER  ) const

Definition at line 1013 of file ssl_session.cc.

◆ timeout_doall_arg()

static void timeout_doall_arg ( SSL_SESSION session,
void *  void_param 
)
static

Definition at line 1271 of file ssl_session.cc.

Variable Documentation

◆ g_ex_data_class

CRYPTO_EX_DATA_CLASS g_ex_data_class
static
Initial value:

Definition at line 161 of file ssl_session.cc.

◆ g_pending_session_magic

const BSSL_NAMESPACE_BEGIN char g_pending_session_magic = 0
static

Definition at line 159 of file ssl_session.cc.

◆ SSL_CTX_get_info_callback

void(*)(const SSL *ssl, int type, int value) SSL_CTX_get_info_callback(SSL_CTX *ctx)

Definition at line 1339 of file ssl_session.cc.

◆ SSL_CTX_sess_get_get_cb

SSL_SESSION*(*)(SSL *ssl, const uint8_t *id, int id_len, int *out_copy) SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)

Definition at line 1327 of file ssl_session.cc.

◆ SSL_CTX_sess_get_new_cb

int(*)(SSL *ssl, SSL_SESSION *session) SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)

Definition at line 1307 of file ssl_session.cc.

◆ SSL_CTX_sess_get_remove_cb

void(*)(SSL_CTX *ctx, SSL_SESSION *session) SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)

Definition at line 1316 of file ssl_session.cc.

CRYPTO_EX_DATA_CLASS_INIT_WITH_APP_DATA
#define CRYPTO_EX_DATA_CLASS_INIT_WITH_APP_DATA
Definition: third_party/boringssl-with-bazel/src/crypto/internal.h:688


grpc
Author(s):
autogenerated on Fri May 16 2025 03:01:31