diff -r 000000000000 -r 95b198f216e5 wmdrm/inc/wmdrmkeystorage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wmdrm/inc/wmdrmkeystorage.h Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,233 @@ +/* +* Copyright (c) 2006-2007 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: Declaration of the WMDRM key storage +* +*/ + + +#ifndef WMDRMKEYSTORAGE_H +#define WMDRMKEYSTORAGE_H + +#include +#include + +const TInt KDeviceSpecificKeyLength = 16; + +/** + * Hardware key storage access via the Security Driver + * + * @since S60 3.2 + */ +NONSHARABLE_CLASS( CWmDrmKeyStorage ): public CBase + { +public: + + /** + * NewL + * creates an instance of the CWmDrmKeyStorageClass + * + * @param aKeyIndex Index of the key to be used + * Optional parameter, not currently used + * @return CWmDrmKeyStorage -object + * @leave Symbian OS or internal error code + */ + IMPORT_C static CWmDrmKeyStorage* NewL( TInt aKeyIndex = 0 ); + + /** + * GetCertificateL + * request the device certificate in 8bit buffer + * caller responsible for releasing the buffer + * + * @return Device WMDRM certificate in an 8bit buffer + * @leave Symbian OS or internal error code + */ + virtual HBufC8* GetCertificateL() = 0; + + /** + * GetUniqueIdL + * + * request a 20byte unique Id such as SHA1 hash of some device + * specific value, single Unique Id per device + * + * caller is responsible for releasing the buffer + * + * @return Unique Id in an 8bit buffer + * @leave Symbian OS or internal error code + */ + virtual HBufC8* GetUniqueIdL() = 0; + + /** + * GetUniqueIdRawL + * + * request a 20byte unique Id such as SHA1 hash of some device + * specific value, single Unique Id per device base 64 encoded + * and in a 16bit buffer + * + * caller is responsible for releasing the buffer + * + * @return Base 64 encoded Unique Id in a 16bit buffer + * @leave Symbian OS or internal error code + */ + virtual HBufC* GetUniqueIdRawL() = 0; + + /** + * GetUniqueIdL + * + * request a 20byte unique Id such as SHA1 hash of some device + * specific value, single Unique Id per device result is base 64 encoded + * + * caller is responsible for releasing the buffer + * + * @return Unique Id in an 8bit buffer base 64 encoded + * @leave Symbian OS or internal error code + */ + virtual HBufC8* GetUniqueIdB64L() = 0; + + /** + * GetPublicKeyL + * + * request the WMDRM public key of the device in an 8bit descriptor + * + * caller is responsible for releasing the buffer + * + * @return WMDRM public key in an 8bit buffer + * @leave Symbian OS or internal error code + */ + virtual HBufC8* GetPublicKeyL() = 0; + + /** + * GetPublicKeyB64L + * + * request the WMDRM public key of the device in an 8bit descriptor + * base 64 encoded + * + * caller is responsible for releasing the buffer + * + * @return WMDRM public key in an 8bit buffer base 64 encoded + * @leave Symbian OS or internal error code + */ + virtual HBufC8* GetPublicKeyB64L() = 0; + + /** + * SignEcDsaL + * + * Signs the data using the device WMDRM private key + * + * caller is responsible for releasing the buffer + * + * @param aData Data buffer from which the hash is calculated + * @return EcDsa signature in an 8bit descriptor + * @leave Symbian OS or internal error code + */ + virtual HBufC8* SignEcDsaL( const TDesC8& aData ) = 0; + + /** + * VerifyEcDsaL + * + * Verifies using the WMDRM public key that the signature is valid + * + * @param aData Data buffer from which the hash is calculated + * @param aSignature The signature to be checked against + * @return ETrue if the signature check succeeded, + EFalse if the signature check failed + * @leave Symbian OS or internal error code + */ + virtual TBool VerifyEcDsaL( const TDesC8& aData, const TDesC8& aSignature ) = 0; + + + /** + * VerifyEcDsaL + * + * Verifies using the given key that the signature is valid + * + * @param aKey The key in 8bit buffer to be used for signature + * calculation + * @param aData Data buffer from which the hash is calculated + * @param aSignature The signature to be checked against + * @return ETrue if the signature check succeeded , + EFalse if the signature check failed + * @leave Symbian OS or internal error code + */ + virtual TBool VerifyEcDsaL( const TDesC8& aKey, const TDesC8& aData, const TDesC8& aSignature ) = 0; + + + /** + * DecryptEcIesL + * + * Decrypts the EcIes encrypted data using the device private key + * + * caller is responsible for releasing the buffer + * + * @param aData Data buffer containing the encrypted data + * @return Decrypted data in 8bit descriptor + * @leave Symbian OS or internal error code + */ + virtual HBufC8* DecryptEcIesL( const TDesC8& aData ) = 0; + + /** + * EncryptEcIesL + * + * Encrypts the data using the device WMDRM private key + * + * caller is responsible for releasing the buffer + * + * @param aData Data buffer to be encrypted + * @return Encrypted data in 8bit descriptor + * @leave Symbian OS or internal error code + */ + virtual HBufC8* EncryptEcIesL( const TDesC8& aData ) = 0; + + /** + * EncryptEcIesL + * + * Encrypts the data using the given key + * + * caller is responsible for releasing the buffer + * + * @param aKey Key to be used for EcIes encryption in an 8bit buffer + * @param aData Data buffer to be encrypted + * @return Encrypted data in 8bit descriptor + * @leave Symbian OS or internal error code + */ + virtual HBufC8* EncryptEcIesL( const TDesC8& aKey, const TDesC8& aData ) = 0; + + + /** + * GetDeviceSpecificKeyL + * + * request a device specific 16 byte key in an 8bit descriptor + * + * caller is responsible for releasing the buffer + * + * @param aKey Device specific 16 byte key in an 8bit buffer + * @leave Symbian OS or internal error code + */ + virtual void GetDeviceSpecificKeyL( + TBuf8& aKey) = 0; + + /** + * GetSymmetricKeyL + * + * request the WMDRM symmetric key from the WMDRM certificate in + * an 8bit descriptor + * + * caller is responsible for releasing the buffer + * + * @return WMDRM symmetric key in an 8bit buffer + * @leave Symbian OS or internal error code + */ + virtual HBufC8* GetSymmetricKeyL() = 0; + }; + +#endif // WMDRMKEYSTORAGE_H