EAP-TEAP server and peer implementation (RFC 7170)
This adds support for a new EAP method: EAP-TEAP (Tunnel Extensible Authentication Protocol). This should be considered experimental since RFC 7170 has number of conflicting statements and missing details to allow unambiguous interpretation. As such, there may be interoperability issues with other implementations and this version should not be deployed for production purposes until those unclear areas are resolved. This does not yet support use of NewSessionTicket message to deliver a new PAC (either in the server or peer implementation). In other words, only the in-tunnel distribution of PAC-Opaque is supported for now. Use of the NewSessionTicket mechanism would require TLS library support to allow arbitrary data to be specified as the contents of the message. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
7c6f1c5e4a
commit
0ed57c5ea8
36 changed files with 6047 additions and 14 deletions
|
@ -121,6 +121,8 @@ struct eap_config {
|
|||
int eap_fast_prov;
|
||||
int pac_key_lifetime;
|
||||
int pac_key_refresh_time;
|
||||
int eap_teap_auth;
|
||||
int eap_teap_pac_no_inner;
|
||||
int eap_sim_aka_result_ind;
|
||||
int tnc;
|
||||
struct wps_context *wps;
|
||||
|
|
|
@ -190,6 +190,8 @@ struct eap_sm {
|
|||
} eap_fast_prov;
|
||||
int pac_key_lifetime;
|
||||
int pac_key_refresh_time;
|
||||
int eap_teap_auth;
|
||||
int eap_teap_pac_no_inner;
|
||||
int eap_sim_aka_result_ind;
|
||||
int tnc;
|
||||
u16 pwd_group;
|
||||
|
|
|
@ -41,6 +41,7 @@ int eap_server_sake_register(void);
|
|||
int eap_server_gpsk_register(void);
|
||||
int eap_server_vendor_test_register(void);
|
||||
int eap_server_fast_register(void);
|
||||
int eap_server_teap_register(void);
|
||||
int eap_server_wsc_register(void);
|
||||
int eap_server_ikev2_register(void);
|
||||
int eap_server_tnc_register(void);
|
||||
|
|
|
@ -1869,6 +1869,8 @@ struct eap_sm * eap_server_sm_init(void *eapol_ctx,
|
|||
sm->eap_fast_prov = conf->eap_fast_prov;
|
||||
sm->pac_key_lifetime = conf->pac_key_lifetime;
|
||||
sm->pac_key_refresh_time = conf->pac_key_refresh_time;
|
||||
sm->eap_teap_auth = conf->eap_teap_auth;
|
||||
sm->eap_teap_pac_no_inner = conf->eap_teap_pac_no_inner;
|
||||
sm->eap_sim_aka_result_ind = conf->eap_sim_aka_result_ind;
|
||||
sm->tnc = conf->tnc;
|
||||
sm->wps = conf->wps;
|
||||
|
|
1947
src/eap_server/eap_server_teap.c
Normal file
1947
src/eap_server/eap_server_teap.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -373,6 +373,8 @@ static int eap_server_tls_reassemble(struct eap_ssl_data *data, u8 flags,
|
|||
unsigned int tls_msg_len = 0;
|
||||
const u8 *end = *pos + *left;
|
||||
|
||||
wpa_hexdump(MSG_MSGDUMP, "SSL: Received data", *pos, *left);
|
||||
|
||||
if (flags & EAP_TLS_FLAGS_LENGTH_INCLUDED) {
|
||||
if (*left < 4) {
|
||||
wpa_printf(MSG_INFO, "SSL: Short frame with TLS "
|
||||
|
|
|
@ -62,6 +62,7 @@ struct eap_ssl_data {
|
|||
#define EAP_TLS_FLAGS_LENGTH_INCLUDED 0x80
|
||||
#define EAP_TLS_FLAGS_MORE_FRAGMENTS 0x40
|
||||
#define EAP_TLS_FLAGS_START 0x20
|
||||
#define EAP_TEAP_FLAGS_OUTER_TLV_LEN 0x10
|
||||
#define EAP_TLS_VERSION_MASK 0x07
|
||||
|
||||
/* could be up to 128 bytes, but only the first 64 bytes are used */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue