⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wpa.h

📁 ralink最新rt3070 usb wifi 无线网卡驱动程序
💻 H
字号:
/* ************************************************************************* * 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))// 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 formattypedef	struct PACKED _KEY_INFO{#ifdef RT_BIG_ENDIAN	UCHAR	KeyAck:1;    UCHAR	Install:1;    UCHAR	KeyIndex:2;    UCHAR	KeyType:1;    UCHAR	KeyDescVer:3;    UCHAR	Rsvd:3;    UCHAR	EKD_DL:1;		// EKD for AP; DL for STA    UCHAR	Request:1;    UCHAR	Error:1;    UCHAR	Secure:1;    UCHAR	KeyMic:1;#else	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;#endif	}	KEY_INFO, *PKEY_INFO;// EAPOL Key descriptor formattypedef	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 83typedef struct PACKED _GTK_ENCAP{#ifndef RT_BIG_ENDIAN    UCHAR               Kid:2;    UCHAR               tx:1;    UCHAR               rsv:5;    UCHAR               rsv1;#else    UCHAR               rsv:5;    UCHAR               tx:1;    UCHAR               Kid:2;    UCHAR               rsv1;    	#endif    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 WPA1typedef struct PACKED _RSNIE {    UCHAR   oui[4];    USHORT  version;    UCHAR   mcast[4];    USHORT  ucount;    struct PACKED {        UCHAR oui[4];    }ucast[1];} RSNIE, *PRSNIE;// For WPA2typedef struct PACKED _RSNIE2 {    USHORT  version;    UCHAR   mcast[4];    USHORT  ucount;    struct PACKED {        UCHAR oui[4];    }ucast[1];} RSNIE2, *PRSNIE2;// AKM Suitetypedef struct PACKED _RSNIE_AUTH {    USHORT acount;    struct PACKED {        UCHAR oui[4];    }auth[1];} RSNIE_AUTH,*PRSNIE_AUTH;typedef	union PACKED _RSN_CAPABILITIES	{	struct	PACKED {#ifdef RT_BIG_ENDIAN        USHORT		Rsvd:10;        USHORT		GTKSA_R_Counter:2;        USHORT		PTKSA_R_Counter:2;        USHORT		No_Pairwise:1;		USHORT		PreAuth:1;#else        USHORT		PreAuth:1;		USHORT		No_Pairwise:1;		USHORT		PTKSA_R_Counter:2;		USHORT		GTKSA_R_Counter:2;		USHORT		Rsvd:10;#endif	}	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 ittypedef	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 typestypedef struct PACKED _CIPHER_SUITE_STRUCT	{	UCHAR		Oui[3];	UCHAR		Type;}	CIPHER_SUITE_STRUCT, *PCIPHER_SUITE_STRUCT;// Authentication and Key Management suite selectortypedef struct PACKED _AKM_SUITE_STRUCT	{	UCHAR		Oui[3];	UCHAR		Type;}	AKM_SUITE_STRUCT, *PAKM_SUITE_STRUCT;// RSN capabilitytypedef struct	PACKED _RSN_CAPABILITY	{	USHORT		Rsv:10;	USHORT		GTKSAReplayCnt:2;	USHORT		PTKSAReplayCnt:2;	USHORT		NoPairwise:1;	USHORT		PreAuth:1;}	RSN_CAPABILITY, *PRSN_CAPABILITY;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -