Browse Source

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.
Jouni Malinen 16 years ago
parent
commit
9478eaef53
3 changed files with 14 additions and 8 deletions
  1. 10 3
      src/eap_peer/eap_peap.c
  2. 3 4
      src/eap_peer/tncc.c
  3. 1 1
      src/eap_peer/tncc.h

+ 10 - 3
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,

+ 3 - 4
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);
 }

+ 1 - 1
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 */