cryptoservices/filebasedcertificateandkeystores/source/keystore/Server/CKeyStoreConduit.h
changeset 8 35751d3474b7
parent 0 2c201484c85f
child 45 030c4fbc13d7
--- a/cryptoservices/filebasedcertificateandkeystores/source/keystore/Server/CKeyStoreConduit.h	Tue Jul 21 01:04:32 2009 +0100
+++ b/cryptoservices/filebasedcertificateandkeystores/source/keystore/Server/CKeyStoreConduit.h	Thu Sep 10 14:01:51 2009 +0300
@@ -1,163 +1,181 @@
-/*
-* 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: 
-* Implements CKeyStoreConduit
-*
-*/
-
-
-
-
-/**
- @file 
- @internalTechnology
-*/
- 
-#ifndef __CKEYSTORECONDUIT_H__
-#define __CKEYSTORECONDUIT_H__
-
-#include "fsserver.h"
-#include <bigint.h>
-
-class CDSASignature;
-class CRSASignature;
-class CFSKeyStoreServer;
-class CKeyStoreSession;
-class CRSARepudiableSigner;
-class CDSARepudiableSigner;
-class CFSRSADecryptor;
-class CDHParams;
-class COpenedKey;
-class CKeyInfo;
-class CPBEncryptParms;
-class CDHPublicKey;
-
-/**
- * The key store server object (CFSKeyStoreServer) owns one instance of this
- * object, which it calls for every client request.  This object unmarshalls the
- * client data and fulfills the request by calling back to the server object.
- * Any return information is then marshalled back to the client.
- */
-class CKeyStoreConduit : public CActive
-	{
- public:
-	static CKeyStoreConduit* NewL(CFSKeyStoreServer& aServer);
-	virtual ~CKeyStoreConduit();
- public:
-	void ServiceRequestL(const RMessage2& aMessage, CKeyStoreSession& aSession);
- protected:	//	From CActive
-	virtual void DoCancel();
-	virtual void RunL();
-	virtual TInt RunError(TInt aError);
- private:
-	CKeyStoreConduit(CFSKeyStoreServer& aServer);	
-	void ConstructL();
- private:
-	CKeyStoreConduit(const CKeyStoreConduit&);				//	No copying
-	CKeyStoreConduit& operator=(const CKeyStoreConduit&);	//	No copying
- private:
-	// For MKeyStore
-	void ListL(const RMessage2& aMessage);
-	void CancelList(const RMessage2& aMessage);
-	void GetKeyInfoL(const RMessage2& aMessage);
-	void CancelGetKeyInfo(const RMessage2& aMessage);
- private:
-	// For MCTKeyStoreManager
-	void CreateKeyL(const RMessage2& aMessage);
-	void CancelCreateKey(const RMessage2& aMessage);
-	void ImportKeyL(const RMessage2& aMessage);
-	void CancelImportKey(const RMessage2& aMessage);
-	void ExportKeyL(const RMessage2& aMessage); 
-	void CancelExportKey(const RMessage2& aMessage);
-	void ExportPublicL(const RMessage2& aMessage); 
-	void CancelExportPublic(const RMessage2& aMessage);
-	void CancelExportEncryptedKey(const RMessage2& aMessage);
-	void DeleteKeyL(const RMessage2& aMessage);
-	void SetUsePolicyL(const RMessage2& aMessage);
-	void SetManagementPolicyL(const RMessage2& aMessage);
-	void SetPassphraseTimeoutL(const RMessage2& aMessage);
-	void RelockL(const RMessage2& aMessage);	
-	void OpenKeyL(const RMessage2& aMessage, CKeyStoreSession& aSession, TUid aType);
-	void CloseObjectL(const RMessage2& aMessage, CKeyStoreSession& aSession);
- private:
-	// For MCTAuthenticationObject
-	void ChangePassphrase(const RMessage2& aMessage);
-	void CancelChangePassphrase(const RMessage2& aMessage);
-	void AuthOpen(const RMessage2& aMessage);
-	void CancelAuthOpen(const RMessage2& aMessage);
-	void AuthClose(const RMessage2& aMessage);
-	void GetTimeRemaining(const RMessage2& aMessage);
-	void SetTimeout(const RMessage2& aMessage);
-	void GetTimeout(const RMessage2& aMessage);
-	void Relock(const RMessage2& aMessage);
- private:
-	void GetKeyLengthL(const RMessage2& aMessage); 
-	TUid GetClientUidL(const RMessage2& aMessage) const;
-	void OpenKeyGetInfoL(const RMessage2& aMessage);
-	void RepudiableDSASignL(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void CancelDSASign(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void RepudiableRSASignL(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void CancelRSASign(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void DecryptL(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void CancelDecrypt(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void DHPublicKeyL(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void DoDHPublicKeyL(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void FinishDHPublicKeyL();
-	void DHAgreeL(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void DoDHAgreeL(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	void FinishDHAgreeL();
-	void CancelDH(const RMessage2& aMessage, CKeyStoreSession& aSession);
-	COpenedKey* ProcessL(const RMessage2& aMessage, CKeyStoreSession& aSession,
-						 const TUid& aCKeyInfoID, const TFSTokenMessages& aState, TPtr8& aPtr);
-	void FinishOpenL(const RMessage2& aMessage, CKeyStoreSession& aSession, COpenedKey& aOpenedKey);
-	void Cleanup();
- private:
-	/** Encapsulate data about the current request. */
-	class TAsyncRequest
-		{
-	public:
-		void Set(TFSTokenMessages aRequest, const RMessage2& aMessage);
-		void Complete(TInt aResult);
-		void Cancel();
-	public:
-		inline TFSTokenMessages OutstandingRequest() { return iRequest; }
-		inline const RMessage2& Message() { return iMessage ;}
-	public:
-		TAsyncRequest(TRequestStatus& aStatus);
-		~TAsyncRequest();
-	private:
-		TFSTokenMessages iRequest;
-		RMessage2 iMessage;
-		TRequestStatus& iOwnerStatus;
-		}; 
- private:
-	CFSKeyStoreServer& iServer;				///< The server object used to execute client requests
-	TAsyncRequest iCurrentRequest;			///< The client request we are currently servicing
-	// unionize where possible
-	HBufC8* iImportKey;						///< Buffer for key imported key data 
-	CKeyInfo* iKeyInfo;						///< Key info, used by create, import and export
-	HBufC8* iText;							///< Stores input data for sign and decrypt operations
-	HBufC8* iExportBuf;						///< Holds the exported key data
-	CPBEncryptParms* iPbeParams;            ///< Parameters for encrypted key export
-	COpenedKey* iOpenedKey;					///< The key object for crypto operations
-	CDSASignature* iDSASignature;			///< Signature to return for DSA sign operation
-	CRSASignature* iRSASignature;			///< Signature to return for RSA sign operation
-	CDHParams* iDHParams;					///< DH parameters for DU public key operation
-	RInteger iDHPublicKeyOut;				///< DH public key to return to client
-	CDHPublicKey* iDHPublicKey;				///< DH public key and params object for agree operation 
-	HBufC8* iDHAgreedKeyOut;				///< Agreed key to return to client
-	HBufC8* iPlaintext;						///< Buffer to hold decrypted data
-	};
-
-#endif	//	__CKEYSTORECONDUIT_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: 
+* Implements CKeyStoreConduit
+*
+*/
+
+
+/**
+ @file 
+ @internalTechnology
+*/
+ 
+#ifndef __CKEYSTORECONDUIT_H__
+#define __CKEYSTORECONDUIT_H__
+
+#include "fsserver.h"
+#include <bigint.h>
+
+class CDSASignature;
+class CRSASignature;
+class CFSKeyStoreServer;
+class CKeyStoreSession;
+class CRSARepudiableSigner;
+class CDSARepudiableSigner;
+class CFSRSADecryptor;
+class CDHParams;
+class COpenedKey;
+class CKeyInfo;
+class CPBEncryptParms;
+class CDHPublicKey;
+
+#ifdef SYMBIAN_KEYSTORE_USE_AUTH_SERVER
+#include <authserver/identity.h>
+#endif // SYMBIAN_KEYSTORE_USE_AUTH_SERVER
+
+
+/**
+ * The key store server object (CFSKeyStoreServer) owns one instance of this
+ * object, which it calls for every client request.  This object unmarshalls the
+ * client data and fulfills the request by calling back to the server object.
+ * Any return information is then marshalled back to the client.
+ */
+class CKeyStoreConduit : public CActive
+	{
+ public:
+	static CKeyStoreConduit* NewL(CFSKeyStoreServer& aServer);
+	virtual ~CKeyStoreConduit();
+ public:
+	void ServiceRequestL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+ protected:	//	From CActive
+	virtual void DoCancel();
+	virtual void RunL();
+	virtual TInt RunError(TInt aError);
+ private:
+	CKeyStoreConduit(CFSKeyStoreServer& aServer);	
+	void ConstructL();
+ private:
+	CKeyStoreConduit(const CKeyStoreConduit&);				//	No copying
+	CKeyStoreConduit& operator=(const CKeyStoreConduit&);	//	No copying
+ private:
+	// For MKeyStore
+	void ListL(const RMessage2& aMessage);
+	void CancelList(const RMessage2& aMessage);
+	void GetKeyInfoL(const RMessage2& aMessage);
+	void CancelGetKeyInfo(const RMessage2& aMessage);
+ private:
+	// For MCTKeyStoreManager
+	void CreateKeyL(const RMessage2& aMessage);
+	void CancelCreateKey(const RMessage2& aMessage);
+	void ImportKeyL(const RMessage2& aMessage);
+	void CancelImportKey(const RMessage2& aMessage);
+	void ExportKeyL(const RMessage2& aMessage); 
+	void CancelExportKey(const RMessage2& aMessage);
+	void ExportPublicL(const RMessage2& aMessage); 
+	void CancelExportPublic(const RMessage2& aMessage);
+	void CancelExportEncryptedKey(const RMessage2& aMessage);
+	void DeleteKeyL(const RMessage2& aMessage);
+	void SetUsePolicyL(const RMessage2& aMessage);
+	void SetManagementPolicyL(const RMessage2& aMessage);
+	void SetPassphraseTimeoutL(const RMessage2& aMessage);
+	void RelockL(const RMessage2& aMessage);	
+	void OpenKeyL(const RMessage2& aMessage, CKeyStoreSession& aSession, TUid aType);
+	void CloseObjectL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	
+#ifdef SYMBIAN_AUTH_SERVER
+	void IsKeyServerNewL(const RMessage2& aMessage);
+#endif // SYMBIAN_AUTH_SERVER
+	
+#ifdef SYMBIAN_KEYSTORE_USE_AUTH_SERVER
+	
+	void CreateUserKeyL(const RMessage2& aMessage);
+	void ImportUserKeyL(const RMessage2& aMessage);
+	void SetAuthenticationPolicyL(const RMessage2& aMessage);
+	void GetAuthenticationPolicyL(const RMessage2& aMessage);
+	
+#endif // SYMBIAN_KEYSTORE_USE_AUTH_SERVER
+	
+ private:
+	// For MCTAuthenticationObject
+	void ChangePassphrase(const RMessage2& aMessage);
+	void CancelChangePassphrase(const RMessage2& aMessage);
+	void AuthOpen(const RMessage2& aMessage);
+	void CancelAuthOpen(const RMessage2& aMessage);
+	void AuthClose(const RMessage2& aMessage);
+	void GetTimeRemaining(const RMessage2& aMessage);
+	void SetTimeout(const RMessage2& aMessage);
+	void GetTimeout(const RMessage2& aMessage);
+	void Relock(const RMessage2& aMessage);
+ private:
+	void GetKeyLengthL(const RMessage2& aMessage); 
+	TUid GetClientUidL(const RMessage2& aMessage) const;
+	void OpenKeyGetInfoL(const RMessage2& aMessage);
+	void RepudiableDSASignL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void CancelDSASign(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void RepudiableRSASignL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void CancelRSASign(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void DecryptL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void CancelDecrypt(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void DHPublicKeyL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void DoDHPublicKeyL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void FinishDHPublicKeyL();
+	void DHAgreeL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void DoDHAgreeL(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	void FinishDHAgreeL();
+	void CancelDH(const RMessage2& aMessage, CKeyStoreSession& aSession);
+	COpenedKey* ProcessL(const RMessage2& aMessage, CKeyStoreSession& aSession,
+						 const TUid& aCKeyInfoID, const TFSTokenMessages& aState, TPtr8& aPtr);
+	void FinishOpenL(const RMessage2& aMessage, CKeyStoreSession& aSession, COpenedKey& aOpenedKey);
+	void Cleanup();
+ private:
+	/** Encapsulate data about the current request. */
+	class TAsyncRequest
+		{
+	public:
+		void Set(TFSTokenMessages aRequest, const RMessage2& aMessage);
+		void Complete(TInt aResult);
+		void Cancel();
+	public:
+		inline TFSTokenMessages OutstandingRequest() { return iRequest; }
+		inline const RMessage2& Message() { return iMessage ;}
+	public:
+		TAsyncRequest(TRequestStatus& aStatus);
+		~TAsyncRequest();
+	private:
+		TFSTokenMessages iRequest;
+		RMessage2 iMessage;
+		TRequestStatus& iOwnerStatus;
+		}; 
+ private:
+	CFSKeyStoreServer& iServer;				///< The server object used to execute client requests
+	TAsyncRequest iCurrentRequest;			///< The client request we are currently servicing
+	// unionize where possible
+	HBufC8* iImportKey;						///< Buffer for key imported key data 
+	CKeyInfo* iKeyInfo;						///< Key info, used by create, import and export
+	HBufC8* iText;							///< Stores input data for sign and decrypt operations
+	HBufC8* iExportBuf;						///< Holds the exported key data
+	CPBEncryptParms* iPbeParams;            ///< Parameters for encrypted key export
+	COpenedKey* iOpenedKey;					///< The key object for crypto operations
+	CDSASignature* iDSASignature;			///< Signature to return for DSA sign operation
+	CRSASignature* iRSASignature;			///< Signature to return for RSA sign operation
+	CDHParams* iDHParams;					///< DH parameters for DU public key operation
+	RInteger iDHPublicKeyOut;				///< DH public key to return to client
+	CDHPublicKey* iDHPublicKey;				///< DH public key and params object for agree operation 
+	HBufC8* iDHAgreedKeyOut;				///< Agreed key to return to client
+	HBufC8* iPlaintext;						///< Buffer to hold decrypted data
+	
+	};
+
+#endif	//	__CKEYSTORECONDUIT_H__