*
* <<Broadcom-WL-IPTag/Open:>>
*
- * $Id: eapol.h 758863 2018-04-21 00:29:12Z $
+ * $Id: eapol.h 767212 2018-06-13 00:17:23Z $
*/
#ifndef _eapol_h_
unsigned short length; /* Length of body */
} eapol_hdr_t;
-#define EAPOL_HDR_LEN 4
+#define EAPOL_HDR_LEN 4u
/* EAPOL version */
-#define WPA2_EAPOL_VERSION 2
-#define WPA_EAPOL_VERSION 1
-#define LEAP_EAPOL_VERSION 1
-#define SES_EAPOL_VERSION 1
+#define WPA2_EAPOL_VERSION 2u
+#define WPA_EAPOL_VERSION 1u
+#define LEAP_EAPOL_VERSION 1u
+#define SES_EAPOL_VERSION 1u
/* EAPOL types */
#define EAP_PACKET 0
-#define EAPOL_START 1
-#define EAPOL_LOGOFF 2
-#define EAPOL_KEY 3
-#define EAPOL_ASF 4
+#define EAPOL_START 1u
+#define EAPOL_LOGOFF 2u
+#define EAPOL_KEY 3u
+#define EAPOL_ASF 4u
/* EAPOL-Key types */
-#define EAPOL_RC4_KEY 1
-#define EAPOL_WPA2_KEY 2 /* 802.11i/WPA2 */
-#define EAPOL_WPA_KEY 254 /* WPA */
+#define EAPOL_RC4_KEY 1u
+#define EAPOL_WPA2_KEY 2u /* 802.11i/WPA2 */
+#define EAPOL_WPA_KEY 254u /* WPA */
/* RC4 EAPOL-Key header field sizes */
-#define EAPOL_KEY_REPLAY_LEN 8
-#define EAPOL_KEY_IV_LEN 16
-#define EAPOL_KEY_SIG_LEN 16
+#define EAPOL_KEY_REPLAY_LEN 8u
+#define EAPOL_KEY_IV_LEN 16u
+#define EAPOL_KEY_SIG_LEN 16u
/* RC4 EAPOL-Key */
typedef BWL_PRE_PACKED_STRUCT struct {
unsigned char key[1]; /* Key (optional) */
} BWL_POST_PACKED_STRUCT eapol_key_header_t;
-#define EAPOL_KEY_HEADER_LEN 44
+#define EAPOL_KEY_HEADER_LEN 44u
/* RC4 EAPOL-Key flags */
-#define EAPOL_KEY_FLAGS_MASK 0x80
-#define EAPOL_KEY_BROADCAST 0
-#define EAPOL_KEY_UNICAST 0x80
+#define EAPOL_KEY_FLAGS_MASK 0x80u
+#define EAPOL_KEY_BROADCAST 0u
+#define EAPOL_KEY_UNICAST 0x80u
/* RC4 EAPOL-Key index */
-#define EAPOL_KEY_INDEX_MASK 0x7f
+#define EAPOL_KEY_INDEX_MASK 0x7fu
/* WPA/802.11i/WPA2 EAPOL-Key header field sizes */
#define EAPOL_AKW_BLOCK_LEN 8
-#define EAPOL_WPA_KEY_REPLAY_LEN 8
-#define EAPOL_WPA_KEY_NONCE_LEN 32
-#define EAPOL_WPA_KEY_IV_LEN 16
-#define EAPOL_WPA_KEY_RSC_LEN 8
-#define EAPOL_WPA_KEY_ID_LEN 8
-#define EAPOL_WPA_KEY_MIC_LEN 16 /* deprecated */
+#define EAPOL_WPA_KEY_REPLAY_LEN 8u
+#define EAPOL_WPA_KEY_NONCE_LEN 32u
+#define EAPOL_WPA_KEY_IV_LEN 16u
+#define EAPOL_WPA_KEY_RSC_LEN 8u
+#define EAPOL_WPA_KEY_ID_LEN 8u
#define EAPOL_WPA_KEY_DATA_LEN (EAPOL_WPA_MAX_KEY_SIZE + EAPOL_AKW_BLOCK_LEN)
-#define EAPOL_WPA_MAX_KEY_SIZE 32
+#define EAPOL_WPA_MAX_KEY_SIZE 32u
+#define EAPOL_WPA_KEY_MAX_MIC_LEN 32u
+#define EAPOL_WPA_ENCR_KEY_MAX_LEN 64u
+#define EAPOL_WPA_TEMP_ENCR_KEY_MAX_LEN 32u
+
+#define EAPOL_WPA_PMK_MAX_LEN 64u
+#define EAPOL_WPA_PMK_SHA384_LEN 48u
+#define EAPOL_WPA_PMK_DEFAULT_LEN 32u
+#define EAPOL_WPA_KCK_DEFAULT_LEN 16u
+#define EAPOL_WPA_KCK_MIC_DEFAULT_LEN 16u
+#define EAPOL_WPA_ENCR_KEY_DEFAULT_LEN 16u
+
+#ifndef EAPOL_KEY_HDR_VER_V2
+#define EAPOL_WPA_KEY_MIC_LEN 16u /* deprecated */
+#define EAPOL_WPA_KEY_LEN 95u /* deprecated */
+#endif // endif
+#ifndef EAPOL_KEY_HDR_VER_V2
/* WPA EAPOL-Key : deprecated */
typedef BWL_PRE_PACKED_STRUCT struct {
unsigned char type; /* Key Descriptor Type */
unsigned short data_len; /* Key Data Length */
unsigned char data[EAPOL_WPA_KEY_DATA_LEN]; /* Key data */
} BWL_POST_PACKED_STRUCT eapol_wpa_key_header_t;
-
+#else
/* WPA EAPOL-Key : new structure to consider dynamic MIC length */
typedef BWL_PRE_PACKED_STRUCT struct {
unsigned char type; /* Key Descriptor Type */
unsigned char id[EAPOL_WPA_KEY_ID_LEN]; /* WPA:Key ID, 802.11i/WPA2: Reserved */
} BWL_POST_PACKED_STRUCT eapol_wpa_key_header_v2_t;
-#define EAPOL_WPA_KEY_LEN 95 /* deprecated */
-#define EAPOL_WPA_KEY_DATA_LEN_SIZE 2
+typedef eapol_wpa_key_header_v2_t eapol_wpa_key_header_t;
+#endif /* EAPOL_KEY_HDR_VER_V2 */
+
+#define EAPOL_WPA_KEY_DATA_LEN_SIZE 2u
+#ifdef EAPOL_KEY_HDR_VER_V2
#define EAPOL_WPA_KEY_HDR_SIZE(mic_len) (sizeof(eapol_wpa_key_header_v2_t) \
+ mic_len + EAPOL_WPA_KEY_DATA_LEN_SIZE)
((uint8 *)pos + sizeof(eapol_wpa_key_header_v2_t) + mic_len)
#define EAPOL_WPA_KEY_HDR_DATA_PTR(pos, mic_len) \
((uint8 *)pos + EAPOL_WPA_KEY_HDR_SIZE(mic_len))
+#else
+#define EAPOL_WPA_KEY_HDR_SIZE(mic_len) EAPOL_WPA_KEY_LEN
+#define EAPOL_WPA_KEY_HDR_MIC_PTR(pos) ((uint8 *)&pos->mic)
+#define EAPOL_WPA_KEY_HDR_DATA_LEN_PTR(pos, mic_len) ((uint8 *)&pos->data_len)
+#define EAPOL_WPA_KEY_HDR_DATA_PTR(pos, mic_len) ((uint8 *)&pos->data)
+#endif /* EAPOL_KEY_HDR_VER_V2 */
/* WPA/802.11i/WPA2 KEY KEY_INFO bits */
#define WPA_KEY_DESC_OSEN 0x0