Added option to force SoH version 1 (tnc=soh1)

The default version with tnc=soh remains to be 2 which is the currently
recommended version in SoH specification.
This commit is contained in:
Jouni Malinen 2008-12-07 21:00:42 +02:00
parent 9c9f869a05
commit 9478eaef53
3 changed files with 14 additions and 8 deletions

View file

@ -119,9 +119,15 @@ static int eap_peap_parse_phase1(struct eap_peap_data *data,
} }
#ifdef EAP_TNC #ifdef EAP_TNC
if (os_strstr(phase1, "tnc=soh")) { if (os_strstr(phase1, "tnc=soh2")) {
data->soh = 2;
wpa_printf(MSG_DEBUG, "EAP-PEAP: SoH version 2 enabled");
} else if (os_strstr(phase1, "tnc=soh1")) {
data->soh = 1; data->soh = 1;
wpa_printf(MSG_DEBUG, "EAP-PEAP: SoH enabled"); wpa_printf(MSG_DEBUG, "EAP-PEAP: SoH version 1 enabled");
} else if (os_strstr(phase1, "tnc=soh")) {
data->soh = 2;
wpa_printf(MSG_DEBUG, "EAP-PEAP: SoH version 2 enabled");
} }
#endif /* EAP_TNC */ #endif /* EAP_TNC */
@ -668,7 +674,8 @@ static int eap_peap_phase2_request(struct eap_sm *sm,
struct wpabuf *buf; struct wpabuf *buf;
wpa_printf(MSG_DEBUG, wpa_printf(MSG_DEBUG,
"EAP-PEAP: SoH EAP Extensions"); "EAP-PEAP: SoH EAP Extensions");
buf = tncc_process_soh_request(epos, eleft); buf = tncc_process_soh_request(data->soh,
epos, eleft);
if (buf) { if (buf) {
*resp = eap_msg_alloc( *resp = eap_msg_alloc(
EAP_VENDOR_MICROSOFT, 0x21, EAP_VENDOR_MICROSOFT, 0x21,

View file

@ -1218,12 +1218,11 @@ void tncc_deinit(struct tncc_data *tncc)
} }
static struct wpabuf * tncc_build_soh(void) static struct wpabuf * tncc_build_soh(int ver)
{ {
struct wpabuf *buf; struct wpabuf *buf;
u8 *tlv_len, *tlv_len2, *outer_len, *inner_len, *ssoh_len, *end; u8 *tlv_len, *tlv_len2, *outer_len, *inner_len, *ssoh_len, *end;
u8 correlation_id[24]; u8 correlation_id[24];
int ver = 2;
/* TODO: get correct name */ /* TODO: get correct name */
char *machinename = "wpa_supplicant@w1.fi"; char *machinename = "wpa_supplicant@w1.fi";
@ -1332,7 +1331,7 @@ static struct wpabuf * tncc_build_soh(void)
} }
struct wpabuf * tncc_process_soh_request(const u8 *data, size_t len) struct wpabuf * tncc_process_soh_request(int ver, const u8 *data, size_t len)
{ {
const u8 *pos; const u8 *pos;
@ -1365,5 +1364,5 @@ struct wpabuf * tncc_process_soh_request(const u8 *data, size_t len)
wpa_printf(MSG_DEBUG, "TNC: SoH Request TLV received"); wpa_printf(MSG_DEBUG, "TNC: SoH Request TLV received");
return tncc_build_soh(); return tncc_build_soh(2);
} }

View file

@ -37,6 +37,6 @@ enum tncc_process_res {
enum tncc_process_res tncc_process_if_tnccs(struct tncc_data *tncc, enum tncc_process_res tncc_process_if_tnccs(struct tncc_data *tncc,
const u8 *msg, size_t len); const u8 *msg, size_t len);
struct wpabuf * tncc_process_soh_request(const u8 *data, size_t len); struct wpabuf * tncc_process_soh_request(int ver, const u8 *data, size_t len);
#endif /* TNCC_H */ #endif /* TNCC_H */