aboutsummaryrefslogtreecommitdiffstats
path: root/src/eap_peer
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2008-12-07 19:00:42 (GMT)
committerJouni Malinen <j@w1.fi>2008-12-07 19:00:42 (GMT)
commit9478eaef53a5d0f59c04694f3facbc55f75590e5 (patch)
tree3d14317ec2eda9f7ca12d70d73ec0df6c843fc57 /src/eap_peer
parent9c9f869a0508a56f7df10d5fe252c3b11cdf74c4 (diff)
downloadhostap-06-9478eaef53a5d0f59c04694f3facbc55f75590e5.zip
hostap-06-9478eaef53a5d0f59c04694f3facbc55f75590e5.tar.gz
hostap-06-9478eaef53a5d0f59c04694f3facbc55f75590e5.tar.bz2
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.
Diffstat (limited to 'src/eap_peer')
-rw-r--r--src/eap_peer/eap_peap.c13
-rw-r--r--src/eap_peer/tncc.c7
-rw-r--r--src/eap_peer/tncc.h2
3 files changed, 14 insertions, 8 deletions
diff --git a/src/eap_peer/eap_peap.c b/src/eap_peer/eap_peap.c
index 392b36a..f270498 100644
--- a/src/eap_peer/eap_peap.c
+++ b/src/eap_peer/eap_peap.c
@@ -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,
diff --git a/src/eap_peer/tncc.c b/src/eap_peer/tncc.c
index 7e69f13..662662d 100644
--- a/src/eap_peer/tncc.c
+++ b/src/eap_peer/tncc.c
@@ -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);
}
diff --git a/src/eap_peer/tncc.h b/src/eap_peer/tncc.h
index 9847212..4d42a05 100644
--- a/src/eap_peer/tncc.h
+++ b/src/eap_peer/tncc.h
@@ -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 */