wpa.h revision ac2bc7e7aaad957f235992ff74d5f9af34dc5f88
1b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/* 2b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * Fundamental types and constants relating to WPA 3b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * 4ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt * Copyright (C) 1999-2012, Broadcom Corporation 56dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 66dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any 76dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * purpose with or without fee is hereby granted, provided that the above 86dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * copyright notice and this permission notice appear in all copies. 96dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * 106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * 18ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt * $Id: wpa.h 261155 2011-05-23 23:51:32Z $ 19b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt */ 20b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 21b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 22b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifndef _proto_wpa_h_ 23b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define _proto_wpa_h_ 24b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 25b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <typedefs.h> 26b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <proto/ethernet.h> 27b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 28b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 29b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 30b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_start.h> 31b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 32b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 33b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 34b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 356dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INVALID_WPA_IE 13 366dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_MIC_FAILURE 14 376dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_4WH_TIMEOUT 15 386dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_GTK_UPDATE_TIMEOUT 16 396dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_WPA_IE_MISMATCH 17 406dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INVALID_MC_CIPHER 18 416dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INVALID_UC_CIPHER 19 426dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INVALID_AKMP 20 436dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_BAD_WPA_VERSION 21 446dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_INVALID_WPA_CAP 22 456dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define DOT11_RC_8021X_AUTH_FAIL 23 46b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 47b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA2_PMKID_LEN 16 48b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 49b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 50b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct 51b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt{ 526dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 tag; 536dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 length; 546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui[3]; 556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 oui_type; 56b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt BWL_PRE_PACKED_STRUCT struct { 57b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 low; 58b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 high; 596dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt } BWL_POST_PACKED_STRUCT version; 60b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT wpa_ie_fixed_t; 61b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_IE_OUITYPE_LEN 4 62b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_IE_FIXED_LEN 8 63b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_IE_TAG_FIXED_LEN 6 64b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 65b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct { 666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 tag; 676dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt uint8 length; 68b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt BWL_PRE_PACKED_STRUCT struct { 69b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 low; 70b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 high; 716dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt } BWL_POST_PACKED_STRUCT version; 72b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT wpa_rsn_ie_fixed_t; 73b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_RSN_IE_FIXED_LEN 4 74b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_RSN_IE_TAG_FIXED_LEN 2 75b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef uint8 wpa_pmkid_t[WPA2_PMKID_LEN]; 76b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 77b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 78b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct 79b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt{ 80b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 oui[3]; 81b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 type; 82b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT wpa_suite_t, wpa_suite_mcast_t; 83b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_SUITE_LEN 4 84b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 85b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 86b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct 87b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt{ 88b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt BWL_PRE_PACKED_STRUCT struct { 89b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 low; 90b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 high; 91b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt } BWL_POST_PACKED_STRUCT count; 92b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt wpa_suite_t list[1]; 93b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT wpa_suite_ucast_t, wpa_suite_auth_key_mgmt_t; 94b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_IE_SUITE_COUNT_LEN 2 95b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct 96b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt{ 97b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt BWL_PRE_PACKED_STRUCT struct { 98b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 low; 99b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt uint8 high; 100b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt } BWL_POST_PACKED_STRUCT count; 101b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt wpa_pmkid_t list[1]; 102b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT wpa_pmkid_list_t; 103b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 104b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 1056dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_CIPHER_NONE 0 1066dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_CIPHER_WEP_40 1 1076dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_CIPHER_TKIP 2 1086dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_CIPHER_AES_OCB 3 1096dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_CIPHER_AES_CCM 4 1106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_CIPHER_WEP_104 5 111ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WPA_CIPHER_BIP 6 112ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WPA_CIPHER_TPK 7 113b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 114ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#ifdef BCMWAPI_WAI 115ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WAPI_CIPHER_NONE WPA_CIPHER_NONE 116ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WAPI_CIPHER_SMS4 11 117ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt 118ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WAPI_CSE_WPI_SMS4 1 119ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#endif 120b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 121b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define IS_WPA_CIPHER(cipher) ((cipher) == WPA_CIPHER_NONE || \ 122b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt (cipher) == WPA_CIPHER_WEP_40 || \ 123b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt (cipher) == WPA_CIPHER_WEP_104 || \ 124b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt (cipher) == WPA_CIPHER_TKIP || \ 125b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt (cipher) == WPA_CIPHER_AES_OCB || \ 126ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt (cipher) == WPA_CIPHER_AES_CCM || \ 127ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt (cipher) == WPA_CIPHER_TPK) 128b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 129b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 1306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_TKIP_CM_DETECT 60 1316dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_TKIP_CM_BLOCK 60 132b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 133b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 1346dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define RSN_CAP_LEN 2 135b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 136b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 137b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_PREAUTH 0x0001 138b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_NOPAIRWISE 0x0002 139b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_PTK_REPLAY_CNTR_MASK 0x000C 140b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_PTK_REPLAY_CNTR_SHIFT 2 141b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_GTK_REPLAY_CNTR_MASK 0x0030 142b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_GTK_REPLAY_CNTR_SHIFT 4 143b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_1_REPLAY_CNTR 0 144b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_2_REPLAY_CNTRS 1 145b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_4_REPLAY_CNTRS 2 146b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define RSN_CAP_16_REPLAY_CNTRS 3 147b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 148b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 149b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_CAP_4_REPLAY_CNTRS RSN_CAP_4_REPLAY_CNTRS 150b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_CAP_16_REPLAY_CNTRS RSN_CAP_16_REPLAY_CNTRS 151b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_CAP_REPLAY_CNTR_SHIFT RSN_CAP_PTK_REPLAY_CNTR_SHIFT 152b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_CAP_REPLAY_CNTR_MASK RSN_CAP_PTK_REPLAY_CNTR_MASK 153b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 154b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 1556dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#define WPA_CAP_LEN RSN_CAP_LEN 156b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 157b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WPA_CAP_WPA2_PREAUTH RSN_CAP_PREAUTH 158b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 159b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 160b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 161b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_end.h> 162b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt 1636dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif 164