cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_commands.h
/*
* 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:
*
*/
#ifndef __CERTTOOL_COMMANDS_H_
#define __CERTTOOL_COMMANDS_H_
#include <e32base.h>
#include <ct/rmpointerarray.h>
#include <unifiedcertstore.h>
#include <badesca.h>
//#include <e32cmn.h>
#include <keytool.rsg>
#include "keytool_commands.h"
class CCertToolController;
/**
* Interface that every keytool command class must implement.
*/
class CCertToolCommand : public CActive
{
public:
virtual void DoCommandL(CUnifiedCertStore& aCertStore, CKeyToolParameters* aParam) = 0;
protected:
CCertToolCommand(CCertToolController* aController);
protected:
CCertToolController* iController;
CKeyToolParameters* iParams; // we do not own this!
};
/**
* Implements the certtool display usage action.
*/
class CCertToolUsage : public CCertToolCommand
{
public:
static CCertToolUsage* NewLC(CCertToolController* aController);
static CCertToolUsage* NewL(CCertToolController* aController);
~CCertToolUsage();
void ConstructL();
public: // From CCertToolCommand
void DoCommandL(CUnifiedCertStore& aCertStore, CKeyToolParameters* aParam);
public: // From CActive
void RunL();
void DoCancel();
protected:
CCertToolUsage(CCertToolController* aController);
};
/**
* Implements the certtool display usage action.
*/
class CCertToolListStores : public CCertToolCommand
{
public:
static CCertToolListStores* NewLC(CCertToolController* aController);
static CCertToolListStores* NewL(CCertToolController* aController);
~CCertToolListStores();
void ConstructL();
public: // From CCertToolCommand
void DoCommandL(CUnifiedCertStore& aCertStore, CKeyToolParameters* aParam);
public: // From CActive
void RunL();
void DoCancel();
protected:
CCertToolListStores(CCertToolController* aController);
private:
RArray<MCTCertStore> iCertStoreList;
};
typedef RArray<TUid> RUidArray;
/**
* Implements the keytool list action. This is an active object as listing is asynchronous.
*/
class CCertToolList : public CCertToolCommand
{
public:
static CCertToolList* NewLC(CCertToolController* aController);
static CCertToolList* NewL(CCertToolController* aController);
~CCertToolList();
void ConstructL();
void InitializeIterations();
public: // From CCertToolCommand
void DoCommandL(CUnifiedCertStore& aCertStore, CKeyToolParameters* aParam);
public: // From CActive
void RunL();
void DoCancel();
TInt RunError(TInt aError);
protected:
CCertToolList(CCertToolController* aController);
protected:
CUnifiedCertStore* iCertStore;
MCertStore* iCertStoreImp;
TInt iIndex;
CCertificate* iCertificate;
RUidArray iApps;
TBool iTrust;
RArray<RUidArray> iCertApps;
RArray<TBool> iCertTrust;
RPointerArray<CCertificate> iParsedCerts;
RMPointerArray<CCTCertInfo> iCertInfos;
CCertAttributeFilter* iFilter;
enum TState
{
EListCerts,
ERetrieve,
EGetApps,
ESetTrust,
EFinished,
EIntermediate,
EGetTrust,
} iState;
// Number of certificates that have to be listed up to the current iteration.
TInt iCurrentListCount;
// Keeps track of the number of iterations left.
TInt iNumberOfIterationsLeft;
// List offset for the last iteration if total number of certificates is not an exact
// multiple of default LIST_COUNT.
TInt iLastIterationOffset;
// Default list offset for each iteration.
TInt iCurrentListOffset;
};
/**
* Implements the keytool import action.
*/
class CCertToolAdd : public CCertToolCommand
{
public:
static CCertToolAdd* NewLC(CCertToolController* aController);
static CCertToolAdd* NewL(CCertToolController* aController);
~CCertToolAdd();
void ConstructL();
public: // From CKeyToolCommand
void DoCommandL(CUnifiedCertStore& aCertStore, CKeyToolParameters* aParam);
public: // From CActive
void RunL();
void DoCancel();
TInt RunError(TInt aError);
private:
CCertToolAdd(CCertToolController* aController);
TCertificateFormat DoRecognizeL(const TDesC8& iData);
protected:
enum TState
{
EIntermediate,
EFinish
} iState;
private:
HBufC8* iCertData;
CUnifiedCertStore* iCertStore;
};
/**
* Implements the certtool remove action.
*/
class CCertToolRemove : public CCertToolList
{
public:
static CCertToolRemove* NewLC(CCertToolController* aController);
static CCertToolRemove* NewL(CCertToolController* aController);
~CCertToolRemove();
public: // From CActive
void RunL();
protected:
private:
CCertToolRemove(CCertToolController* aController);
private:
};
/**
*
*/
class CCertToolSetApps : public CCertToolList
{
public:
static CCertToolSetApps* NewLC(CCertToolController* aController);
static CCertToolSetApps* NewL(CCertToolController* aController);
~CCertToolSetApps();
public: // From CActive
void RunL();
TInt RunError(TInt aError);
protected:
private:
CCertToolSetApps(CCertToolController* aController);
TInt iCertIndex;
TBool iCaCert;
};
/**
*
*/
class CCertToolAddApps : public CCertToolList
{
public:
static CCertToolAddApps* NewLC(CCertToolController* aController);
static CCertToolAddApps* NewL(CCertToolController* aController);
~CCertToolAddApps();
public: // From CActive
void RunL();
TInt RunError(TInt aError);
protected:
enum TState
{
EListCerts,
ERetrieve,
EGetApps,
ESetApps,
EFinished,
EIntermediate
} iState;
private:
CCertToolAddApps(CCertToolController* aController);
};
/**
*
*/
class CCertToolRemoveApps : public CCertToolList
{
public:
static CCertToolRemoveApps* NewLC(CCertToolController* aController);
static CCertToolRemoveApps* NewL(CCertToolController* aController);
~CCertToolRemoveApps();
public: // From CActive
void RunL();
TInt RunError(TInt aError);
protected:
enum TState
{
EListCerts,
ERetrieve,
EGetApps,
ERemoveApps,
EFinished,
EIntermediate
} iState;
private:
CCertToolRemoveApps(CCertToolController* aController);
};
#endif