Loading ssl/ssl_locl.h +1 −1 Original line number Diff line number Diff line Loading @@ -1933,7 +1933,7 @@ __owur CERT *ssl_cert_dup(CERT *cert); void ssl_cert_clear_certs(CERT *c); void ssl_cert_free(CERT *c); __owur int ssl_get_new_session(SSL *s, int session); __owur int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello); __owur int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello, int *al); __owur SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket); __owur int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b); DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, ssl_cipher_id); Loading ssl/ssl_sess.c +9 −7 Original line number Diff line number Diff line Loading @@ -458,7 +458,7 @@ int ssl_get_new_session(SSL *s, int session) * - Both for new and resumed sessions, s->ext.ticket_expected is set to 1 * if the server should issue a new session ticket (to 0 otherwise). */ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello) int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello, int *al) { /* This is used only by servers. */ Loading @@ -468,10 +468,10 @@ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello) TICKET_RETURN r; if (SSL_IS_TLS13(s)) { int al; if (!tls_parse_extension(s, TLSEXT_IDX_psk, EXT_CLIENT_HELLO, hello->pre_proc_exts, NULL, 0, &al)) if (!tls_parse_extension(s, TLSEXT_IDX_psk_kex_modes, EXT_CLIENT_HELLO, hello->pre_proc_exts, NULL, 0, al) || !tls_parse_extension(s, TLSEXT_IDX_psk, EXT_CLIENT_HELLO, hello->pre_proc_exts, NULL, 0, al)) return -1; ret = s->session; Loading Loading @@ -637,11 +637,13 @@ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello) s->ext.ticket_expected = 1; } } if (fatal) if (fatal) { *al = SSL_AD_INTERNAL_ERROR; return -1; else } else { return 0; } } int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c) { Loading ssl/statem/extensions.c +0 −1 Original line number Diff line number Diff line Loading @@ -237,7 +237,6 @@ static const EXTENSION_DEFINITION ext_defs[] = { NULL, NULL, NULL, tls_construct_ctos_supported_versions, NULL }, { /* Must be before key_share */ TLSEXT_TYPE_psk_kex_modes, EXT_CLIENT_HELLO | EXT_TLS_IMPLEMENTATION_ONLY | EXT_TLS1_3_ONLY, init_psk_kex_modes, tls_parse_ctos_psk_kex_modes, NULL, NULL, Loading ssl/statem/extensions_srvr.c +8 −0 Original line number Diff line number Diff line Loading @@ -687,6 +687,14 @@ int tls_parse_ctos_psk(SSL *s, PACKET *pkt, X509 *x, size_t chainidx, int *al) unsigned int id, i; const EVP_MD *md = NULL; /* * If we have no PSK kex mode that we recognise then we can't resume so * ignore this extension */ if ((s->ext.psk_kex_mode & (TLSEXT_KEX_MODE_FLAG_KE | TLSEXT_KEX_MODE_FLAG_KE_DHE)) == 0) return 1; if (!PACKET_get_length_prefixed_2(pkt, &identities)) { *al = SSL_AD_DECODE_ERROR; return 0; Loading ssl/statem/statem_srvr.c +2 −2 Original line number Diff line number Diff line Loading @@ -1475,12 +1475,12 @@ MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt) if (!ssl_get_new_session(s, 1)) goto err; } else { i = ssl_get_prev_session(s, &clienthello); i = ssl_get_prev_session(s, &clienthello, &al); if (i == 1) { /* previous session */ s->hit = 1; } else if (i == -1) { goto err; goto f_err; } else { /* i == 0 */ if (!ssl_get_new_session(s, 1)) Loading Loading
ssl/ssl_locl.h +1 −1 Original line number Diff line number Diff line Loading @@ -1933,7 +1933,7 @@ __owur CERT *ssl_cert_dup(CERT *cert); void ssl_cert_clear_certs(CERT *c); void ssl_cert_free(CERT *c); __owur int ssl_get_new_session(SSL *s, int session); __owur int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello); __owur int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello, int *al); __owur SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket); __owur int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b); DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, ssl_cipher_id); Loading
ssl/ssl_sess.c +9 −7 Original line number Diff line number Diff line Loading @@ -458,7 +458,7 @@ int ssl_get_new_session(SSL *s, int session) * - Both for new and resumed sessions, s->ext.ticket_expected is set to 1 * if the server should issue a new session ticket (to 0 otherwise). */ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello) int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello, int *al) { /* This is used only by servers. */ Loading @@ -468,10 +468,10 @@ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello) TICKET_RETURN r; if (SSL_IS_TLS13(s)) { int al; if (!tls_parse_extension(s, TLSEXT_IDX_psk, EXT_CLIENT_HELLO, hello->pre_proc_exts, NULL, 0, &al)) if (!tls_parse_extension(s, TLSEXT_IDX_psk_kex_modes, EXT_CLIENT_HELLO, hello->pre_proc_exts, NULL, 0, al) || !tls_parse_extension(s, TLSEXT_IDX_psk, EXT_CLIENT_HELLO, hello->pre_proc_exts, NULL, 0, al)) return -1; ret = s->session; Loading Loading @@ -637,11 +637,13 @@ int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello) s->ext.ticket_expected = 1; } } if (fatal) if (fatal) { *al = SSL_AD_INTERNAL_ERROR; return -1; else } else { return 0; } } int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c) { Loading
ssl/statem/extensions.c +0 −1 Original line number Diff line number Diff line Loading @@ -237,7 +237,6 @@ static const EXTENSION_DEFINITION ext_defs[] = { NULL, NULL, NULL, tls_construct_ctos_supported_versions, NULL }, { /* Must be before key_share */ TLSEXT_TYPE_psk_kex_modes, EXT_CLIENT_HELLO | EXT_TLS_IMPLEMENTATION_ONLY | EXT_TLS1_3_ONLY, init_psk_kex_modes, tls_parse_ctos_psk_kex_modes, NULL, NULL, Loading
ssl/statem/extensions_srvr.c +8 −0 Original line number Diff line number Diff line Loading @@ -687,6 +687,14 @@ int tls_parse_ctos_psk(SSL *s, PACKET *pkt, X509 *x, size_t chainidx, int *al) unsigned int id, i; const EVP_MD *md = NULL; /* * If we have no PSK kex mode that we recognise then we can't resume so * ignore this extension */ if ((s->ext.psk_kex_mode & (TLSEXT_KEX_MODE_FLAG_KE | TLSEXT_KEX_MODE_FLAG_KE_DHE)) == 0) return 1; if (!PACKET_get_length_prefixed_2(pkt, &identities)) { *al = SSL_AD_DECODE_ERROR; return 0; Loading
ssl/statem/statem_srvr.c +2 −2 Original line number Diff line number Diff line Loading @@ -1475,12 +1475,12 @@ MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt) if (!ssl_get_new_session(s, 1)) goto err; } else { i = ssl_get_prev_session(s, &clienthello); i = ssl_get_prev_session(s, &clienthello, &al); if (i == 1) { /* previous session */ s->hit = 1; } else if (i == -1) { goto err; goto f_err; } else { /* i == 0 */ if (!ssl_get_new_session(s, 1)) Loading