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 */