eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiCipherSuites.cpp
branchRCL_3
changeset 45 bad0cc58d154
parent 2 1c7bc153c08e
child 46 c74b3d9f6b9e
--- a/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiCipherSuites.cpp	Thu Aug 19 09:58:27 2010 +0300
+++ b/eapol/eapol_framework/eapol_symbian/am/type/tls_peap/symbian/plugin/src/EapTlsPeapUiCipherSuites.cpp	Tue Aug 31 15:16:37 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 /*
-* %version: 13.1.2 %
+* %version: %
 */
 
 // This is enumeration of EAPOL source code.
@@ -30,26 +30,33 @@
 
 // INCLUDE FILES
 #include <e32base.h>
-#include "EapTlsPeapUtils.h"
+//#include "EapTlsPeapUtils.h"
 #include "EapTlsPeapDbParameterNames.h"
 #include "EapTlsPeapDbDefaults.h"
 #include <EapTlsPeapUiConnection.h>
 #include <EapTlsPeapUiCipherSuites.h>
 #include <EapTlsPeapUiCipherSuite.h>
+#include <EapTraceSymbian.h>
+#include <EapType.h>
 
-const TUint KMaxSqlQueryLength = 256;
+//const TUint KMaxSqlQueryLength = 256;
 
 CEapTlsPeapUiCipherSuites::CEapTlsPeapUiCipherSuites(CEapTlsPeapUiConnection * const aUiConn)
 : iIsOpened(EFalse)
 , iUiConn(aUiConn)
 , iDataPtr(NULL)
 {
+	EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCipherSuites::CEapTlsPeapUiCipherSuites()\n")));
+	EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCipherSuites::CEapTlsPeapUiCipherSuites()\n"));
 }
 
 
 CEapTlsPeapUiCipherSuites::~CEapTlsPeapUiCipherSuites()
 {
-    if (iUiConn)
+	EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCipherSuites::~CEapTlsPeapUiCipherSuites()\n")));
+	EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCipherSuites::~CEapTlsPeapUiCipherSuites()\n"));
+
+	if (iUiConn)
     {
         Close();
         iUiConn = NULL;
@@ -59,16 +66,24 @@
 
 TInt CEapTlsPeapUiCipherSuites::Open()
 {
+	EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCipherSuites::Open()\n")));
+	EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCipherSuites::Open()\n"));
+
     if (iIsOpened)
     {
         return KErrAlreadyExists;
     }
 
-    TInt err = iUiConn->GetDatabase(iDatabase);
+	TEapExpandedType aEapType(iUiConn->GetEapType());
+
+    TRAPD(err, iEapTypeConnection = CEapType::NewL(iUiConn->GetIndexType(), iUiConn->GetIndex(), aEapType));
     if (err != KErrNone)
-    {
+        {
+        EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCipherSuites::Open() CEapType::NewL err=%d\n"),err));
         return err;
-    }
+        }
+    
+    iEapTypeConnection->SetTunnelingType(iUiConn->GetTunnelingType());
 
     iIsOpened = ETrue;
 
@@ -76,8 +91,11 @@
 }
 
 
-TInt CEapTlsPeapUiCipherSuites::GetCipherSuites(CArrayFixFlat<TEapTlsPeapUiCipherSuite> ** aDataPtr)
+TInt CEapTlsPeapUiCipherSuites::GetCipherSuites(RPointerArray<TEapTlsPeapUiCipherSuite> ** aDataPtr)
 {
+	EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCipherSuites::GetCipherSuites()\n")));
+	EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCipherSuites::GetCipherSuites()\n"));
+
     if (aDataPtr == NULL)
     {
         return KErrArgument;
@@ -91,19 +109,25 @@
     {
     	*aDataPtr = iDataPtr;
     	return KErrNone;
-    }
-    iDataPtr = new CArrayFixFlat<TEapTlsPeapUiCipherSuite>(8);
+	}
+
+    iDataPtr = new RPointerArray<TEapTlsPeapUiCipherSuite>(8);
     if (!iDataPtr)
     {
         return KErrNoMemory;
     }
     
-    TInt i(0);
-	while (available_cipher_suites[i] != 0)
+    TInt i_ind(0);
+	while (available_cipher_suites[i_ind] != 0)
 	{		
-		TEapTlsPeapUiCipherSuite tmp;
-		tmp.iCipherSuite = available_cipher_suites[i];
-		tmp.iIsEnabled = EFalse;
+		TEapTlsPeapUiCipherSuite * const tmp = new TEapTlsPeapUiCipherSuite;
+		if (tmp == 0)
+		{
+	        return KErrNoMemory;
+		}
+
+		tmp->SetCipherSuite(available_cipher_suites[i_ind]);
+		tmp->SetIsEnabled(EFalse);
 
 		TRAPD(err, iDataPtr->AppendL(tmp));
 		if (err != KErrNone)
@@ -111,19 +135,38 @@
 			return err;
 		}
 
-		i++;
+		i_ind++;
 	}
 		
-    
-
-    TRAPD(err, FetchDataL());
+    EAPSettings aSettings;
     
-    if (err != KErrNone)
-    {
-        delete iDataPtr;
-        return err;
-    }
+	TRAPD(error,iEapTypeConnection->GetConfigurationL(aSettings));
+	if (error)
+	{
+		EAP_TRACE_DEBUG_SYMBIAN((_L("ERROR: CEapTlsPeapUiCipherSuites::GetCipherSuites() GetConfigurationL(): failed %d\n"), error));
+		return error;
+	}
+
+	if (aSettings.iCipherSuitesPresent)
+	{
+		TInt i_ind(0);
 
+		for (i_ind = 0; i_ind < aSettings.iCipherSuites.Count(); ++i_ind)
+		{
+			TUint aCipherSuite = aSettings.iCipherSuites[i_ind];
+			TInt j_ind(0);
+
+			for (j_ind = 0; j_ind < iDataPtr->Count(); j_ind++)
+			{
+				if ((*iDataPtr)[j_ind]->GetCipherSuite() == aCipherSuite)
+				{
+					(*iDataPtr)[j_ind]->SetIsEnabled(ETrue);
+					break;
+				}
+			}
+		}
+	}
+    
    	*aDataPtr = iDataPtr;
 
     return KErrNone;
@@ -132,105 +175,41 @@
 
 TInt CEapTlsPeapUiCipherSuites::Update()
 {
-	TRAPD(err, UpdateL());
-	return err;
-}
+	EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCipherSuites::Update()\n")));
+	EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCipherSuites::Update()\n"));
+
+	EAPSettings aSettings;
 
-void CEapTlsPeapUiCipherSuites::UpdateL()
-{
-	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
-	TPtr sqlStatement = buf->Des();
+	aSettings.iCipherSuitesPresent = ETrue;
 
-	// Form the query. Query everything.
-	_LIT(KSQLQuery, "SELECT * FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
-
-	if (iUiConn->GetEapType() == eap_type_tls)
+	TInt i_ind(0);
+	
+	for (i_ind = 0; i_ind < iDataPtr->Count(); i_ind++)
 	{
-		sqlStatement.Format(KSQLQuery,
-							&KTlsAllowedCipherSuitesDatabaseTableName,
-							&KServiceType,
-							iUiConn->GetIndexType(),
-							&KServiceIndex,
-							iUiConn->GetIndex(),
-							&KTunnelingType, 
-							iUiConn->GetTunnelingType());
-	}
-	else if (iUiConn->GetEapType() == eap_type_peap)
-	{
-		sqlStatement.Format(KSQLQuery,
-							&KPeapAllowedCipherSuitesDatabaseTableName,
-							&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,
-							&KTtlsAllowedCipherSuitesDatabaseTableName,
-							&KServiceType,
-							iUiConn->GetIndexType(),
-							&KServiceIndex,
-							iUiConn->GetIndex(),
-							&KTunnelingType, 
-							iUiConn->GetTunnelingType());
+		if ((*iDataPtr)[i_ind]->GetIsEnabled())
+		{
+			TInt error = aSettings.iCipherSuites.Append((*iDataPtr)[i_ind]->GetCipherSuite());
+			if (error != KErrNone)
+			{
+				return error;
+			}
+		}
 	}
 
-#ifdef USE_FAST_EAP_TYPE
-	else if (iUiConn->GetEapType() == eap_type_fast)
-	{
-		sqlStatement.Format(KSQLQuery,
-							&KFastAllowedCipherSuitesDatabaseTableName,
-							&KServiceType,
-							iUiConn->GetIndexType(),
-							&KServiceIndex,
-							iUiConn->GetIndex(),
-							&KTunnelingType, 
-							iUiConn->GetTunnelingType());
-	}
-#endif //#ifdef USE_FAST_EAP_TYPE
-	
-	// Evaluate view
-	RDbView view;
-	User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(sqlStatement)));
-	CleanupClosePushL(view);
-	User::LeaveIfError(view.EvaluateAll());	
+	TRAPD(error,iEapTypeConnection->SetConfigurationL(aSettings));
+
+	EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiDataConnection::Update(): error = %d\n"),error));
 
-	// Delete old rows
-	if (view.FirstL())
-	{		
-		do {
-			view.DeleteL();
-		} while (view.NextL() != EFalse);
-	}	
+	return error;
+}
 
-	// Get column set so we get the correct column numbers
-	CDbColSet* colSet = view.ColSetL();
-	CleanupStack::PushL(colSet);
-	
-	TInt i(0);
-	
-	for (i = 0; i < iDataPtr->Count(); i++)
-	{
-		if (iDataPtr->At(i).iIsEnabled)
-		{
-			view.InsertL();			
-			view.SetColL(colSet->ColNo(KServiceType), static_cast<TUint>(iUiConn->GetIndexType()));
-			view.SetColL(colSet->ColNo(KServiceIndex), static_cast<TUint>(iUiConn->GetIndex()));
-			view.SetColL(colSet->ColNo(KTunnelingType), static_cast<TUint>(iUiConn->GetTunnelingType()));
-			view.SetColL(colSet->ColNo(KCipherSuite), static_cast<TUint>(iDataPtr->At(i).iCipherSuite));
-			view.PutL();
-		}
-	}
-	CleanupStack::PopAndDestroy(colSet);
-	CleanupStack::PopAndDestroy(); // view
-	CleanupStack::PopAndDestroy(buf);    
-}
+
 
 TInt CEapTlsPeapUiCipherSuites::Close()
 {
+	EAP_TRACE_DEBUG_SYMBIAN((_L("CEapTlsPeapUiCipherSuites::Close()\n")));
+	EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapTlsPeapUiCipherSuites::Close()\n"));
+
     if (iIsOpened == EFalse)
     {
         return KErrNone;
@@ -243,109 +222,4 @@
     return KErrNone;
 }
 
-
-void CEapTlsPeapUiCipherSuites::FetchDataL()
-{
-	HBufC* buf = HBufC::NewLC(KMaxSqlQueryLength);
-	TPtr sqlStatement = buf->Des();
-
-	// Form the query. Query everything.
-	_LIT(KSQLQuery, "SELECT %S FROM %S WHERE %S=%d AND %S=%d AND %S=%d");
-
-	if (iUiConn->GetEapType() == eap_type_tls)
-	{
-		sqlStatement.Format(KSQLQuery,
-							&KCipherSuite,
-							&KTlsAllowedCipherSuitesDatabaseTableName,
-							&KServiceType,
-							iUiConn->GetIndexType(),
-							&KServiceIndex,
-							iUiConn->GetIndex(),
-							&KTunnelingType, 
-							iUiConn->GetTunnelingType());
-	}
-	else if (iUiConn->GetEapType() == eap_type_peap)
-	{
-		sqlStatement.Format(KSQLQuery,
-							&KCipherSuite,
-							&KPeapAllowedCipherSuitesDatabaseTableName,
-							&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,
-							&KCipherSuite,
-							&KTtlsAllowedCipherSuitesDatabaseTableName,
-							&KServiceType,
-							iUiConn->GetIndexType(),
-							&KServiceIndex,
-							iUiConn->GetIndex(),
-							&KTunnelingType, 
-							iUiConn->GetTunnelingType());
-	}
-
-#ifdef USE_FAST_EAP_TYPE
-	else if (iUiConn->GetEapType() == eap_type_fast)
-	{
-		sqlStatement.Format(KSQLQuery,
-							&KCipherSuite,
-							&KFastAllowedCipherSuitesDatabaseTableName,
-							&KServiceType,
-							iUiConn->GetIndexType(),
-							&KServiceIndex,
-							iUiConn->GetIndex(),
-							&KTunnelingType, 
-							iUiConn->GetTunnelingType());
-	}
-#endif //#ifdef USE_FAST_EAP_TYPE
-	
-	// Evaluate view
-	RDbView view;
-	User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(sqlStatement)));
-	CleanupClosePushL(view);
-	User::LeaveIfError(view.EvaluateAll());	
-	
-	// Get column set so we get the correct column numbers
-	CDbColSet* colSet = view.ColSetL();
-	CleanupStack::PushL(colSet);
-
-	if (view.FirstL())
-	{		
-		do {
-			view.GetL();
-
-			switch (view.ColType(colSet->ColNo(KCipherSuite)))
-			{
-			case EDbColUint32:
-				{
-					// Find the corresponding cipher suite in the list
-					TInt j(0);
-					TUint id = view.ColUint(colSet->ColNo(KCipherSuite));
-					for (j = 0; j < iDataPtr->Count(); j++)
-					{
-						if (iDataPtr->At(j).iCipherSuite == id)
-						{
-							iDataPtr->At(j).iIsEnabled = ETrue;
-							break;
-						}
-					}
-				}
-				break;
-			default:
-				User::Leave(KErrArgument);
-			}
-		} while (view.NextL() != EFalse);
-	}
-	
-	CleanupStack::PopAndDestroy(colSet);					
-	
-	CleanupStack::PopAndDestroy(); // view
-    CleanupStack::PopAndDestroy(buf);
-}
-
 // End of file