]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blame - drivers/staging/vt6655/key.h
Merge remote branch 'jwb/next' into next
[mirror_ubuntu-kernels.git] / drivers / staging / vt6655 / key.h
CommitLineData
5449c685
FB
1/*
2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3 * All rights reserved.
4 *
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.
9 *
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.
14 *
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.
18 *
19 *
20 * File: key.h
21 *
22 * Purpose: Implement functions for 802.11i Key management
23 *
24 * Author: Jerry Chen
25 *
26 * Date: May 29, 2003
27 *
28 */
29
5449c685
FB
30#ifndef __KEY_H__
31#define __KEY_H__
32
5449c685 33#include "ttype.h"
5449c685 34#include "tether.h"
5449c685 35#include "80211mgr.h"
5449c685
FB
36
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
42
43
44#define AUTHENTICATOR_KEY 0x10000000
45#define USE_KEYRSC 0x20000000
46#define PAIRWISE_KEY 0x40000000
47#define TRANSMIT_KEY 0x80000000
48
49#define GROUP_KEY 0x00000000
50
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
56
57
58typedef struct tagSKeyItem
59{
7b6a0013 60 bool bKeyValid;
e3fd16d0 61 unsigned long uKeyLength;
3fc9b584 62 unsigned char abyKey[MAX_KEY_LEN];
5449c685 63 QWORD KeyRSC;
0f4c60d6 64 unsigned long dwTSC47_16;
2986db5f 65 unsigned short wTSC15_0;
3fc9b584
CC
66 unsigned char byCipherSuite;
67 unsigned char byReserved0;
0f4c60d6 68 unsigned long dwKeyIndex;
830a619c 69 void *pvKeyTable;
a884847a 70} SKeyItem, *PSKeyItem; //64
5449c685
FB
71
72typedef struct tagSKeyTable
73{
3fc9b584
CC
74 unsigned char abyBSSID[ETH_ALEN]; //6
75 unsigned char byReserved0[2]; //8
5449c685
FB
76 SKeyItem PairwiseKey;
77 SKeyItem GroupKey[MAX_GROUP_KEY]; //64*5 = 320, 320+8=328
0f4c60d6 78 unsigned long dwGTKeyIndex; // GroupTransmitKey Index
7b6a0013 79 bool bInUse;
5449c685 80 //2006-1116-01,<Modify> by NomadZhao
2986db5f 81 //unsigned short wKeyCtl;
7b6a0013
CC
82 //bool bSoftWEP;
83 bool bSoftWEP;
2986db5f 84 unsigned short wKeyCtl; // for address of wKeyCtl at align 4
5449c685 85
3fc9b584 86 unsigned char byReserved1[6];
a884847a 87} SKeyTable, *PSKeyTable; //348
5449c685
FB
88
89typedef struct tagSKeyManagement
90{
91 SKeyTable KeyTable[MAX_KEY_TABLE];
a884847a 92} SKeyManagement, * PSKeyManagement;
5449c685
FB
93
94/*--------------------- Export Types ------------------------------*/
95
96/*--------------------- Export Macros ------------------------------*/
97
98/*--------------------- Export Classes ----------------------------*/
99
100/*--------------------- Export Variables --------------------------*/
101
102/*--------------------- Export Functions --------------------------*/
5449c685 103
412b2d08 104void KeyvInitTable(PSKeyManagement pTable, unsigned long dwIoBase);
5449c685 105
7b6a0013 106bool KeybGetKey(
3a215e0f 107 PSKeyManagement pTable,
2989e96f 108 unsigned char *pbyBSSID,
0f4c60d6 109 unsigned long dwKeyIndex,
3cdec554 110 PSKeyItem *pKey
5449c685
FB
111 );
112
7b6a0013 113bool KeybSetKey(
5449c685 114 PSKeyManagement pTable,
2989e96f 115 unsigned char *pbyBSSID,
0f4c60d6 116 unsigned long dwKeyIndex,
e3fd16d0 117 unsigned long uKeyLength,
5449c685 118 PQWORD pKeyRSC,
2989e96f 119 unsigned char *pbyKey,
3fc9b584 120 unsigned char byKeyDecMode,
412b2d08 121 unsigned long dwIoBase,
3fc9b584 122 unsigned char byLocalID
5449c685
FB
123 );
124
7b6a0013 125bool KeybSetDefaultKey(
5449c685 126 PSKeyManagement pTable,
0f4c60d6 127 unsigned long dwKeyIndex,
e3fd16d0 128 unsigned long uKeyLength,
5449c685 129 PQWORD pKeyRSC,
2989e96f 130 unsigned char *pbyKey,
3fc9b584 131 unsigned char byKeyDecMode,
412b2d08 132 unsigned long dwIoBase,
3fc9b584 133 unsigned char byLocalID
5449c685
FB
134 );
135
7b6a0013 136bool KeybRemoveKey(
5449c685 137 PSKeyManagement pTable,
2989e96f 138 unsigned char *pbyBSSID,
0f4c60d6 139 unsigned long dwKeyIndex,
412b2d08 140 unsigned long dwIoBase
5449c685
FB
141 );
142
7b6a0013 143bool KeybGetTransmitKey(
3a215e0f 144 PSKeyManagement pTable,
2989e96f 145 unsigned char *pbyBSSID,
0f4c60d6 146 unsigned long dwKeyType,
3cdec554 147 PSKeyItem *pKey
5449c685
FB
148 );
149
7b6a0013 150bool KeybCheckPairewiseKey(
3a215e0f 151 PSKeyManagement pTable,
3cdec554 152 PSKeyItem *pKey
5449c685
FB
153 );
154
7b6a0013 155bool KeybRemoveAllKey(
5449c685 156 PSKeyManagement pTable,
2989e96f 157 unsigned char *pbyBSSID,
412b2d08 158 unsigned long dwIoBase
5449c685
FB
159 );
160
6b35b7b3 161void KeyvRemoveWEPKey(
5449c685 162 PSKeyManagement pTable,
0f4c60d6 163 unsigned long dwKeyIndex,
412b2d08 164 unsigned long dwIoBase
5449c685
FB
165 );
166
6b35b7b3 167void KeyvRemoveAllWEPKey(
5449c685 168 PSKeyManagement pTable,
412b2d08 169 unsigned long dwIoBase
5449c685
FB
170 );
171
7b6a0013 172bool KeybSetAllGroupKey (
5449c685 173 PSKeyManagement pTable,
0f4c60d6 174 unsigned long dwKeyIndex,
e3fd16d0 175 unsigned long uKeyLength,
5449c685 176 PQWORD pKeyRSC,
2989e96f 177 unsigned char *pbyKey,
3fc9b584 178 unsigned char byKeyDecMode,
412b2d08 179 unsigned long dwIoBase,
3fc9b584 180 unsigned char byLocalID
5449c685
FB
181 );
182
5449c685
FB
183#endif // __KEY_H__
184