--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimPlugin/inc/WimRSASigner.h Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,184 @@
+/*
+* Copyright (c) 2002 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: Interface which handles RSA signing operations.
+*
+*/
+
+
+
+#ifndef WIMRSASIGNER_H
+#define WIMRSASIGNER_H
+
+
+//INCLUDES
+
+#include <e32base.h>
+#include <e32std.h>
+
+
+//FORWARD DECLARATIONS
+
+class CMessageDigest;
+class CWimKeyStore;
+
+
+/**
+* RSA signer object. Handles RSA signing.
+*
+* @lib WimPlugin
+* @since Series60 2.6
+*/
+class CWimRSASigner: public CBase, public MRSASigner
+ {
+
+ public:
+
+ /**
+ * Creates new Instance of CWimRSASigner
+ * @param aClient -Reference to keystore
+ * @return An instance of this class
+ */
+ static CWimRSASigner* NewL( CWimKeyStore& aClient );
+
+ /**
+ * Destructor
+ */
+ ~CWimRSASigner();
+
+ /**
+ * Returns the object's human-readable label
+ * @return TDesC&
+ */
+ const TDesC& Label() const;
+
+ /**
+ * Returns a reference to the associated token
+ * @return MCTToken&
+ */
+ MCTToken& Token() const;
+
+ /**
+ * Returns a UID representing the type of the token object. The
+ * meanings of possible UIDs should be documented in the
+ * documentation for the interface that returns them.
+ * @return TUid
+ */
+ TUid Type() const;
+
+ /**
+ * Returns a handle for the object. The primary purpose of the
+ * handle is to allow token objects to be 'passed' between
+ * processes. See TCTTokenObjectHandle for more details.
+ * @return TCTTokenObjectHandle
+ */
+ TCTTokenObjectHandle Handle() const;
+
+ /**
+ * Sign some data.
+ * The data is hashed before the signature is created using the SHA-1
+ * algorithm.
+ * @param aPlaintext The string to be signed.
+ * @param aSignature The returned signature. This remains owned
+ * by the signer, and is valid until the signer is released or
+ * until the next Sign.
+ * @param aStatus Async status notification
+ * @return void
+ */
+ void SignMessage( const TDesC8& aPlaintext,
+ CRSASignature*& aSignature,
+ TRequestStatus& aStatus );
+
+ /**
+ * Perform a raw signing operation.
+ * @param aData The data to be signed - this should be some form of hash
+ * of the actual message to be signed. If the data is too long,
+ * this method will return KErrOverflow through aStatus.
+ * @param aSignature The returned signature. This remains owned
+ * by the signer, and is valid until the signer is released or
+ * until the next Sign.
+ * @param aStatus Async status notification
+ * @return void
+ */
+ void Sign( const TDesC8& aData,
+ CRSASignature*& aSignature,
+ TRequestStatus& aStatus );
+
+ /**
+ * Cancel an ongoing sign
+ * @return void
+ */
+ void CancelSign();
+
+ /**
+ * Release object
+ * @return void
+ */
+ void Release();
+
+ /**
+ * Sets label for signin key object.
+ * @param aLabel -label to be set.
+ * @return void
+ */
+ void SetLabelL( const TDesC& aLabel );
+
+ /**
+ * Sets objectId for this object.
+ * @param aObjectID -points to a certain key
+ * @return void
+ */
+ void SetObjectId( const TInt aObjectId );
+
+ protected:
+
+ /**
+ * Releases the object once the base-class framework work has
+ * been done. The default implementation simply does a 'delete
+ * this', but derived classes can substitute their own behaviour,
+ * for instance to implement reference counting of the token
+ * objects themselves.
+ * @return void
+ */
+ void DoRelease();
+
+ private:
+
+ /**
+ * Default constructor
+ * @param aClient pointer to caller.
+ */
+ CWimRSASigner( CWimKeyStore& aClient );
+
+ private:
+
+ //Handles hashing. Owned
+ CMessageDigest* iDigest;
+
+ //Objects handle
+ TCTTokenObjectHandle iHandle;
+
+ //Reference to keystore
+ CWimKeyStore& iClient;
+
+ //holds key label. Owned.
+ HBufC* iLabel;
+
+ //buffer for hash result
+ HBufC8* iDigestBuf;
+
+ };
+
+#endif // WIMRSASIGNER_H
+
+// end of file