cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.h
changeset 15 da2ae96f639b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/thwkeystore/client/thwkeystoreclient.h	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 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 the MCTKeyStoreManager interface.
+*
+*/
+
+
+/**
+ * @file
+ * @internalComponent
+ * @released
+ */
+#ifndef CHARDWAREKEYSTORECLIENT_H
+#define CHARDWAREKEYSTORECLIENT_H
+
+#include <mctkeystoremanager.h>
+
+#include "cryptoasymmetriccipherapi.h"
+#include <asymmetric.h>
+#include <cryptospi/cryptoparams.h>
+#include "thwkeystoredefs.h"
+#include "tcryptotokenhai.h"
+
+/**
+ * Implements the MCTKeyStoreManager interface.
+ *
+ * The class implements the keystore manager token interface for the software
+ * keystore.  It will be created and owned by the unified keystore.
+ */
+NONSHARABLE_CLASS(CHardwareKeyStoreClient) : public CActive, public MCTKeyStoreManager
+{
+public:
+	static MCTTokenInterface* NewKeyStoreInterfaceL(MCTToken& aToken);
+
+public:
+	virtual ~CHardwareKeyStoreClient();
+	void AddRef();
+
+public:
+	void RunL();
+	virtual void DoCancel();
+	TInt RunError(TInt aError);
+	
+public:
+//	MKeyStore
+	virtual void List(RMPointerArray<CCTKeyInfo>& aKeys, const TCTKeyAttributeFilter& aFilter, TRequestStatus& aStatus);
+	virtual void CancelList();
+	virtual void GetKeyInfo(TCTTokenObjectHandle aHandle, CCTKeyInfo*& aInfo, TRequestStatus& aStatus);
+	virtual void CancelGetKeyInfo();
+	
+	// Open an RSA key for signing
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MRSASigner*& aSigner,
+					  TRequestStatus& aStatus);
+	// Open a DSA key for signing
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MDSASigner*& aSigner, 
+					  TRequestStatus& aStatus);
+	// Open a RSA key for private decryption
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MCTDecryptor*& aDecryptor,
+					  TRequestStatus& aStatus);
+	// Open a DH key for key agreement
+	virtual void Open(const TCTTokenObjectHandle& aHandle, 
+					  MCTDH*& aDH, TRequestStatus& aStatus);
+
+
+	// Cancels an ongoing open request
+	virtual void CancelOpen();
+	
+	// Returns the public key in DER-encoded ASN-1
+	virtual void ExportPublic(const TCTTokenObjectHandle& aHandle,
+							  HBufC8*& aPublicKey,
+							  TRequestStatus& aStatus);
+	virtual void CancelExportPublic();
+
+	virtual void Open(const TCTTokenObjectHandle& aHandle,
+		                  CryptoSpi::CSigner*& aSigner,
+		                  TRequestStatus& aStatus);
+	
+	virtual void Open(const TCTTokenObjectHandle& aHandle,
+		                  CryptoSpi::CAsymmetricCipher*& asymmetricCipherObj,
+		                  TRequestStatus& aStatus);
+	
+	virtual void Decrypt(const TCTTokenObjectHandle& aHandle,
+                            const TDesC8& aCiphertext,
+		                       HBufC8*& aPlaintextPtr,
+		                       TRequestStatus& aStatus);
+	
+	virtual void Sign(const TCTTokenObjectHandle& aHandle,
+                           const TDesC8& aPlaintext,
+		                    CryptoSpi::CCryptoParams*& aSignature,
+		                    TRequestStatus& aStatus);
+
+public:
+//	MCTKeyStoreManager
+	virtual void CreateKey(CCTKeyInfo*& aReturnedKey, TRequestStatus& aStatus);
+	virtual void CancelCreateKey();
+	virtual void ImportKey(const TDesC8& aKey, CCTKeyInfo*& aReturnedKey, TRequestStatus& aStatus);
+	virtual void CancelImportKey();
+	virtual void ImportEncryptedKey(const TDesC8& aKey, CCTKeyInfo*& aReturnedKey, TRequestStatus& aStatus);
+	virtual void CancelImportEncryptedKey();
+	virtual void ExportKey(TCTTokenObjectHandle aHandle, HBufC8*& aKey, TRequestStatus& aStatus); 
+	virtual void CancelExportKey();
+	virtual void ExportEncryptedKey(TCTTokenObjectHandle aHandle, const CPBEncryptParms& aParams, HBufC8*& aKey, TRequestStatus& aStatus);
+	virtual void CancelExportEncryptedKey();
+	virtual void DeleteKey(TCTTokenObjectHandle aHandle, TRequestStatus& aStatus);
+	virtual void CancelDeleteKey();	
+	virtual void SetUsePolicy(TCTTokenObjectHandle aHandle, const TSecurityPolicy& aPolicy, TRequestStatus& aStatus);
+	virtual void CancelSetUsePolicy();
+	virtual void SetManagementPolicy(TCTTokenObjectHandle aHandle, const TSecurityPolicy& aPolicy, TRequestStatus& aStatus);
+	virtual void CancelSetManagementPolicy();
+	virtual void SetPassphraseTimeout(TInt aTimeout, TRequestStatus& aStatus);
+	virtual void CancelSetPassphraseTimeout();	
+	virtual void Relock(TRequestStatus& aStatus);
+	virtual void CancelRelock();	
+
+	void ReleaseObject(const TCTTokenObjectHandle& aObject);
+
+public:
+	/**
+	 * this method os not a part of the framework, has been added so 
+	 * that addition of keys to the hardware can be simulated for 
+	 * testing purposes.
+	 */ 
+	void ImportKey(	TPtr aLabel, TPtr8 aPrivateKey, 
+					TPtr8 aPublicKey , TRequestStatus& aStatus);
+
+public:	
+//	From MCTTokenInterface
+	virtual MCTToken& Token();
+
+protected:
+//	From MCTTokenInterface
+	virtual void DoRelease();
+
+protected:
+	CHardwareKeyStoreClient(MCTToken& aToken);
+	virtual void ConstructL();
+
+private:
+	TInt iRefCount;
+	MCTToken& iToken;					// The token we belong to
+	THwKeystoreMessages iState;
+	TRequestStatus* iClientStatus;
+	TCTTokenObjectHandle iHandle;
+	RPointerArray<CCTKeyInfo>* iKeys;
+	TBuf8<256> iBuffer;
+	CCryptoTokenHai* iCryptoTokenHai;
+	HBufC8** iPublicKey;
+	const TDesC8* iPtr; 
+	TCTKeyAttributeFilter iFilter;
+	union
+	{
+	CryptoSpi::CSigner** iSigner;
+	CryptoSpi::CAsymmetricCipher** iAsymmetricCipher;
+	CryptoSpi::CCryptoParams* iSignature;
+	HBufC8** decryptedText;
+	}iClientBuffer;
+	
+};
+
+#endif	//	CHARDWAREKEYSTORECLIENT_H