cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_engine.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_engine.cpp Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include "certtool_engine.h"
+#include "certtool_controller.h"
+#include "keytool_controller.h"
+
+
+/*static*/ CCertToolEngine* CCertToolEngine::NewLC(CCertToolController* aController)
+ {
+ CCertToolEngine* self = new (ELeave) CCertToolEngine(aController);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+/*static*/ CCertToolEngine* CCertToolEngine::NewL(CCertToolController* aController)
+ {
+ CCertToolEngine* self = CCertToolEngine::NewLC(aController);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CCertToolEngine::CCertToolEngine(CCertToolController* aController) : CActive(EPriorityNormal)
+ {
+ iCurrentAction = EIdle;
+ iController = aController;
+ }
+
+CCertToolEngine::~CCertToolEngine()
+ {
+ Cancel();
+ delete iHandler;
+ delete iKeyHandler;
+ delete iKeyController;
+
+ delete iKeyStore;
+ iFsKeyStore.Close();
+ delete iCertStore;
+ iFs.Close();
+ delete iScheduler;
+ }
+
+void CCertToolEngine::ConstructL()
+ {
+ iScheduler = new(ELeave) CActiveScheduler;
+ CActiveScheduler::Install(iScheduler);
+
+ User::LeaveIfError(iFs.Connect());
+
+ iCertStore = CUnifiedCertStore::NewL(iFs, ETrue);
+
+ User::LeaveIfError(iFsKeyStore.Connect());
+
+ iKeyStore = CUnifiedKeyStore::NewL(iFsKeyStore);
+
+ CActiveScheduler::Add(this);
+ }
+
+void CCertToolEngine::RunL()
+ {
+ if (iStatus.Int() != KErrNone)
+ {
+ User::Leave(iStatus.Int());
+ }
+
+ switch (iState)
+ {
+ case EInitialiseKeyStore:
+ {
+ iKeyHandler->DoCommandL(*iKeyStore, iParam);
+ iState = EDone;
+ }
+ break;
+ case EInitialise:
+ {
+ iHandler->DoCommandL(*iCertStore, iParam);
+ iState = EDone;
+ }
+ break;
+ case EDone:
+ {
+ }
+ break;
+ default:
+ {
+ User::Panic(_L("Certtool Engine - Illegal state"), 0);
+ }
+ }
+ }
+
+TInt CCertToolEngine::RunError(TInt aError)
+ {
+ CActiveScheduler::Stop();
+
+ switch (iCurrentAction)
+ {
+ case EList:
+ {
+ TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_LIST, aError));
+ }
+ break;
+ case EImport:
+ {
+ TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_IMPORT, aError));
+ }
+ break;
+ default:
+ {
+ TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_UNKNOWN, aError));
+ }
+ }
+ return KErrNone;
+ }
+
+
+void CCertToolEngine::DoCancel()
+ {
+ //CActiveScheduler::Stop();
+ }
+
+
+//\\//\\//\\//\\////\\//\\//\\//\\////\\//\\//\\//\\//
+//\\//\\//\\//\\// Business methods //\\//\\//\\//\\//
+//\\//\\//\\//\\////\\//\\//\\//\\////\\//\\//\\//\\//
+
+void CCertToolEngine::ListL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+ iParam = aParam;
+ iCurrentAction = EList;
+ delete iHandler;
+ iHandler = NULL;
+ iHandler = CCertToolList::NewL(iController);
+ iState = EInitialise;
+ iCertStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::ListStoresL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+ iParam = aParam;
+ iCurrentAction = EList;
+ iHandler = CCertToolListStores::NewL(iController);
+ iState = EInitialise;
+ iCertStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::ImportPrivateL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+
+ iKeyController = CKeyToolController::NewL(iController->GetView());
+ if (!aParam->iDefault)
+ {
+ iKeyController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_KEYFILE);
+ User::Leave(KErrArgument);
+ }
+
+ iParam = aParam;
+ iCurrentAction = EImport;
+ iKeyHandler = CKeytoolImport::NewL(iKeyController);
+ iState = EInitialiseKeyStore;
+ iKeyStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::SetManagerPolicyL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+ delete iKeyController;
+ iKeyController = NULL;
+ iKeyController = CKeyToolController::NewL(iController->GetView());
+ if (!aParam->iDefault)
+ {
+ iKeyController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_REMOVE);
+ User::Leave(KErrArgument);
+ }
+
+ iParam = aParam;
+ iCurrentAction = ESetPolicy;
+ delete iKeyHandler;
+ iKeyHandler = NULL;
+ iKeyHandler = CKeytoolSetPolicy::NewL(iKeyController);
+ iState = EInitialiseKeyStore;
+ delete iKeyStore;
+ iKeyStore = NULL;
+ iKeyStore = CUnifiedKeyStore::NewL(iFsKeyStore);
+ iKeyStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::RemovePrivateL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+
+ iKeyController = CKeyToolController::NewL(iController->GetView());
+ if (!aParam->iDefault)
+ {
+ iKeyController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_REMOVE);
+ User::Leave(KErrArgument);
+ }
+
+ iParam = aParam;
+ iCurrentAction = ERemove;
+ iKeyHandler = CKeytoolRemove::NewL(iKeyController);
+ iState = EInitialiseKeyStore;
+ User::LeaveIfError(iFsKeyStore.Connect());
+ delete iKeyStore;
+ iKeyStore = NULL;
+ iKeyStore = CUnifiedKeyStore::NewL(iFsKeyStore);
+ iKeyStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::ImportL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+ delete iKeyHandler;
+ iKeyHandler = NULL;
+ delete iKeyController;
+ iKeyController = NULL;
+
+ if (!aParam->iDefault)
+ {
+ iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_CERTFILE);
+ User::Leave(KErrArgument);
+ }
+
+ iParam = aParam;
+ iCurrentAction = EImport;
+ iHandler = CCertToolAdd::NewL(iController);
+ iState = EInitialise;
+ iCertStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::RemoveL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+ delete iKeyHandler;
+ iKeyHandler = NULL;
+ delete iKeyController;
+ iKeyController = NULL;
+
+ if (!aParam->iDefault)
+ {
+ iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_REMOVE);
+ User::Leave(KErrArgument);
+ }
+
+ iParam = aParam;
+ iCurrentAction = ERemove;
+ iHandler = CCertToolRemove::NewL(iController);
+ iState = EInitialise;
+ iCertStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::SetupUidCommandL(CKeyToolParameters* aParam)
+ {
+ Cancel();
+ if (!aParam->iDefault && !aParam->iLabel)
+ {
+ iController->DisplayLocalisedMsgL(R_CERTTOOL_USAGE_NOCERT);
+ User::Leave(KErrArgument);
+ }
+
+ if (aParam->iUIDs.Count()==0)
+ {
+ iController->DisplayLocalisedMsgL(R_CERTTOOL_USAGE_NOAPPS);
+ User::Leave(KErrArgument);
+ }
+
+ iParam = aParam;
+ iCurrentAction = EAddApps;
+ iState = EInitialise;
+ iCertStore->Initialize(iStatus);
+ SetActive();
+ }
+
+void CCertToolEngine::SetAppsL(CKeyToolParameters* aParam)
+ {
+ iCurrentAction = ESetApps;
+ iHandler = CCertToolSetApps::NewL(iController);
+ SetupUidCommandL(aParam);
+ }
+
+
+void CCertToolEngine::RemoveAppsL(CKeyToolParameters* aParam)
+ {
+ iHandler = CCertToolRemoveApps::NewL(iController);
+ SetupUidCommandL(aParam);
+ }
+
+
+void CCertToolEngine::AddAppsL(CKeyToolParameters* aParam)
+ {
+ iHandler = CCertToolAddApps::NewL(iController);
+ SetupUidCommandL(aParam);
+ }
+
+
+
+void CCertToolEngine::DisplayUsageL(CKeyToolParameters* aParam)
+ {
+ iHandler = CCertToolUsage::NewL(iController);
+ iHandler->DoCommandL(*iCertStore, aParam);
+ }