--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/DeviceToken/Inc/DevCertKeyStoreConduit.h Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,229 @@
+/*
+* Copyright (c) 2006 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: The header file of DevCertKeyStoreConduit
+*
+*/
+
+
+
+#ifndef __CDEVCERTKEYSTORECONDUIT_H__
+#define __CDEVCERTKEYSTORECONDUIT_H__
+
+#include <bigint.h>
+#include "DevTokenServer.h"
+
+class CDSASignature;
+class CRSASignature;
+class CDevCertKeyStoreServer;
+class CDevCertKeyStoreSession;
+class CDevCertRSARepudiableSigner;
+class CDevCertDSARepudiableSigner;
+class CDevCertRSADecryptor;
+class CDevTokenDHParams;
+class CDevCertOpenedKeySrv;
+class CDevTokenKeyInfo;
+class CDHPublicKey;
+
+/**
+ * The key store server object (CDevtokenKeyStoreServer) 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.
+ *
+ * @lib
+ * @since S60 v3.2
+ */
+class CDevCertKeyStoreConduit : public CActive
+ {
+ public:
+
+ static CDevCertKeyStoreConduit* NewL(CDevCertKeyStoreServer& aServer);
+
+ virtual ~CDevCertKeyStoreConduit();
+
+ public:
+
+ void ServiceRequestL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ protected:
+
+ // From CActive
+ virtual void DoCancel();
+
+ virtual void RunL();
+
+ virtual TInt RunError(TInt aError);
+
+ private:
+
+ CDevCertKeyStoreConduit(CDevCertKeyStoreServer& aServer);
+
+ void ConstructL();
+
+ private:
+
+ CDevCertKeyStoreConduit(const CDevCertKeyStoreConduit&); // No copying
+
+ CDevCertKeyStoreConduit& operator=(const CDevCertKeyStoreConduit&); // 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 DeleteKeyL(const RMessage2& aMessage);
+
+ void SetUsePolicyL(const RMessage2& aMessage);
+
+ void SetManagementPolicyL(const RMessage2& aMessage);
+
+ void OpenKeyL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession, TUid aType);
+
+ void CloseObjectL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ private:
+
+ void GetKeyLengthL(const RMessage2& aMessage);
+
+ TUid GetClientUidL(const RMessage2& aMessage) const;
+
+ void OpenKeyGetInfoL(const RMessage2& aMessage);
+
+ void RepudiableDSASignL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ void CancelDSASign(const RMessage2& aMessage);
+
+ void RepudiableRSASignL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ void CancelRSASign(const RMessage2& aMessage);
+
+ void DecryptL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ void CancelDecrypt(const RMessage2& aMessage);
+
+ void DHPublicKeyL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ void DoDHPublicKeyL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ void FinishDHPublicKeyL();
+
+ void DHAgreeL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ void DoDHAgreeL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession);
+
+ void FinishDHAgreeL();
+
+ void CancelDH(const RMessage2& aMessage);
+
+ CDevCertOpenedKeySrv* ProcessL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession,
+
+ const TUid& aCKeyInfoID, const TDevTokenMessages& aState, TPtr8& aPtr);
+
+ void FinishOpenL(const RMessage2& aMessage, CDevCertKeyStoreSession& aSession, CDevCertOpenedKeySrv& aOpenedKey);
+
+ void Cleanup();
+
+ private:
+
+ /**
+ * Encapsulate data about the current request.
+ */
+ class TAsyncRequest
+ {
+ public:
+
+ void Set(TDevTokenMessages aRequest, const RMessage2& aMessage);
+
+ void Complete(TInt aResult);
+
+ void Cancel();
+
+ public:
+
+ inline TDevTokenMessages OutstandingRequest() { return iRequest; }
+
+ inline const RMessage2& Message() { return iMessage ;}
+
+ public:
+
+ TAsyncRequest(TRequestStatus& aStatus);
+
+ ~TAsyncRequest();
+
+ private:
+
+ TDevTokenMessages iRequest;
+
+ RMessage2 iMessage;
+
+ TRequestStatus& iOwnerStatus;
+ };
+
+ private:
+
+ CDevCertKeyStoreServer& iServer; // The server object used to execute client requests
+
+ TAsyncRequest iCurrentRequest; // The client request we are currently servicing
+
+ HBufC8* iImportKey; // Buffer for key imported key data
+
+ CDevTokenKeyInfo* 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
+
+ CDevCertOpenedKeySrv* 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
+
+ CDevTokenDHParams* 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 // __CDEVCERTKEYSTORECONDUIT_H__