linux/drivers/staging/vt6655/key.h
<<
>>
Prefs
   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
  30#ifndef __KEY_H__
  31#define __KEY_H__
  32
  33#include "ttype.h"
  34#include "tether.h"
  35#include "80211mgr.h"
  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{
  60    bool bKeyValid;
  61    unsigned long uKeyLength;
  62    unsigned char abyKey[MAX_KEY_LEN];
  63    QWORD       KeyRSC;
  64    unsigned long dwTSC47_16;
  65    unsigned short wTSC15_0;
  66    unsigned char byCipherSuite;
  67    unsigned char byReserved0;
  68    unsigned long dwKeyIndex;
  69    void *pvKeyTable;
  70} SKeyItem, *PSKeyItem; //64
  71
  72typedef struct tagSKeyTable
  73{
  74    unsigned char abyBSSID[ETH_ALEN];  //6
  75    unsigned char byReserved0[2];              //8
  76    SKeyItem    PairwiseKey;
  77    SKeyItem    GroupKey[MAX_GROUP_KEY]; //64*5 = 320, 320+8=328
  78    unsigned long dwGTKeyIndex;            // GroupTransmitKey Index
  79    bool bInUse;
  80    //2006-1116-01,<Modify> by NomadZhao
  81    //unsigned short wKeyCtl;
  82    //bool bSoftWEP;
  83    bool bSoftWEP;
  84    unsigned short wKeyCtl;      // for address of wKeyCtl at align 4
  85
  86    unsigned char byReserved1[6];
  87} SKeyTable, *PSKeyTable; //348
  88
  89typedef struct tagSKeyManagement
  90{
  91    SKeyTable   KeyTable[MAX_KEY_TABLE];
  92} SKeyManagement, * PSKeyManagement;
  93
  94/*---------------------  Export Types  ------------------------------*/
  95
  96/*---------------------  Export Macros ------------------------------*/
  97
  98/*---------------------  Export Classes  ----------------------------*/
  99
 100/*---------------------  Export Variables  --------------------------*/
 101
 102/*---------------------  Export Functions  --------------------------*/
 103
 104void KeyvInitTable(PSKeyManagement pTable, unsigned long dwIoBase);
 105
 106bool KeybGetKey(
 107    PSKeyManagement pTable,
 108    unsigned char *pbyBSSID,
 109    unsigned long dwKeyIndex,
 110    PSKeyItem       *pKey
 111    );
 112
 113bool KeybSetKey(
 114    PSKeyManagement pTable,
 115    unsigned char *pbyBSSID,
 116    unsigned long dwKeyIndex,
 117    unsigned long uKeyLength,
 118    PQWORD          pKeyRSC,
 119    unsigned char *pbyKey,
 120    unsigned char byKeyDecMode,
 121    unsigned long dwIoBase,
 122    unsigned char byLocalID
 123    );
 124
 125bool KeybSetDefaultKey(
 126    PSKeyManagement pTable,
 127    unsigned long dwKeyIndex,
 128    unsigned long uKeyLength,
 129    PQWORD          pKeyRSC,
 130    unsigned char *pbyKey,
 131    unsigned char byKeyDecMode,
 132    unsigned long dwIoBase,
 133    unsigned char byLocalID
 134    );
 135
 136bool KeybRemoveKey(
 137    PSKeyManagement pTable,
 138    unsigned char *pbyBSSID,
 139    unsigned long dwKeyIndex,
 140    unsigned long dwIoBase
 141    );
 142
 143bool KeybGetTransmitKey(
 144    PSKeyManagement pTable,
 145    unsigned char *pbyBSSID,
 146    unsigned long dwKeyType,
 147    PSKeyItem       *pKey
 148    );
 149
 150bool KeybCheckPairewiseKey(
 151    PSKeyManagement pTable,
 152    PSKeyItem       *pKey
 153    );
 154
 155bool KeybRemoveAllKey(
 156    PSKeyManagement pTable,
 157    unsigned char *pbyBSSID,
 158    unsigned long dwIoBase
 159    );
 160
 161void KeyvRemoveWEPKey(
 162    PSKeyManagement pTable,
 163    unsigned long dwKeyIndex,
 164    unsigned long dwIoBase
 165    );
 166
 167void KeyvRemoveAllWEPKey(
 168    PSKeyManagement pTable,
 169    unsigned long dwIoBase
 170    );
 171
 172bool KeybSetAllGroupKey (
 173    PSKeyManagement pTable,
 174    unsigned long dwKeyIndex,
 175    unsigned long uKeyLength,
 176    PQWORD          pKeyRSC,
 177    unsigned char *pbyKey,
 178    unsigned char byKeyDecMode,
 179    unsigned long dwIoBase,
 180    unsigned char byLocalID
 181    );
 182
 183#endif // __KEY_H__
 184
 185