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
80 //2006-1116-01,<Modify> by NomadZhao
84 WORD wKeyCtl; // for address of wKeyCtl at align 4
87 } SKeyTable, *PSKeyTable; //348
89 typedef struct tagSKeyManagement
91 SKeyTable KeyTable[MAX_KEY_TABLE];
92 } SKeyManagement, * PSKeyManagement;
94 /*--------------------- Export Types ------------------------------*/
96 /*--------------------- Export Macros ------------------------------*/
98 /*--------------------- Export Classes ----------------------------*/
100 /*--------------------- Export Variables --------------------------*/
102 /*--------------------- Export Functions --------------------------*/
104 VOID KeyvInitTable(PSKeyManagement pTable, DWORD_PTR dwIoBase);
107 IN PSKeyManagement pTable,
114 PSKeyManagement pTable,
125 BOOL KeybSetDefaultKey(
126 PSKeyManagement pTable,
137 PSKeyManagement pTable,
143 BOOL KeybGetTransmitKey(
144 IN PSKeyManagement pTable,
150 BOOL KeybCheckPairewiseKey(
151 IN PSKeyManagement pTable,
155 BOOL KeybRemoveAllKey(
156 PSKeyManagement pTable,
161 VOID KeyvRemoveWEPKey(
162 PSKeyManagement pTable,
167 VOID KeyvRemoveAllWEPKey(
168 PSKeyManagement pTable,
172 BOOL KeybSetAllGroupKey (
173 PSKeyManagement pTable,