Hello!
It seems I stumbled upon something weird in EAP-TLS code for TLS 1.3.
The EAP-TLS code expects the handshake to complete with session tickets instead of both Client and Server sending TLS Finished. This is actually not needed for the EAP-TLS case (we already have all the needed information to complete the EAP-TLS flow - namely thee client certificate) and even more, it actually is different from other EAP-TLS 1.3 implementations (namely Windows 11 VPN client supports EAP-TLS 1.3, and it works without the session keys - even more, it actually breaks on them). Why this expectation was introduced? I see it was introduced specifically for TLS 1.3 only:
|
int eaptls_is_init_finished(struct eaptls_session *ets) |
|
{ |
|
if (ets->ssl && SSL_is_init_finished(ets->ssl)) |
|
{ |
|
if (ets->tls_v13) |
|
return have_session_ticket; |
|
else |
|
return 1; |
|
} |
Hello!
It seems I stumbled upon something weird in EAP-TLS code for TLS 1.3.
The EAP-TLS code expects the handshake to complete with session tickets instead of both Client and Server sending TLS Finished. This is actually not needed for the EAP-TLS case (we already have all the needed information to complete the EAP-TLS flow - namely thee client certificate) and even more, it actually is different from other EAP-TLS 1.3 implementations (namely Windows 11 VPN client supports EAP-TLS 1.3, and it works without the session keys - even more, it actually breaks on them). Why this expectation was introduced? I see it was introduced specifically for TLS 1.3 only:
ppp/pppd/eap-tls.c
Lines 807 to 815 in ba7f7e0