diff -r 000000000000 -r 164170e6151a pkiutilities/SecModUI/src/SecModUISyncWrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/SecModUI/src/SecModUISyncWrapper.cpp Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,399 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: Implementation of the CSecModUISyncWrapper class +* Implements a synchronous wrapper for easier use of Symbian's +* Security Frameworks's API's. +* +*/ + + + +// INCLUDE FILES +#include "SecModUISyncWrapper.h" +#include +#include +#include +#include +#include +#include +#include "SecModUILogger.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::CSecModUISyncWrapper() +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CSecModUISyncWrapper::CSecModUISyncWrapper() : CActive( EPriorityStandard ) + { + CActiveScheduler::Add(this); + } + + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::NewLC +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CSecModUISyncWrapper* CSecModUISyncWrapper::NewLC() + { + CSecModUISyncWrapper* wrap = new (ELeave) CSecModUISyncWrapper(); + CleanupStack::PushL(wrap); + return wrap; + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CSecModUISyncWrapper* CSecModUISyncWrapper::NewL() + { + LOG_ENTERFN("CSecModUISyncWrapper::NewL"); + CSecModUISyncWrapper* wrap = CSecModUISyncWrapper::NewLC(); + CleanupStack::Pop(wrap); + LOG_LEAVEFN("CSecModUISyncWrapper::NewL"); + return wrap; + } + +// Destructor +CSecModUISyncWrapper::~CSecModUISyncWrapper() + { + LOG_ENTERFN("CSecModUISyncWrapper::~CSecModUISyncWrapper"); + Cancel(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::~CSecModUISyncWrapper"); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::Initialize(CUnifiedKeyStore& aKeyStore) +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::Initialize(CUnifiedKeyStore& aKeyStore) + { + LOG_ENTERFN("CSecModUISyncWrapper::Initialize"); + iOperation = EOperationInit; + iObject = STATIC_CAST(TAny*, &aKeyStore); + aKeyStore.Initialize(iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::Initialize"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUIModel::GetAuthObjectInterface(...) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::GetAuthObjectInterface( + MCTToken& aToken, MCTTokenInterface*& aTokenInterface) + { + LOG_ENTERFN("CSecModUISyncWrapper::GetAuthObjectInterface"); + iOperation = EOperationGetAOInterface; + iObject = STATIC_CAST(TAny*, &aToken); + const TUid KUidInterfaceAO = { KCTInterfaceAuthenticationObject }; + aToken.GetInterface(KUidInterfaceAO, aTokenInterface, iStatus); + iOperation = EOperationGetAOInterface; + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::GetAuthObjectInterface"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::ListAuthObjects(...) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::ListAuthObjects( + MCTAuthenticationObjectList& aAuthObjList, + RMPointerArray& aAuthObjects) + { + LOG_ENTERFN("CSecModUISyncWrapper::ListAuthObjects"); + iOperation = EOperationListAOs; + iObject = STATIC_CAST(TAny*, &aAuthObjList); + aAuthObjList.List( aAuthObjects, iStatus ); + iOperation = EOperationListAOs; + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::ListAuthObjects"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::ListKeys(...) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::ListKeys( + MCTKeyStore& aKeyStore, + RMPointerArray& aKeysInfos, + const TCTKeyAttributeFilter& aFilter) + { + LOG_ENTERFN("CSecModUISyncWrapper::ListKeys"); + iOperation = EOperationListKeys; + iObject = STATIC_CAST(TAny*, &aKeyStore); + aKeyStore.List(aKeysInfos, aFilter, iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::ListKeys"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::DeleteKey(...) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::DeleteKey( + CUnifiedKeyStore& aKeyStore, + TCTTokenObjectHandle aHandle) + { + LOG_ENTERFN("CSecModUISyncWrapper::DeleteKey"); + iOperation = EOperationDelKey; + iObject = STATIC_CAST(TAny*, &aKeyStore); + aKeyStore.DeleteKey(aHandle, iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::DeleteKey"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::ChangeReferenceData(MCTAuthenticationObject& aAuthObject) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::ChangeReferenceData( + MCTAuthenticationObject& aAuthObject) + { + LOG_ENTERFN("CSecModUISyncWrapper::ChangeReferenceData"); + iOperation = EOperationChangeReferenceData; + iObject = STATIC_CAST(TAny*, &aAuthObject); + aAuthObject.ChangeReferenceData(iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::ChangeReferenceData"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUIModel::UnblockAuthObject(MCTAuthenticationObject& aAuthObject) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::UnblockAuthObject( + MCTAuthenticationObject& aAuthObject) + { + LOG_ENTERFN("CSecModUISyncWrapper::UnblockAuthObject"); + iOperation = EOperationUnblockAO; + iObject = STATIC_CAST(TAny*, &aAuthObject); + aAuthObject.Unblock(iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::UnblockAuthObject"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUIModel::EnableAuthObject(MCTAuthenticationObject& aAuthObject) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::EnableAuthObject( + MCTAuthenticationObject& aAuthObject) + { + LOG_ENTERFN("CSecModUISyncWrapper::EnableAuthObject"); + iOperation = EOperationEnableAO; + iObject = STATIC_CAST(TAny*, &aAuthObject); + aAuthObject.Enable(iStatus); + iOperation = EOperationUnblockAO; + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::EnableAuthObject"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUIModel::DisableAuthObject(MCTAuthenticationObject& aAuthObject) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::DisableAuthObject( + MCTAuthenticationObject& aAuthObject) + { + LOG_ENTERFN("CSecModUISyncWrapper::DisableAuthObject"); + iOperation = EOperationDisableAO; + iObject = STATIC_CAST(TAny*, &aAuthObject); + aAuthObject.Disable(iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::DisableAuthObject"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::CloseAuthObject(MCTAuthenticationObject& aAuthObject) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::CloseAuthObject( + MCTAuthenticationObject& aAuthObject) + { + LOG_ENTERFN("CSecModUISyncWrapper::CloseAuthObject"); + iOperation = EOperationCloseAO; + iObject = STATIC_CAST(TAny*, &aAuthObject); + aAuthObject.Close(iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::CloseAuthObject"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUIModel::TimeRemaining(...) +// ----------------------------------------------------------------------------- +// +TInt CSecModUISyncWrapper::TimeRemaining( + MCTAuthenticationObject& aAuthObject, + TInt& aStime ) + { + LOG_ENTERFN("CSecModUISyncWrapper::TimeRemaining"); + iOperation = EOperationTimeRemAO; + iObject = STATIC_CAST(TAny*, &aAuthObject); + aAuthObject.TimeRemaining(aStime, iStatus); + SetActive(); + iWait.Start(); + iOperation = EOperationNone; + LOG_LEAVEFN("CSecModUISyncWrapper::TimeRemaining"); + return iStatus.Int(); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::DoCancel +// Cancels the ongoing operation if possible. +// ----------------------------------------------------------------------------- +// +void CSecModUISyncWrapper::DoCancel() + { + LOG_ENTERFN("CSecModUISyncWrapper::DoCancel"); + switch ( iOperation ) + { + case EOperationInit: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationInit"); + STATIC_CAST(CUnifiedKeyStore*, iObject)->CancelInitialize(); + break; + } + case EOperationGetAOInterface: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationGetAOInterface"); + STATIC_CAST(MCTToken*, iObject)->CancelGetInterface(); + break; + } + case EOperationListAOs: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationListAOs"); + STATIC_CAST(MCTAuthenticationObjectList*, iObject)->CancelList(); + break; + } + case EOperationListKeys: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationListKeys"); + STATIC_CAST(MCTKeyStore*, iObject)->CancelList(); + break; + } + case EOperationDelKey: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationDelKey"); + STATIC_CAST(CUnifiedKeyStore*, iObject)->CancelDeleteKey(); + break; + } + case EOperationChangeReferenceData: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationChangeReferenceData"); + STATIC_CAST(MCTAuthenticationObject*, iObject)-> + CancelChangeReferenceData(); + break; + } + case EOperationUnblockAO: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationInit"); + STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelUnblock(); + break; + } + case EOperationEnableAO: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationEnableAO"); + STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelEnable(); + break; + } + case EOperationDisableAO: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationDisableAO"); + STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelDisable(); + break; + } + case EOperationCloseAO: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationCloseAO"); + STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelClose(); + break; + } + case EOperationTimeRemAO: + { + LOG_WRITE("CSecModUISyncWrapper::DoCancel: EOperationTimeRemAO"); + STATIC_CAST(MCTAuthenticationObject*, iObject)->CancelTimeRemaining(); + break; + } + default: + { + break; + } + } + if (iWait.IsStarted()) + { + iWait.AsyncStop(); + } + LOG_LEAVEFN("CSecModUISyncWrapper::DoCancel"); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::RunL +// If no errors happened, stop. Show an error note if needed. +// ----------------------------------------------------------------------------- +// +void CSecModUISyncWrapper::RunL() + { + iWait.AsyncStop(); + } + +// ----------------------------------------------------------------------------- +// CSecModUISyncWrapper::HandleErrorL() +// Shows an error note according to status of operation, +// ----------------------------------------------------------------------------- +// +void CSecModUISyncWrapper::HandleErrorL() + { + + } + + +// End of File +