diff options
Diffstat (limited to 'wilink_6_1/stad/src/Connection_Managment/admCtrlWpa2.h')
-rw-r--r-- | wilink_6_1/stad/src/Connection_Managment/admCtrlWpa2.h | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/wilink_6_1/stad/src/Connection_Managment/admCtrlWpa2.h b/wilink_6_1/stad/src/Connection_Managment/admCtrlWpa2.h new file mode 100644 index 0000000..b8fa03d --- /dev/null +++ b/wilink_6_1/stad/src/Connection_Managment/admCtrlWpa2.h @@ -0,0 +1,190 @@ +/* + * admCtrlWpa2.h + * + * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name Texas Instruments nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** \file admCtrlWpa2.h + * \brief Admission control header file for WPA2 + * + * \see admCtrl.c and admCtrlWpa2.c + */ + +/**************************************************************************** + * * + * MODULE: Admission Control * + * PURPOSE: Admission Control Header file for WPA2 * + * * + ****************************************************************************/ + +#ifndef _ADM_CTRL_WPA2_H_ +#define _ADM_CTRL_WPA2_H_ + + +/* Constants */ + +/* Enumerations */ + +/* Typedefs */ + +/* WPA2 configuration parameters: */ +/* defined here only for debugging purposes; should be moved from here */ + +#define WPA2_PRE_AUTHENTICATION_SUPPORT 1 +#define WPA2_PMKID_CACHE_SIZE 32 +#define WPA2_CANDIDATE_LIST_MAX_SIZE 16 + +/* RSN admission control prototypes */ + + +/* Structures */ + + + +#define MAX_WPA2_UNICAST_SUITES (TWD_CIPHER_WEP104+1) +#define MAX_WPA2_KEY_MNG_SUITES (RSN_KEY_MNG_XCC+1) + +/* Cipher suites for group key sent in RSN IE are: WEP40, WEP104, TKIP, CCCMP */ +#define GRP_CIPHER_MAXNO_IN_RSNIE 4 + +/* Cipher suites for unicast key sent in RSN IE are TKIP, CCMP, "use Group key"*/ +#define UNICAST_CIPHER_MAXNO_IN_RSNIE 3 + +/* OUIs for cipher suites and appropriated values of cipherSuite_e (paramout.h file) + * + * 00-0F-AC-0 Use group cipher suite RSN_CIPHER_NONE + * 00-0F-AC-1 WEP-40 RSN_CIPHER_WEP + * 00-0F-AC-2 TKIP RSN_CIPHER_TKIP + * 00-0F-AC-3 Reserved RSN_CIPHER_WRAP not used for WPA2 + * 00-0F-AC-4 4 RSN_CIPHER_CCMP + * 00-0F-AC-5 WEP-104 RSN_CIPHER_WEP104 + * 00-0F-AC 6 reserved 6 to 255 RSN_CIPHER_CKIP - not used for WPA2 + * + */ + +/* Key management suites (Authentication and Key Management Protocol - AKMP) */ +/* received in RSN IE */ +#define KEY_MGMT_SUITE_MAXNO_IN_RSN_IE 2 + +/* OUIs for key management +* +* 00-0F-AC-00 Reserved +* 00-0F-AC-01 802.1X +* 00-0F-AC-02 PSK +* 00-0F-AC-03 reserved from 3 to 255 +*/ + +/* WPA2 key management suites */ +#define WPA2_IE_KEY_MNG_NONE 0 +#define WPA2_IE_KEY_MNG_801_1X 1 +#define WPA2_IE_KEY_MNG_PSK_801_1X 2 +#define WPA2_IE_KEY_MNG_CCKM 3 +#define WPA2_IE_KEY_MNG_NA 4 + + +#define WPA2_OUI_MAX_VERSION 0x1 +#define WPA2_OUI_DEF_TYPE 0x1 +#define WPA2_OUI_MAX_TYPE 0x2 + +#define WPA2_PRE_AUTH_CAPABILITY_MASK 0x0001 /* bit 0 */ +#define WPA2_PRE_AUTH_CAPABILITY_SHIFT 0 +#define WPA2_GROUP_4_UNICAST_CAPABILITY_MASK 0x0002 /* bit 1 No Pairwise */ +#define WPA2_GROUP_4_UNICAST_CAPABILITY_SHIFT 1 +#define WPA2_PTK_REPLAY_COUNTERS_CAPABILITY_MASK 0x000c /* bit 2 and 3 */ +#define WPA2_PTK_REPLAY_COUNTERS_CAPABILITY_SHIFT 2 +#define WPA2_GTK_REPLAY_COUNTERS_CAPABILITY_MASK 0x0030 /* bit 4 and 5 */ +#define WPA2_GTK_REPLAY_COUNTERS_CAPABILITY_SHIFT 4 + /* bit 6 - 15 - reserved */ +#define WPA2_IE_MIN_LENGTH 4 +#define WPA2_IE_GROUP_SUITE_LENGTH 8 +#define WPA2_IE_MIN_PAIRWISE_SUITE_LENGTH 14 +#define WPA2_IE_MIN_DEFAULT_LENGTH 24 +#define WPA2_IE_MIN_KEY_MNG_SUITE_LENGTH(pairwiseCnt) (10+4*pairwiseCnt) + + + + +/* WPA2 IE (RSN IE) packet structure */ +/* This structure is used for outgoing packets, i.e. for association request */ +/* For incoming packets (Beacon and Probe response from an AP) stucture of */ +/* dot11_RSN_t type is used as more common stucture */ +typedef struct +{ + + TI_UINT8 elementid; /* WPA2 IE (RSN IE) id is 0x30 */ + TI_UINT8 length; + TI_UINT16 version; + TI_UINT8 groupSuite[4]; /* OUI for broadcast suite */ + TI_UINT16 pairwiseSuiteCnt; + TI_UINT8 pairwiseSuite[4]; /* OUI for 1 unicast suite */ + TI_UINT16 authKeyMngSuiteCnt; + TI_UINT8 authKeyMngSuite[4]; /* OUI for 1 key mgmt suite */ + TI_UINT16 capabilities; + TI_UINT16 pmkIdCnt; /* only one PMKID is supported per AP */ + TI_UINT8 pmkId[PMKID_VALUE_SIZE]; +} wpa2IePacket_t; + + +/* WPA2 data parsed from RSN info element */ +typedef struct +{ + + ECipherSuite broadcastSuite; + TI_UINT16 unicastSuiteCnt; + ECipherSuite unicastSuite[MAX_WPA2_UNICAST_SUITES]; + TI_UINT16 KeyMngSuiteCnt; + TI_UINT8 KeyMngSuite[MAX_WPA2_KEY_MNG_SUITES]; + TI_UINT8 preAuthentication; + TI_UINT8 bcastForUnicatst; + TI_UINT8 ptkReplayCounters; + TI_UINT8 gtkReplayCounters; + TI_UINT16 pmkIdCnt; + TI_UINT8 pmkId[PMKID_VALUE_SIZE]; +} wpa2IeData_t; + + + +/* External data definitions */ + +/* External functions definitions */ + +/* Function prototypes */ + +TI_STATUS admCtrlWpa2_config(admCtrl_t *pAdmCtrl); + +TI_STATUS admCtrlWpa2_getInfoElement(admCtrl_t *pAdmCtrl, TI_UINT8 *pIe, TI_UINT32 *pLength); + +TI_STATUS admCtrlWpa2_setSite(admCtrl_t *pAdmCtrl, TRsnData *pRsnData, TI_UINT8 *pAssocIe, TI_UINT8 *pAssocIeLen); + +TI_STATUS admCtrlWpa2_evalSite(admCtrl_t *pAdmCtrl, TRsnData *pRsnData, TRsnSiteParams *pRsnSiteParams, TI_UINT32 *pEvaluation); + +void admCtrlWpa2_preAuthTimerExpire(TI_HANDLE hadmCtrl, TI_BOOL bTwdInitOccured); + +#endif /* _ADM_CTRL_WPA_H_*/ |