diff options
author | Daiki Ueno <dueno@redhat.com> | 2018-04-16 10:17:10 +0200 |
---|---|---|
committer | Daiki Ueno <dueno@redhat.com> | 2018-04-16 15:27:06 +0200 |
commit | 4db873554b760b1e595d3743dcc9c5b1cb048d0f (patch) | |
tree | 78d36ae36e8d4f202caa54edc3e12ea213babf99 | |
parent | 8e32440919dbf84c67ea779009ef76b25787d465 (diff) | |
download | gnutls-tmp-dueno-ap-traffic-keys-fix.tar.gz |
handshake-tls13: Fix calculation of application traffic secretstmp-dueno-ap-traffic-keys-fix
The transcript hash should be calculated over "ClientHello...server
Finished" instead of "ClientHello...client Finished".
Signed-off-by: Daiki Ueno <dueno@redhat.com>
-rw-r--r-- | lib/handshake-tls13.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/lib/handshake-tls13.c b/lib/handshake-tls13.c index de14cf106e..7b186e451b 100644 --- a/lib/handshake-tls13.c +++ b/lib/handshake-tls13.c @@ -126,25 +126,25 @@ int _gnutls13_handshake_client(gnutls_session_t session) IMED_RET("recv finished", ret, 0); /* fall through */ case STATE108: - ret = _gnutls13_send_certificate(session, AGAIN(STATE108)); + ret = + generate_ap_traffic_keys(session); STATE = STATE108; - IMED_RET("send certificate", ret, 0); + IMED_RET("generate app keys", ret, 0); /* fall through */ case STATE109: - ret = _gnutls13_send_certificate_verify(session, AGAIN(STATE109)); + ret = _gnutls13_send_certificate(session, AGAIN(STATE109)); STATE = STATE109; - IMED_RET("send certificate verify", ret, 0); + IMED_RET("send certificate", ret, 0); /* fall through */ case STATE110: - ret = _gnutls13_send_finished(session, AGAIN(STATE110)); + ret = _gnutls13_send_certificate_verify(session, AGAIN(STATE110)); STATE = STATE110; - IMED_RET("send finished", ret, 0); + IMED_RET("send certificate verify", ret, 0); /* fall through */ case STATE111: - ret = - generate_ap_traffic_keys(session); + ret = _gnutls13_send_finished(session, AGAIN(STATE111)); STATE = STATE111; - IMED_RET("generate app keys", ret, 0); + IMED_RET("send finished", ret, 0); STATE = STATE0; break; @@ -337,31 +337,31 @@ int _gnutls13_handshake_server(gnutls_session_t session) IMED_RET("send finished", ret, 0); /* fall through */ case STATE107: - ret = _gnutls13_recv_certificate(session); + ret = + generate_ap_traffic_keys(session); STATE = STATE107; - IMED_RET("recv certificate", ret, 0); + IMED_RET("generate app keys", ret, 0); /* fall through */ case STATE108: - ret = _gnutls13_recv_certificate_verify(session); + ret = _gnutls13_recv_certificate(session); STATE = STATE108; - IMED_RET("recv certificate verify", ret, 0); + IMED_RET("recv certificate", ret, 0); /* fall through */ case STATE109: - ret = _gnutls_run_verify_callback(session, GNUTLS_CLIENT); + ret = _gnutls13_recv_certificate_verify(session); STATE = STATE109; - if (ret < 0) - return gnutls_assert_val(ret); + IMED_RET("recv certificate verify", ret, 0); /* fall through */ case STATE110: - ret = _gnutls13_recv_finished(session); + ret = _gnutls_run_verify_callback(session, GNUTLS_CLIENT); STATE = STATE110; - IMED_RET("recv finished", ret, 0); + if (ret < 0) + return gnutls_assert_val(ret); /* fall through */ case STATE111: - ret = - generate_ap_traffic_keys(session); + ret = _gnutls13_recv_finished(session); STATE = STATE111; - IMED_RET("generate app keys", ret, 0); + IMED_RET("recv finished", ret, 0); STATE = STATE0; break; |