164064216a8433360745f69edddce19a606659163The Android Open Source Project/** \file admCtrlWpa2.h 264064216a8433360745f69edddce19a606659163The Android Open Source Project * \brief Admission control header file for WPA2 364064216a8433360745f69edddce19a606659163The Android Open Source Project * 464064216a8433360745f69edddce19a606659163The Android Open Source Project * \see admCtrl.c and admCtrlWpa2.c 564064216a8433360745f69edddce19a606659163The Android Open Source Project */ 664064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 764064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 864064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 964064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved. |** 1164064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1264064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without |** 1364064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions |** 1464064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met: |** 1564064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1664064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions of source code must retain the above copyright |** 1764064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer. |** 1864064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions in binary form must reproduce the above copyright |** 1964064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer in |** 2064064216a8433360745f69edddce19a606659163The Android Open Source Project**| the documentation and/or other materials provided with the |** 2164064216a8433360745f69edddce19a606659163The Android Open Source Project**| distribution. |** 2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Neither the name Texas Instruments nor the names of its |** 2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| contributors may be used to endorse or promote products derived |** 2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| from this software without specific prior written permission. |** 2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 3264064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 3364064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 3464064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 3564064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 3664064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 3764064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 3864064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 3964064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/ 4064064216a8433360745f69edddce19a606659163The Android Open Source Project 4164064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 4264064216a8433360745f69edddce19a606659163The Android Open Source Project * * 4364064216a8433360745f69edddce19a606659163The Android Open Source Project * MODULE: Admission Control * 4464064216a8433360745f69edddce19a606659163The Android Open Source Project * PURPOSE: Admission Control Header file for WPA2 * 4564064216a8433360745f69edddce19a606659163The Android Open Source Project * * 4664064216a8433360745f69edddce19a606659163The Android Open Source Project ****************************************************************************/ 4764064216a8433360745f69edddce19a606659163The Android Open Source Project 4864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef _ADM_CTRL_WPA2_H_ 4964064216a8433360745f69edddce19a606659163The Android Open Source Project#define _ADM_CTRL_WPA2_H_ 5064064216a8433360745f69edddce19a606659163The Android Open Source Project 5164064216a8433360745f69edddce19a606659163The Android Open Source Project 5264064216a8433360745f69edddce19a606659163The Android Open Source Project/* Constants */ 5364064216a8433360745f69edddce19a606659163The Android Open Source Project 5464064216a8433360745f69edddce19a606659163The Android Open Source Project/* Enumerations */ 5564064216a8433360745f69edddce19a606659163The Android Open Source Project 5664064216a8433360745f69edddce19a606659163The Android Open Source Project/* Typedefs */ 5764064216a8433360745f69edddce19a606659163The Android Open Source Project 5864064216a8433360745f69edddce19a606659163The Android Open Source Project/* WPA2 configuration parameters: */ 5964064216a8433360745f69edddce19a606659163The Android Open Source Project/* defined here only for debugging purposes; should be moved from here */ 6064064216a8433360745f69edddce19a606659163The Android Open Source Project 6164064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_PRE_AUTHENTICATION_SUPPORT 1 6264064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_PMKID_CACHE_SIZE 32 6364064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_CANDIDATE_LIST_MAX_SIZE 16 6464064216a8433360745f69edddce19a606659163The Android Open Source Project 6564064216a8433360745f69edddce19a606659163The Android Open Source Project/* RSN admission control prototypes */ 6664064216a8433360745f69edddce19a606659163The Android Open Source Project 6764064216a8433360745f69edddce19a606659163The Android Open Source Project 6864064216a8433360745f69edddce19a606659163The Android Open Source Project/* Structures */ 6964064216a8433360745f69edddce19a606659163The Android Open Source Project 7064064216a8433360745f69edddce19a606659163The Android Open Source Project 7164064216a8433360745f69edddce19a606659163The Android Open Source Project 7264064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_WPA2_UNICAST_SUITES (RSN_CIPHER_WEP104+1) 7364064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_WPA2_KEY_MNG_SUITES (RSN_KEY_MNG_EXC+1) 7464064216a8433360745f69edddce19a606659163The Android Open Source Project 7564064216a8433360745f69edddce19a606659163The Android Open Source Project/* Cipher suites for group key sent in RSN IE are: WEP40, WEP104, TKIP, CCCMP */ 7664064216a8433360745f69edddce19a606659163The Android Open Source Project#define GRP_CIPHER_MAXNO_IN_RSNIE 4 7764064216a8433360745f69edddce19a606659163The Android Open Source Project 7864064216a8433360745f69edddce19a606659163The Android Open Source Project/* Cipher suites for unicast key sent in RSN IE are TKIP, CCMP, "use Group key"*/ 7964064216a8433360745f69edddce19a606659163The Android Open Source Project#define UNICAST_CIPHER_MAXNO_IN_RSNIE 3 8064064216a8433360745f69edddce19a606659163The Android Open Source Project 8164064216a8433360745f69edddce19a606659163The Android Open Source Project/* OUIs for cipher suites and appropriated values of cipherSuite_e (paramout.h file) 8264064216a8433360745f69edddce19a606659163The Android Open Source Project * 8364064216a8433360745f69edddce19a606659163The Android Open Source Project * 00-0F-AC-0 Use group cipher suite RSN_CIPHER_NONE 8464064216a8433360745f69edddce19a606659163The Android Open Source Project * 00-0F-AC-1 WEP-40 RSN_CIPHER_WEP 8564064216a8433360745f69edddce19a606659163The Android Open Source Project * 00-0F-AC-2 TKIP RSN_CIPHER_TKIP 8664064216a8433360745f69edddce19a606659163The Android Open Source Project * 00-0F-AC-3 Reserved RSN_CIPHER_WRAP not used for WPA2 8764064216a8433360745f69edddce19a606659163The Android Open Source Project * 00-0F-AC-4 4 RSN_CIPHER_CCMP 8864064216a8433360745f69edddce19a606659163The Android Open Source Project * 00-0F-AC-5 WEP-104 RSN_CIPHER_WEP104 8964064216a8433360745f69edddce19a606659163The Android Open Source Project * 00-0F-AC 6 reserved 6 to 255 RSN_CIPHER_CKIP - not used for WPA2 9064064216a8433360745f69edddce19a606659163The Android Open Source Project * 9164064216a8433360745f69edddce19a606659163The Android Open Source Project */ 9264064216a8433360745f69edddce19a606659163The Android Open Source Project 9364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Key management suites (Authentication and Key Management Protocol - AKMP) */ 9464064216a8433360745f69edddce19a606659163The Android Open Source Project/* received in RSN IE */ 9564064216a8433360745f69edddce19a606659163The Android Open Source Project#define KEY_MGMT_SUITE_MAXNO_IN_RSN_IE 2 9664064216a8433360745f69edddce19a606659163The Android Open Source Project 9764064216a8433360745f69edddce19a606659163The Android Open Source Project/* OUIs for key management 9864064216a8433360745f69edddce19a606659163The Android Open Source Project* 9964064216a8433360745f69edddce19a606659163The Android Open Source Project* 00-0F-AC-00 Reserved 10064064216a8433360745f69edddce19a606659163The Android Open Source Project* 00-0F-AC-01 802.1X 10164064216a8433360745f69edddce19a606659163The Android Open Source Project* 00-0F-AC-02 PSK 10264064216a8433360745f69edddce19a606659163The Android Open Source Project* 00-0F-AC-03 reserved from 3 to 255 10364064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 10464064216a8433360745f69edddce19a606659163The Android Open Source Project 10564064216a8433360745f69edddce19a606659163The Android Open Source Project/* WPA2 key management suites */ 10664064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_KEY_MNG_NONE 0 10764064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_KEY_MNG_801_1X 1 10864064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_KEY_MNG_PSK_801_1X 2 10964064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_KEY_MNG_CCKM 3 11064064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_KEY_MNG_NA 4 11164064216a8433360745f69edddce19a606659163The Android Open Source Project 11264064216a8433360745f69edddce19a606659163The Android Open Source Project 11364064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_OUI_MAX_VERSION 0x1 11464064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_OUI_DEF_TYPE 0x1 11564064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_OUI_MAX_TYPE 0x2 11664064216a8433360745f69edddce19a606659163The Android Open Source Project 11764064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_PRE_AUTH_CAPABILITY_MASK 0x0001 /* bit 0 */ 11864064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_PRE_AUTH_CAPABILITY_SHIFT 0 11964064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_GROUP_4_UNICAST_CAPABILITY_MASK 0x0002 /* bit 1 No Pairwise */ 12064064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_GROUP_4_UNICAST_CAPABILITY_SHIFT 1 12164064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_PTK_REPLAY_COUNTERS_CAPABILITY_MASK 0x000c /* bit 2 and 3 */ 12264064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_PTK_REPLAY_COUNTERS_CAPABILITY_SHIFT 2 12364064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_GTK_REPLAY_COUNTERS_CAPABILITY_MASK 0x0030 /* bit 4 and 5 */ 12464064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_GTK_REPLAY_COUNTERS_CAPABILITY_SHIFT 4 12564064216a8433360745f69edddce19a606659163The Android Open Source Project /* bit 6 - 15 - reserved */ 12664064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_MIN_LENGTH 4 12764064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_GROUP_SUITE_LENGTH 8 12864064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_MIN_PAIRWISE_SUITE_LENGTH 14 12964064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_MIN_DEFAULT_LENGTH 24 13064064216a8433360745f69edddce19a606659163The Android Open Source Project#define WPA2_IE_MIN_KEY_MNG_SUITE_LENGTH(pairwiseCnt) (10+4*pairwiseCnt) 13164064216a8433360745f69edddce19a606659163The Android Open Source Project 13264064216a8433360745f69edddce19a606659163The Android Open Source Project 13364064216a8433360745f69edddce19a606659163The Android Open Source Project 13464064216a8433360745f69edddce19a606659163The Android Open Source Project 13564064216a8433360745f69edddce19a606659163The Android Open Source Project/* WPA2 IE (RSN IE) packet structure */ 13664064216a8433360745f69edddce19a606659163The Android Open Source Project/* This structure is used for outgoing packets, i.e. for association request */ 13764064216a8433360745f69edddce19a606659163The Android Open Source Project/* For incoming packets (Beacon and Probe response from an AP) stucture of */ 13864064216a8433360745f69edddce19a606659163The Android Open Source Project/* dot11_RSN_t type is used as more common stucture */ 13964064216a8433360745f69edddce19a606659163The Android Open Source ProjectPACKED_STRUCT( wpa2IePacket_t, 14064064216a8433360745f69edddce19a606659163The Android Open Source Project 14164064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 elementid; /* WPA2 IE (RSN IE) id is 0x30 */ 14264064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 length; 14364064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 version; 14464064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 groupSuite[4]; /* OUI for broadcast suite */ 14564064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 pairwiseSuiteCnt; 14664064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 pairwiseSuite[4]; /* OUI for 1 unicast suite */ 14764064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 authKeyMngSuiteCnt; 14864064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 authKeyMngSuite[4]; /* OUI for 1 key mgmt suite */ 14964064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 capabilities; 15064064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 pmkIdCnt; /* only one PMKID is supported per AP */ 15164064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 pmkId[PMKID_VALUE_SIZE]; 15264064216a8433360745f69edddce19a606659163The Android Open Source Project); 15364064216a8433360745f69edddce19a606659163The Android Open Source Project 15464064216a8433360745f69edddce19a606659163The Android Open Source Project 15564064216a8433360745f69edddce19a606659163The Android Open Source Project/* WPA2 data parsed from RSN info element */ 15664064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct 15764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 15864064216a8433360745f69edddce19a606659163The Android Open Source Project 15964064216a8433360745f69edddce19a606659163The Android Open Source Project cipherSuite_e broadcastSuite; 16064064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 unicastSuiteCnt; 16164064216a8433360745f69edddce19a606659163The Android Open Source Project cipherSuite_e unicastSuite[MAX_WPA2_UNICAST_SUITES]; 16264064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 KeyMngSuiteCnt; 16364064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 KeyMngSuite[MAX_WPA2_KEY_MNG_SUITES]; 16464064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 preAuthentication; 16564064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 bcastForUnicatst; 16664064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 ptkReplayCounters; 16764064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 gtkReplayCounters; 16864064216a8433360745f69edddce19a606659163The Android Open Source Project UINT16 pmkIdCnt; 16964064216a8433360745f69edddce19a606659163The Android Open Source Project UINT8 pmkId[PMKID_VALUE_SIZE]; 17064064216a8433360745f69edddce19a606659163The Android Open Source Project} wpa2IeData_t; 17164064216a8433360745f69edddce19a606659163The Android Open Source Project 17264064216a8433360745f69edddce19a606659163The Android Open Source Project 17364064216a8433360745f69edddce19a606659163The Android Open Source Project 17464064216a8433360745f69edddce19a606659163The Android Open Source Project/* External data definitions */ 17564064216a8433360745f69edddce19a606659163The Android Open Source Project 17664064216a8433360745f69edddce19a606659163The Android Open Source Project/* External functions definitions */ 17764064216a8433360745f69edddce19a606659163The Android Open Source Project 17864064216a8433360745f69edddce19a606659163The Android Open Source Project/* Function prototypes */ 17964064216a8433360745f69edddce19a606659163The Android Open Source Project 18064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS admCtrlWpa2_config(admCtrl_t *pAdmCtrl); 18164064216a8433360745f69edddce19a606659163The Android Open Source Project 18264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS admCtrlWpa2_getInfoElement(admCtrl_t *pAdmCtrl, UINT8 *pIe, UINT8 *pLength); 18364064216a8433360745f69edddce19a606659163The Android Open Source Project 18464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS admCtrlWpa2_setSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, UINT8 *pAssocIe, UINT8 *pAssocIeLen); 18564064216a8433360745f69edddce19a606659163The Android Open Source Project 18664064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS admCtrlWpa2_evalSite(admCtrl_t *pAdmCtrl, rsnData_t *pRsnData, bssType_e bssType, UINT32 *pEvaluation); 18764064216a8433360745f69edddce19a606659163The Android Open Source Project 18864064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid admCtrlWpa2_preAuthTimerExpire(TI_HANDLE hadmCtrl); 18964064216a8433360745f69edddce19a606659163The Android Open Source Project 19064064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* _ADM_CTRL_WPA_H_*/ 191