]> Pileus Git - ~andy/linux/blobdiff - drivers/staging/rt2870/wpa.h
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
[~andy/linux] / drivers / staging / rt2870 / wpa.h
index 355309a68632ce4dd85af794c30cd6d438dac15e..71250722414647983d79bac575e50727307a93e6 100644 (file)
@@ -1,328 +1 @@
-/*
- *************************************************************************
- * Ralink Tech Inc.
- * 5F., No.36, Taiyuan St., Jhubei City,
- * Hsinchu County 302,
- * Taiwan, R.O.C.
- *
- * (c) Copyright 2002-2007, Ralink Technology, Inc.
- *
- * This program is free software; you can redistribute it and/or modify  *
- * it under the terms of the GNU General Public License as published by  *
- * the Free Software Foundation; either version 2 of the License, or     *
- * (at your option) any later version.                                   *
- *                                                                       *
- * This program is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- * GNU General Public License for more details.                          *
- *                                                                       *
- * You should have received a copy of the GNU General Public License     *
- * along with this program; if not, write to the                         *
- * Free Software Foundation, Inc.,                                       *
- * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- *                                                                       *
- *************************************************************************
-
-       Module Name:
-       wpa.h
-
-       Abstract:
-
-       Revision History:
-       Who                     When                    What
-       --------        ----------              ----------------------------------------------
-       Name            Date                    Modification logs
-*/
-
-#ifndef        __WPA_H__
-#define        __WPA_H__
-
-// EAPOL Key descripter frame format related length
-#define LEN_KEY_DESC_NONCE                     32
-#define LEN_KEY_DESC_IV                                16
-#define LEN_KEY_DESC_RSC                       8
-#define LEN_KEY_DESC_ID                                8
-#define LEN_KEY_DESC_REPLAY                    8
-#define LEN_KEY_DESC_MIC                       16
-
-// The length is the EAPoL-Key frame except key data field.
-// Please refer to 802.11i-2004 ,Figure 43u in p.78
-#define LEN_EAPOL_KEY_MSG                      (sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE)
-
-// EAP Code Type.
-#define EAP_CODE_REQUEST       1
-#define EAP_CODE_RESPONSE      2
-#define EAP_CODE_SUCCESS    3
-#define EAP_CODE_FAILURE    4
-
-// EAPOL frame Protocol Version
-#define        EAPOL_VER                                       1
-#define        EAPOL_VER2                                      2
-
-// EAPOL-KEY Descriptor Type
-#define        WPA1_KEY_DESC                           0xfe
-#define WPA2_KEY_DESC               0x02
-
-// Key Descriptor Version of Key Information
-#define        DESC_TYPE_TKIP                          1
-#define        DESC_TYPE_AES                           2
-#define DESC_TYPE_MESH                         3
-
-#define LEN_MSG1_2WAY               0x7f
-#define MAX_LEN_OF_EAP_HS           256
-
-#define LEN_MASTER_KEY                         32
-
-// EAPOL EK, MK
-#define LEN_EAP_EK                                     16
-#define LEN_EAP_MICK                           16
-#define LEN_EAP_KEY                                    ((LEN_EAP_EK)+(LEN_EAP_MICK))
-// TKIP key related
-#define LEN_PMKID                                      16
-#define LEN_TKIP_EK                                    16
-#define LEN_TKIP_RXMICK                                8
-#define LEN_TKIP_TXMICK                                8
-#define LEN_AES_EK                                     16
-#define LEN_AES_KEY                                    LEN_AES_EK
-#define LEN_TKIP_KEY                           ((LEN_TKIP_EK)+(LEN_TKIP_RXMICK)+(LEN_TKIP_TXMICK))
-#define TKIP_AP_TXMICK_OFFSET          ((LEN_EAP_KEY)+(LEN_TKIP_EK))
-#define TKIP_AP_RXMICK_OFFSET          (TKIP_AP_TXMICK_OFFSET+LEN_TKIP_TXMICK)
-#define TKIP_GTK_LENGTH                                ((LEN_TKIP_EK)+(LEN_TKIP_RXMICK)+(LEN_TKIP_TXMICK))
-#define LEN_PTK                                                ((LEN_EAP_KEY)+(LEN_TKIP_KEY))
-#define MIN_LEN_OF_GTK                         5
-
-// RSN IE Length definition
-#define MAX_LEN_OF_RSNIE               90
-#define MIN_LEN_OF_RSNIE               8
-
-//EAP Packet Type
-#define        EAPPacket               0
-#define        EAPOLStart              1
-#define        EAPOLLogoff             2
-#define        EAPOLKey                3
-#define        EAPOLASFAlert   4
-#define        EAPTtypeMax             5
-
-#define        EAPOL_MSG_INVALID       0
-#define        EAPOL_PAIR_MSG_1        1
-#define        EAPOL_PAIR_MSG_2        2
-#define        EAPOL_PAIR_MSG_3        3
-#define        EAPOL_PAIR_MSG_4        4
-#define        EAPOL_GROUP_MSG_1       5
-#define        EAPOL_GROUP_MSG_2       6
-
-#define PAIRWISEKEY                                    1
-#define GROUPKEY                                       0
-
-// Retry timer counter initial value
-#define PEER_MSG1_RETRY_TIMER_CTR           0
-#define PEER_MSG3_RETRY_TIMER_CTR           10
-#define GROUP_MSG1_RETRY_TIMER_CTR          20
-
-
-#define EAPOL_START_DISABLE                                    0
-#define EAPOL_START_PSK                                                1
-#define EAPOL_START_1X                                         2
-
-#define MIX_CIPHER_WPA_TKIP_ON(x)       (((x) & 0x08) != 0)
-#define MIX_CIPHER_WPA_AES_ON(x)        (((x) & 0x04) != 0)
-#define MIX_CIPHER_WPA2_TKIP_ON(x)      (((x) & 0x02) != 0)
-#define MIX_CIPHER_WPA2_AES_ON(x)       (((x) & 0x01) != 0)
-
-#define ROUND_UP(__x, __y) \
-       (((ULONG)((__x)+((__y)-1))) & ((ULONG)~((__y)-1)))
-
-#define        ADD_ONE_To_64BIT_VAR(_V)                \
-{                                                                              \
-       UCHAR   cnt = LEN_KEY_DESC_REPLAY;      \
-       do                                                                      \
-       {                                                                       \
-               cnt--;                                                  \
-               _V[cnt]++;                                              \
-               if (cnt == 0)                                   \
-                       break;                                          \
-       }while (_V[cnt] == 0);                          \
-}
-
-#define IS_WPA_CAPABILITY(a)       (((a) >= Ndis802_11AuthModeWPA) && ((a) <= Ndis802_11AuthModeWPA1PSKWPA2PSK))
-
-// EAPOL Key Information definition within Key descriptor format
-typedef        struct PACKED _KEY_INFO
-{
-       UCHAR   KeyMic:1;
-       UCHAR   Secure:1;
-       UCHAR   Error:1;
-       UCHAR   Request:1;
-       UCHAR   EKD_DL:1;       // EKD for AP; DL for STA
-       UCHAR   Rsvd:3;
-       UCHAR   KeyDescVer:3;
-       UCHAR   KeyType:1;
-       UCHAR   KeyIndex:2;
-       UCHAR   Install:1;
-       UCHAR   KeyAck:1;
-}      KEY_INFO, *PKEY_INFO;
-
-// EAPOL Key descriptor format
-typedef        struct PACKED _KEY_DESCRIPTER
-{
-       UCHAR           Type;
-       KEY_INFO        KeyInfo;
-       UCHAR           KeyLength[2];
-       UCHAR           ReplayCounter[LEN_KEY_DESC_REPLAY];
-       UCHAR           KeyNonce[LEN_KEY_DESC_NONCE];
-       UCHAR           KeyIv[LEN_KEY_DESC_IV];
-       UCHAR           KeyRsc[LEN_KEY_DESC_RSC];
-       UCHAR           KeyId[LEN_KEY_DESC_ID];
-       UCHAR           KeyMic[LEN_KEY_DESC_MIC];
-       UCHAR           KeyDataLen[2];
-       UCHAR           KeyData[MAX_LEN_OF_RSNIE];
-}      KEY_DESCRIPTER, *PKEY_DESCRIPTER;
-
-typedef        struct PACKED _EAPOL_PACKET
-{
-       UCHAR                           ProVer;
-       UCHAR                           ProType;
-       UCHAR                           Body_Len[2];
-       KEY_DESCRIPTER          KeyDesc;
-}      EAPOL_PACKET, *PEAPOL_PACKET;
-
-//802.11i D10 page 83
-typedef struct PACKED _GTK_ENCAP
-{
-    UCHAR               Kid:2;
-    UCHAR               tx:1;
-    UCHAR               rsv:5;
-    UCHAR               rsv1;
-    UCHAR               GTK[TKIP_GTK_LENGTH];
-}   GTK_ENCAP, *PGTK_ENCAP;
-
-typedef struct PACKED _KDE_ENCAP
-{
-    UCHAR               Type;
-    UCHAR               Len;
-    UCHAR               OUI[3];
-    UCHAR               DataType;
-    GTK_ENCAP      GTKEncap;
-}   KDE_ENCAP, *PKDE_ENCAP;
-
-// For WPA1
-typedef struct PACKED _RSNIE {
-    UCHAR   oui[4];
-    USHORT  version;
-    UCHAR   mcast[4];
-    USHORT  ucount;
-    struct PACKED {
-        UCHAR oui[4];
-    }ucast[1];
-} RSNIE, *PRSNIE;
-
-// For WPA2
-typedef struct PACKED _RSNIE2 {
-    USHORT  version;
-    UCHAR   mcast[4];
-    USHORT  ucount;
-    struct PACKED {
-        UCHAR oui[4];
-    }ucast[1];
-} RSNIE2, *PRSNIE2;
-
-// AKM Suite
-typedef struct PACKED _RSNIE_AUTH {
-    USHORT acount;
-    struct PACKED {
-        UCHAR oui[4];
-    }auth[1];
-} RSNIE_AUTH,*PRSNIE_AUTH;
-
-typedef        union PACKED _RSN_CAPABILITIES  {
-       struct  PACKED {
-        USHORT         PreAuth:1;
-               USHORT          No_Pairwise:1;
-               USHORT          PTKSA_R_Counter:2;
-               USHORT          GTKSA_R_Counter:2;
-               USHORT          Rsvd:10;
-       }       field;
-       USHORT                  word;
-}      RSN_CAPABILITIES, *PRSN_CAPABILITIES;
-
-typedef struct PACKED _EAP_HDR {
-    UCHAR   ProVer;
-    UCHAR   ProType;
-    UCHAR   Body_Len[2];
-    UCHAR   code;
-    UCHAR   identifier;
-    UCHAR   length[2]; // including code and identifier, followed by length-2 octets of data
-} EAP_HDR, *PEAP_HDR;
-
-// For supplicant state machine states. 802.11i Draft 4.1, p. 97
-// We simplified it
-typedef        enum    _WpaState
-{
-       SS_NOTUSE,                              // 0
-       SS_START,                               // 1
-       SS_WAIT_MSG_3,                  // 2
-       SS_WAIT_GROUP,                  // 3
-       SS_FINISH,                      // 4
-       SS_KEYUPDATE,                   // 5
-}      WPA_STATE;
-
-//
-//     The definition of the cipher combination
-//
-//      bit3   bit2  bit1   bit0
-//     +------------+------------+
-//     |         WPA    |         WPA2   |
-//     +------+-----+------+-----+
-//     | TKIP | AES | TKIP | AES |
-//     |       0  |  1  |   1  |  0  | -> 0x06
-//     |       0  |  1  |   1  |  1  | -> 0x07
-//     |       1  |  0  |   0  |  1  | -> 0x09
-//     |       1  |  0  |   1  |  1  | -> 0x0B
-//     |       1  |  1  |   0  |  1  | -> 0x0D
-//     |       1  |  1  |   1  |  0  | -> 0x0E
-//     |       1  |  1  |   1  |  1  | -> 0x0F
-//     +------+-----+------+-----+
-//
-typedef        enum    _WpaMixPairCipher
-{
-       MIX_CIPHER_NOTUSE                       = 0x00,
-       WPA_NONE_WPA2_TKIPAES           = 0x03,         // WPA2-TKIPAES
-       WPA_AES_WPA2_TKIP                       = 0x06,
-       WPA_AES_WPA2_TKIPAES            = 0x07,
-       WPA_TKIP_WPA2_AES                       = 0x09,
-       WPA_TKIP_WPA2_TKIPAES           = 0x0B,
-       WPA_TKIPAES_WPA2_NONE           = 0x0C,         // WPA-TKIPAES
-       WPA_TKIPAES_WPA2_AES            = 0x0D,
-       WPA_TKIPAES_WPA2_TKIP           = 0x0E,
-       WPA_TKIPAES_WPA2_TKIPAES        = 0x0F,
-}      WPA_MIX_PAIR_CIPHER;
-
-typedef struct PACKED _RSN_IE_HEADER_STRUCT    {
-       UCHAR           Eid;
-       UCHAR           Length;
-       USHORT          Version;        // Little endian format
-}      RSN_IE_HEADER_STRUCT, *PRSN_IE_HEADER_STRUCT;
-
-// Cipher suite selector types
-typedef struct PACKED _CIPHER_SUITE_STRUCT     {
-       UCHAR           Oui[3];
-       UCHAR           Type;
-}      CIPHER_SUITE_STRUCT, *PCIPHER_SUITE_STRUCT;
-
-// Authentication and Key Management suite selector
-typedef struct PACKED _AKM_SUITE_STRUCT        {
-       UCHAR           Oui[3];
-       UCHAR           Type;
-}      AKM_SUITE_STRUCT, *PAKM_SUITE_STRUCT;
-
-// RSN capability
-typedef struct PACKED _RSN_CAPABILITY  {
-       USHORT          Rsv:10;
-       USHORT          GTKSAReplayCnt:2;
-       USHORT          PTKSAReplayCnt:2;
-       USHORT          NoPairwise:1;
-       USHORT          PreAuth:1;
-}      RSN_CAPABILITY, *PRSN_CAPABILITY;
-
-#endif
+#include "../rt2860/wpa.h"