Merge branch 'bugfixes' into nfs-for-next
[linux-2.6/kvm.git] / drivers / staging / vt6656 / key.h
blobb15a64cb386879c94a57d85c23c010493cb561c4
1 /*
2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3 * All rights reserved.
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.
20 * File: key.h
22 * Purpose: Implement functions for 802.11i Key management
24 * Author: Jerry Chen
26 * Date: May 29, 2003
30 #ifndef __KEY_H__
31 #define __KEY_H__
33 #include "ttype.h"
34 #include "tether.h"
35 #include "80211mgr.h"
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
60 BOOL bKeyValid;
61 ULONG uKeyLength;
62 BYTE abyKey[MAX_KEY_LEN];
63 QWORD KeyRSC;
64 DWORD dwTSC47_16;
65 WORD wTSC15_0;
66 BYTE byCipherSuite;
67 BYTE byReserved0;
68 DWORD dwKeyIndex;
69 PVOID pvKeyTable;
70 } SKeyItem, *PSKeyItem; //64
72 typedef struct tagSKeyTable
74 BYTE abyBSSID[U_ETHER_ADDR_LEN]; //6
75 BYTE byReserved0[2]; //8
76 SKeyItem PairwiseKey;
77 SKeyItem GroupKey[MAX_GROUP_KEY]; //64*5 = 320, 320+8=328
78 DWORD dwGTKeyIndex; // GroupTransmitKey Index
79 BOOL bInUse;
80 WORD wKeyCtl;
81 BOOL bSoftWEP;
82 BYTE byReserved1[6];
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);
102 BOOL KeybGetKey(
103 IN PSKeyManagement pTable,
104 IN PBYTE pbyBSSID,
105 IN DWORD dwKeyIndex,
106 OUT PSKeyItem *pKey
109 BOOL KeybSetKey(
110 PVOID pDeviceHandler,
111 PSKeyManagement pTable,
112 PBYTE pbyBSSID,
113 DWORD dwKeyIndex,
114 ULONG uKeyLength,
115 PQWORD pKeyRSC,
116 PBYTE pbyKey,
117 BYTE byKeyDecMode
120 BOOL KeybRemoveKey(
121 PVOID pDeviceHandler,
122 PSKeyManagement pTable,
123 PBYTE pbyBSSID,
124 DWORD dwKeyIndex
127 BOOL KeybRemoveAllKey (
128 PVOID pDeviceHandler,
129 PSKeyManagement pTable,
130 PBYTE pbyBSSID
133 VOID KeyvRemoveWEPKey(
134 PVOID pDeviceHandler,
135 PSKeyManagement pTable,
136 DWORD dwKeyIndex
139 VOID KeyvRemoveAllWEPKey(
140 PVOID pDeviceHandler,
141 PSKeyManagement pTable
144 BOOL KeybGetTransmitKey(
145 IN PSKeyManagement pTable,
146 IN PBYTE pbyBSSID,
147 IN DWORD dwKeyType,
148 OUT PSKeyItem *pKey
151 BOOL KeybCheckPairewiseKey(
152 IN PSKeyManagement pTable,
153 OUT PSKeyItem *pKey
156 BOOL KeybSetDefaultKey (
157 PVOID pDeviceHandler,
158 PSKeyManagement pTable,
159 DWORD dwKeyIndex,
160 ULONG uKeyLength,
161 PQWORD pKeyRSC,
162 PBYTE pbyKey,
163 BYTE byKeyDecMode
166 BOOL KeybSetAllGroupKey (
167 PVOID pDeviceHandler,
168 PSKeyManagement pTable,
169 DWORD dwKeyIndex,
170 ULONG uKeyLength,
171 PQWORD pKeyRSC,
172 PBYTE pbyKey,
173 BYTE byKeyDecMode
176 #endif // __KEY_H__