summaryrefslogtreecommitdiff
path: root/wl1271/CUDK/configurationutility/src/wpa_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/CUDK/configurationutility/src/wpa_core.c')
-rw-r--r--wl1271/CUDK/configurationutility/src/wpa_core.c940
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;
-}
-