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
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;
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 */
@ -668,7 +674,8 @@ static int eap_peap_phase2_request(struct eap_sm *sm,
struct wpabuf *buf;
wpa_printf(MSG_DEBUG,
"EAP-PEAP: SoH EAP Extensions");
buf = tncc_process_soh_request(epos, eleft);
buf = tncc_process_soh_request(data->soh,
epos, eleft);
if (buf) {
*resp = eap_msg_alloc(
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;
u8 *tlv_len, *tlv_len2, *outer_len, *inner_len, *ssoh_len, *end;
u8 correlation_id[24];
int ver = 2;
/* TODO: get correct name */
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;
@ -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");
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,
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 */