sl@0: /* sl@0: * Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * hash shim classes definition sl@0: * sl@0: */ sl@0: sl@0: sl@0: /** sl@0: @file sl@0: @internalComponent sl@0: @released sl@0: */ sl@0: sl@0: #ifndef __HASHSHIM_H__ sl@0: #define __HASHSHIM_H__ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT sl@0: #include sl@0: #endif sl@0: sl@0: // sl@0: // MD2 shim class sl@0: // sl@0: NONSHARABLE_CLASS(CMD2Shim) : public CMD2 sl@0: { sl@0: public: sl@0: sl@0: static CMD2Shim* NewL(); sl@0: static CMD2Shim* NewLC(); sl@0: ~CMD2Shim(); sl@0: CMessageDigest* CopyL(); sl@0: TInt BlockSize(); sl@0: TInt HashSize() ; sl@0: void Update(const TDesC8& aMessage); sl@0: TPtrC8 Final(const TDesC8& aMessage); sl@0: TPtrC8 Final(); sl@0: void Reset(); sl@0: TPtrC8 Hash(const TDesC8& aMessage); sl@0: CMessageDigest* ReplicateL(); sl@0: sl@0: protected: sl@0: //virtual from CBase sl@0: virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1); sl@0: sl@0: private: sl@0: CMD2Shim(); sl@0: void ConstructL(); sl@0: sl@0: private: sl@0: CryptoSpi::CHash* iHashImpl; sl@0: }; sl@0: sl@0: sl@0: // sl@0: // MD5 shim class sl@0: // sl@0: sl@0: NONSHARABLE_CLASS(CMD5Shim) : public CMD5 sl@0: { sl@0: public: sl@0: static CMD5Shim* NewL(); sl@0: static CMD5Shim* NewLC(); sl@0: ~CMD5Shim(); sl@0: CMessageDigest* CopyL(); sl@0: TInt BlockSize(); sl@0: TInt HashSize() ; sl@0: void Update(const TDesC8& aMessage); sl@0: TPtrC8 Final(const TDesC8& aMessage); sl@0: TPtrC8 Final(); sl@0: void Reset(); sl@0: TPtrC8 Hash(const TDesC8& aMessage); sl@0: CMessageDigest* ReplicateL(); sl@0: sl@0: protected: sl@0: //virtual from CBase sl@0: virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1); sl@0: sl@0: private: sl@0: CMD5Shim(); sl@0: void ConstructL(); sl@0: sl@0: private: sl@0: CryptoSpi::CHash* iHashImpl; sl@0: }; sl@0: sl@0: sl@0: sl@0: // sl@0: // SHA1 shim class sl@0: // sl@0: sl@0: NONSHARABLE_CLASS(CSHA1Shim) : public CSHA1 sl@0: { sl@0: public: sl@0: static CSHA1Shim* NewL(); sl@0: static CSHA1Shim* NewLC(); sl@0: ~CSHA1Shim(); sl@0: CMessageDigest* CopyL(); sl@0: TInt BlockSize(); sl@0: TInt HashSize() ; sl@0: void Update(const TDesC8& aMessage); sl@0: TPtrC8 Final(const TDesC8& aMessage); sl@0: TPtrC8 Final(); sl@0: void Reset(); sl@0: TPtrC8 Hash(const TDesC8& aMessage); sl@0: CMessageDigest* ReplicateL(); sl@0: sl@0: protected: sl@0: //virtual from CBase sl@0: virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1); sl@0: sl@0: private: sl@0: CSHA1Shim(); sl@0: void ConstructL(); sl@0: sl@0: private: sl@0: CryptoSpi::CHash* iHashImpl; sl@0: }; sl@0: sl@0: // sl@0: // SHA2 shim class sl@0: // sl@0: sl@0: NONSHARABLE_CLASS(CSHA2Shim) : public CSHA2 sl@0: { sl@0: public: sl@0: static CSHA2Shim* NewL(TSH2Algo aAlgorithmId); sl@0: static CSHA2Shim* NewLC(TSH2Algo aAlgorithmId); sl@0: ~CSHA2Shim(); sl@0: CMessageDigest* CopyL(); sl@0: TInt BlockSize(); sl@0: TInt HashSize() ; sl@0: void Update(const TDesC8& aMessage); sl@0: TPtrC8 Final(const TDesC8& aMessage); sl@0: TPtrC8 Final(); sl@0: void Reset(); sl@0: TPtrC8 Hash(const TDesC8& aMessage); sl@0: CMessageDigest* ReplicateL(); sl@0: sl@0: protected: sl@0: //virtual from CBase sl@0: virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1); sl@0: sl@0: private: sl@0: CSHA2Shim(); sl@0: void ConstructL(TSH2Algo aAlgorithmId); sl@0: sl@0: private: sl@0: CryptoSpi::CHash* iHashImpl; sl@0: }; sl@0: sl@0: sl@0: sl@0: // sl@0: // HMac shim class sl@0: // sl@0: sl@0: NONSHARABLE_CLASS(CHMACShim) : public CHMAC sl@0: { sl@0: public: sl@0: static CHMACShim* NewL(const TDesC8& aKey, CMessageDigest* aDigest); sl@0: static CHMACShim* NewLC(const TDesC8& aKey, CMessageDigest* aDigest); sl@0: ~CHMACShim(); sl@0: CMessageDigest* CopyL(); sl@0: TInt BlockSize(); sl@0: TInt HashSize() ; sl@0: void Update(const TDesC8& aMessage); sl@0: TPtrC8 Final(const TDesC8& aMessage); sl@0: TPtrC8 Final(); sl@0: void Reset(); sl@0: TPtrC8 Hash(const TDesC8& aMessage); sl@0: CMessageDigest* ReplicateL(); sl@0: sl@0: private: sl@0: sl@0: #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT sl@0: CHMACShim(CryptoSpi::CMac* aImpl, CMessageDigest* aDigest, CryptoSpi::CKey* aKey, TUid aAlgorithmUid); sl@0: #else sl@0: CHMACShim(CryptoSpi::CHash* aImpl, CMessageDigest* aDigest); sl@0: #endif sl@0: CHMACShim(); sl@0: void ConstructL(const TDesC8& aKey, TUid aAlgorithmUid, CMessageDigest* aDigest); sl@0: sl@0: private: sl@0: sl@0: #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT sl@0: CryptoSpi::CMac* iMacImpl; sl@0: CryptoSpi::CKey* iKey; sl@0: TUid iAlgorithmUid; sl@0: #else sl@0: CryptoSpi::CHash* iMacImpl; sl@0: #endif sl@0: }; sl@0: sl@0: // sl@0: // MD4 shim class sl@0: // sl@0: sl@0: NONSHARABLE_CLASS(CMD4Shim) : public CMD4 sl@0: { sl@0: public: sl@0: static CMD4Shim* NewL(); sl@0: static CMD4Shim* NewLC(); sl@0: ~CMD4Shim(); sl@0: CMessageDigest* CopyL(); sl@0: TInt BlockSize(); sl@0: TInt HashSize(); sl@0: void Update(const TDesC8& aMessage); sl@0: TPtrC8 Final(const TDesC8& aMessage); sl@0: TPtrC8 Final(); sl@0: void Reset(); sl@0: TPtrC8 Hash(const TDesC8& aMessage); sl@0: CMessageDigest* ReplicateL(); sl@0: sl@0: protected: sl@0: //virtual from CBase sl@0: virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1); sl@0: sl@0: private: sl@0: CMD4Shim(); sl@0: void ConstructL(); sl@0: sl@0: private: sl@0: CryptoSpi::CHash* iHashImpl; sl@0: }; sl@0: sl@0: #endif // __HASHSHIM_H__