]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
EAP-TLS peer: Handle possible application data at the end
authorJouni Malinen <j@w1.fi>
Fri, 12 Jul 2019 20:38:05 +0000 (23:38 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 12 Jul 2019 20:38:05 +0000 (23:38 +0300)
EAP-TLS with TLS 1.3 uses an empty application data record from the
server to indicate end of the exchange, so EAP-TLS peer will need to
check for this special case and finish the exchange with an empty
EAP-TLS (ACK) so that the server can send out EAP-Success.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/eap_peer/eap_tls.c

index b7e76d93ae009944067bed0cfee9458f5f51a47a..15d60d710094653b47f1bf0c1d19b6964d98a833 100644 (file)
@@ -296,6 +296,18 @@ static struct wpabuf * eap_tls_process(struct eap_sm *sm, void *priv,
                return NULL;
        }
 
+       if (res == 2) {
+               /* Application data included in the handshake message (used by
+                * EAP-TLS 1.3 to indicate conclusion of the exchange). */
+               wpa_hexdump_buf(MSG_DEBUG, "EAP-TLS: Received Application Data",
+                               resp);
+               wpa_hexdump_buf(MSG_DEBUG, "EAP-TLS: Remaining tls_out data",
+                               data->ssl.tls_out);
+               eap_peer_tls_reset_output(&data->ssl);
+               /* Send an ACK to allow the server to complete exchange */
+               res = 1;
+       }
+
        if (tls_connection_established(data->ssl_ctx, data->ssl.conn))
                eap_tls_success(sm, data, ret);