diff -r 000000000000 -r 2c201484c85f 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); + }