提交 011d768a 编写于 作者: M Matt Caswell

Fix some bugs in the TLSv1.3 PSK code

Found while developing the PSK tests
Reviewed-by: NRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3670)
上级 725b0f1e
......@@ -898,7 +898,7 @@ EXT_RETURN tls_construct_ctos_psk(SSL *s, WPACKET *pkt, unsigned int context,
goto err;
}
if (s->hello_retry_request && mdres != handmd) {
if (s->hello_retry_request && mdpsk != handmd) {
/*
* Selected ciphersuite hash does not match the hash for the PSK
* session. This is an application bug.
......@@ -971,12 +971,15 @@ EXT_RETURN tls_construct_ctos_psk(SSL *s, WPACKET *pkt, unsigned int context,
if (dores)
s->session->ext.tick_identity = 0;
SSL_SESSION_free(s->psksession);
s->psksession = psksess;
if (psksess != NULL)
s->psksession->ext.tick_identity = (dores ? 1 : 0);
psksess = NULL;
ret = EXT_RETURN_SENT;
err:
SSL_SESSION_free(psksess);
return ret;
#else
return 1;
......
......@@ -713,8 +713,15 @@ int tls_parse_ctos_psk(SSL *s, PACKET *pkt, unsigned int context, X509 *x,
}
if (s->psk_find_session_cb != NULL
&& s->psk_find_session_cb(s, PACKET_data(&identity),
PACKET_remaining(&identity), &sess)) {
&& !s->psk_find_session_cb(s, PACKET_data(&identity),
PACKET_remaining(&identity),
&sess)) {
*al = SSL_AD_INTERNAL_ERROR;
return 0;
}
if (sess != NULL) {
/* We found a PSK */
SSL_SESSION *sesstmp = ssl_session_dup(sess, 0);
if (sesstmp == NULL) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册