cryptoservices/certificateandkeymgmt/certstore/CCheckedCertStore.h
changeset 8 35751d3474b7
parent 0 2c201484c85f
--- a/cryptoservices/certificateandkeymgmt/certstore/CCheckedCertStore.h	Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptoservices/certificateandkeymgmt/certstore/CCheckedCertStore.h	Thu Sep 10 14:01:51 2009 +0300
@@ -1,189 +1,187 @@
-/*
-* 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: 
-* CCheckedCertStore class implementation
-*
-*/
-
-
-
-
-/**
- @file 
- @internalComponent 
-*/
- 
-#ifndef __CCHECKEDCERTSTORE_H__
-#define __CCHECKEDCERTSTORE_H__
-
-#include <e32std.h>
-#include <ct.h>
-#include <e32property.h>
-#include <mctwritablecertstore.h>
-#include "unifiedkeystore.h"
-
-NONSHARABLE_CLASS(CCheckedCertStore) : public CActive, public MCTWritableCertStore
-{
-public:
- 	static CCheckedCertStore* NewCheckedCertStoreL(MCTTokenInterface*, RProperty&);
- 	static CCheckedCertStore* NewCheckedWritableCertStoreL(MCTTokenInterface*, RProperty&);
-public:
-	void ConstructL();
-public:	//	MCTTokenInterface
-	virtual MCTToken& Token();
-
-public:	//	MCTCertStore
-	virtual void List(RMPointerArray<CCTCertInfo>& aCerts, const CCertAttributeFilter& aFilter,
-						TRequestStatus& aStatus);
-	virtual void CancelList();
-	virtual void GetCert(CCTCertInfo*& aCertInfo, const TCTTokenObjectHandle& aHandle, 
-						TRequestStatus& aStatus);
-	virtual void CancelGetCert();
-	virtual void Applications(const CCTCertInfo& aCertInfo, RArray<TUid>& aApplications,
-						TRequestStatus& aStatus);
-	virtual void CancelApplications();
-	virtual void IsApplicable(const CCTCertInfo& aCertInfo, TUid aApplication, 
-						TBool& aIsApplicable, TRequestStatus& aStatus);
-	virtual void CancelIsApplicable();
-	virtual void Trusted(const CCTCertInfo& aCertInfo, TBool& aTrusted, 
-						TRequestStatus& aStatus);
-	virtual void CancelTrusted();
-	virtual void Retrieve(const CCTCertInfo& aCertInfo, TDes8& aEncodedCert, 
-						TRequestStatus& aStatus);
-	virtual void CancelRetrieve();
-
-	
-public:	//	MCTWritableCertStore
-
-	virtual void Add( const TDesC& aLabel, TCertificateFormat aFormat,
-						TCertificateOwnerType aCertificateOwnerType, 
-						const TKeyIdentifier* aSubjectKeyId,
-						const TKeyIdentifier* aIssuerKeyId,
-						const TDesC8& aCert, TRequestStatus& aStatus);
-	
-	// new Add(.., TBool aDeletable, ..) method from MCTWritableCertStore
-	virtual void Add( const TDesC& aLabel, 
-						TCertificateFormat aFormat,
-						TCertificateOwnerType aCertificateOwnerType, 
-						const TKeyIdentifier* aSubjectKeyId,
-						const TKeyIdentifier* aIssuerKeyId,
-						const TDesC8& aCert, 
-						const TBool aDeletable,
-						TRequestStatus& aStatus);
-												
-	virtual void CancelAdd();
-	virtual void Remove(const CCTCertInfo& aCertInfo, TRequestStatus& aStatus);
-	virtual void CancelRemove();
-	virtual void SetApplicability(const CCTCertInfo& aCertInfo, 
-						const RArray<TUid>& aApplications, TRequestStatus &aStatus);
-	virtual void CancelSetApplicability();
-	virtual void SetTrust(const CCTCertInfo& aCertInfo, TBool aTrusted, 
-						TRequestStatus& aStatus);
-	virtual void CancelSetTrust();
-protected:	//	From CActive
-	virtual void DoCancel();
-	virtual void RunL();
-	virtual TInt RunError(TInt aError);
-private:
-	enum TState
-	{
-		EIdleState = 0,
-		EList,
-		EAdd,					// attempts using new Add() with aDeletable param
-		EInitKeyStoreForAdd,
-		EInitKeyStoreForList,
-		EGetKeyInfosForAdd,
-		EGetKeyInfosForList,
-		EOldAdd,				// uses original Add() w/o aDeletable param
-								// if the new Add is not supported
-		ERemove,
-		ESetApplicability,
-		ESetTrust
-	};
-private:
- 	CCheckedCertStore(MCTCertStore&, RProperty&);
- 	CCheckedCertStore(MCTWritableCertStore&, RProperty&);
-	virtual ~CCheckedCertStore();
-private:
-    void Complete(TInt aError);
-	void Cleanup();
-	void InitialiseKeyStoreL(TState aNextState);
-	void BuildCheckedCertificateListL();
-	void ComputeAndCheckSubjectKeyIdL();
-	
-	void DoAddL( const TDesC& aLabel, 
-    				TCertificateFormat aFormat,
-                	TCertificateOwnerType aCertificateOwnerType, 
-                	const TKeyIdentifier* aSubjectKeyId,
-                	const TKeyIdentifier* aIssuerKeyId,
-                	const TDesC8& aCert,
-                	const TBool aDeletable,
-                	TRequestStatus& aStatus
-                	);
-
-	void CancelOutstandingRequest();
-
-private:  // Generic
-    
-    /// The certificate store we wrap, owned by us
-	MCTCertStore& iCertStore;
-    /// Pointer to the same object as iCertStore if it's writable, otherwise NULL
-	MCTWritableCertStore* iWritableCertStore;
-    /// File server session, used by unified key store
-	RFs iFs;
-    /// Unified keystore, created and destroyed on demand
-	CUnifiedKeyStore* iUnifiedKeyStore;
-    /// Current state of the active object
-	TState iState;
-    /// Request status of client request
-	TRequestStatus* iCallerStatus;
-    /// Key filter used for listing and adding certs
-	TCTKeyAttributeFilter iKeyFilter;
-    /// List of key infos returned by keystore
-	RMPointerArray<CCTKeyInfo> iKeyInfos;
-
-    //	For Add requests
-
-    /// Format of cert to add
-	TCertificateFormat iFormat;
-    /// Owner type of cert to add
-	TCertificateOwnerType iCertificateOwnerType;
-    /// Subject key id of cert to add, not owned by us
-	const TKeyIdentifier* iSubjectKeyId;
-    /// Issuer key id of cert to add, not owned by us
-	const TKeyIdentifier* iIssuerKeyId;
-	//  Deletable flag of cert to add	
-	TBool iDeletable;
-
-
-    /// Holds the subject key id extracted from the cert - used if the caller
-    /// doesn't supply it
-	TKeyIdentifier iComputedSubjectKeyId;
-    /// Label of the cert to add, owned by us
-	HBufC* iCertLabel;
-    /// Certificate data to add, owned by us
-	HBufC8* iCertificate;
-
-    // For List requests
-    
-    /// Pointer to client's cert list, used to return certs, not owned by us
-	RMPointerArray<CCTCertInfo>* iCallerCerts;
-    /// Pointer to client's cert filter, not owned by us
-	const CCertAttributeFilter* iCallerFilter;
-    // Reference for the certstore change notification property.
-	RProperty& iPSCertstoreChangePropertyRef;
-
-};
-
-#endif	//	__CCHECKEDCERTSTORE_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: 
+* CCheckedCertStore class implementation
+*
+*/
+
+
+/**
+ @file 
+ @internalComponent 
+*/
+ 
+#ifndef __CCHECKEDCERTSTORE_H__
+#define __CCHECKEDCERTSTORE_H__
+
+#include <e32std.h>
+#include <ct.h>
+#include <e32property.h>
+#include <mctwritablecertstore.h>
+#include "unifiedkeystore.h"
+
+NONSHARABLE_CLASS(CCheckedCertStore) : public CActive, public MCTWritableCertStore
+{
+public:
+ 	static CCheckedCertStore* NewCheckedCertStoreL(MCTTokenInterface*, RProperty&);
+ 	static CCheckedCertStore* NewCheckedWritableCertStoreL(MCTTokenInterface*, RProperty&);
+public:
+	void ConstructL();
+public:	//	MCTTokenInterface
+	virtual MCTToken& Token();
+
+public:	//	MCTCertStore
+	virtual void List(RMPointerArray<CCTCertInfo>& aCerts, const CCertAttributeFilter& aFilter,
+						TRequestStatus& aStatus);
+	virtual void CancelList();
+	virtual void GetCert(CCTCertInfo*& aCertInfo, const TCTTokenObjectHandle& aHandle, 
+						TRequestStatus& aStatus);
+	virtual void CancelGetCert();
+	virtual void Applications(const CCTCertInfo& aCertInfo, RArray<TUid>& aApplications,
+						TRequestStatus& aStatus);
+	virtual void CancelApplications();
+	virtual void IsApplicable(const CCTCertInfo& aCertInfo, TUid aApplication, 
+						TBool& aIsApplicable, TRequestStatus& aStatus);
+	virtual void CancelIsApplicable();
+	virtual void Trusted(const CCTCertInfo& aCertInfo, TBool& aTrusted, 
+						TRequestStatus& aStatus);
+	virtual void CancelTrusted();
+	virtual void Retrieve(const CCTCertInfo& aCertInfo, TDes8& aEncodedCert, 
+						TRequestStatus& aStatus);
+	virtual void CancelRetrieve();
+
+	
+public:	//	MCTWritableCertStore
+
+	virtual void Add( const TDesC& aLabel, TCertificateFormat aFormat,
+						TCertificateOwnerType aCertificateOwnerType, 
+						const TKeyIdentifier* aSubjectKeyId,
+						const TKeyIdentifier* aIssuerKeyId,
+						const TDesC8& aCert, TRequestStatus& aStatus);
+	
+	// new Add(.., TBool aDeletable, ..) method from MCTWritableCertStore
+	virtual void Add( const TDesC& aLabel, 
+						TCertificateFormat aFormat,
+						TCertificateOwnerType aCertificateOwnerType, 
+						const TKeyIdentifier* aSubjectKeyId,
+						const TKeyIdentifier* aIssuerKeyId,
+						const TDesC8& aCert, 
+						const TBool aDeletable,
+						TRequestStatus& aStatus);
+												
+	virtual void CancelAdd();
+	virtual void Remove(const CCTCertInfo& aCertInfo, TRequestStatus& aStatus);
+	virtual void CancelRemove();
+	virtual void SetApplicability(const CCTCertInfo& aCertInfo, 
+						const RArray<TUid>& aApplications, TRequestStatus &aStatus);
+	virtual void CancelSetApplicability();
+	virtual void SetTrust(const CCTCertInfo& aCertInfo, TBool aTrusted, 
+						TRequestStatus& aStatus);
+	virtual void CancelSetTrust();
+protected:	//	From CActive
+	virtual void DoCancel();
+	virtual void RunL();
+	virtual TInt RunError(TInt aError);
+private:
+	enum TState
+	{
+		EIdleState = 0,
+		EList,
+		EAdd,					// attempts using new Add() with aDeletable param
+		EInitKeyStoreForAdd,
+		EInitKeyStoreForList,
+		EGetKeyInfosForAdd,
+		EGetKeyInfosForList,
+		EOldAdd,				// uses original Add() w/o aDeletable param
+								// if the new Add is not supported
+		ERemove,
+		ESetApplicability,
+		ESetTrust
+	};
+private:
+ 	CCheckedCertStore(MCTCertStore&, RProperty&);
+ 	CCheckedCertStore(MCTWritableCertStore&, RProperty&);
+	virtual ~CCheckedCertStore();
+private:
+    void Complete(TInt aError);
+	void Cleanup();
+	void InitialiseKeyStoreL(TState aNextState);
+	void BuildCheckedCertificateListL();
+	void ComputeAndCheckSubjectKeyIdL();
+	
+	void DoAddL( const TDesC& aLabel, 
+    				TCertificateFormat aFormat,
+                	TCertificateOwnerType aCertificateOwnerType, 
+                	const TKeyIdentifier* aSubjectKeyId,
+                	const TKeyIdentifier* aIssuerKeyId,
+                	const TDesC8& aCert,
+                	const TBool aDeletable,
+                	TRequestStatus& aStatus
+                	);
+
+	void CancelOutstandingRequest();
+
+private:  // Generic
+    
+    /// The certificate store we wrap, owned by us
+	MCTCertStore& iCertStore;
+    /// Pointer to the same object as iCertStore if it's writable, otherwise NULL
+	MCTWritableCertStore* iWritableCertStore;
+    /// File server session, used by unified key store
+	RFs iFs;
+    /// Unified keystore, created and destroyed on demand
+	CUnifiedKeyStore* iUnifiedKeyStore;
+    /// Current state of the active object
+	TState iState;
+    /// Request status of client request
+	TRequestStatus* iCallerStatus;
+    /// Key filter used for listing and adding certs
+	TCTKeyAttributeFilter iKeyFilter;
+    /// List of key infos returned by keystore
+	RMPointerArray<CCTKeyInfo> iKeyInfos;
+
+    //	For Add requests
+
+    /// Format of cert to add
+	TCertificateFormat iFormat;
+    /// Owner type of cert to add
+	TCertificateOwnerType iCertificateOwnerType;
+    /// Subject key id of cert to add, not owned by us
+	const TKeyIdentifier* iSubjectKeyId;
+    /// Issuer key id of cert to add, not owned by us
+	const TKeyIdentifier* iIssuerKeyId;
+	//  Deletable flag of cert to add	
+	TBool iDeletable;
+
+
+    /// Holds the subject key id extracted from the cert - used if the caller
+    /// doesn't supply it
+	TKeyIdentifier iComputedSubjectKeyId;
+    /// Label of the cert to add, owned by us
+	HBufC* iCertLabel;
+    /// Certificate data to add, owned by us
+	HBufC8* iCertificate;
+
+    // For List requests
+    
+    /// Pointer to client's cert list, used to return certs, not owned by us
+	RMPointerArray<CCTCertInfo>* iCallerCerts;
+    /// Pointer to client's cert filter, not owned by us
+	const CCertAttributeFilter* iCallerFilter;
+    // Reference for the certstore change notification property.
+	RProperty& iPSCertstoreChangePropertyRef;
+
+};
+
+#endif	//	__CCHECKEDCERTSTORE_H__