2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 * Purpose: Implement functions for 802.11i Key management
34 #if !defined(__TTYPE_H__)
38 #if !defined(__TETHER_H__)
42 #if !defined(__80211MGR_H__)
46 /*--------------------- Export Definitions -------------------------*/
47 #define MAX_GROUP_KEY 4
48 #define MAX_KEY_TABLE 11
49 #define MAX_KEY_LEN 32
50 #define AES_KEY_LEN 16
53 #define AUTHENTICATOR_KEY 0x10000000
54 #define USE_KEYRSC 0x20000000
55 #define PAIRWISE_KEY 0x40000000
56 #define TRANSMIT_KEY 0x80000000
58 #define GROUP_KEY 0x00000000
60 #define KEY_CTL_WEP 0x00
61 #define KEY_CTL_NONE 0x01
62 #define KEY_CTL_TKIP 0x02
63 #define KEY_CTL_CCMP 0x03
64 #define KEY_CTL_INVALID 0xFF
67 typedef struct tagSKeyItem
71 BYTE abyKey
[MAX_KEY_LEN
];
79 } SKeyItem
, DEF
* PSKeyItem
; //64
81 typedef struct tagSKeyTable
83 BYTE abyBSSID
[U_ETHER_ADDR_LEN
]; //6
84 BYTE byReserved0
[2]; //8
86 SKeyItem GroupKey
[MAX_GROUP_KEY
]; //64*5 = 320, 320+8=328
87 DWORD dwGTKeyIndex
; // GroupTransmitKey Index
89 //2006-1116-01,<Modify> by NomadZhao
93 WORD wKeyCtl
; // for address of wKeyCtl at align 4
96 } SKeyTable
, DEF
* PSKeyTable
; //348
98 typedef struct tagSKeyManagement
100 SKeyTable KeyTable
[MAX_KEY_TABLE
];
101 } SKeyManagement
, DEF
* PSKeyManagement
;
103 /*--------------------- Export Types ------------------------------*/
105 /*--------------------- Export Macros ------------------------------*/
107 /*--------------------- Export Classes ----------------------------*/
109 /*--------------------- Export Variables --------------------------*/
111 /*--------------------- Export Functions --------------------------*/
113 extern "C" { /* Assume C declarations for C++ */
114 #endif /* __cplusplus */
116 VOID
KeyvInitTable(PSKeyManagement pTable
, DWORD_PTR dwIoBase
);
119 IN PSKeyManagement pTable
,
126 PSKeyManagement pTable
,
137 BOOL
KeybSetDefaultKey(
138 PSKeyManagement pTable
,
149 PSKeyManagement pTable
,
155 BOOL
KeybGetTransmitKey(
156 IN PSKeyManagement pTable
,
162 BOOL
KeybCheckPairewiseKey(
163 IN PSKeyManagement pTable
,
167 BOOL
KeybRemoveAllKey(
168 PSKeyManagement pTable
,
173 VOID
KeyvRemoveWEPKey(
174 PSKeyManagement pTable
,
179 VOID
KeyvRemoveAllWEPKey(
180 PSKeyManagement pTable
,
184 BOOL
KeybSetAllGroupKey (
185 PSKeyManagement pTable
,
196 } /* End of extern "C" { */
198 #endif /* __cplusplus */