bool is_init_finished; //!< whether or not init is finished
bool client_cert_ok; //!< whether or not we validated the client certificate
bool authentication_success; //!< whether or not the user was authenticated (cert or PW)
+ bool quick_session_tickets; //!< for EAP-TLS.
/*
* Framed-MTU attribute in RADIUS, if present, can also be used to set this
SSL_set_ex_data(sock->ssn->ssl, FR_TLS_EX_INDEX_REQUEST, (void *)request);
SSL_set_ex_data(sock->ssn->ssl, fr_tls_ex_index_certs, (void *) &sock->certs);
SSL_set_ex_data(sock->ssn->ssl, FR_TLS_EX_INDEX_TALLOC, sock);
+ sock->ssn->quick_session_tickets = true; /* we don't have inner-tunnel authentication */
doing_init = true;
}
* notibly not for PEAP even on resumption.
*/
if ((tls_session->info.version == TLS1_3_VERSION) &&
- (handler->type == PW_EAP_TLS) &&
- (tls_session->client_cert_ok || SSL_session_reused(tls_session->ssl))) {
+ (tls_session->client_cert_ok || tls_session->authentication_success || SSL_session_reused(tls_session->ssl))) {
fr_tls_server_conf_t *conf;
conf = (fr_tls_server_conf_t *)SSL_get_ex_data(tls_session->ssl, FR_TLS_EX_INDEX_CONF);
rad_assert(conf != NULL);
- if (conf->tls13_send_zero) {
- RDEBUG("TLS send Commitment Message");
- tls_session->record_plus(&tls_session->clean_in, "\0", 1);
- } else {
- RDEBUG("TLS sending close_notify");
- SSL_shutdown(tls_session->ssl);
+ if ((handler->type == PW_EAP_TLS) || SSL_session_reused(tls_session->ssl)) {
+ tls_session->authentication_success = true;
+
+ if (conf->tls13_send_zero) {
+ RDEBUG("TLS send Commitment Message");
+ tls_session->record_plus(&tls_session->clean_in, "\0", 1);
+ } else {
+ RDEBUG("TLS sending close_notify");
+ SSL_shutdown(tls_session->ssl);
+ }
+ }
+
+ /*
+ * Allow sending of session tickets, but ONLY
+ * after we've verified the client certificate,
+ * or users password.
+ */
+ else if (conf->session_cache_enable) {
+ SSL_set_num_tickets(tls_session->ssl, 1);
}
tls_handshake_send(request, tls_session);