diff -r 445614b8b140 -r 1afc808f187d crypto/weakcryptospi/source/common/keyidentifierutil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crypto/weakcryptospi/source/common/keyidentifierutil.cpp Fri Nov 13 10:07:38 2009 +0530 @@ -0,0 +1,68 @@ +/* +* Copyright (c) 2003-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: +* +*/ + + +#include "keyidentifierutil.h" +#include "hash.h" +#include "asymmetrickeys.h" + +EXPORT_C void KeyIdentifierUtil::RSAKeyIdentifierL( + const CRSAPublicKey& aKey, TKeyIdentifier& aIdentifier) + { + aIdentifier.FillZ(); + + // Generate a hash of the appropriate data (for TKeyIdentifier) + const TInteger& keyModulus = aKey.N(); + HBufC8* modulusData = keyModulus.BufferLC(); + CSHA1* sha1 = CSHA1::NewL(); + CleanupStack::PushL(sha1); + TPtrC8 hash = sha1->Final(*modulusData); + aIdentifier.Copy(hash); + CleanupStack::PopAndDestroy(2); // sha1, modulusData + } + +EXPORT_C void KeyIdentifierUtil::DSAKeyIdentifierL( + const CDSAPublicKey& aKey, TKeyIdentifier& aIdentifier) + { + aIdentifier.FillZ(); + + // Generate a hash of the appropriate data (for TKeyIdentifier) + const TInteger& Y = aKey.Y(); + HBufC8* YData = Y.BufferLC(); + CSHA1* sha1 = CSHA1::NewL(); + CleanupStack::PushL(sha1); + TPtrC8 hash = sha1->Final(*YData); + aIdentifier.Copy(hash); + CleanupStack::PopAndDestroy(2); // sha1, YData + } + +EXPORT_C void KeyIdentifierUtil::DHKeyIdentifierL( + const RInteger& aKey, TKeyIdentifier& aIdentifier) + { + if (aKey.IsZero()) + User::Leave(KErrArgument); + + aIdentifier.FillZ(); + + // Generate a hash of the appropriate data (for TKeyIdentifier) + HBufC8* XData = aKey.BufferLC(); + CSHA1* sha1 = CSHA1::NewL(); + CleanupStack::PushL(sha1); + TPtrC8 hash = sha1->Final(*XData); + aIdentifier.Copy(hash); + CleanupStack::PopAndDestroy(2); // sha1, XData + }