--- a/eapol/eapol_framework/eapol_symbian/am/type/gsmsim/symbian/plugin/src/EapSimDbUtils.cpp Tue Aug 31 15:16:37 2010 +0300
+++ b/eapol/eapol_framework/eapol_symbian/am/type/gsmsim/symbian/plugin/src/EapSimDbUtils.cpp Wed Sep 01 12:23:57 2010 +0100
@@ -16,7 +16,7 @@
*/
/*
-* %version: 57 %
+* %version: 31.1.2 %
*/
// This is enumeration of EAPOL source code.
@@ -33,149 +33,161 @@
#include "EapSimDbDefaults.h"
#include "EapSimDbParameterNames.h"
-#include <EapTraceSymbian.h>
-#include "EapPluginTools.h"
+#include "eap_am_trace_symbian.h"
const TInt KMaxSqlQueryLength = 2048;
const TInt KMicroSecsInAMinute = 60000000; // 60000000 micro seconds is 1 minute.
// ================= MEMBER FUNCTIONS =======================
-void EapSimDbUtils::OpenDatabaseL(
- RDbNamedDatabase& aDatabase,
- RFs& aFileServerSession,
- const TIndexType aIndexType,
- const TInt aIndex,
- const eap_type_value_e aTunnelingType)
+void EapSimDbUtils::OpenDatabaseL(RDbNamedDatabase& aDatabase, RDbs& aSession, const TIndexType aIndexType,
+ const TInt aIndex, const eap_type_value_e aTunnelingType)
{
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::OpenDatabaseL(): Start - aIndexType=%d, aIndex=%d, aTunnelingType=0xfe%06x%08x\n"),
- aIndexType,
- aIndex,
- aTunnelingType.get_vendor_id(),
- aTunnelingType.get_vendor_type()));
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ TUint aTunnelingVendorType = aTunnelingType.get_vendor_type();
+
+#else
- EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapSimDbUtils::OpenDatabaseL()\n"));
+ TUint aTunnelingVendorType = static_cast<TUint>(aTunnelingType);
+
+#endif //#ifdef USE_EAP_EXPANDED_TYPES
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::OpenDatabaseL -Start- aIndexType=%d, aIndex=%d, aTunnelingVendorType=%d \n"),
+ aIndexType,aIndex,aTunnelingVendorType) );
// 1. Open/create a database
- TInt error(KErrNone);
- TFileName aPrivateDatabasePathName;
+ // Connect to the DBMS server.
+ User::LeaveIfError(aSession.Connect());
+ CleanupClosePushL(aSession);
+ // aSession and aDatabase are pushed to the cleanup stack even though they may be member
+ // variables of the calling class and would be closed in the destructor anyway. This ensures
+ // that if they are not member variables they will be closed. Closing the handle twice
+ // does no harm.
+
+#ifdef SYMBIAN_SECURE_DBMS
+
+ // Create the secure shared database with the specified secure policy.
+ // Database will be created in the data caging path for DBMS (C:\private\100012a5).
+
+ TInt err = aDatabase.Create(aSession, KDatabaseName, KSecureUIDFormat);
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::OpenDatabaseL - Created Secure DB for eapsim.dat. err=%d\n"), err));
- EapPluginTools::CreateDatabaseLC(
- aDatabase,
- aFileServerSession,
- error,
- KEapSimDatabaseName,
- aPrivateDatabasePathName);
-
- if(error == KErrNone)
+
+ if(err == KErrNone)
{
aDatabase.Close();
- }
- else if (error != KErrAlreadyExists)
+
+ } else if (err != KErrAlreadyExists)
{
- User::LeaveIfError(error);
+ User::LeaveIfError(err);
}
- EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::OpenDatabaseL(): calls aDatabase.Open()\n")));
-
- error = aDatabase.Open(aFileServerSession, aPrivateDatabasePathName);
-
- EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::OpenDatabaseL(): Opened private DB for EAP-SIM. error=%d\n"), error));
-
- User::LeaveIfError(error);
+ User::LeaveIfError(aDatabase.Open(aSession, KDatabaseName, KSecureUIDFormat));
+ CleanupClosePushL(aDatabase);
+
+#else
+ // Non secured database. The database will be created in the old location (c:\system\data).
+
+ RFs fsSession;
+ User::LeaveIfError(fsSession.Connect());
+ CleanupClosePushL(fsSession);
+ TInt err = aDatabase.Create(fsSession, KDatabaseName);
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::OpenDatabaseL - Created Non-Secure DB for eapsim.dat. err=%d\n"), err));
+
+
+ if(err == KErrNone)
+ {
+ aDatabase.Close();
+
+ } else if (err != KErrAlreadyExists)
+ {
+ User::LeaveIfError(err);
+ }
+ CleanupStack::PopAndDestroy( &fsSession ); // close fsSession
+
+ User::LeaveIfError(aDatabase.Open(aSession, KDatabaseName));
+ CleanupClosePushL(aDatabase);
+
+#endif // #ifdef SYMBIAN_SECURE_DBMS
// 2. Create the eapsim table to database (ignore error if exists)
- // Table columns:
- //// NAME ///////////////////////////////////////////////// TYPE ////////////// Constant /////////
- //| ServiceType | UNSIGNED INTEGER | KServiceType |//
- //| ServiceIndex | UNSIGNED INTEGER | KServiceIndex |//
- //| TunnelingTypeVendorId | UNSIGNED INTEGER | KTunnelingTypeVendorId |//
- //| TunnelingType | UNSIGNED INTEGER | KTunnelingType |//
- //| EAP_GSMSIM_use_manual_realm | UNSIGNED INTEGER | cf_str_EAP_GSMSIM_use_manual_realm_literal |//
- //| EAP_GSMSIM_manual_realm | VARCHAR(255) | cf_str_EAP_GSMSIM_manual_realm_literal |//
- //| EAP_GSMSIM_use_manual_username | UNSIGNED INTEGER | cf_str_EAP_GSMSIM_use_manual_username_literal|//
- //| EAP_GSMSIM_manual_username | VARCHAR(255) | cf_str_EAP_GSMSIM_manual_username_literal |//
- //| PseudonymId | LONG VARBINARY | KPseudonymId |//
- //| XKEY | BINARY(20) | KXKey |//
- //| K_aut | BINARY(16) | KK_aut |//
- //| K_encr | BINARY(16) | KK_encr |//
- //| ReauthCounter | UNSIGNED INTEGER | KReauthCounter |//
- //| ReauthId | LONG VARBINARY | KReauthId |//
- //| PreviousIMSI | VARBINARY(15) | KPreviousIMSI |//
- //| EAP_GSMSIM_use_pseudonym_identity | UNSIGNED INTEGER | cf_str_EAP_GSMSIM_use_pseudonym_identity_literal |//
- //| EAP_GSMSIM_max_session_validity_time | BIGINT | cf_str_EAP_GSMSIM_max_session_validity_time_literal |//
- //| EAP_GSMSIM_last_full_authentication_time | BIGINT | KGSMSIMLastFullAuthTime |//
- //////////////////////////////////////////////////////////////////////////////////////////////////
+// Table columns:
+//// NAME ///////////////////////////////////////////////// TYPE ////////////// Constant /////////
+//| ServiceType | UNSIGNED INTEGER | KServiceType |//
+//| ServiceIndex | UNSIGNED INTEGER | KServiceIndex |//
+//| TunnelingType | UNSIGNED INTEGER | KTunnelingType |//
+//| EAP_GSMSIM_use_manual_realm | UNSIGNED INTEGER | cf_str_EAP_GSMSIM_use_manual_realm_literal |//
+//| EAP_GSMSIM_manual_realm | VARCHAR(255) | cf_str_EAP_GSMSIM_manual_realm_literal |//
+//| EAP_GSMSIM_use_manual_username | UNSIGNED INTEGER | cf_str_EAP_GSMSIM_use_manual_username_literal|//
+//| EAP_GSMSIM_manual_username | VARCHAR(255) | cf_str_EAP_GSMSIM_manual_username_literal |//
+//| PseudonymId | LONG VARBINARY | KPseudonymId |//
+//| XKEY | BINARY(20) | KXKey |//
+//| K_aut | BINARY(16) | KK_aut |//
+//| K_encr | BINARY(16) | KK_encr |//
+//| ReauthCounter | UNSIGNED INTEGER | KReauthCounter |//
+//| ReauthId | LONG VARBINARY | KReauthId |//
+//| PreviousIMSI | VARBINARY(15) | KPreviousIMSI |//
+//| EAP_GSMSIM_use_pseudonym_identity | UNSIGNED INTEGER | cf_str_EAP_GSMSIM_use_pseudonym_identity_literal |//
+//| EAP_GSMSIM_max_session_validity_time | BIGINT | cf_str_EAP_GSMSIM_max_session_validity_time_literal |//
+//| EAP_GSMSIM_last_full_authentication_time | BIGINT | KGSMSIMLastFullAuthTime |//
+//////////////////////////////////////////////////////////////////////////////////////////////////
HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
TPtr sqlStatement = buf->Des();
- _LIT(KSQLCreateTable, "CREATE TABLE %S \
- (%S UNSIGNED INTEGER, \
- %S UNSIGNED INTEGER, \
- %S UNSIGNED INTEGER, \
- %S UNSIGNED INTEGER, \
- %S UNSIGNED INTEGER, \
- %S VARCHAR(%d), \
- %S UNSIGNED INTEGER, \
- %S VARCHAR(%d), \
- %S LONG VARBINARY, \
- %S BINARY(%d), \
- %S BINARY(%d), \
- %S BINARY(%d), \
- %S UNSIGNED INTEGER, \
- %S LONG VARBINARY, \
- %S VARBINARY(%d), \
- %S UNSIGNED INTEGER, \
- %S BIGINT, \
- %S BIGINT)");
+ _LIT(KSQLCreateTable, "CREATE TABLE %S (%S UNSIGNED INTEGER, \
+ %S UNSIGNED INTEGER, \
+ %S UNSIGNED INTEGER, \
+ %S UNSIGNED INTEGER, \
+ %S VARCHAR(%d), \
+ %S UNSIGNED INTEGER, \
+ %S VARCHAR(%d), \
+ %S LONG VARBINARY, \
+ %S BINARY(%d), \
+ %S BINARY(%d), \
+ %S BINARY(%d), \
+ %S UNSIGNED INTEGER, \
+ %S LONG VARBINARY, \
+ %S VARBINARY(%d), \
+ %S UNSIGNED INTEGER, \
+ %S BIGINT, \
+ %S BIGINT)");
- sqlStatement.Format(KSQLCreateTable,
- &KSimTableName,
- &KServiceType,
- &KServiceIndex,
- &KTunnelingTypeVendorId,
- &KTunnelingType,
- &cf_str_EAP_GSMSIM_use_manual_realm_literal,
- &cf_str_EAP_GSMSIM_manual_realm_literal, KMaxRealmLengthInDB,
- &cf_str_EAP_GSMSIM_use_manual_username_literal,
- &cf_str_EAP_GSMSIM_manual_username_literal, KMaxUsernameLengthInDB,
- &KPseudonymId,
- &KXKey, KMaxXKeyLengthInDB,
- &KK_aut, KMaxK_autLengthInDB,
- &KK_encr, KMaxK_encrLengthInDB,
- &KReauthCounter,
- &KReauthId,
- &KPreviousIMSI, KMaxIMSILengthInDB,
- &cf_str_EAP_GSMSIM_use_pseudonym_identity_literal,
- &cf_str_EAP_GSMSIM_max_session_validity_time_literal,
- &KGSMSIMLastFullAuthTime);
+ sqlStatement.Format(KSQLCreateTable, &KSimTableName, &KServiceType,
+ &KServiceIndex,
+ &KTunnelingType,
+ &cf_str_EAP_GSMSIM_use_manual_realm_literal,
+ &cf_str_EAP_GSMSIM_manual_realm_literal, KMaxManualRealmLengthInDB,
+ &cf_str_EAP_GSMSIM_use_manual_username_literal,
+ &cf_str_EAP_GSMSIM_manual_username_literal, KMaxManualUsernameLengthInDB,
+ &KPseudonymId,
+ &KXKey, KMaxXKeyLengthInDB,
+ &KK_aut, KMaxK_autLengthInDB,
+ &KK_encr, KMaxK_encrLengthInDB,
+ &KReauthCounter,
+ &KReauthId,
+ &KPreviousIMSI, KMaxIMSILengthInDB,
+ &cf_str_EAP_GSMSIM_use_pseudonym_identity_literal,
+ &cf_str_EAP_GSMSIM_max_session_validity_time_literal,
+ &KGSMSIMLastFullAuthTime);
- error = aDatabase.Execute(sqlStatement);
- if (error != KErrNone && error != KErrAlreadyExists)
+ err = aDatabase.Execute(sqlStatement);
+ if (err != KErrNone && err != KErrAlreadyExists)
{
- User::Leave(error);
+ User::Leave(err);
}
// 4. Check if database table contains a row for this service type and id
- _LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
-
- sqlStatement.Format(KSQLQueryRow,
- &cf_str_EAP_GSMSIM_manual_realm_literal,
- &KSimTableName,
- &KServiceType,
- aIndexType,
- &KServiceIndex,
- aIndex,
- &KTunnelingTypeVendorId,
- aTunnelingType.get_vendor_id(),
- &KTunnelingType,
- aTunnelingType.get_vendor_type());
-
+ _LIT(KSQLQueryRow, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
+ sqlStatement.Format(KSQLQueryRow, &cf_str_EAP_GSMSIM_manual_realm_literal, &KSimTableName,
+ &KServiceType, aIndexType, &KServiceIndex, aIndex, &KTunnelingType, aTunnelingVendorType);
+
RDbView view;
User::LeaveIfError(view.Prepare(aDatabase, TDbQuery(sqlStatement), TDbWindow::EUnlimited));
// View must be closed when no longer needed
@@ -202,14 +214,13 @@
view.InsertL();
view.SetColL(colSet->ColNo(KServiceType), static_cast<TInt>(aIndexType));
view.SetColL(colSet->ColNo(KServiceIndex), aIndex);
- view.SetColL(colSet->ColNo(KTunnelingTypeVendorId), aTunnelingType.get_vendor_id());
- view.SetColL(colSet->ColNo(KTunnelingType), aTunnelingType.get_vendor_type());
+ view.SetColL(colSet->ColNo(KTunnelingType), aTunnelingVendorType);
view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_realm_literal), default_EAP_GSMSIM_use_manual_realm);
- view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_manual_realm_literal), default_EAP_realm);
+ view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_manual_realm_literal), default_EAP_GSMSIM_manual_realm);
view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_username_literal), default_EAP_GSMSIM_use_manual_username);
- view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_manual_username_literal), default_EAP_username);
+ view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_manual_username_literal), default_EAP_GSMSIM_manual_username);
view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal), default_EAP_GSMSIM_use_pseudonym_identity);
@@ -219,20 +230,18 @@
view.PutL();
- CleanupStack::PopAndDestroy( colSet );
+ CleanupStack::PopAndDestroy( colSet ); // Delete colSet.
- CleanupStack::PopAndDestroy( &view );
+ CleanupStack::PopAndDestroy( &view ); // Close view.
}
+ CleanupStack::PopAndDestroy( buf ); // Delete buf
+ CleanupStack::Pop( &aDatabase );
+ CleanupStack::Pop( &aSession );
+
aDatabase.Compact();
-
- CleanupStack::PopAndDestroy( buf );
- CleanupStack::Pop( &aDatabase );
- CleanupStack::Pop( &aFileServerSession );
}
-// ----------------------------------------------------------
-
void EapSimDbUtils::SetIndexL(
RDbNamedDatabase& aDatabase,
const TIndexType aIndexType,
@@ -242,37 +251,25 @@
const TInt aNewIndex,
const eap_type_value_e aNewTunnelingType)
{
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::SetIndexL(): -Start- aIndexType=%d, aIndex=%d, aTunnelingType=0xfe%06x%08x\n"),
- aIndexType,
- aIndex,
- aTunnelingType.get_vendor_id(),
- aTunnelingType.get_vendor_type()));
-
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::SetIndexL(): -Start- aNewIndexType=%d, aNewIndex=%d, aNewTunnelingType=0xfe%06x%08x\n"),
- aNewIndexType,
- aNewIndex,
- aNewTunnelingType.get_vendor_id(),
- aNewTunnelingType.get_vendor_type()));
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ TUint aTunnelingVendorType = aTunnelingType.get_vendor_type();
+ TUint aNewTunnelingVendorType = aNewTunnelingType.get_vendor_type();
- EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapSimDbUtils::SetIndexL()\n"));
+#else
+
+ TUint aTunnelingVendorType = static_cast<TUint>(aTunnelingType);
+ TUint aNewTunnelingVendorType = static_cast<TUint>(aNewTunnelingType);
+
+#endif //#ifdef USE_EAP_EXPANDED_TYPES
HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
TPtr sqlStatement = buf->Des();
- _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
+ _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
- sqlStatement.Format(KSQL,
- &KSimTableName,
- &KServiceType,
- aIndexType,
- &KServiceIndex,
- aIndex,
- &KTunnelingTypeVendorId,
- aTunnelingType.get_vendor_id(),
- &KTunnelingType,
- aTunnelingType.get_vendor_type());
+ sqlStatement.Format(KSQL, &KSimTableName,
+ &KServiceType, aIndexType, &KServiceIndex, aIndex, &KTunnelingType, aTunnelingVendorType);
RDbView view;
@@ -301,19 +298,16 @@
view.UpdateL();
view.SetColL(colSet->ColNo(KServiceType), static_cast<TUint>(aNewIndexType));
+
view.SetColL(colSet->ColNo(KServiceIndex), aNewIndex);
- view.SetColL(colSet->ColNo(KTunnelingTypeVendorId), aNewTunnelingType.get_vendor_id());
- view.SetColL(colSet->ColNo(KTunnelingType), aNewTunnelingType.get_vendor_type());
+
+ view.SetColL(colSet->ColNo(KTunnelingType), aNewTunnelingVendorType);
view.PutL();
- CleanupStack::PopAndDestroy(colSet);
- CleanupStack::PopAndDestroy(&view);
- CleanupStack::PopAndDestroy(buf);
+ CleanupStack::PopAndDestroy(3); // view, colset, buf
}
-// ----------------------------------------------------------
-
void EapSimDbUtils::SetConfigurationL(
RDbNamedDatabase& aDatabase,
const EAPSettings& aSettings,
@@ -321,23 +315,80 @@
const TInt aIndex,
const eap_type_value_e aTunnelingType)
{
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::SetConfigurationL(): -Start- aIndexType=%d, aIndex=%d, aTunnelingType=0xfe%06x%08x\n"),
- aIndexType,
- aIndex,
- aTunnelingType.get_vendor_id(),
- aTunnelingType.get_vendor_type()));
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ TUint aTunnelingVendorType = aTunnelingType.get_vendor_type();
+
+#else
+
+ TUint aTunnelingVendorType = static_cast<TUint>(aTunnelingType);
+
+#endif //#ifdef USE_EAP_EXPANDED_TYPES
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::SetConfigurationL -Start- aIndexType=%d, aIndex=%d, aTunnelingVendorType=%d\n"),
+ aIndexType,aIndex, aTunnelingVendorType));
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("*************************** SetConfigurationL - Set the below values: ***************************\n")) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - Set these values for EAPType=%d"),aSettings.iEAPType) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, Username=%S"),aSettings.iUsernamePresent, &(aSettings.iUsername)) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, Password=%S"),aSettings.iPasswordPresent, &(aSettings.iPassword)) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, Realm=%S"),aSettings.iRealmPresent, &(aSettings.iRealm)) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, UsePseudonyms=%d"),aSettings.iUsePseudonymsPresent, aSettings.iUsePseudonyms) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, VerifyServerRealm=%d"),
+ aSettings.iVerifyServerRealmPresent, aSettings.iVerifyServerRealm) );
- EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapSimDbUtils::SetConfigurationL()\n"));
-
- EAP_TRACE_DEBUG_SYMBIAN((_L("*************************** SetConfigurationL(): Set the below values: ***************************\n")) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, RequireClientAuthentication=%d"),
+ aSettings.iRequireClientAuthenticationPresent, aSettings.iRequireClientAuthentication) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, SessionValidityTime=%d minutes"),
+ aSettings.iSessionValidityTimePresent, aSettings.iSessionValidityTime) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, CipherSuites Count=%d"),
+ aSettings.iCipherSuitesPresent, aSettings.iCipherSuites.Count()) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, PEAPv0Allowed=%d, PEAPv1Allowed=%d, PEAPv2Allowed=%d"),
+ aSettings.iPEAPVersionsPresent, aSettings.iPEAPv0Allowed,aSettings.iPEAPv1Allowed, aSettings.iPEAPv2Allowed ) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, Certificates Count=%d"),
+ aSettings.iCertificatesPresent, aSettings.iCertificates.Count()) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - Certificate details below: \n")) );
+
+ for( TInt n=0; n < aSettings.iCertificates.Count(); n++ )
+ {
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - Certificate type:%d \n"), aSettings.iCertificates[n].iCertType) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - certificates - present=%d, SubjectName=%S"),
+ aSettings.iCertificates[n].iSubjectNamePresent, &(aSettings.iCertificates[n].iSubjectName) ) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - certificates - present=%d, IssuerName=%S"),
+ aSettings.iCertificates[n].iIssuerNamePresent, &(aSettings.iCertificates[n].iIssuerName) ) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - certificates - present=%d, SerialNumber=%S"),
+ aSettings.iCertificates[n].iSerialNumberPresent, &(aSettings.iCertificates[n].iSerialNumber) ) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - certificates - SubjectKeyID present=%d"),
+ aSettings.iCertificates[n].iSubjectKeyIDPresent ) );
+
+ EAP_TRACE_DATA_DEBUG_SYMBIAN( ( "SubjectKeyID:", aSettings.iCertificates[n].iSubjectKeyID.Ptr(),
+ aSettings.iCertificates[n].iSubjectKeyID.Size() ) );
+
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - certificates - present=%d, Thumbprint=%S"),
+ aSettings.iCertificates[n].iThumbprintPresent, &(aSettings.iCertificates[n].iThumbprint) ) );
+ }
- EAP_TRACE_SETTINGS(&aSettings);
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - present=%d, EncapsulatedEAPTypes Count=%d"),
+ aSettings.iEncapsulatedEAPTypesPresent, aSettings.iEncapsulatedEAPTypes.Count()) );
+ for( TInt m=0; m < aSettings.iEncapsulatedEAPTypes.Count(); m++ )
+ {
+ EAP_TRACE_DEBUG_SYMBIAN((_L("SetConfigurationL - EncapsulatedEAPTypes=%d"),
+ aSettings.iEncapsulatedEAPTypes[m]) );
+ }
- EAP_TRACE_DEBUG_SYMBIAN((_L("*************************** SetConfigurationL(): Set the above values: ***************************\n")) );
+ EAP_TRACE_DEBUG_SYMBIAN((_L("*************************** SetConfigurationL - Set the above values: ***************************\n")) );
// Check if the settings are for the correct type
- if (aSettings.iEAPExpandedType != (*EapExpandedTypeSim.GetType()))
+ if (aSettings.iEAPType != EAPSettings::EEapSim)
{
User::Leave(KErrNotSupported);
}
@@ -347,18 +398,9 @@
RDbView view;
- _LIT(KSQLQuery, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
-
- sqlStatement.Format(KSQLQuery,
- &KSimTableName,
- &KServiceType,
- aIndexType,
- &KServiceIndex,
- aIndex,
- &KTunnelingTypeVendorId,
- aTunnelingType.get_vendor_id(),
- &KTunnelingType,
- aTunnelingType.get_vendor_type());
+ _LIT(KSQLQuery, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
+ sqlStatement.Format(KSQLQuery, &KSimTableName,
+ &KServiceType, aIndexType, &KServiceIndex, aIndex, &KTunnelingType, aTunnelingVendorType);
// Evaluate view
User::LeaveIfError(view.Prepare(aDatabase, TDbQuery(sqlStatement)));
@@ -375,50 +417,11 @@
CDbColSet* colSet = view.ColSetL();
CleanupStack::PushL(colSet);
-
- if (aSettings.iUseAutomaticUsernamePresent)
- {
- // This is to set the automatic or manual status.
- TUint useManualUsernameStatus;
-
- if (aSettings.iUseAutomaticUsername)
- {
- useManualUsernameStatus = EEapDbFalse;
- }
- else
- {
- useManualUsernameStatus = EEapDbTrue;
- }
-
- // Set the value.
- view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_username_literal), useManualUsernameStatus);
- }
-
-
- if (aSettings.iUseAutomaticRealmPresent)
- {
- // This is to set the automatic or manual status.
- TUint useManualRealmStatus;
-
- if (aSettings.iUseAutomaticRealm)
- {
- useManualRealmStatus = EEapDbFalse;
- }
- else
- {
- useManualRealmStatus = EEapDbTrue;
- }
-
- // Set the value.
- view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_realm_literal), useManualRealmStatus);
- }
-
-
// Manual username
- if (aSettings.iUsernamePresent) // no need to check as there may be empty usernames with the present status is EFlase.
+ //if (aSettings.iUsernamePresent) // no need to check as there may be empty usernames with the present status is EFlase.
{
// Check if length of username is less than the max length.
- if(aSettings.iUsername.Length() > KMaxUsernameLengthInDB)
+ if(aSettings.iUsername.Length() > KMaxManualUsernameLengthInDB)
{
// Username too long. Can not be stored in DB.
@@ -430,13 +433,28 @@
// Length is ok. Set the value in DB. Value could be empty. It doesn't matter.
view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_manual_username_literal), aSettings.iUsername);
+
+ // This is to set the automatic or manual status.
+ TUint useManualUsernameStatus;
+
+ if (aSettings.iUsernamePresent)
+ {
+ useManualUsernameStatus = EGSMSIMUseManualUsernameYes;
+ }
+ else
+ {
+ useManualUsernameStatus = EGSMSIMUseManualUsernameNo;
+ }
+
+ // Set the value.
+ view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_username_literal), useManualUsernameStatus);
}
// Manual realm
- if (aSettings.iRealmPresent) // no need to check as there may be empty realms with the present status is EFlase.
+ //if (aSettings.iRealmPresent) // no need to check as there may be empty realms with the present status is EFlase.
{
// Check if length of realm is less than the max length.
- if(aSettings.iRealm.Length() > KMaxRealmLengthInDB)
+ if(aSettings.iRealm.Length() > KMaxManualRealmLengthInDB)
{
// Realm too long. Can not be stored in DB.
@@ -448,6 +466,21 @@
// Length is ok. Set the value in DB. Value could be empty. It doesn't matter.
view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_manual_realm_literal), aSettings.iRealm);
+
+ // This is to set the automatic or manual status.
+ TUint useManualRealmStatus;
+
+ if (aSettings.iRealmPresent)
+ {
+ useManualRealmStatus = EGSMSIMUseManualRealmYes;
+ }
+ else
+ {
+ useManualRealmStatus = EGSMSIMUseManualRealmNo;
+ }
+
+ // Set the value.
+ view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_realm_literal), useManualRealmStatus);
}
// UsePseudonym
@@ -456,20 +489,20 @@
if (aSettings.iUsePseudonyms)
{
// Use pseudonym.
- view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal), EEapDbTrue);
+ view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal), EGSMSIMUsePseudonymIdYes);
}
else
{
// Don't use pseudonym.
- view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal), EEapDbFalse);
+ view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal), EGSMSIMUsePseudonymIdNo);
}
}
else
{
// Value is not configured. Value is read from config file if needed.
- view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal), EEapDbNotValid);
+ view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal), EGSMSIMUsePseudonymIdNotValid);
}
-
+
// Session validity time
if (aSettings.iSessionValidityTimePresent)
{
@@ -480,27 +513,23 @@
view.SetColL(colSet->ColNo(cf_str_EAP_GSMSIM_max_session_validity_time_literal), validityInMicro);
}
-
+
if (aIndexType != EVpn) // This allows current VPN IF to use reauthentication. VPN does not zero last full authentication time.
{
// 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.
-
+
view.SetColL(colSet->ColNo(KGSMSIMLastFullAuthTime), default_FullAuthTime);
- EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::SetConfigurationL(): Session Validity: Resetting Full Auth Time since settings are modified\n")));
+ EAP_TRACE_DEBUG_SYMBIAN((_L("Session Validity: EAP-Type=%d, Resetting Full Auth Time since settings are modified\n"),
+ aSettings.iEAPType ));
}
-
+
view.PutL();
-
- CleanupStack::PopAndDestroy(colSet);
- CleanupStack::PopAndDestroy(&view);
- CleanupStack::PopAndDestroy(buf);
+ CleanupStack::PopAndDestroy(3); // view, colset, buf
}
-// ----------------------------------------------------------
-
void EapSimDbUtils::GetConfigurationL(
RDbNamedDatabase& aDatabase,
EAPSettings& aSettings,
@@ -508,14 +537,15 @@
const TInt aIndex,
const eap_type_value_e aTunnelingType)
{
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::GetConfigurationL(): -Start- aIndexType=%d, aIndex=%d, aTunnelingType=0xfe%06x%08x\n"),
- aIndexType,
- aIndex,
- aTunnelingType.get_vendor_id(),
- aTunnelingType.get_vendor_type()));
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ TUint aTunnelingVendorType = aTunnelingType.get_vendor_type();
- EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapSimDbUtils::GetConfigurationL()\n"));
+#else
+
+ TUint aTunnelingVendorType = static_cast<TUint>(aTunnelingType);
+
+#endif //#ifdef USE_EAP_EXPANDED_TYPES
HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
TPtr sqlStatement = buf->Des();
@@ -523,18 +553,9 @@
RDbView view;
// Form the query
- _LIT(KSQLQuery, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
-
- sqlStatement.Format(KSQLQuery,
- &KSimTableName,
- &KServiceType,
- aIndexType,
- &KServiceIndex,
- aIndex,
- &KTunnelingTypeVendorId,
- aTunnelingType.get_vendor_id(),
- &KTunnelingType,
- aTunnelingType.get_vendor_type());
+ _LIT(KSQLQuery, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
+ sqlStatement.Format(KSQLQuery, &KSimTableName,
+ &KServiceType, aIndexType, &KServiceIndex, aIndex, &KTunnelingType, aTunnelingVendorType);
// Evaluate view
User::LeaveIfError(view.Prepare(aDatabase, TDbQuery(sqlStatement)));
@@ -551,100 +572,70 @@
CDbColSet* colSet = view.ColSetL();
CleanupStack::PushL(colSet);
- aSettings.iEAPExpandedType = *EapExpandedTypeSim.GetType();
-
+ aSettings.iEAPType = EAPSettings::EEapSim;
+
+ // Username
+ TPtrC username = view.ColDes(colSet->ColNo(cf_str_EAP_GSMSIM_manual_username_literal));
+ aSettings.iUsername.Copy(username);
+
+ // For manual or automatic status.
+ TUint useUsername = view.ColUint(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_username_literal));
+ if(useUsername == EGSMSIMUseManualUsernameNo)
+ {
+ aSettings.iUsernamePresent = EFalse;
+ }
+ else
{
- // For manual or automatic username.
- TUint useUsername = view.ColUint(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_username_literal));
-
- aSettings.iUseAutomaticUsernamePresent = ETrue;
-
- if(useUsername == EEapDbTrue)
- {
- aSettings.iUseAutomaticUsername = EFalse;
- }
- else
+ aSettings.iUsernamePresent = ETrue;
+ }
+
+ // Realm
+ TPtrC realm = view.ColDes(colSet->ColNo(cf_str_EAP_GSMSIM_manual_realm_literal));
+ aSettings.iRealm.Copy(realm);
+
+ // For manual or automatic status.
+ TUint useRealm = view.ColUint(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_realm_literal));
+ if(useRealm == EGSMSIMUseManualRealmNo)
+ {
+ aSettings.iRealmPresent = EFalse;
+ }
+ else
+ {
+ aSettings.iRealmPresent = ETrue;
+ }
+
+ TInt usePseudonym = view.ColUint(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal));
+
+ if (usePseudonym == EGSMSIMUsePseudonymIdNotValid)
+ {
+ aSettings.iUsePseudonymsPresent = EFalse;
+ }
+ else
+ {
+ if (usePseudonym == EGSMSIMUsePseudonymIdNo)
{
- aSettings.iUseAutomaticUsername = ETrue;
- }
- }
-
- {
- // For manual or automatic realm.
- TUint useRealm = view.ColUint(colSet->ColNo(cf_str_EAP_GSMSIM_use_manual_realm_literal));
-
- aSettings.iUseAutomaticRealmPresent = ETrue;
-
- if(useRealm == EEapDbTrue)
- {
- aSettings.iUseAutomaticRealm = EFalse;
+ aSettings.iUsePseudonyms = EFalse;
}
else
{
- aSettings.iUseAutomaticRealm = ETrue;
- }
- }
-
- {
- // Username
- TPtrC username = view.ColDes(colSet->ColNo(cf_str_EAP_GSMSIM_manual_username_literal));
-
- aSettings.iUsernamePresent = ETrue;
-
- aSettings.iUsername.Copy(username);
- }
-
- {
- // Realm
- TPtrC realm = view.ColDes(colSet->ColNo(cf_str_EAP_GSMSIM_manual_realm_literal));
-
- aSettings.iRealmPresent = ETrue;
-
- aSettings.iRealm.Copy(realm);
- }
-
- {
- TInt usePseudonym = view.ColUint(colSet->ColNo(cf_str_EAP_GSMSIM_use_pseudonym_identity_literal));
-
- if (usePseudonym == EEapDbNotValid)
- {
- aSettings.iUsePseudonymsPresent = EFalse;
+ aSettings.iUsePseudonyms = ETrue;
}
- else
- {
- if (usePseudonym == EEapDbFalse)
- {
- aSettings.iUsePseudonyms = EFalse;
- }
- else
- {
- aSettings.iUsePseudonyms = ETrue;
- }
-
- aSettings.iUsePseudonymsPresent = ETrue;
- }
- }
-
- {
- // Session validity time
- TInt64 maxSessionTimeMicro = view.ColInt64(colSet->ColNo(cf_str_EAP_GSMSIM_max_session_validity_time_literal));
- // Convert the time to minutes.
- TInt64 maxSessionTimeMin = maxSessionTimeMicro / KMicroSecsInAMinute;
-
- aSettings.iSessionValidityTime = static_cast<TUint>(maxSessionTimeMin);
- aSettings.iSessionValidityTimePresent = ETrue;
- }
-
- CleanupStack::PopAndDestroy(colSet);
- CleanupStack::PopAndDestroy(&view);
- CleanupStack::PopAndDestroy(buf);
-
- EAP_TRACE_SETTINGS(&aSettings);
+ aSettings.iUsePseudonymsPresent = ETrue;
+ }
+
+ // Session validity time
+ TInt64 maxSessionTimeMicro = view.ColInt64(colSet->ColNo(cf_str_EAP_GSMSIM_max_session_validity_time_literal));
+
+ // Convert the time to minutes.
+ TInt64 maxSessionTimeMin = maxSessionTimeMicro / KMicroSecsInAMinute;
+
+ aSettings.iSessionValidityTime = static_cast<TUint>(maxSessionTimeMin);
+ aSettings.iSessionValidityTimePresent = ETrue;
+
+ CleanupStack::PopAndDestroy(3); // view, colset, buf
}
-// ----------------------------------------------------------
-
void EapSimDbUtils::CopySettingsL(
RDbNamedDatabase& aDatabase,
const TIndexType aSrcIndexType,
@@ -654,37 +645,25 @@
const TInt aDestIndex,
const eap_type_value_e aDestTunnelingType)
{
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::CopySettingsL(): -Start- aSrcIndexType=%d, aSrcIndex=%d, aSrcTunnelingType=0xfe%06x%08x\n"),
- aSrcIndexType,
- aSrcIndex,
- aSrcTunnelingType.get_vendor_id(),
- aSrcTunnelingType.get_vendor_type()));
-
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::CopySettingsL(): -Start- aDestIndexType=%d, aDestTunnelingType=0xfe%06x%08x\n"),
- aDestIndexType,
- aDestIndex,
- aDestTunnelingType.get_vendor_id(),
- aDestTunnelingType.get_vendor_type()));
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ TUint aSrcTunnelingVendorType = aSrcTunnelingType.get_vendor_type();
+ TUint aDestTunnelingVendorType = aDestTunnelingType.get_vendor_type();
- EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapSimDbUtils::CopySettingsL()\n"));
+#else
+
+ TUint aSrcTunnelingVendorType = static_cast<TUint>(aSrcTunnelingType);
+ TUint aDestTunnelingVendorType = static_cast<TUint>(aDestTunnelingType);
+
+#endif //#ifdef USE_EAP_EXPANDED_TYPES
HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
TPtr sqlStatement = buf->Des();
- _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
+ _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
- sqlStatement.Format(KSQL,
- &KSimTableName,
- &KServiceType,
- aSrcIndexType,
- &KServiceIndex,
- aSrcIndex,
- &KTunnelingTypeVendorId,
- aSrcTunnelingType.get_vendor_id(),
- &KTunnelingType,
- aSrcTunnelingType.get_vendor_type());
+ sqlStatement.Format(KSQL, &KSimTableName,
+ &KServiceType, aSrcIndexType, &KServiceIndex, aSrcIndex, &KTunnelingType, aSrcTunnelingVendorType);
RDbView view;
@@ -715,122 +694,112 @@
CleanupStack::PushL(colSet);
view.SetColL(colSet->ColNo(KServiceType), static_cast<TUint>(aDestIndexType));
+
view.SetColL(colSet->ColNo(KServiceIndex), aDestIndex);
- view.SetColL(colSet->ColNo(KTunnelingTypeVendorId), aDestTunnelingType.get_vendor_id());
- view.SetColL(colSet->ColNo(KTunnelingType), aDestTunnelingType.get_vendor_type());
+
+ view.SetColL(colSet->ColNo(KTunnelingType), aDestTunnelingVendorType);
view.PutL();
- CleanupStack::PopAndDestroy(colSet);
- CleanupStack::PopAndDestroy(&view);
- CleanupStack::PopAndDestroy(buf);
+ CleanupStack::PopAndDestroy(3); // view, colset, buf
}
-// ----------------------------------------------------------
-
void EapSimDbUtils::DeleteConfigurationL(
const TIndexType aIndexType,
const TInt aIndex,
const eap_type_value_e aTunnelingType)
{
- EAP_TRACE_DEBUG_SYMBIAN(
- (_L("EapSimDbUtils::DeleteConfigurationL(): -Start- aIndexType=%d, aIndex=%d, aTunnelingType=0xfe%06x%08x\n"),
- aIndexType,
- aIndex,
- aTunnelingType.get_vendor_id(),
- aTunnelingType.get_vendor_type()));
+#ifdef USE_EAP_EXPANDED_TYPES
+
+ TUint aTunnelingVendorType = aTunnelingType.get_vendor_type();
- EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: EapSimDbUtils::DeleteConfigurationL()\n"));
+#else
- RDbNamedDatabase aDatabase;
- RFs aFileServerSession;
+ TUint aTunnelingVendorType = static_cast<TUint>(aTunnelingType);
+
+#endif //#ifdef USE_EAP_EXPANDED_TYPES
- TInt error(KErrNone);
- TFileName aPrivateDatabasePathName;
+ RDbs session;
+ RDbNamedDatabase database;
+ // Connect to the DBMS server.
+ User::LeaveIfError(session.Connect());
+ CleanupClosePushL(session);
+
+#ifdef SYMBIAN_SECURE_DBMS
- error = aFileServerSession.Connect();
- EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::DeleteConfigurationL(): - aFileServerSession.Connect(), error=%d\n"), error));
- User::LeaveIfError(error);
-
- EapPluginTools::CreateDatabaseLC(
- aDatabase,
- aFileServerSession,
- error,
- KEapSimDatabaseName,
- aPrivateDatabasePathName);
-
- if(error == KErrNone)
+ // Create the secure shared database with the specified secure policy.
+ // Database will be created in the data caging path for DBMS (C:\private\100012a5).
+
+ TInt err = database.Create(session, KDatabaseName, KSecureUIDFormat);
+
+ if(err == KErrNone)
{
// Database was created so it was empty. No need for further actions.
- aDatabase.Destroy();
- CleanupStack::PopAndDestroy(&aDatabase);
- CleanupStack::PopAndDestroy(&aFileServerSession);
+ database.Destroy();
+ CleanupStack::PopAndDestroy();
return;
- }
- else if (error != KErrAlreadyExists)
+
+ }
+ else if (err != KErrAlreadyExists)
{
- User::LeaveIfError(error);
+ User::LeaveIfError(err);
}
- error = aDatabase.Open(aFileServerSession, aPrivateDatabasePathName);
+ // Database existed, open it.
+ User::LeaveIfError(database.Open(session, KDatabaseName, KSecureUIDFormat));
+ CleanupClosePushL(database);
+
+#else
+ // For non-secured database. The database will be created in the old location (c:\system\data).
+
+ RFs fsSession;
+ User::LeaveIfError(fsSession.Connect());
+ CleanupClosePushL(fsSession);
+ TInt err = database.Create(fsSession, KDatabaseName);
- User::LeaveIfError(error);
+ if(err == KErrNone)
+ {
+ // Database was created so it was empty. No need for further actions.
+ database.Destroy();
+ CleanupStack::PopAndDestroy(2); // fsSession, database session
+ return;
+
+ }
+ else if (err != KErrAlreadyExists)
+ {
+ User::LeaveIfError(err);
+ }
+
+ CleanupStack::PopAndDestroy(); // close fsSession
+
+ User::LeaveIfError(database.Open(session, KDatabaseName));
+ CleanupClosePushL(database);
+
+#endif // #ifdef SYMBIAN_SECURE_DBMS
HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
TPtr sqlStatement = buf->Des();
// Main settings table
- _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d AND %S=%d");
-
- sqlStatement.Format(
- KSQL,
- &KSimTableName,
- &KServiceType,
- aIndexType,
- &KServiceIndex,
- aIndex,
- &KTunnelingTypeVendorId,
- aTunnelingType.get_vendor_id(),
- &KTunnelingType,
- aTunnelingType.get_vendor_type());
-
+ _LIT(KSQL, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
+ sqlStatement.Format(KSQL, &KSimTableName,
+ &KServiceType, aIndexType, &KServiceIndex, aIndex, &KTunnelingType, aTunnelingVendorType);
// Evaluate view
RDbView view;
-
- error = view.Prepare(aDatabase, TDbQuery(sqlStatement), TDbWindow::EUnlimited);
-
- User::LeaveIfError(error);
-
+ User::LeaveIfError(view.Prepare(database,TDbQuery(sqlStatement), TDbWindow::EUnlimited));
CleanupClosePushL(view);
-
- error = view.EvaluateAll();
-
- User::LeaveIfError(error);
+ User::LeaveIfError(view.EvaluateAll());
// Delete rows
if (view.FirstL())
{
- do
- {
- EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::DeleteConfigurationL(): calls view.DeleteL()\n")));
-
+ do {
view.DeleteL();
- }
- while (view.NextL() != EFalse);
-
- EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::DeleteConfigurationL(): All rows deleted.\n")));
- }
- else
- {
- EAP_TRACE_DEBUG_SYMBIAN((_L("EapSimDbUtils::DeleteConfigurationL(): No rows to delete.\n")));
+ } while (view.NextL() != EFalse);
}
- CleanupStack::PopAndDestroy(&view);
- CleanupStack::PopAndDestroy(buf);
- CleanupStack::PopAndDestroy(&aDatabase);
- CleanupStack::PopAndDestroy(&aFileServerSession);
+ // Close database
+ CleanupStack::PopAndDestroy(4); // view, buf, database, session
}
-// ----------------------------------------------------------
-
// End of file