First public contribution.
2 * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
15 * Software md2 implementation
26 #ifndef __CRYPTOAPI_SOFTWAREMD2IMPL_H__
27 #define __CRYPTOAPI_SOFTWAREMD2IMPL_H__
29 #include "softwarehashbase.h"
31 namespace SoftwareCrypto
33 using namespace CryptoSpi;
35 const TInt KMD2BlockSize = 16;
36 const TInt KMD2HashSize = 16;
38 NONSHARABLE_CLASS(CMD2Impl) : public CBase, public MSoftwareHash
42 static CMD2Impl* NewL();
43 static CMD2Impl* NewLC();
48 void GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics);
49 static CExtendedCharacteristics* CreateExtendedCharacteristicsL();
50 const CExtendedCharacteristics* GetExtendedCharacteristicsL();
51 TAny* GetExtension(TUid aExtensionId);
54 TPtrC8 Hash(const TDesC8& aMessage);
55 void Update(const TDesC8& aMessage);
56 TPtrC8 Final(const TDesC8& aMessage);
59 void SetKeyL(const CKey& aKey);
60 void SetOperationModeL(TUid aOperationMode);
70 CMD2Impl(const CMD2Impl& aCMD2Impl);
75 TUid ImplementationUid();
77 void DoUpdate(const TUint8* aData,TUint aLength);
79 void Block(const TUint8* aData);
84 TBuf8<KMD2HashSize> iHash;
86 TUint8 iData[KMD2BlockSize];
87 TUint iChecksum[KMD2BlockSize];
88 TUint iState[KMD2BlockSize];
89 TUint8 iDataTemp[KMD2BlockSize];
90 TUint iChecksumTemp[KMD2BlockSize];
91 TUint iStateTemp[KMD2BlockSize];
95 #endif //__CRYPTOAPI_SOFTWAREMD2IMPL_H__