Lines Matching full:ss

29 __owur static int sess_timedout(time_t t, SSL_SESSION *ss)
32 if (ss->timeout_ovf)
34 return t > ss->calc_timeout;
78 void ssl_session_calculate_timeout(SSL_SESSION *ss)
82 CALCULATE_TIMEOUT(ss, uint64_t);
84 CALCULATE_TIMEOUT(ss, uint32_t);
139 SSL_SESSION *ss;
144 ss = OPENSSL_zalloc(sizeof(*ss));
145 if (ss == NULL) {
150 ss->ext.max_fragment_len_mode = TLSEXT_max_fragment_length_UNSPECIFIED;
151 ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */
152 ss->references = 1;
153 ss->timeout = 60 * 5 + 4; /* 5 minute timeout by default */
154 ss->time = time(NULL);
155 ssl_session_calculate_timeout(ss);
156 ss->lock = CRYPTO_THREAD_lock_new();
157 if (ss->lock == NULL) {
159 OPENSSL_free(ss);
163 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data)) {
164 CRYPTO_THREAD_lock_free(ss->lock);
165 OPENSSL_free(ss);
168 return ss;
374 int ssl_generate_session_id(SSL *s, SSL_SESSION *ss)
388 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH;
411 ss->session_id_length = 0;
431 memset(ss->session_id, 0, ss->session_id_length);
432 tmp = (int)ss->session_id_length;
433 if (!cb(s, ss->session_id, &tmp)) {
443 if (tmp == 0 || tmp > ss->session_id_length) {
449 ss->session_id_length = tmp;
451 if (SSL_has_matching_session_id(s, ss->session_id,
452 (unsigned int)ss->session_id_length)) {
464 SSL_SESSION *ss = NULL;
466 if ((ss = SSL_SESSION_new()) == NULL) {
473 ss->timeout = SSL_get_default_timeout(s);
475 ss->timeout = s->session_ctx->session_timeout;
476 ssl_session_calculate_timeout(ss);
487 ss->session_id_length = 0;
488 } else if (!ssl_generate_session_id(s, ss)) {
490 SSL_SESSION_free(ss);
495 ss->session_id_length = 0;
498 if (s->sid_ctx_length > sizeof(ss->sid_ctx)) {
500 SSL_SESSION_free(ss);
503 memcpy(ss->sid_ctx, s->sid_ctx, s->sid_ctx_length);
504 ss->sid_ctx_length = s->sid_ctx_length;
505 s->session = ss;
506 ss->ssl_version = s->version;
507 ss->verify_result = X509_V_OK;
511 ss->flags |= SSL_SESS_FLAG_EXTMS;
861 void SSL_SESSION_free(SSL_SESSION *ss)
865 if (ss == NULL)
867 CRYPTO_DOWN_REF(&ss->references, &i, ss->lock);
868 REF_PRINT_COUNT("SSL_SESSION", ss);
873 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data);
875 OPENSSL_cleanse(ss->master_key, sizeof(ss->master_key));
876 OPENSSL_cleanse(ss->session_id, sizeof(ss->session_id));
877 X509_free(ss->peer);
878 sk_X509_pop_free(ss->peer_chain, X509_free);
879 OPENSSL_free(ss->ext.hostname);
880 OPENSSL_free(ss->ext.tick);
882 OPENSSL_free(ss->psk_identity_hint);
883 OPENSSL_free(ss->psk_identity);
886 OPENSSL_free(ss->srp_username);
888 OPENSSL_free(ss->ext.alpn_selected);
889 OPENSSL_free(ss->ticket_appdata);
890 CRYPTO_THREAD_lock_free(ss->lock);
891 OPENSSL_clear_free(ss, sizeof(*ss));
894 int SSL_SESSION_up_ref(SSL_SESSION *ss)
898 if (CRYPTO_UP_REF(&ss->references, &i, ss->lock) <= 0)
901 REF_PRINT_COUNT("SSL_SESSION", ss);
1395 int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len)
1397 OPENSSL_free(ss->ticket_appdata);
1398 ss->ticket_appdata_len = 0;
1400 ss->ticket_appdata = NULL;
1403 ss->ticket_appdata = OPENSSL_memdup(data, len);
1404 if (ss->ticket_appdata != NULL) {
1405 ss->ticket_appdata_len = len;
1411 int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len)
1413 *data = ss->ticket_appdata;
1414 *len = ss->ticket_appdata_len;