diff -r 675a964f4eb5 -r 35751d3474b7 crypto/weakcryptospi/test/tplugins/inc/macimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crypto/weakcryptospi/test/tplugins/inc/macimpl.h Thu Sep 10 14:01:51 2009 +0300 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2008-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: +* mac plugin implementation +* +*/ + + +/** + @file + @internalComponent + @released +*/ + +#ifndef __CRYPTOAPI_SOFTWAREMACIMPL_H__ +#define __CRYPTOAPI_SOFTWAREMACIMPL_H__ + +#include +#include "cryptosymmetriccipherapi.h" +#include "softwarehashbase.h" +#include "keys.h" +#include "cmacimpl.h" +#include "hmacimpl.h" + + +namespace SoftwareCrypto + { + using namespace CryptoSpi; + + /** + Interfaces for Software Hash + */ + + NONSHARABLE_CLASS(CMacImpl) : public CBase, public MMac + { + public: + /** + * MAC implementation instance creation methods + */ + static CMacImpl* NewL(const CKey& aKey, + const TUid aImplementationId, + const CCryptoParams* aAlgorithmParams); + + /** + * Methods from MPlugin: Base class for all the plugins + */ + void GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics); + const CExtendedCharacteristics* GetExtendedCharacteristicsL(); + TAny* GetExtension(TUid aExtensionId); + void Reset(); + // this deletes the instance of this class. The method is called at the user side + // indirectly through the MPlugin pointer instance. + void Close(); + + /** + * From MMac: MAC interface (Software based) + */ + TPtrC8 MacL(const TDesC8& aMessage); + void UpdateL(const TDesC8& aMessage); + TPtrC8 FinalL(const TDesC8& aMessage); + void ReInitialiseAndSetKeyL(const CKey& aKey); + MMac* ReplicateL(); + MMac* CopyL(); + + private: + + /** + * Enumerators to recognize the type of algorithm used for MAC + */ + enum TMacBase {EHashBased, ECipherBased}; + + + /** + * Constructors and Destructors + */ + ~CMacImpl(); + CMacImpl(); + CMacImpl(const CMacImpl& aMacImpl); + + /** + * Initialize the 'iHmacImpl' and 'iCipherImpl' instances. + */ + void ConstructL(const CKey& aKey, const TUid aImplementationId,const CCryptoParams* aAlgorithmParams); + + /** + * This will return the Uid of the specific implementation + * used for the algorithm. + */ + TUid ImplementationUid() const; + + private: + TUid iImplementationUid; + TMacBase iBase; + CKey* iKey; + + /** + * The hash based MAC implementation. This is software based implementation. + */ + CHMacImpl* iHmacImpl; + + /** + * The symmetric cipher based MAC implementation. + */ + CCMacImpl* iCmacImpl; + }; + } + +#endif // __CRYPTOAPI_SOFTWAREMACIMPL_H__