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
37 /*--------------------- Export Definitions -------------------------*/
38 #define MAX_GROUP_KEY 4
39 #define MAX_KEY_TABLE 11
40 #define MAX_KEY_LEN 32
41 #define AES_KEY_LEN 16
44 #define AUTHENTICATOR_KEY 0x10000000
45 #define USE_KEYRSC 0x20000000
46 #define PAIRWISE_KEY 0x40000000
47 #define TRANSMIT_KEY 0x80000000
49 #define GROUP_KEY 0x00000000
51 #define KEY_CTL_WEP 0x00
52 #define KEY_CTL_NONE 0x01
53 #define KEY_CTL_TKIP 0x02
54 #define KEY_CTL_CCMP 0x03
55 #define KEY_CTL_INVALID 0xFF
58 typedef struct tagSKeyItem
62 BYTE abyKey[MAX_KEY_LEN];
70 } SKeyItem, *PSKeyItem; //64
72 typedef struct tagSKeyTable
74 BYTE abyBSSID[U_ETHER_ADDR_LEN]; //6
75 BYTE byReserved0[2]; //8
77 SKeyItem GroupKey[MAX_GROUP_KEY]; //64*5 = 320, 320+8=328
78 DWORD dwGTKeyIndex; // GroupTransmitKey Index
83 } SKeyTable, *PSKeyTable; //352
85 typedef struct tagSKeyManagement
87 SKeyTable KeyTable[MAX_KEY_TABLE];
88 } SKeyManagement, *PSKeyManagement;
90 /*--------------------- Export Types ------------------------------*/
92 /*--------------------- Export Macros ------------------------------*/
94 /*--------------------- Export Classes ----------------------------*/
96 /*--------------------- Export Variables --------------------------*/
98 /*--------------------- Export Functions --------------------------*/
100 VOID KeyvInitTable(PVOID pDeviceHandler, PSKeyManagement pTable);
103 IN PSKeyManagement pTable,
110 PVOID pDeviceHandler,
111 PSKeyManagement pTable,
121 PVOID pDeviceHandler,
122 PSKeyManagement pTable,
127 BOOL KeybRemoveAllKey (
128 PVOID pDeviceHandler,
129 PSKeyManagement pTable,
133 VOID KeyvRemoveWEPKey(
134 PVOID pDeviceHandler,
135 PSKeyManagement pTable,
139 VOID KeyvRemoveAllWEPKey(
140 PVOID pDeviceHandler,
141 PSKeyManagement pTable
144 BOOL KeybGetTransmitKey(
145 IN PSKeyManagement pTable,
151 BOOL KeybCheckPairewiseKey(
152 IN PSKeyManagement pTable,
156 BOOL KeybSetDefaultKey (
157 PVOID pDeviceHandler,
158 PSKeyManagement pTable,
166 BOOL KeybSetAllGroupKey (
167 PVOID pDeviceHandler,
168 PSKeyManagement pTable,