diff -r 30e048a7b597 -r bad0cc58d154 eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiDataConnection.cpp --- a/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiDataConnection.cpp Thu Aug 19 09:58:27 2010 +0300 +++ b/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiDataConnection.cpp Tue Aug 31 15:16:37 2010 +0300 @@ -16,7 +16,7 @@ */ /* -* %version: 36.1.2 % +* %version: 56 % */ // This is enumeration of EAPOL source code. @@ -28,19 +28,20 @@ #endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES) #include -#include "EapTlsPeapUtils.h" +//#include "EapTlsPeapUtils.h" #include "EapTlsPeapDbParameterNames.h" #include "EapTlsPeapDbDefaults.h" #include #include #include -#include "eap_am_trace_symbian.h" +#include +#include #ifdef USE_PAC_STORE #include "pac_store_db_symbian.h" #endif -const TUint KMaxSqlQueryLength = 256; +//const TUint KMaxSqlQueryLength = 256; // --------------------------------------------------------- // CEapTlsPeapUiDataConnection::CEapTlsPeapUiDataConnection() @@ -49,10 +50,12 @@ CEapTlsPeapUiDataConnection::CEapTlsPeapUiDataConnection(CEapTlsPeapUiConnection * aUiConn) : iIsOpened(EFalse) , iUiConn(aUiConn) -, iColSet(NULL) , iDataPtr(NULL) , iFastSpecificColSet(NULL) +, iEapTypeConnection(NULL) { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::CEapTlsPeapUiDataConnection()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiDataConnection::CEapTlsPeapUiDataConnection()\n")); } @@ -62,11 +65,17 @@ // CEapTlsPeapUiDataConnection::~CEapTlsPeapUiDataConnection() { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::~CEapTlsPeapUiDataConnection()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiDataConnection::~CEapTlsPeapUiDataConnection()\n")); + if (iUiConn) { Close(); iUiConn = NULL; } + + delete iEapTypeConnection; + iEapTypeConnection = 0; } @@ -76,24 +85,29 @@ // TInt CEapTlsPeapUiDataConnection::Open() { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Open: Start EAP-Type=%d\n"), - iUiConn->GetEapType())); + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Open(): Start EAP-Type=0xfe%06x%08x\n"), + iUiConn->GetEapType().GetVendorId(), + iUiConn->GetEapType().GetVendorType())); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiDataConnection::Open()\n")); if (iIsOpened) { return KErrAlreadyExists; } - TInt err = iUiConn->GetDatabase(iDatabase); - if (err != KErrNone) - { - return err; - } + TEapExpandedType aEapType(iUiConn->GetEapType()); + + TRAPD(error, iEapTypeConnection = CEapType::NewL(iUiConn->GetIndexType(), iUiConn->GetIndex(), aEapType)); + if (error != KErrNone) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapLeapUiDataConnection::Open() CEapType::NewL() error=%d\n"),error)); + return error; + } + + iEapTypeConnection->SetTunnelingType(iUiConn->GetTunnelingType()); iIsOpened = ETrue; - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Open: End\n"))); - return KErrNone; } @@ -104,8 +118,10 @@ // TInt CEapTlsPeapUiDataConnection::GetData(CEapTlsPeapUiTlsPeapData ** aDataPtr) { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::GetData: Start EAP-Type=%d\n"), - iUiConn->GetEapType())); + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::GetData(): Start EAP-Type=0xfe%06x%08x\n"), + iUiConn->GetEapType().GetVendorId(), + iUiConn->GetEapType().GetVendorType())); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiDataConnection::GetData()\n")); if (aDataPtr == NULL) { @@ -115,7 +131,7 @@ if (iIsOpened == EFalse) { EAP_TRACE_DEBUG_SYMBIAN( - (_L("CEapTlsPeapUiDataConnection::GetData: Data Connection not opened\n"))); + (_L("ERROR: CEapTlsPeapUiDataConnection::GetData(): Data Connection not opened\n"))); return KErrSessionClosed; } @@ -130,33 +146,191 @@ if (!iDataPtr) { EAP_TRACE_DEBUG_SYMBIAN( - (_L("CEapTlsPeapUiDataConnection::GetData: ERROR: NO MEMORY!\n"))); + (_L("ERROR: CEapTlsPeapUiDataConnection::GetData(): NO MEMORY!\n"))); return KErrNoMemory; } - TRAPD(err, FetchDataL()); - if (err != KErrNone) - { - delete iDataPtr; - iDataPtr = NULL; - - delete iColSet; - iColSet = NULL; - - delete iFastSpecificColSet; - iFastSpecificColSet = NULL; - - iView.Close(); - iFastSpecificView.Close(); - - return err; - } + EAPSettings aSettings; + + TRAPD(error,iEapTypeConnection->GetConfigurationL(aSettings)); + if (error) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiDataConnection::GetData() GetConfigurationL(): failed %d\n"), error)); + return error; + } + + /**************** only for TTLS PAP ****************/ + + if ( iUiConn->GetEapType() == *EapExpandedTypeTtlsPap.GetType() ) + { + if (aSettings.iShowPassWordPromptPresent) + { + if (aSettings.iShowPassWordPrompt) + { + *( iDataPtr->GetPapPasswordPrompt() ) = ETrue; + } + else + { + *( iDataPtr->GetPapPasswordPrompt() ) = EFalse; + } + } + + if (aSettings.iUsernamePresent) + { + iDataPtr->GetPapUserName().Copy(aSettings.iUsername); + } + + if (aSettings.iPasswordPresent) + { + iDataPtr->GetPapPassword().Copy(aSettings.iPassword); + } + + return KErrNone; + } + + // Get use manual username + if (aSettings.iUsernamePresent) + { + *(iDataPtr->GetUseManualUsername()) = ETrue; + iDataPtr->GetManualUsername().Copy(aSettings.iUsername); + } + else + { + *(iDataPtr->GetUseManualUsername()) = EFalse; + } + + // Get use manual realm + if (aSettings.iRealmPresent) + { + *(iDataPtr->GetUseManualRealm()) = ETrue; + iDataPtr->GetManualRealm().Copy(aSettings.iRealm); + } + else + { + *(iDataPtr->GetUseManualRealm()) = EFalse; + } + + // Get PEAP/TTLS versions + if (iUiConn->GetEapType() == *EapExpandedTypePeap.GetType() + || iUiConn->GetEapType() == *EapExpandedTypeTtls.GetType() +#ifdef USE_FAST_EAP_TYPE + || iUiConn->GetEapType() == *EapExpandedTypeFast.GetType() +#endif + ) + { + if (aSettings.iPEAPVersionsPresent) + { + if (aSettings.iPEAPv0Allowed) + { + *(iDataPtr->GetAllowVersion0()) = ETrue; + } + + if (aSettings.iPEAPv1Allowed) + { + *(iDataPtr->GetAllowVersion1()) = ETrue; + } + + if (aSettings.iPEAPv2Allowed) + { + *(iDataPtr->GetAllowVersion2()) = ETrue; + } + } + } + + if (aSettings.iUseIdentityPrivacyPresent) + { + if (aSettings.iUseIdentityPrivacy) + { + *(iDataPtr->GetTlsPrivacy()) = ETrue; + } + else + { + *(iDataPtr->GetTlsPrivacy()) = EFalse; + } + } + +#ifdef USE_FAST_EAP_TYPE + + EAP_TRACE_DEBUG_SYMBIAN((_L("Fetching EAP-FAST specific Special settings!\n"))); + + if(iUiConn->GetEapType() == *EapExpandedTypeFast.GetType()) + { + // Get provisioning modes + if (aSettings.iAuthProvModeAllowedPresent) + { + if (aSettings.iAuthProvModeAllowed) + { + *(iDataPtr->GetAuthProvModeAllowed()) = ETrue; + } + else + { + *(iDataPtr->GetAuthProvModeAllowed()) = EFalse; + } + } + + if (aSettings.iUnauthProvModeAllowedPresent) + { + if (aSettings.iUnauthProvModeAllowed) + { + *(iDataPtr->GetUnauthProvModeAllowed()) = ETrue; + } + else + { + *(iDataPtr->GetUnauthProvModeAllowed()) = EFalse; + } + } + + if (aSettings.iShowPassWordPromptPresent) + { + if (aSettings.iShowPassWordPrompt) + { + *( iDataPtr->GetUsePacStorePasswordPrompt() ) = ETrue; + } + else + { + *( iDataPtr->GetUsePacStorePasswordPrompt() ) = EFalse; + } + } + +#ifdef USE_PAC_STORE + + { + // Get PAC store Password + // PAC store password is in a different database, pac store db. + // We can use the PacStoreDbUtils to get the PAC store password. + + TBuf8 tmpPacStorePw8; + + TRAPD(err, iUiConn->GetPacStorePasswordL(tmpPacStorePw8)); + if (err) + { + EAP_TRACE_DEBUG_SYMBIAN((_L("couldn't get GetPacStorePasswordL!\n"))); + } + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("CEapTlsPeapUiDataConnection::FetchDataL: PW from PAC store DB(8 bits)", + tmpPacStorePw8.Ptr(), + tmpPacStorePw8.Size())); + + /***** Convert the 8 bit password to 16 bits for the UI ***************/ + + iDataPtr->GetPacStorePassword().Copy(tmpPacStorePw8); // This takes care of the conversion automatically. + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("CEapTlsPeapUiDataConnection::FetchDataL: PW to UI (16 bits)", + iDataPtr->GetPacStorePassword().Ptr(), + iDataPtr->GetPacStorePassword().Size())); + } + +#endif // End: #ifdef USE_PAC_STORE + + } // End: if(iUiConn->GetEapType() == *EapExpandedTypeFast.GetType()) + +#endif // End: #ifdef USE_FAST_EAP_TYPE *aDataPtr = iDataPtr; - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::GetData: End\n"))); - return KErrNone; } // CEapTlsPeapUiDataConnection::GetData() @@ -167,17 +341,19 @@ // TInt CEapTlsPeapUiDataConnection::Update() { - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Update: Start EAP-Type=%d\n"), - iUiConn->GetEapType())); + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Update(): Start EAP-Type=0xfe%06x%08x\n"), + iUiConn->GetEapType().GetVendorId(), + iUiConn->GetEapType().GetVendorType())); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiDataConnection::Update()\n")); // Do the length checks first. // Check if length of username and realm are less than the max length possible in DB. - if(iDataPtr->GetManualUsername().Length() > KMaxManualUsernameLengthInDB - || iDataPtr->GetManualRealm().Length() > KMaxManualRealmLengthInDB) + if(iDataPtr->GetManualUsername().Length() > KMaxUsernameLengthInDB + || iDataPtr->GetManualRealm().Length() > KMaxRealmLengthInDB) { // Username or realm too long. Can not be stored in DB. EAP_TRACE_DEBUG_SYMBIAN( - (_L("CEapTlsPeapUiDataConnection::Update: Too long username or realm. Length: UN=%d, Realm=%d\n"), + (_L("ERROR: CEapTlsPeapUiDataConnection::Update(): Too long username or realm. Length: UN=%d, Realm=%d\n"), iDataPtr->GetManualUsername().Length(), iDataPtr->GetManualRealm().Length())); @@ -185,26 +361,179 @@ } #ifdef USE_FAST_EAP_TYPE + // Check the length of PAC store password. - if(iDataPtr->GetPacStorePassword().Size() > KMaxPasswordLengthInDB) { // PAC store password too long. Can not be stored in DB. EAP_TRACE_DEBUG_SYMBIAN( - (_L("CEapTlsPeapUiDataConnection::Update: Too long PAC store PW. Size:%d\n"), + (_L("ERROR: CEapTlsPeapUiDataConnection::Update(): Too long PAC store PW. Size:%d\n"), iDataPtr->GetPacStorePassword().Size())); return KErrOverflow; } #endif + + EAPSettings aSettings; + + if( iUiConn->GetEapType() == *EapExpandedTypeTtlsPap.GetType() ) + { + /************** only for TTLS PAP **************/ + + aSettings.iShowPassWordPromptPresent = ETrue; + + if (*(iDataPtr->GetPapPasswordPrompt())) + { + aSettings.iShowPassWordPrompt = ETrue; + } + else + { + aSettings.iShowPassWordPrompt = EFalse; + } + + aSettings.iUsernamePresent = ETrue; + aSettings.iUsername.Copy(iDataPtr->GetPapUserName()); + + aSettings.iPasswordPresent = ETrue; + aSettings.iPassword.Copy(iDataPtr->GetPapPassword()); + + } // if( iUiConn->GetEapType() == *EapExpandedTypeTtlsPap.GetType() ) + else + { + if (*(iDataPtr->GetUseManualUsername())) + { + aSettings.iUsernamePresent = ETrue; + aSettings.iUsername = iDataPtr->GetManualUsername(); + } + else + { + aSettings.iUsernamePresent = EFalse; + } + } + + if (*(iDataPtr->GetUseManualRealm())) + { + aSettings.iRealmPresent = ETrue; + aSettings.iRealm = iDataPtr->GetManualRealm(); + } + else + { + aSettings.iRealmPresent = EFalse; + } - TRAPD(err, UpdateDataL()); + // PEAP/TTLS versions + if (iUiConn->GetEapType() == *EapExpandedTypePeap.GetType() + || iUiConn->GetEapType() == *EapExpandedTypeTtls.GetType() +#ifdef USE_FAST_EAP_TYPE + || iUiConn->GetEapType() == *EapExpandedTypeFast.GetType() +#endif + ) + { + if (*(iDataPtr->GetAllowVersion0())) + { + aSettings.iPEAPv0Allowed = ETrue; + } + + if (*(iDataPtr->GetAllowVersion1())) + { + aSettings.iPEAPv1Allowed = ETrue; + } + + if (*(iDataPtr->GetAllowVersion2())) + { + aSettings.iPEAPv2Allowed = ETrue; + } + } + + + // Update TLS Privacy + aSettings.iUseIdentityPrivacyPresent = ETrue; - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Update: End, err=%d\n"), - err)); + if (*(iDataPtr->GetTlsPrivacy())) + { + aSettings.iUseIdentityPrivacy = ETrue; + } + else + { + aSettings.iUseIdentityPrivacy = EFalse; + } + + +#ifdef USE_FAST_EAP_TYPE + + if(iUiConn->GetEapType() == *EapExpandedTypeFast.GetType()) + { + // Update Authentication modes + aSettings.iAuthProvModeAllowedPresent = ETrue; + + if (*(iDataPtr->GetAuthProvModeAllowed())) + { + aSettings.iAuthProvModeAllowed = ETrue; + } + else + { + aSettings.iAuthProvModeAllowed = EFalse; + } + + aSettings.iUnauthProvModeAllowedPresent = ETrue; + + if (*(iDataPtr->GetUnauthProvModeAllowed())) + { + aSettings.iUnauthProvModeAllowed = ETrue; + } + else + { + aSettings.iUnauthProvModeAllowed = EFalse; + } - return err; + if (*(iDataPtr->GetUsePacStorePasswordPrompt())) + { + aSettings.iShowPassWordPrompt = ETrue; + } + else + { + aSettings.iShowPassWordPrompt = EFalse; + } + +#ifdef USE_PAC_STORE + + // Update PAC store password. + // PAC store password should be stored in a different database, pac store db. + // We can use the UI connection to save the PAC store password. + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("CEapTlsPeapUiDataConnection::UpdateDataL: PW from UI(16 bits)", + iDataPtr->GetPacStorePassword().Ptr(), + iDataPtr->GetPacStorePassword().Size())); + + TBuf8 tmpSetPacStorePw8; + tmpSetPacStorePw8.Copy(iDataPtr->GetPacStorePassword()); + + EAP_TRACE_DATA_DEBUG_SYMBIAN( + ("CEapTlsPeapUiDataConnection::UpdateDataL: PW to PAC store DB(8 bits)", + tmpSetPacStorePw8.Ptr(), + tmpSetPacStorePw8.Size())); + + TRAPD(err, iUiConn->SetPacStorePasswordL(tmpSetPacStorePw8)); + + if (err) + return err; + + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Update(): SetPacStorePassword error = %d\n"),err)); + +#endif // End: #ifdef USE_PAC_STORE + + } // End: if(iUiConn->GetEapType() == *EapExpandedTypeFast.GetType()) + +#endif // End: #ifdef USE_FAST_EAP_TYPE + + TRAPD(error,iEapTypeConnection->SetConfigurationL(aSettings)); + + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Update(): SetConfiguration error = %d\n"),error)); + + return error; + } // CEapTlsPeapUiDataConnection::Update() @@ -214,6 +543,9 @@ // TInt CEapTlsPeapUiDataConnection::Close() { + EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Close()\n"))); + EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiDataConnection::Close()\n")); + if (iIsOpened == EFalse) { return KErrNone; @@ -222,610 +554,13 @@ delete iDataPtr; iDataPtr = NULL; - delete iColSet; - iColSet = NULL; - delete iFastSpecificColSet; iFastSpecificColSet = NULL; - iView.Close(); - - iFastSpecificView.Close(); - iUiConn = NULL; return KErrNone; } // CEapTlsPeapUiDataConnection::Close() - // --------------------------------------------------------- -// CEapTlsPeapUiDataConnection::FetchDataL() -// --------------------------------------------------------- -// -void CEapTlsPeapUiDataConnection::FetchDataL() -{ - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::FetchDataL: Start EAP-Type=%d\n"), - iUiConn->GetEapType())); - - HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength); - TPtr sqlStatement = buf->Des(); - - // Form the general query for TLS, PEAP, TTLS and FAST. Query everything. - _LIT(KSQLQuery, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d"); - - if (iUiConn->GetEapType() == eap_type_tls) - { - sqlStatement.Format(KSQLQuery, - &KTlsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - else if (iUiConn->GetEapType() == eap_type_peap) - { - sqlStatement.Format(KSQLQuery, - &KPeapDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - else if (iUiConn->GetEapType() == eap_type_ttls || iUiConn->GetEapType() == eap_type_ttls_plain_pap) - { - sqlStatement.Format(KSQLQuery, - &KTtlsDatabaseTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } - -#ifdef USE_FAST_EAP_TYPE - else if (iUiConn->GetEapType() == eap_type_fast) - { - // Unlike other EAP types, EAP-FAST has two settings tables. - // General settings and special settings - - // This is for the General settings. The special settings are read below. - - sqlStatement.Format(KSQLQuery, - &KFastGeneralSettingsDBTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - } -#endif - else - { - // Unknown EAP type - EAP_TRACE_DEBUG_SYMBIAN((_L("EAP-Type=%d - ERROR: Unknown EAP type!\n"), - iUiConn->GetEapType())); - - User::Leave(KErrNotSupported); - } - - // Evaluate view - User::LeaveIfError(iView.Prepare(iDatabase, TDbQuery(sqlStatement))); - User::LeaveIfError(iView.EvaluateAll()); - - // Get the first (and only) row - iView.FirstL(); - iView.GetL(); - - // Get column set so we get the correct column numbers - delete iColSet; - iColSet = NULL; - iColSet = iView.ColSetL(); - - // Start fetching the values - - - /**************** only for TTLS PAP ****************/ - - if ( iUiConn->GetEapType() == eap_type_ttls_plain_pap ) - { - // Prompt password - TUint intValue = iView.ColUint( iColSet->ColNo( - cf_str_EAP_TLS_PEAP_ttls_pap_password_prompt_literal ) ); - if ( intValue == 0 ) - { - *( iDataPtr->GetPapPasswordPrompt() ) = EFalse; - } - else - { - *( iDataPtr->GetPapPasswordPrompt() ) = ETrue; - } - - // username - iDataPtr->GetPapUserName().Copy( iView.ColDes16( iColSet->ColNo( - cf_str_EAP_TLS_PEAP_ttls_pap_username_literal ) ) ); - - // password - iDataPtr->GetPapPassword().Copy( iView.ColDes16( iColSet->ColNo( - cf_str_EAP_TLS_PEAP_ttls_pap_password_literal ) ) ); - - CleanupStack::PopAndDestroy(buf); - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::FetchDataL: Return\n"))); - return; - } - - // Get use manual username - TUint intValue = iView.ColUint(iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_manual_username_literal)); - if (intValue == 0) - { - *(iDataPtr->GetUseManualUsername()) = EFalse; - } - else - { - *(iDataPtr->GetUseManualUsername()) = ETrue; - } - - // Get use manual realm - intValue = iView.ColUint(iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_manual_realm_literal)); - if (intValue == 0) - { - *(iDataPtr->GetUseManualRealm()) = EFalse; - } - else - { - *(iDataPtr->GetUseManualRealm()) = ETrue; - } - - // Get Username - iDataPtr->GetManualUsername().Copy(iView.ColDes16(iColSet->ColNo(cf_str_EAP_TLS_PEAP_manual_username_literal))); - - // Get Realm - iDataPtr->GetManualRealm().Copy(iView.ColDes16(iColSet->ColNo(cf_str_EAP_TLS_PEAP_manual_realm_literal))); - - // Get PEAP/TTLS versions - if (iUiConn->GetEapType() == eap_type_peap - || iUiConn->GetEapType() == eap_type_ttls -#ifdef USE_FAST_EAP_TYPE - || iUiConn->GetEapType() == eap_type_fast -#endif - ) - { - TPtrC8 binaryValue = iView.ColDes8(iColSet->ColNo(cf_str_EAP_TLS_PEAP_accepted_PEAP_versions_literal)); - - const TInt* allowedVersions = reinterpret_cast(binaryValue.Ptr()); - - TInt i; - for (i = 0; i < static_cast(binaryValue.Length() / sizeof(TInt)); i++) - { - switch(allowedVersions[i]) - { - case 0: - *(iDataPtr->GetAllowVersion0()) = ETrue; - break; - case 1: - *(iDataPtr->GetAllowVersion1()) = ETrue; - break; - case 2: - *(iDataPtr->GetAllowVersion2()) = ETrue; - break; - } - } - } - - - intValue = iView.ColUint(iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_identity_privacy_literal)); - - if (intValue == 0) - { - *(iDataPtr->GetTlsPrivacy()) = EFalse; - } - else - { - *(iDataPtr->GetTlsPrivacy()) = ETrue; - } - - -#ifdef USE_FAST_EAP_TYPE - - EAP_TRACE_DEBUG_SYMBIAN((_L("Fetching EAP-FAST specific Special settings!\n"))); - - if(iUiConn->GetEapType() == eap_type_fast) - { - // This is for the EAP-FAST specific Special settings. - - sqlStatement.Format(KSQLQuery, - &KFastSpecialSettingsDBTableName, - &KServiceType, - iUiConn->GetIndexType(), - &KServiceIndex, - iUiConn->GetIndex(), - &KTunnelingType, - iUiConn->GetTunnelingType()); - - // Evaluate view - User::LeaveIfError(iFastSpecificView.Prepare(iDatabase, TDbQuery(sqlStatement))); - User::LeaveIfError(iFastSpecificView.EvaluateAll()); - - // Get the first (and only) row - iFastSpecificView.FirstL(); - iFastSpecificView.GetL(); - - // Get column set so we get the correct column numbers - delete iFastSpecificColSet; - iFastSpecificColSet = NULL; - iFastSpecificColSet = iFastSpecificView.ColSetL(); - - // Start fetching the values - // The below uses EAP-FAST Specific settings table. So use the specific view and colset. - - // Get provisioning modes - intValue = iFastSpecificView.ColUint(iFastSpecificColSet->ColNo(cf_str_EAP_FAST_allow_server_authenticated_provisioning_mode_literal)); - if (intValue == 0) - { - *(iDataPtr->GetAuthProvModeAllowed()) = EFalse; - } - else - { - *(iDataPtr->GetAuthProvModeAllowed()) = ETrue; - } - - intValue = iFastSpecificView.ColUint(iFastSpecificColSet->ColNo(cf_str_EAP_FAST_allow_server_unauthenticated_provisioning_mode_ADHP_literal)); - if (intValue == 0) - { - *(iDataPtr->GetUnauthProvModeAllowed()) = EFalse; - } - else - { - *(iDataPtr->GetUnauthProvModeAllowed()) = ETrue; - } - -#ifdef USE_PAC_STORE - // Get PAC store Password - // PAC store password is in a different database, pac store db. - // We can use the PacStoreDbUtils to get the PAC store password. - - TBuf8 tmpPacStorePw8; - - iUiConn->GetPacStoreDb()->GetPacStoreDataL( - cf_str_EAP_FAST_PAC_store_password_literal(), - tmpPacStorePw8); - - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("CEapTlsPeapUiDataConnection::FetchDataL: PW from PAC store DB(8 bits)", - tmpPacStorePw8.Ptr(), - tmpPacStorePw8.Size())); - - /***** Convert the 8 bit password to 16 bits for the UI ***************/ - - iDataPtr->GetPacStorePassword().Copy(tmpPacStorePw8); // This takes care of the conversion automatically. - - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("CEapTlsPeapUiDataConnection::FetchDataL: PW to UI (16 bits)", - iDataPtr->GetPacStorePassword().Ptr(), - iDataPtr->GetPacStorePassword().Size())); - - /*****************TEST*************/ - -#endif // End: #ifdef USE_PAC_STORE - - } // End: if(iUiConn->GetEapType() == eap_type_fast) - -#endif // End: #ifdef USE_FAST_EAP_TYPE - - CleanupStack::PopAndDestroy(buf); - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::FetchDataL: End\n"))); - -} // CEapTlsPeapUiDataConnection::FetchDataL() - - -// --------------------------------------------------------- -// CEapTlsPeapUiDataConnection::UpdateDataL() -// --------------------------------------------------------- -// -void CEapTlsPeapUiDataConnection::UpdateDataL() -{ - EAP_TRACE_DEBUG_SYMBIAN( - (_L("CEapTlsPeapUiDataConnection::UpdateDataL: Start\n"))); - - iView.UpdateL(); - - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_manual_username_literal), - iDataPtr->GetManualUsername()); - - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_manual_realm_literal), - iDataPtr->GetManualRealm()); - - if (*(iDataPtr->GetUseManualUsername())) - { - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_manual_username_literal), - ETLSPEAPUseManualUsernameYes); - } - else - { - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_manual_username_literal), - ETLSPEAPUseManualUsernameNo); - } - - if (*(iDataPtr->GetUseManualRealm())) - { - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_manual_realm_literal), - ETLSPEAPUseManualRealmYes); - } - else - { - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_manual_realm_literal), - ETLSPEAPUseManualRealmNo); - } - - // PEAP/TTLS versions - if (iUiConn->GetEapType() == eap_type_peap - || iUiConn->GetEapType() == eap_type_ttls -#ifdef USE_FAST_EAP_TYPE - || iUiConn->GetEapType() == eap_type_fast -#endif - ) - { - TBuf8 acceptedVersions; - - if (*(iDataPtr->GetAllowVersion0())) - { - TInt tmp(0); - acceptedVersions.Append(reinterpret_cast(&tmp), sizeof(TInt)); - } - if (*(iDataPtr->GetAllowVersion1())) - { - TInt tmp(1); - acceptedVersions.Append(reinterpret_cast(&tmp), sizeof(TInt)); - } - if (*(iDataPtr->GetAllowVersion2())) - { - TInt tmp(2); - acceptedVersions.Append(reinterpret_cast(&tmp), sizeof(TInt)); - } - - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_accepted_PEAP_versions_literal), - acceptedVersions); - } - - // Last full authentication time should be made zero when EAP configurations are modified. - // This makes sure that the next authentication with this EAP would be full authentication - // instead of reauthentication even if the session is still valid. - - TPtrC lastFullAuthTimeString; - - switch (iUiConn->GetEapType()) - { - case eap_type_tls: - { - lastFullAuthTimeString.Set(KTLSLastFullAuthTime); - } - break; - - case eap_type_peap: - { - lastFullAuthTimeString.Set(KPEAPLastFullAuthTime); - } - break; - - case eap_type_ttls: - { - lastFullAuthTimeString.Set(KTTLSLastFullAuthTime); - } - break; - -#ifdef USE_FAST_EAP_TYPE - case eap_type_fast: - { - lastFullAuthTimeString.Set(KFASTLastFullAuthTime); - } - break; -#endif - - case eap_type_ttls_plain_pap: - { - lastFullAuthTimeString.Set( KTTLSPAPLastFullAuthTime ); - } - break; - - default: - { - // Should never happen. Don't return error here as this is just to reset the auth time only. - EAP_TRACE_DEBUG_SYMBIAN( - (_L("Session Validity: EAP-Type=%d - ERROR: Unknown EAP type!\n"), - iUiConn->GetEapType() )); - } - } - - iView.SetColL( - iColSet->ColNo(lastFullAuthTimeString), - default_FullAuthTime); - - EAP_TRACE_DEBUG_SYMBIAN( - (_L("Session Validity: EAP-Type=%d, Resetting Full Auth Time since settings are modified\n"), - iUiConn->GetEapType() )); - - - // Update TLS Privacy - if (*(iDataPtr->GetTlsPrivacy())) - { - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_identity_privacy_literal), - ETLSPEAPTLSPrivacyYes); - } - else - { - iView.SetColL( - iColSet->ColNo(cf_str_EAP_TLS_PEAP_use_identity_privacy_literal), - ETLSPEAPTLSPrivacyNo); - } - - - - - /************** only for TTLS PAP **************/ - - if( iUiConn->GetEapType() == eap_type_ttls_plain_pap ) - { - // PAP user name - iView.SetColL( iColSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_username_literal ), - iDataPtr->GetPapUserName() ); - // PAP password - iView.SetColL( iColSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_password_literal ), - iDataPtr->GetPapPassword() ); - // PAP password prompt - if ( *( iDataPtr->GetPapPasswordPrompt() ) ) - { - iView.SetColL( iColSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_password_prompt_literal ), - EPapPasswordPromptOn ); - } - else - { - iView.SetColL( iColSet->ColNo( cf_str_EAP_TLS_PEAP_ttls_pap_password_prompt_literal ), - EPapPasswordPromptOff ); - } - - } // if( iUiConn->GetEapType() == eap_type_ttls_plain_pap ) - - - - // Now put all the updated values in DB table. - iView.PutL(); - -#ifdef USE_FAST_EAP_TYPE - - if(iUiConn->GetEapType() == eap_type_fast) - { - // Make the view ready for updation. This is important! - iFastSpecificView.UpdateL(); - - // Update Authentication modes - if (*(iDataPtr->GetAuthProvModeAllowed())) - { - iFastSpecificView.SetColL( - iFastSpecificColSet->ColNo(cf_str_EAP_FAST_allow_server_authenticated_provisioning_mode_literal), - EFASTAuthProvModeAllowedYes); - } - else - { - iFastSpecificView.SetColL( - iFastSpecificColSet->ColNo(cf_str_EAP_FAST_allow_server_authenticated_provisioning_mode_literal), - EFASTAuthProvModeAllowedNo); - } - - if (*(iDataPtr->GetUnauthProvModeAllowed())) - { - iFastSpecificView.SetColL( - iFastSpecificColSet->ColNo(cf_str_EAP_FAST_allow_server_unauthenticated_provisioning_mode_ADHP_literal), - EFASTUnauthProvModeAllowedYes); - } - else - { - iFastSpecificView.SetColL( - iFastSpecificColSet->ColNo(cf_str_EAP_FAST_allow_server_unauthenticated_provisioning_mode_ADHP_literal), - EFASTUnauthProvModeAllowedNo); - } - - // Now put all the updated values in DB table. - iFastSpecificView.PutL(); - - -#ifdef USE_PAC_STORE - - // Update PAC store password. - // PAC store password should be stored in a different database, pac store db. - // We can use the UI connection to save the PAC store password. - - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("CEapTlsPeapUiDataConnection::UpdateDataL: PW from UI(16 bits)", - iDataPtr->GetPacStorePassword().Ptr(), - iDataPtr->GetPacStorePassword().Size())); - - TBuf8 tmpSetPacStorePw8; - tmpSetPacStorePw8.Copy(iDataPtr->GetPacStorePassword()); - - EAP_TRACE_DATA_DEBUG_SYMBIAN( - ("CEapTlsPeapUiDataConnection::UpdateDataL: PW to PAC store DB(8 bits)", - tmpSetPacStorePw8.Ptr(), - tmpSetPacStorePw8.Size())); - - iUiConn->GetPacStoreDb()->SetPacStoreDataL( - cf_str_EAP_FAST_PAC_store_password_literal(), - tmpSetPacStorePw8); - -/*****************TEST*************/ - -#ifdef PAC_STORE_DATA_HACK - - TBuf<4> tmpSetPacStoreData1; - TBuf<4> tmpSetPacStoreData2; - TBuf<4> tmpSetPacStoreData3; - TBuf<4> tmpSetPacStoreData4; - TBuf<4> tmpSetPacStoreData5; - TBuf<4> tmpSetPacStoreData6; - RArray infoarray1; - RArray infoarray2; - - tmpSetPacStoreData1.Copy(iDataPtr->GetUsePAC_Store_Group_Reference()); - tmpSetPacStoreData2.Copy(iDataPtr->GetUsePAC_Store_Group_Value()); - tmpSetPacStoreData3.Copy(iDataPtr->GetUsePAC_Store_AID_Reference()); - tmpSetPacStoreData4.Copy(iDataPtr->GetUsePAC_Store_AID_Value()); - tmpSetPacStoreData6.Copy(iDataPtr->GetUsePAC_Store_PAC_Reference()); - tmpSetPacStoreData6.Copy(iDataPtr->GetUsePAC_Store_PAC_Value()); - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::UpdateDataL: tmpSetPacStoreData=%S\n"), - &tmpSetPacStorePw)); - - iUiConn->GetPacStoreDb()->SetPacStoreDataL( - KPacStoreGroupReference, - tmpSetPacStoreData1, - KPacStoreGroupReference); - iUiConn->GetPacStoreDb()->SetPacStoreDataL( - KPacStoreGroupValue, - tmpSetPacStoreData2, - KPacStoreGroupReference); - iUiConn->GetPacStoreDb()->SetPacStoreDataL( - KPacStoreAIDReference, - tmpSetPacStoreData3, - KPacStoreAIDReference); - iUiConn->GetPacStoreDb()->SetPacStoreDataL( - KPacStoreAIDValue, - tmpSetPacStoreData4, - KPacStoreAIDReference); - iUiConn->GetPacStoreDb()->SetPacStoreDataL( - KPacStorePACReference, - tmpSetPacStoreData5, - KPacStorePACValue); - iUiConn->GetPacStoreDb()->SetPacStoreDataL( - KPacStorePACValue, - tmpSetPacStoreData6, - KPacStorePACReference); - -#endif - - /*****************TEST*************/ - -#endif // End: #ifdef USE_PAC_STORE - - } // End: if(iUiConn->GetEapType() == eap_type_fast) - -#endif // End: #ifdef USE_FAST_EAP_TYPE - - EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::UpdateDataL: End\n"))); - -} // CEapTlsPeapUiDataConnection::UpdateDataL() - // End of file