Lines Matching refs:session
164 static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *session);
165 static void SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *session);
166 static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *session, int lock);
192 UniquePtr<SSL_SESSION> SSL_SESSION_dup(SSL_SESSION *session, int dup_flags) { in SSL_SESSION_dup() argument
193 UniquePtr<SSL_SESSION> new_session = ssl_session_new(session->x509_method); in SSL_SESSION_dup()
198 new_session->is_server = session->is_server; in SSL_SESSION_dup()
199 new_session->ssl_version = session->ssl_version; in SSL_SESSION_dup()
200 new_session->is_quic = session->is_quic; in SSL_SESSION_dup()
201 new_session->sid_ctx_length = session->sid_ctx_length; in SSL_SESSION_dup()
202 OPENSSL_memcpy(new_session->sid_ctx, session->sid_ctx, session->sid_ctx_length); in SSL_SESSION_dup()
205 new_session->secret_length = session->secret_length; in SSL_SESSION_dup()
206 OPENSSL_memcpy(new_session->secret, session->secret, session->secret_length); in SSL_SESSION_dup()
207 new_session->cipher = session->cipher; in SSL_SESSION_dup()
210 if (session->psk_identity != nullptr) { in SSL_SESSION_dup()
212 OPENSSL_strdup(session->psk_identity.get())); in SSL_SESSION_dup()
217 if (session->certs != nullptr) { in SSL_SESSION_dup()
223 session->certs.get(), buf_up_ref, CRYPTO_BUFFER_free)); in SSL_SESSION_dup()
229 if (!session->x509_method->session_dup(new_session.get(), session)) { in SSL_SESSION_dup()
233 new_session->verify_result = session->verify_result; in SSL_SESSION_dup()
235 new_session->ocsp_response = UpRef(session->ocsp_response); in SSL_SESSION_dup()
237 UpRef(session->signed_cert_timestamp_list); in SSL_SESSION_dup()
239 OPENSSL_memcpy(new_session->peer_sha256, session->peer_sha256, in SSL_SESSION_dup()
241 new_session->peer_sha256_valid = session->peer_sha256_valid; in SSL_SESSION_dup()
243 new_session->peer_signature_algorithm = session->peer_signature_algorithm; in SSL_SESSION_dup()
245 new_session->timeout = session->timeout; in SSL_SESSION_dup()
246 new_session->auth_timeout = session->auth_timeout; in SSL_SESSION_dup()
247 new_session->time = session->time; in SSL_SESSION_dup()
251 new_session->session_id_length = session->session_id_length; in SSL_SESSION_dup()
252 OPENSSL_memcpy(new_session->session_id, session->session_id, in SSL_SESSION_dup()
253 session->session_id_length); in SSL_SESSION_dup()
255 new_session->group_id = session->group_id; in SSL_SESSION_dup()
258 session->original_handshake_hash, in SSL_SESSION_dup()
259 session->original_handshake_hash_len); in SSL_SESSION_dup()
261 session->original_handshake_hash_len; in SSL_SESSION_dup()
262 new_session->ticket_lifetime_hint = session->ticket_lifetime_hint; in SSL_SESSION_dup()
263 new_session->ticket_age_add = session->ticket_age_add; in SSL_SESSION_dup()
264 new_session->ticket_max_early_data = session->ticket_max_early_data; in SSL_SESSION_dup()
265 new_session->extended_master_secret = session->extended_master_secret; in SSL_SESSION_dup()
266 new_session->has_application_settings = session->has_application_settings; in SSL_SESSION_dup()
268 if (!new_session->early_alpn.CopyFrom(session->early_alpn) || in SSL_SESSION_dup()
270 session->quic_early_data_context) || in SSL_SESSION_dup()
272 session->local_application_settings) || in SSL_SESSION_dup()
274 session->peer_application_settings)) { in SSL_SESSION_dup()
281 !new_session->ticket.CopyFrom(session->ticket)) { in SSL_SESSION_dup()
291 void ssl_session_rebase_time(SSL *ssl, SSL_SESSION *session) { in ssl_session_rebase_time() argument
297 if (session->time > now.tv_sec) { in ssl_session_rebase_time()
298 session->time = now.tv_sec; in ssl_session_rebase_time()
299 session->timeout = 0; in ssl_session_rebase_time()
300 session->auth_timeout = 0; in ssl_session_rebase_time()
306 uint64_t delta = now.tv_sec - session->time; in ssl_session_rebase_time()
307 session->time = now.tv_sec; in ssl_session_rebase_time()
308 if (session->timeout < delta) { in ssl_session_rebase_time()
309 session->timeout = 0; in ssl_session_rebase_time()
311 session->timeout -= delta; in ssl_session_rebase_time()
313 if (session->auth_timeout < delta) { in ssl_session_rebase_time()
314 session->auth_timeout = 0; in ssl_session_rebase_time()
316 session->auth_timeout -= delta; in ssl_session_rebase_time()
320 void ssl_session_renew_timeout(SSL *ssl, SSL_SESSION *session, in ssl_session_renew_timeout() argument
324 ssl_session_rebase_time(ssl, session); in ssl_session_renew_timeout()
326 if (session->timeout > timeout) { in ssl_session_renew_timeout()
330 session->timeout = timeout; in ssl_session_renew_timeout()
331 if (session->timeout > session->auth_timeout) { in ssl_session_renew_timeout()
332 session->timeout = session->auth_timeout; in ssl_session_renew_timeout()
336 uint16_t ssl_session_protocol_version(const SSL_SESSION *session) { in ssl_session_protocol_version() argument
338 if (!ssl_protocol_version_from_wire(&ret, session->ssl_version)) { in ssl_session_protocol_version()
348 const EVP_MD *ssl_session_get_digest(const SSL_SESSION *session) { in ssl_session_get_digest() argument
349 return ssl_get_handshake_digest(ssl_session_protocol_version(session), in ssl_session_get_digest()
350 session->cipher); in ssl_session_get_digest()
360 UniquePtr<SSL_SESSION> session = ssl_session_new(ssl->ctx->x509_method); in ssl_get_new_session() local
361 if (session == NULL) { in ssl_get_new_session()
365 session->is_server = is_server; in ssl_get_new_session()
366 session->ssl_version = ssl->version; in ssl_get_new_session()
367 session->is_quic = ssl->quic_method != nullptr; in ssl_get_new_session()
372 session->time = now.tv_sec; in ssl_get_new_session()
378 session->timeout = ssl->session_ctx->session_psk_dhe_timeout; in ssl_get_new_session()
379 session->auth_timeout = SSL_DEFAULT_SESSION_AUTH_TIMEOUT; in ssl_get_new_session()
383 session->timeout = ssl->session_ctx->session_timeout; in ssl_get_new_session()
384 session->auth_timeout = ssl->session_ctx->session_timeout; in ssl_get_new_session()
391 session->session_id_length = 0; in ssl_get_new_session()
393 session->session_id_length = SSL3_SSL_SESSION_ID_LENGTH; in ssl_get_new_session()
394 if (!RAND_bytes(session->session_id, session->session_id_length)) { in ssl_get_new_session()
399 session->session_id_length = 0; in ssl_get_new_session()
402 if (hs->config->cert->sid_ctx_length > sizeof(session->sid_ctx)) { in ssl_get_new_session()
406 OPENSSL_memcpy(session->sid_ctx, hs->config->cert->sid_ctx, in ssl_get_new_session()
408 session->sid_ctx_length = hs->config->cert->sid_ctx_length; in ssl_get_new_session()
411 session->not_resumable = true; in ssl_get_new_session()
412 session->verify_result = X509_V_ERR_INVALID_CALL; in ssl_get_new_session()
414 hs->new_session = std::move(session); in ssl_get_new_session()
580 const SSL_SESSION *session) { in ssl_encrypt_ticket() argument
584 if (!SSL_SESSION_to_bytes_for_ticket(session, &session_buf, &session_len)) { in ssl_encrypt_ticket()
600 const SSL_SESSION *session) { in ssl_session_is_context_valid() argument
601 if (session == NULL) { in ssl_session_is_context_valid()
605 return session->sid_ctx_length == hs->config->cert->sid_ctx_length && in ssl_session_is_context_valid()
606 OPENSSL_memcmp(session->sid_ctx, hs->config->cert->sid_ctx, in ssl_session_is_context_valid()
610 int ssl_session_is_time_valid(const SSL *ssl, const SSL_SESSION *session) { in ssl_session_is_time_valid() argument
611 if (session == NULL) { in ssl_session_is_time_valid()
619 if (now.tv_sec < session->time) { in ssl_session_is_time_valid()
623 return session->timeout > now.tv_sec - session->time; in ssl_session_is_time_valid()
627 const SSL_SESSION *session) { in ssl_session_is_resumable() argument
629 return ssl_session_is_context_valid(hs, session) && in ssl_session_is_resumable()
632 ssl->server == session->is_server && in ssl_session_is_resumable()
634 ssl_session_is_time_valid(ssl, session) && in ssl_session_is_resumable()
637 ssl->version == session->ssl_version && in ssl_session_is_resumable()
643 hs->new_cipher == session->cipher && in ssl_session_is_resumable()
647 ((sk_CRYPTO_BUFFER_num(session->certs.get()) == 0 && in ssl_session_is_resumable()
648 !session->peer_sha256_valid) || in ssl_session_is_resumable()
649 session->peer_sha256_valid == in ssl_session_is_resumable()
653 (hs->ssl->quic_method != nullptr) == session->is_quic; in ssl_session_is_resumable()
668 UniquePtr<SSL_SESSION> session; in ssl_lookup_session() local
682 session = UpRef(lh_SSL_SESSION_retrieve_key(ssl->session_ctx->sessions, in ssl_lookup_session()
688 if (!session && ssl->session_ctx->get_session_cb != nullptr) { in ssl_lookup_session()
690 session.reset(ssl->session_ctx->get_session_cb(ssl, session_id.data(), in ssl_lookup_session()
692 if (!session) { in ssl_lookup_session()
696 if (session.get() == SSL_magic_pending_session_ptr()) { in ssl_lookup_session()
697 session.release(); // This pointer is not actually owned. in ssl_lookup_session()
706 SSL_SESSION_up_ref(session.get()); in ssl_lookup_session()
712 SSL_CTX_add_session(ssl->session_ctx.get(), session.get()); in ssl_lookup_session()
716 if (session && !ssl_session_is_time_valid(ssl, session.get())) { in ssl_lookup_session()
718 SSL_CTX_remove_session(ssl->session_ctx.get(), session.get()); in ssl_lookup_session()
719 session.reset(); in ssl_lookup_session()
722 *out_session = std::move(session); in ssl_lookup_session()
733 UniquePtr<SSL_SESSION> session; in ssl_get_prev_session() local
743 switch (ssl_process_ticket(hs, &session, &renew_ticket, ticket, in ssl_get_prev_session()
749 assert(!session); in ssl_get_prev_session()
759 hs, &session, in ssl_get_prev_session()
766 *out_session = std::move(session); in ssl_get_prev_session()
772 static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *session, int lock) { in remove_session_lock() argument
775 if (session != NULL && session->session_id_length != 0) { in remove_session_lock()
780 session); in remove_session_lock()
781 if (found_session == session) { in remove_session_lock()
783 found_session = lh_SSL_SESSION_delete(ctx->sessions, session); in remove_session_lock()
784 SSL_SESSION_list_remove(ctx, session); in remove_session_lock()
802 void ssl_set_session(SSL *ssl, SSL_SESSION *session) { in ssl_set_session() argument
803 if (ssl->session.get() == session) { in ssl_set_session()
807 ssl->session = UpRef(session); in ssl_set_session()
811 static void SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *session) { in SSL_SESSION_list_remove() argument
812 if (session->next == NULL || session->prev == NULL) { in SSL_SESSION_list_remove()
816 if (session->next == (SSL_SESSION *)&ctx->session_cache_tail) { in SSL_SESSION_list_remove()
818 if (session->prev == (SSL_SESSION *)&ctx->session_cache_head) { in SSL_SESSION_list_remove()
823 ctx->session_cache_tail = session->prev; in SSL_SESSION_list_remove()
824 session->prev->next = (SSL_SESSION *)&(ctx->session_cache_tail); in SSL_SESSION_list_remove()
827 if (session->prev == (SSL_SESSION *)&ctx->session_cache_head) { in SSL_SESSION_list_remove()
829 ctx->session_cache_head = session->next; in SSL_SESSION_list_remove()
830 session->next->prev = (SSL_SESSION *)&(ctx->session_cache_head); in SSL_SESSION_list_remove()
832 session->next->prev = session->prev; in SSL_SESSION_list_remove()
833 session->prev->next = session->next; in SSL_SESSION_list_remove()
836 session->prev = session->next = NULL; in SSL_SESSION_list_remove()
839 static void SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *session) { in SSL_SESSION_list_add() argument
840 if (session->next != NULL && session->prev != NULL) { in SSL_SESSION_list_add()
841 SSL_SESSION_list_remove(ctx, session); in SSL_SESSION_list_add()
845 ctx->session_cache_head = session; in SSL_SESSION_list_add()
846 ctx->session_cache_tail = session; in SSL_SESSION_list_add()
847 session->prev = (SSL_SESSION *)&(ctx->session_cache_head); in SSL_SESSION_list_add()
848 session->next = (SSL_SESSION *)&(ctx->session_cache_tail); in SSL_SESSION_list_add()
850 session->next = ctx->session_cache_head; in SSL_SESSION_list_add()
851 session->next->prev = session; in SSL_SESSION_list_add()
852 session->prev = (SSL_SESSION *)&(ctx->session_cache_head); in SSL_SESSION_list_add()
853 ctx->session_cache_head = session; in SSL_SESSION_list_add()
883 int SSL_SESSION_up_ref(SSL_SESSION *session) { in SSL_SESSION_up_ref() argument
884 CRYPTO_refcount_inc(&session->references); in SSL_SESSION_up_ref()
888 void SSL_SESSION_free(SSL_SESSION *session) { in SSL_SESSION_free() argument
889 if (session == NULL || in SSL_SESSION_free()
890 !CRYPTO_refcount_dec_and_test_zero(&session->references)) { in SSL_SESSION_free()
894 session->~ssl_session_st(); in SSL_SESSION_free()
895 OPENSSL_free(session); in SSL_SESSION_free()
898 const uint8_t *SSL_SESSION_get_id(const SSL_SESSION *session, in SSL_SESSION_get_id() argument
901 *out_len = session->session_id_length; in SSL_SESSION_get_id()
903 return session->session_id; in SSL_SESSION_get_id()
906 int SSL_SESSION_set1_id(SSL_SESSION *session, const uint8_t *sid, in SSL_SESSION_set1_id() argument
914 OPENSSL_memmove(session->session_id, sid, sid_len); in SSL_SESSION_set1_id()
915 session->session_id_length = sid_len; in SSL_SESSION_set1_id()
919 uint32_t SSL_SESSION_get_timeout(const SSL_SESSION *session) { in SSL_SESSION_get_timeout() argument
920 return session->timeout; in SSL_SESSION_get_timeout()
923 uint64_t SSL_SESSION_get_time(const SSL_SESSION *session) { in SSL_SESSION_get_time() argument
924 if (session == NULL) { in SSL_SESSION_get_time()
928 return session->time; in SSL_SESSION_get_time()
931 X509 *SSL_SESSION_get0_peer(const SSL_SESSION *session) { in SSL_SESSION_get0_peer() argument
932 return session->x509_peer; in SSL_SESSION_get0_peer()
936 SSL_SESSION_get0_peer_certificates(const SSL_SESSION *session) { in STACK_OF()
937 return session->certs.get(); in STACK_OF()
940 void SSL_SESSION_get0_signed_cert_timestamp_list(const SSL_SESSION *session, in SSL_SESSION_get0_signed_cert_timestamp_list() argument
943 if (session->signed_cert_timestamp_list) { in SSL_SESSION_get0_signed_cert_timestamp_list()
944 *out = CRYPTO_BUFFER_data(session->signed_cert_timestamp_list.get()); in SSL_SESSION_get0_signed_cert_timestamp_list()
945 *out_len = CRYPTO_BUFFER_len(session->signed_cert_timestamp_list.get()); in SSL_SESSION_get0_signed_cert_timestamp_list()
952 void SSL_SESSION_get0_ocsp_response(const SSL_SESSION *session, in SSL_SESSION_get0_ocsp_response() argument
954 if (session->ocsp_response) { in SSL_SESSION_get0_ocsp_response()
955 *out = CRYPTO_BUFFER_data(session->ocsp_response.get()); in SSL_SESSION_get0_ocsp_response()
956 *out_len = CRYPTO_BUFFER_len(session->ocsp_response.get()); in SSL_SESSION_get0_ocsp_response()
963 size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, uint8_t *out, in SSL_SESSION_get_master_key() argument
967 return (size_t)session->secret_length; in SSL_SESSION_get_master_key()
969 if (max_out > (size_t)session->secret_length) { in SSL_SESSION_get_master_key()
970 max_out = (size_t)session->secret_length; in SSL_SESSION_get_master_key()
972 OPENSSL_memcpy(out, session->secret, max_out); in SSL_SESSION_get_master_key()
976 uint64_t SSL_SESSION_set_time(SSL_SESSION *session, uint64_t time) { in SSL_SESSION_set_time() argument
977 if (session == NULL) { in SSL_SESSION_set_time()
981 session->time = time; in SSL_SESSION_set_time()
985 uint32_t SSL_SESSION_set_timeout(SSL_SESSION *session, uint32_t timeout) { in SSL_SESSION_set_timeout() argument
986 if (session == NULL) { in SSL_SESSION_set_timeout()
990 session->timeout = timeout; in SSL_SESSION_set_timeout()
991 session->auth_timeout = timeout; in SSL_SESSION_set_timeout()
995 const uint8_t *SSL_SESSION_get0_id_context(const SSL_SESSION *session, in SSL_SESSION_get0_id_context() argument
998 *out_len = session->sid_ctx_length; in SSL_SESSION_get0_id_context()
1000 return session->sid_ctx; in SSL_SESSION_get0_id_context()
1003 int SSL_SESSION_set1_id_context(SSL_SESSION *session, const uint8_t *sid_ctx, in SSL_SESSION_set1_id_context() argument
1005 if (sid_ctx_len > sizeof(session->sid_ctx)) { in SSL_SESSION_set1_id_context()
1010 static_assert(sizeof(session->sid_ctx) < 256, "sid_ctx_len does not fit"); in SSL_SESSION_set1_id_context()
1011 session->sid_ctx_length = (uint8_t)sid_ctx_len; in SSL_SESSION_set1_id_context()
1012 OPENSSL_memcpy(session->sid_ctx, sid_ctx, sid_ctx_len); in SSL_SESSION_set1_id_context()
1017 int SSL_SESSION_should_be_single_use(const SSL_SESSION *session) { in SSL_SESSION_should_be_single_use() argument
1018 return ssl_session_protocol_version(session) >= TLS1_3_VERSION; in SSL_SESSION_should_be_single_use()
1021 int SSL_SESSION_is_resumable(const SSL_SESSION *session) { in SSL_SESSION_is_resumable() argument
1022 return !session->not_resumable; in SSL_SESSION_is_resumable()
1025 int SSL_SESSION_has_ticket(const SSL_SESSION *session) { in SSL_SESSION_has_ticket() argument
1026 return !session->ticket.empty(); in SSL_SESSION_has_ticket()
1029 void SSL_SESSION_get0_ticket(const SSL_SESSION *session, in SSL_SESSION_get0_ticket() argument
1032 *out_ticket = session->ticket.data(); in SSL_SESSION_get0_ticket()
1034 *out_len = session->ticket.size(); in SSL_SESSION_get0_ticket()
1037 int SSL_SESSION_set_ticket(SSL_SESSION *session, const uint8_t *ticket, in SSL_SESSION_set_ticket() argument
1039 return session->ticket.CopyFrom(MakeConstSpan(ticket, ticket_len)); in SSL_SESSION_set_ticket()
1042 uint32_t SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *session) { in SSL_SESSION_get_ticket_lifetime_hint() argument
1043 return session->ticket_lifetime_hint; in SSL_SESSION_get_ticket_lifetime_hint()
1046 const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *session) { in SSL_SESSION_get0_cipher() argument
1047 return session->cipher; in SSL_SESSION_get0_cipher()
1050 int SSL_SESSION_has_peer_sha256(const SSL_SESSION *session) { in SSL_SESSION_has_peer_sha256() argument
1051 return session->peer_sha256_valid; in SSL_SESSION_has_peer_sha256()
1054 void SSL_SESSION_get0_peer_sha256(const SSL_SESSION *session, in SSL_SESSION_get0_peer_sha256() argument
1056 if (session->peer_sha256_valid) { in SSL_SESSION_get0_peer_sha256()
1057 *out_ptr = session->peer_sha256; in SSL_SESSION_get0_peer_sha256()
1058 *out_len = sizeof(session->peer_sha256); in SSL_SESSION_get0_peer_sha256()
1065 int SSL_SESSION_early_data_capable(const SSL_SESSION *session) { in SSL_SESSION_early_data_capable() argument
1066 return ssl_session_protocol_version(session) >= TLS1_3_VERSION && in SSL_SESSION_early_data_capable()
1067 session->ticket_max_early_data != 0; in SSL_SESSION_early_data_capable()
1070 SSL_SESSION *SSL_SESSION_copy_without_early_data(SSL_SESSION *session) { in SSL_SESSION_copy_without_early_data() argument
1071 if (!SSL_SESSION_early_data_capable(session)) { in SSL_SESSION_copy_without_early_data()
1072 return UpRef(session).release(); in SSL_SESSION_copy_without_early_data()
1076 SSL_SESSION_dup(session, SSL_SESSION_DUP_ALL); in SSL_SESSION_copy_without_early_data()
1083 copy->not_resumable = session->not_resumable; in SSL_SESSION_copy_without_early_data()
1106 return ssl->session.get(); in SSL_get_session()
1129 int SSL_SESSION_set_ex_data(SSL_SESSION *session, int idx, void *arg) { in SSL_SESSION_set_ex_data() argument
1130 return CRYPTO_set_ex_data(&session->ex_data, idx, arg); in SSL_SESSION_set_ex_data()
1133 void *SSL_SESSION_get_ex_data(const SSL_SESSION *session, int idx) { in SSL_SESSION_get_ex_data() argument
1134 return CRYPTO_get_ex_data(&session->ex_data, idx); in SSL_SESSION_get_ex_data()
1137 int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session) { in SSL_CTX_add_session() argument
1140 UniquePtr<SSL_SESSION> owned_session = UpRef(session); in SSL_CTX_add_session()
1144 if (!lh_SSL_SESSION_insert(ctx->sessions, &old_session, session)) { in SSL_CTX_add_session()
1154 if (old_session == session) { in SSL_CTX_add_session()
1166 SSL_SESSION_list_add(ctx, session); in SSL_CTX_add_session()
1181 int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session) { in SSL_CTX_remove_session() argument
1182 return remove_session_lock(ctx, session, 1); in SSL_CTX_remove_session()
1185 int SSL_set_session(SSL *ssl, SSL_SESSION *session) { in SSL_set_session() argument
1193 ssl_set_session(ssl, session); in SSL_set_session()
1230 static void timeout_doall_arg(SSL_SESSION *session, void *void_param) { in timeout_doall_arg() argument
1234 session->time + session->timeout < session->time || in timeout_doall_arg()
1235 param->time > (session->time + session->timeout)) { in timeout_doall_arg()
1238 (void) lh_SSL_SESSION_delete(param->cache, session); in timeout_doall_arg()
1239 SSL_SESSION_list_remove(param->ctx, session); in timeout_doall_arg()
1241 param->ctx->remove_session_cb(param->ctx, session); in timeout_doall_arg()
1243 SSL_SESSION_free(session); in timeout_doall_arg()
1261 int (*cb)(SSL *ssl, SSL_SESSION *session)) { in SSL_CTX_sess_set_new_cb() argument
1265 int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(SSL *ssl, SSL_SESSION *session) { in SSL_CTX_sess_get_new_cb()
1270 SSL_CTX *ctx, void (*cb)(SSL_CTX *ctx, SSL_SESSION *session)) { in SSL_CTX_sess_set_remove_cb() argument
1275 SSL_SESSION *session) { in SSL_CTX_sess_get_remove_cb()