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