Huge thanks to our Platinum Members Endace and LiveAction,
and our Silver Member Veeam, for supporting the Wireshark Foundation and project.

Ethereal-dev: [Ethereal-dev] Ethereal patch for IEEE 802.11 key descriptor type (IEEE 802.11i/

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Jouni Malinen <jkmaline@xxxxxxxxx>
Date: Mon, 29 Mar 2004 21:30:46 -0800
The latest IEEE 802.1X-REV draft has a TBD entry for IEEE 802.11
Descriptor Type (EAPOL-Key packets). WPA used value 254 here, but IEEE
802.11i/RSN is likely to get another value. The final value may still
change, but the most probable value is 2 and the attached patch adds a
separate define for RSN EAPOL-Key using this descriptor type. The frame
itself is processed with the exact same code as WPA EAPOL-Keys in this
version since both WPA and RSN EAPOL-Key formats are so similar to each
other.

-- 
Jouni Malinen                                            PGP id EFC895FA
Index: packet-eapol.c
===================================================================
RCS file: /cvsroot/ethereal/packet-eapol.c,v
retrieving revision 1.17
diff -u -p -r1.17 packet-eapol.c
--- packet-eapol.c	28 Mar 2004 00:26:13 -0000	1.17
+++ packet-eapol.c	30 Mar 2004 05:21:40 -0000
@@ -80,6 +80,8 @@ static dissector_handle_t data_handle;
 #define EAPOL_KEY		3
 #define EAPOL_ENCAP_ASF_ALERT	4
 
+#define EAPOL_RSN_KEY		2 /* TBD, may change in final IEEE 802.1X-REV
+				   */
 #define EAPOL_WPA_KEY		254
 
 static const value_string eapol_type_vals[] = {
@@ -93,6 +95,7 @@ static const value_string eapol_type_val
 
 static const value_string eapol_keydes_type_vals[] = {
 	{ 1, "RC4 Descriptor" },
+	{ EAPOL_RSN_KEY, "EAPOL RSN key" },
 	{ EAPOL_WPA_KEY, "EAPOL WPA key" },
 	{ 0, NULL }
 };
@@ -180,7 +183,7 @@ dissect_eapol(tvbuff_t *tvb, packet_info
       keydesc_type = tvb_get_guint8(tvb, offset);
       proto_tree_add_item(eapol_tree, hf_eapol_keydes_type, tvb, offset, 1, FALSE);
       offset += 1;
-      if (keydesc_type == EAPOL_WPA_KEY) {
+      if (keydesc_type == EAPOL_WPA_KEY || keydesc_type == EAPOL_RSN_KEY) {
 	keyinfo = tvb_get_ntohs(tvb, offset);
 	keyinfo_item = 
 	  proto_tree_add_uint(eapol_tree, hf_eapol_wpa_keydes_keyinfo, tvb,