diff options
Diffstat (limited to 'wl1271/CUDK/configurationutility/src/wpa_core.c')
-rw-r--r-- | wl1271/CUDK/configurationutility/src/wpa_core.c | 940 |
1 files changed, 0 insertions, 940 deletions
diff --git a/wl1271/CUDK/configurationutility/src/wpa_core.c b/wl1271/CUDK/configurationutility/src/wpa_core.c deleted file mode 100644 index f771625c..00000000 --- a/wl1271/CUDK/configurationutility/src/wpa_core.c +++ /dev/null @@ -1,940 +0,0 @@ -/* - * wpa_core.c - * - * Copyright 2001-2010 Texas Instruments, Inc. - http://www.ti.com/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/**************************************************************************** -* -* MODULE: Wpa_Core.c -* -* PURPOSE: -* -* DESCRIPTION: -* ============ -* -* -****************************************************************************/ - -/* includes */ -/************/ - -#ifdef ANDROID -#include <unistd.h> -#endif - -#include <netinet/if_ether.h> - -#include "cu_osapi.h" -#include "TWDriver.h" -#include "config_ssid.h" -#include "driver.h" -#include "ipc_wpa.h" -#include "wpa_core.h" -#include "oserr.h" - -/* defines */ -/***********/ -#ifdef CONFIG_WPS -#define WSC_MODE_OFF 0 -#define WSC_MODE_PIN 1 -#define WSC_MODE_PBC 2 -#endif - -/* local types */ -/***************/ -/* Network configuration block - holds candidate connection parameters */ -typedef struct -{ - S32 mode; - S32 proto; - S32 key_mgmt; - S32 auth_alg; - S32 pair_wise; - S32 group; - U8 pass_phrase[WPACORE_MAX_PSK_STRING_LENGTH]; - U8 wep_key[4][32]; - U8 default_wep_key; - U8 wep_key_length; -#ifdef CONFIG_WPS - U8 WscMode; - PS8 pWscPin; -#endif - S32 eap; - U8 Identity[WPACORE_MAX_CERT_PASSWORD_LENGTH]; - U8 private_key_passwd[WPACORE_MAX_CERT_PASSWORD_LENGTH]; - U8 private_key[WPACORE_MAX_CERT_PASSWORD_LENGTH]; - U8 client_cert[WPACORE_MAX_CERT_FILE_NAME_LENGTH]; - U8 password[WPACORE_MAX_CERT_PASSWORD_LENGTH]; - U8 anyWpaMode; -#ifdef XCC_MODULE_INCLUDED - U16 XCC; -#endif -} TWpaCore_WpaSupplParams; - -typedef struct -{ - OS_802_11_AUTHENTICATION_MODE AuthMode; - OS_802_11_ENCRYPTION_TYPES EncryptionTypePairWise; - OS_802_11_ENCRYPTION_TYPES EncryptionTypeGroup; -} TWpaCore_WpaParams; - -/* Module control block */ -typedef struct TWpaCore -{ - THandle hIpcWpa; - - S32 CurrentNetwork; - - TWpaCore_WpaSupplParams WpaSupplParams; - TWpaCore_WpaParams WpaParams; -} TWpaCore; - -/* local variables */ -/*******************/ - -/* local fucntions */ -/*******************/ -static VOID WpaCore_InitWpaParams(TWpaCore* pWpaCore) -{ - os_memset( &pWpaCore->WpaSupplParams, 0, sizeof(TWpaCore_WpaSupplParams)); - pWpaCore->WpaSupplParams.mode = IEEE80211_MODE_INFRA; /* Default is Infrastructure mode */ - pWpaCore->WpaSupplParams.proto = 0; /* key negotiation protocol - WPA is ok even though no security is used */ - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_NONE; /* No key management suite */ - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_OPEN; /* Open authentication */ - pWpaCore->WpaSupplParams.pair_wise = WPA_CIPHER_NONE; - pWpaCore->WpaSupplParams.group = WPA_CIPHER_NONE; - pWpaCore->WpaSupplParams.anyWpaMode = 0; -#ifdef CONFIG_WPS - pWpaCore->WpaSupplParams.pWscPin = NULL; - pWpaCore->WpaSupplParams.WscMode = WSC_MODE_OFF; -#endif - - pWpaCore->WpaParams.AuthMode = os802_11AuthModeOpen; - pWpaCore->WpaParams.EncryptionTypeGroup = OS_ENCRYPTION_TYPE_NONE; - pWpaCore->WpaParams.EncryptionTypePairWise = OS_ENCRYPTION_TYPE_NONE; -} - -/* functions */ -/*************/ -THandle WpaCore_Create(PS32 pRes, PS8 pSupplIfFile) -{ - TWpaCore* pWpaCore = (TWpaCore*)os_MemoryCAlloc(sizeof(TWpaCore), sizeof(U8)); - if(pWpaCore == NULL) - { - *pRes = OK; - os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - WpaCore_Create - cant allocate control block\n"); - return NULL; - } - - pWpaCore->hIpcWpa = IpcWpa_Create(pRes, pSupplIfFile); - if(pWpaCore->hIpcWpa == NULL) - { - WpaCore_Destroy(pWpaCore); - return NULL; - } - - WpaCore_InitWpaParams(pWpaCore); - - pWpaCore->CurrentNetwork = -1; - - /* send default configuration to the supplicant */ - IpcWpa_Command(pWpaCore->hIpcWpa, (PS8)"AP_SCAN 2", FALSE); - - return pWpaCore; -} - -VOID WpaCore_Destroy(THandle hWpaCore) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - if(pWpaCore->hIpcWpa) - IpcWpa_Destroy(pWpaCore->hIpcWpa); -#ifdef CONFIG_WPS - if(pWpaCore->WpaSupplParams.pWscPin) - os_MemoryFree(pWpaCore->WpaSupplParams.pWscPin); -#endif - - os_MemoryFree(pWpaCore); -} - -#ifdef XCC_MODULE_INCLUDED -S32 WpaCore_SetXCC(THandle hWpaCore, U16 XCCConfig) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - pWpaCore->WpaSupplParams.XCC = XCCConfig; - - return TI_OK; -} -#endif - -S32 WpaCore_SetAuthMode(THandle hWpaCore, OS_802_11_AUTHENTICATION_MODE AuthMode) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - pWpaCore->WpaParams.AuthMode = AuthMode; - - switch (AuthMode) - { - case os802_11AuthModeOpen: - pWpaCore->WpaSupplParams.proto = 0; - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_NONE; - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_OPEN; - break; - case os802_11AuthModeShared: - pWpaCore->WpaSupplParams.proto = 0; - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_NONE; - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_SHARED; - break; - case os802_11AuthModeWPANone: - pWpaCore->WpaSupplParams.proto = WPA_PROTO_WPA; - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_WPA_NONE; - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_OPEN; - break; - case os802_11AuthModeWPAPSK: - pWpaCore->WpaSupplParams.proto = WPA_PROTO_WPA; - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_PSK; - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_OPEN; - break; - case os802_11AuthModeWPA2PSK: - pWpaCore->WpaSupplParams.proto = WPA_PROTO_RSN; - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_PSK; - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_OPEN; - break; - case os802_11AuthModeWPA: - pWpaCore->WpaSupplParams.proto = WPA_PROTO_WPA; - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_IEEE8021X; - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_OPEN; - break; - case os802_11AuthModeWPA2: - pWpaCore->WpaSupplParams.proto = WPA_PROTO_RSN; - pWpaCore->WpaSupplParams.key_mgmt = WPA_KEY_MGMT_IEEE8021X; - pWpaCore->WpaSupplParams.auth_alg = WPA_AUTH_ALG_OPEN; - break; - - default: - os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - WpaCore_SetAuthMode - unknown authentication mode (%d)!!!\n", AuthMode); - return ECUERR_WPA_CORE_ERROR_UNKNOWN_AUTH_MODE; - } - - return OK; -} - - -S32 WpaCore_GetAuthMode(THandle hWpaCore, PU32 pAuthMode) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - *pAuthMode = pWpaCore->WpaParams.AuthMode; - - return OK; -} - -S32 WpaCore_SetEncryptionPairWise(THandle hWpaCore, OS_802_11_ENCRYPTION_TYPES EncryptionType) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - pWpaCore->WpaParams.EncryptionTypePairWise = EncryptionType; - - switch (EncryptionType) - { - case OS_ENCRYPTION_TYPE_NONE: - pWpaCore->WpaSupplParams.pair_wise = WPA_CIPHER_NONE; - break; - case OS_ENCRYPTION_TYPE_WEP: - pWpaCore->WpaSupplParams.pair_wise = WPA_CIPHER_WEP40; - break; - case OS_ENCRYPTION_TYPE_TKIP: - pWpaCore->WpaSupplParams.pair_wise = WPA_CIPHER_TKIP; - break; - case OS_ENCRYPTION_TYPE_AES: - pWpaCore->WpaSupplParams.pair_wise = WPA_CIPHER_CCMP; - break; - } - - return OK; -} - -S32 WpaCore_SetPrivacyEap(THandle hWpaCore, OS_802_11_EAP_TYPES EapType) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - pWpaCore->WpaSupplParams.eap = EapType; - - return OK; -} - -S32 WpaCore_GetEncryptionPairWise(THandle hWpaCore, OS_802_11_ENCRYPTION_TYPES* pEncryptionType) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - *pEncryptionType = pWpaCore->WpaParams.EncryptionTypePairWise; - - return OK; -} - -S32 WpaCore_SetEncryptionGroup(THandle hWpaCore, OS_802_11_ENCRYPTION_TYPES EncryptionType) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - pWpaCore->WpaParams.EncryptionTypeGroup = EncryptionType; - - switch (EncryptionType) - { - case OS_ENCRYPTION_TYPE_NONE: - os_error_printf(CU_MSG_ERROR, (PS8)"ERROR - WpaCore_SetEncryptionGroup - group encryption cant be NONE\n"); - break; - case OS_ENCRYPTION_TYPE_WEP: - pWpaCore->WpaSupplParams.group = WPA_CIPHER_WEP40; - break; - - case OS_ENCRYPTION_TYPE_TKIP: - pWpaCore->WpaSupplParams.group = WPA_CIPHER_TKIP; - break; - case OS_ENCRYPTION_TYPE_AES: - pWpaCore->WpaSupplParams.group = WPA_CIPHER_CCMP; - break; - } - - return OK; -} - -S32 WpaCore_GetEncryptionGroup(THandle hWpaCore, OS_802_11_ENCRYPTION_TYPES* pEncryptionType) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - *pEncryptionType = pWpaCore->WpaParams.EncryptionTypeGroup; - - return OK; -} - -S32 WpaCore_SetCredentials(THandle hWpaCore, PU8 Identity, PU8 Passward) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - os_memcpy((PVOID)pWpaCore->WpaSupplParams.Identity, (PVOID)Identity, os_strlen((PS8)Identity)); - - if (Passward !=NULL) - { - os_memcpy((PVOID)pWpaCore->WpaSupplParams.password, (PVOID)Passward, os_strlen((PS8)Passward)); - os_memcpy((PVOID)pWpaCore->WpaSupplParams.private_key_passwd, (PVOID)Passward, os_strlen((PS8)Passward)); - } - - return OK; -} - -S32 WpaCore_SetCertificate(THandle hWpaCore, PU8 Filepath) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - os_memcpy((PVOID)pWpaCore->WpaSupplParams.client_cert, (PVOID)Filepath, os_strlen((PS8)Filepath)); - - return OK; - -} - -S32 WpaCore_SetPskPassPhrase(THandle hWpaCore, PU8 pPassPhrase) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - os_memcpy((PVOID)pWpaCore->WpaSupplParams.pass_phrase, (PVOID)pPassPhrase, os_strlen((PS8)pPassPhrase)); - - return OK; -} - -S32 WpaCore_StopSuppl(THandle hWpaCore) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - IpcWpa_Command(pWpaCore->hIpcWpa, (PS8)"TERMINATE", TRUE); - - return OK; -} - -S32 WpaCore_ChangeSupplDebugLevels(THandle hWpaCore, S32 Level1, S32 Level2, S32 Level3) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - S8 cmd[100]; - - os_sprintf(cmd, (PS8)"CHANGE_SUPPLICANT_DEBUG %ld %ld %ld", Level1, Level2, Level3); - IpcWpa_Command(pWpaCore->hIpcWpa, cmd, TRUE); - - return OK; -} - -S32 WpaCore_AddKey(THandle hWpaCore, OS_802_11_WEP* pKey) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - U32 WepKeyIndx; - - WepKeyIndx = pKey->KeyIndex & 0x7FFFFFFF; - - if ((pKey->KeyIndex & 0x80000000) == 0x80000000) - { - /* Add "1" to the default wep key index - since "0" is used to indicate no default wep key */ - pWpaCore->WpaSupplParams.default_wep_key = WepKeyIndx + 1; - } - - /* If key length wasn't set so far - set it according to current key */ - if (pWpaCore->WpaSupplParams.wep_key_length == 0) - { - pWpaCore->WpaSupplParams.wep_key_length = pKey->KeyLength; - } - else - { - if (pWpaCore->WpaSupplParams.wep_key_length != pKey->KeyLength) return ECUERR_WPA_CORE_ERROR_KEY_LEN_MUST_BE_SAME; - } - - os_memcpy(&pWpaCore->WpaSupplParams.wep_key[WepKeyIndx][0], pKey->KeyMaterial, pKey->KeyLength); - - return OK; -} - -S32 WpaCore_GetDefaultKey(THandle hWpaCore, U32* pDefaultKeyIndex) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - *pDefaultKeyIndex = pWpaCore->WpaSupplParams.default_wep_key; - - return OK; -} - -#ifdef CONFIG_WPS -S32 WpaCore_StartWpsPIN(THandle hWpaCore) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; -#ifdef SUPPL_WPS_SUPPORT - S8 cmd[100]; -#endif - - pWpaCore->WpaSupplParams.WscMode = WSC_MODE_PIN; - -#ifdef SUPPL_WPS_SUPPORT - os_sprintf(cmd, "WPS_PIN any"); - IpcWpa_Command(pWpaCore->hIpcWpa, cmd, TRUE); -#endif - - return OK; -} - -S32 WpaCore_StartWpsPBC(THandle hWpaCore) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; -#ifdef SUPPL_WPS_SUPPORT - S8 cmd[100]; -#endif - - pWpaCore->WpaSupplParams.WscMode = WSC_MODE_PBC; - -#ifdef SUPPL_WPS_SUPPORT - os_sprintf(cmd, "WPS_PBC"); - IpcWpa_Command(pWpaCore->hIpcWpa, cmd, TRUE); -#endif - - return OK; -} - -S32 WpaCore_StopWps(THandle hWpaCore) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - pWpaCore->WpaSupplParams.WscMode = WSC_MODE_OFF; - - return OK; -} - -S32 WpaCore_SetPin(THandle hWpaCore, PS8 pPinStr) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - int len = os_strlen(pPinStr); - - if (len == 0) - return ECUERR_WPA_CORE_ERROR_IVALID_PIN; - - pWpaCore->WpaSupplParams.pWscPin = (PS8)os_MemoryCAlloc(len, sizeof(char)); - if(!pWpaCore->WpaSupplParams.pWscPin) - return ECUERR_WPA_CORE_ERROR_CANT_ALLOC_PIN; - - os_strcpy(pWpaCore->WpaSupplParams.pWscPin, pPinStr); - - return OK; -} -#endif /* CONFIG_WPS */ - -S32 WpaCore_SetAnyWpaMode(THandle hWpaCore, U8 anyWpaMode) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - pWpaCore->WpaSupplParams.anyWpaMode = anyWpaMode; - - return OK; -} - -S32 WpaCore_GetAnyWpaMode(THandle hWpaCore, PU8 pAnyWpaMode) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - *pAnyWpaMode = pWpaCore->WpaSupplParams.anyWpaMode; - - return OK; -} - - -S32 WpaCore_SetBssType(THandle hWpaCore, U32 BssType) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - switch(BssType) - { - case os802_11IBSS: - pWpaCore->WpaSupplParams.mode = IEEE80211_MODE_IBSS; - break; - case os802_11Infrastructure: - pWpaCore->WpaSupplParams.mode = IEEE80211_MODE_INFRA; - break; - default: - pWpaCore->WpaSupplParams.mode = IEEE80211_MODE_INFRA; - break; - } - - return OK; -} - -S32 WpaCore_GetBssType(THandle hWpaCore, PU32 pBssType) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - - switch(pWpaCore->WpaSupplParams.mode) - { - case IEEE80211_MODE_IBSS: - *pBssType = os802_11IBSS; - break; - case IEEE80211_MODE_INFRA: - *pBssType = os802_11Infrastructure; - break; - } - - return OK; -} - -S32 WpaCore_SetSsid(THandle hWpaCore, OS_802_11_SSID* ssid, TMacAddr bssid) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - S8 cmd[256]; - S8 Resp[IPC_WPA_RESP_MAX_LEN]; - PS8 pRespTemp; - U32 RespLen; - U32 NetworkID; - U32 SendCommand; - U8 Len; - -#define WPACORE_SETSSID_FAIL \ - os_error_printf(CU_MSG_ERROR, (PS8)"Failed to connect to %s\n", ssid->Ssid); \ - return ECUERR_WPA_CORE_ERROR_FAILED_CONNECT_SSID; - - /* First Add a new network block*/ - os_sprintf(cmd, (PS8)"ADD_NETWORK"); - if (IpcWpa_CommandWithResp(pWpaCore->hIpcWpa, cmd, TRUE, Resp, &RespLen)) - { - WPACORE_SETSSID_FAIL; - } - NetworkID = os_strtoul(Resp, &pRespTemp, 0); - - /* Set the parameters in the new new network block*/ - - /* Set the BSSID */ - if(!((bssid[0] == 0xFF) && - (bssid[1] == 0xFF) && - (bssid[2] == 0xFF) && - (bssid[3] == 0xFF) && - (bssid[4] == 0xFF) && - (bssid[5] == 0xFF))) - { - /* set th ebssid only if the bssid doesn't mean any bssid */ - S8 temp[20]; - os_sprintf(temp, (PS8)"%02x", bssid[0]); - os_sprintf(temp, (PS8)"%s:%02x", temp, bssid[1]); - os_sprintf(temp, (PS8)"%s:%02x", temp, bssid[2]); - os_sprintf(temp, (PS8)"%s:%02x", temp, bssid[3]); - os_sprintf(temp, (PS8)"%s:%02x", temp, bssid[4]); - os_sprintf(temp, (PS8)"%s:%02x", temp, bssid[5]); - os_sprintf(cmd, (PS8)"SET_NETWORK %d bssid %s", NetworkID, temp); - - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, FALSE)) - { - WPACORE_SETSSID_FAIL; - } - } - - /* Set the SSID */ - os_sprintf(cmd, (PS8)"SET_NETWORK %d ssid \"%s\"", NetworkID, ssid->Ssid); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - /* set mode of the new network block */ - os_sprintf(cmd, (PS8)"SET_NETWORK %d mode %d", NetworkID, pWpaCore->WpaSupplParams.mode); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - /* set proto of the new network block */ - SendCommand = TRUE; - if (pWpaCore->WpaSupplParams.proto == WPA_PROTO_WPA) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d proto WPA", NetworkID); - } - else if (pWpaCore->WpaSupplParams.proto == WPA_PROTO_RSN) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d proto RSN", NetworkID); - } - else - { - SendCommand = FALSE; - } - - if (SendCommand && IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - /* set key management of the new network block */ - SendCommand = TRUE; - if (pWpaCore->WpaSupplParams.key_mgmt == WPA_KEY_MGMT_NONE) - { - if ((pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_LEAP) || - (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_PEAP) || - (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_FAST)) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d key_mgmt IEEE8021X", NetworkID); - } - else - os_sprintf(cmd, (PS8)"SET_NETWORK %d key_mgmt NONE", NetworkID); - } - else if (pWpaCore->WpaSupplParams.key_mgmt == WPA_KEY_MGMT_PSK) - os_sprintf(cmd, (PS8)"SET_NETWORK %d key_mgmt WPA-PSK", NetworkID); - else if (pWpaCore->WpaSupplParams.key_mgmt == WPA_KEY_MGMT_IEEE8021X) -#ifdef XCC_MODULE_INCLUDED - if((pWpaCore->WpaSupplParams.XCC == OS_XCC_CONFIGURATION_ENABLE_CCKM)||(pWpaCore->WpaSupplParams.XCC == OS_XCC_CONFIGURATION_ENABLE_ALL)) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d key_mgmt WPA-EAP CCKM", NetworkID); - } - else -#endif - os_sprintf(cmd, (PS8)"SET_NETWORK %d key_mgmt WPA-EAP", NetworkID); - else if (pWpaCore->WpaSupplParams.key_mgmt == WPA_KEY_MGMT_WPA_NONE) - os_sprintf(cmd, (PS8)"SET_NETWORK %d key_mgmt WPA-NONE", NetworkID); - else - { - SendCommand = FALSE; - } - - if (SendCommand && IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - - /* set authentication alog of the new network block */ - SendCommand = TRUE; - if (pWpaCore->WpaSupplParams.auth_alg == WPA_AUTH_ALG_OPEN) - os_sprintf(cmd, (PS8)"SET_NETWORK %d auth_alg OPEN", NetworkID); - else if (pWpaCore->WpaSupplParams.auth_alg == WPA_AUTH_ALG_SHARED) - os_sprintf(cmd, (PS8)"SET_NETWORK %d auth_alg SHARED", NetworkID); - else if (pWpaCore->WpaSupplParams.auth_alg == WPA_AUTH_ALG_LEAP) - os_sprintf(cmd, (PS8)"SET_NETWORK %d auth_alg LEAP", NetworkID); - else - { - SendCommand = FALSE; - } - - if (SendCommand && IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - - /* set pairwise encryption of the new network block */ - SendCommand = TRUE; - if (pWpaCore->WpaSupplParams.pair_wise == WPA_CIPHER_NONE) - os_sprintf(cmd, (PS8)"SET_NETWORK %d pairwise NONE", NetworkID); - else if (pWpaCore->WpaSupplParams.pair_wise == WPA_CIPHER_WEP40) - os_sprintf(cmd, (PS8)"SET_NETWORK %d pairwise NONE", NetworkID); - else if (pWpaCore->WpaSupplParams.pair_wise == WPA_CIPHER_TKIP) - os_sprintf(cmd, (PS8)"SET_NETWORK %d pairwise TKIP", NetworkID); - else if ((pWpaCore->WpaSupplParams.pair_wise == WPA_CIPHER_CCMP)&& (pWpaCore->WpaSupplParams.anyWpaMode == 0)) - os_sprintf(cmd, (PS8)"SET_NETWORK %d pairwise CCMP", NetworkID); - else if ((pWpaCore->WpaSupplParams.pair_wise == WPA_CIPHER_CCMP)&& (pWpaCore->WpaSupplParams.anyWpaMode == 1)) - os_sprintf(cmd, (PS8)"SET_NETWORK %d pairwise CCMP TKIP", NetworkID); - else - { - SendCommand = FALSE; - } - - if (SendCommand && IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - /* set group encryption of the new network block */ - SendCommand = TRUE; - if (pWpaCore->WpaSupplParams.group == WPA_CIPHER_WEP40) - os_sprintf(cmd, (PS8)"SET_NETWORK %d group WEP40", NetworkID); - else if (pWpaCore->WpaSupplParams.group == WPA_CIPHER_TKIP) - os_sprintf(cmd, (PS8)"SET_NETWORK %d group TKIP", NetworkID); - else if ((pWpaCore->WpaSupplParams.group == WPA_CIPHER_CCMP)&& (pWpaCore->WpaSupplParams.anyWpaMode == 0)) - os_sprintf(cmd, (PS8)"SET_NETWORK %d group CCMP", NetworkID); - else if ((pWpaCore->WpaSupplParams.group == WPA_CIPHER_CCMP)&& (pWpaCore->WpaSupplParams.anyWpaMode == 1)) - os_sprintf(cmd, (PS8)"SET_NETWORK %d group CCMP TKIP", NetworkID); - else - { - SendCommand = FALSE; - } - - if (SendCommand && IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - - /* set eap of the new network block */ - if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_NONE) - SendCommand = FALSE; - else - { - SendCommand = TRUE; - if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_MD5_CHALLENGE) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap MD5", NetworkID); - else if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_GENERIC_TOKEN_CARD) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap GTC", NetworkID); - else if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_TLS) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap TLS", NetworkID); - else if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_TTLS) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap TTLS", NetworkID); - else if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_PEAP) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap PEAP", NetworkID); - else if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_MS_CHAP_V2) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap MSCHAPV2", NetworkID); -#ifdef XCC_MODULE_INCLUDED - else if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_LEAP) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap LEAP", NetworkID); - else if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_FAST) - os_sprintf(cmd, (PS8)"SET_NETWORK %d eap FAST", NetworkID); -#endif - else - SendCommand = FALSE; - } - - - if (SendCommand && IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - if (pWpaCore->WpaSupplParams.Identity[0]) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d identity \"%s\"", NetworkID,pWpaCore->WpaSupplParams.Identity); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } - - if (pWpaCore->WpaSupplParams.client_cert[0]) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d client_cert \"%s\"", NetworkID,pWpaCore->WpaSupplParams.client_cert); - - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - } - - - if (pWpaCore->WpaSupplParams.client_cert[0]) - { - - Len = os_strlen ((PS8)pWpaCore->WpaSupplParams.client_cert); - os_memcpy(pWpaCore->WpaSupplParams.private_key,pWpaCore->WpaSupplParams.client_cert,Len); - os_memcpy(&pWpaCore->WpaSupplParams.private_key[Len-3],"pem",3); - - os_sprintf(cmd, (PS8)"SET_NETWORK %d private_key \"%s\"", NetworkID,pWpaCore->WpaSupplParams.private_key); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } - - if (pWpaCore->WpaSupplParams.private_key_passwd[0] ) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d private_key_passwd \"%s\"", NetworkID,pWpaCore->WpaSupplParams.private_key_passwd); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } - - if (pWpaCore->WpaSupplParams.password[0] ) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d password \"%s\"", NetworkID,pWpaCore->WpaSupplParams.password); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - } - - - if (pWpaCore->WpaSupplParams.eap == OS_EAP_TYPE_FAST) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d phase1 \"fast_provisioning=3\"", NetworkID); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - os_sprintf(cmd, (PS8)"SET_NETWORK %d pac_file \"/etc/wpa_supplicant.eap-fast-pac\"", NetworkID); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - os_sprintf(cmd, (PS8)"SET_NETWORK %d anonymous_identity \"anonymous\"", NetworkID); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - } - - if (pWpaCore->WpaSupplParams.pair_wise == WPA_CIPHER_WEP40) - { - S32 idx, idx2; - - for (idx=0; idx<4; idx++) - { - S8 TempBuf[3]; - os_sprintf(cmd, (PS8)"SET_NETWORK %d wep_key%d ", NetworkID, idx); - for (idx2=0; idx2 < pWpaCore->WpaSupplParams.wep_key_length; idx2++) - { - os_sprintf(TempBuf, (PS8)"%02x", pWpaCore->WpaSupplParams.wep_key[idx][idx2]); - os_strcat (cmd, TempBuf); - } - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } - os_sprintf(cmd, (PS8)"SET_NETWORK %d wep_tx_keyidx %d", NetworkID, pWpaCore->WpaSupplParams.default_wep_key-1); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } - - if (pWpaCore->WpaSupplParams.key_mgmt == WPA_KEY_MGMT_PSK) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d psk \"%s\"", NetworkID, pWpaCore->WpaSupplParams.pass_phrase); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } - - -#ifdef CONFIG_WPS - if (pWpaCore->WpaSupplParams.WscMode) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d wsc_mode %d", NetworkID, pWpaCore->WpaSupplParams.WscMode); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } - if (pWpaCore->WpaSupplParams.pWscPin) - { - os_sprintf(cmd, (PS8)"SET_NETWORK %d wsc_pin \"%s\"", NetworkID, pWpaCore->WpaSupplParams.pWscPin); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - } -#endif - - /* Finaly Connect to the new network block */ - os_sprintf(cmd, (PS8)"SELECT_NETWORK %d", NetworkID); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 0)) - { - WPACORE_SETSSID_FAIL; - } - - pWpaCore->CurrentNetwork = NetworkID; - IpcWpa_Command(pWpaCore->hIpcWpa, (PS8)"SAVE_CONFIG", 1); - - /* - init the connection params thus the next time we connect we will by default - connect to an open - */ - WpaCore_InitWpaParams(pWpaCore); - - return OK; -} - -S32 WpaCore_Disassociate(THandle hWpaCore) -{ - TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; - S8 cmd[256]; - - os_sprintf(cmd, (PS8)"DISABLE_NETWORK %d", pWpaCore->CurrentNetwork); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 1)) - { - os_error_printf(CU_MSG_ERROR, (PS8)"Failed to disconnect from current ssid\n"); - return ECUERR_WPA_CORE_ERROR_FAILED_DISCONNECT_SSID; - } - - pWpaCore->CurrentNetwork = -1; - IpcWpa_Command(pWpaCore->hIpcWpa, (PS8)"SAVE_CONFIG", 0); - -#if 0 /* for futur WPS work */ - if(pWpaCore->CurrentNetwork == -1) - { - os_sprintf(cmd, (PS8)"LIST_NETWORKS"); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 1)) - { - os_error_printf(CU_MSG_ERROR, (PS8)"Failed to disconnect from current ssid\n"); - return ECUERR_WPA_CORE_ERROR_FAILED_DISCONNECT_SSID; - } - } - else - { - os_sprintf(cmd, (PS8)"DISABLE_NETWORK %d", pWpaCore->CurrentNetwork); - if (IpcWpa_Command(pWpaCore->hIpcWpa, cmd, 1)) - { - os_error_printf(CU_MSG_ERROR, (PS8)"Failed to disconnect from current ssid\n"); - return ECUERR_WPA_CORE_ERROR_FAILED_DISCONNECT_SSID; - } - - pWpaCore->CurrentNetwork = -1; - IpcWpa_Command(pWpaCore->hIpcWpa, (PS8)"SAVE_CONFIG", 0); - } -#endif /* #if 0 for futur WPS work */ - - return OK; -} - |