--- a/crypto/weakcrypto/test/tasymmetric/trsavector.cpp Tue Aug 31 17:00:08 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,806 +0,0 @@
-/*
-* Copyright (c) 1998-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 "trsavector.h"
-#include "tvectorutils.h"
-#include "t_input.h"
-#include <bigint.h>
-#include "performancetest.h"
-#include "tbrokenrandom.h"
-_LIT8(KPlaintextStart, "<plaintext>");
-_LIT8(KPlaintextEnd, "</plaintext>");
-_LIT8(KCiphertextStart, "<ciphertext>");
-_LIT8(KCiphertextEnd, "</ciphertext>");
-_LIT8(KSignatureStart, "<signature>");
-_LIT8(KSignatureEnd, "</signature>");
-_LIT8(KDigestInfoStart, "<digestInfo>");
-_LIT8(KDigestInfoEnd, "</digestInfo>");
-
-////////////////////////////////////////////////////////////////////////////////
-// CRSAEncryptVector
-////////////////////////////////////////////////////////////////////////////////
-
-CTestAction* CRSAEncryptVector::NewL(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CTestAction* self = CRSAEncryptVector::NewLC(aFs, aConsole,
- aOut, aTestActionSpec);
- CleanupStack::Pop();
- return self;
- }
-
-CTestAction* CRSAEncryptVector::NewLC(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CRSAEncryptVector* self = new(ELeave) CRSAEncryptVector(aFs, aConsole, aOut);
- CleanupStack::PushL(self);
- self->ConstructL(aTestActionSpec);
- return self;
- }
-
-CRSAEncryptVector::~CRSAEncryptVector()
- {
- delete iPubKey;
- delete iPlaintext;
- delete iCiphertext;
- }
-
-CRSAEncryptVector::CRSAEncryptVector(RFs& /*aFs*/,
- CConsoleBase& aConsole,
- Output& aOut)
-: CVectorTest(aConsole, aOut)
- {
- }
-
-void CRSAEncryptVector::ConstructL(const TTestActionSpec& aTestActionSpec)
- {
- CVectorTest::ConstructL(aTestActionSpec);
-
- iPubKey = VectorUtils::ReadRSAPublicKeyL(aTestActionSpec.iActionBody);
-
- TPtrC8 ptextIn = Input::ParseElement(aTestActionSpec.iActionBody, KPlaintextStart, KPlaintextEnd);
- iPlaintext = VectorUtils::ParseBinaryL(ptextIn);
-
- TPtrC8 ctextIn = Input::ParseElement(aTestActionSpec.iActionBody, KCiphertextStart, KCiphertextEnd);
- iCiphertext = VectorUtils::ParseBinaryL(ctextIn);
- }
-
-void CRSAEncryptVector::DoPerformanceTestActionL()
-{
- __UHEAP_MARK;
-
- CRSAPKCS1v15Encryptor* encryptor = CRSAPKCS1v15Encryptor::NewL(*iPubKey);
- CleanupStack::PushL(encryptor);
-
- TTimeIntervalMicroSeconds encryptTime(0);
- TTime start, end;
- TTimeIntervalSeconds diff(0);
- const TTimeIntervalSeconds KIterationTime(iPerfTestIterations);
-
- TInt noEncryptions = 0;
- HBufC8 *eResult = HBufC8::NewLC(encryptor->MaxOutputLength());
- TPtr8 ePtr = eResult->Des();
- TPtr8* eResultPtr = &ePtr;
-
-// Time encryption
- CRandomIncrementing* brokenRandom = new(ELeave)CRandomIncrementing(1);
- SetThreadRandomLC(brokenRandom);
- start.UniversalTime();
- while (diff < KIterationTime)
- {
- eResultPtr->Zero();
- encryptor->EncryptL(*iPlaintext, *eResultPtr);
- noEncryptions++;
- end.UniversalTime();
- end.SecondsFrom(start, diff);
- }
- end.UniversalTime();
- encryptTime = end.MicroSecondsFrom(start);
- TReal encrypttime = I64REAL(encryptTime.Int64());
- CleanupStack::PopAndDestroy(1); //SetThreadRandomLC
-
- iResult = ETrue;
- if (*iCiphertext!=*eResult)
- {
- iResult = EFalse;
- }
-
- CleanupStack::PopAndDestroy(2); // encryptor, eResult
-
- __UHEAP_MARKEND;
-
- if (iResult)
- {
- TReal rate = I64REAL(encryptTime.Int64()) / noEncryptions;
- TBuf<256> buf;
- _LIT(KEncryptTime, "\tEncrypt Time: %f us/encryption (%i encryptions in %f us)\r\n");
- buf.Format(KEncryptTime, rate, noEncryptions, encrypttime);
- iOut.writeString(buf);
- }
- else
- {
- _LIT(KNoTimingInfo, "\tTest Failed! No benchmark data\n");
- iOut.writeString(KNoTimingInfo);
- }
-}
-
-void CRSAEncryptVector::DoPerformActionL()
- {
- __UHEAP_MARK;
-
- CRSAPKCS1v15Encryptor* encryptor = CRSAPKCS1v15Encryptor::NewL(*iPubKey);
- CleanupStack::PushL(encryptor);
- HBufC8* encryptBuf = HBufC8::NewLC(encryptor->MaxOutputLength());
- TPtr8 encryptPtr = encryptBuf->Des();
- CRandomIncrementing* brokenRandom = new(ELeave)CRandomIncrementing(1);
- SetThreadRandomLC(brokenRandom);
- encryptor->EncryptL(*iPlaintext, encryptPtr);
- CleanupStack::PopAndDestroy(1); //threadrandom;
- iResult = (*iCiphertext == *encryptBuf);
-
- CleanupStack::PopAndDestroy(encryptBuf);
- CleanupStack::PopAndDestroy(encryptor);
-
- __UHEAP_MARKEND;
- }
-
-////////////////////////////////////////////////////////////////////////////////
-// CRSADecryptVector
-////////////////////////////////////////////////////////////////////////////////
-
-CTestAction* CRSADecryptVector::NewL(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CTestAction* self = CRSADecryptVector::NewLC(aFs, aConsole,
- aOut, aTestActionSpec);
- CleanupStack::Pop();
- return self;
- }
-
-CTestAction* CRSADecryptVector::NewLC(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CRSADecryptVector* self = new(ELeave) CRSADecryptVector(aFs, aConsole, aOut);
- CleanupStack::PushL(self);
- self->ConstructL(aTestActionSpec);
- return self;
- }
-
-CRSADecryptVector::~CRSADecryptVector()
- {
- delete iPrivKey;
- delete iPlaintext;
- delete iCiphertext;
- }
-
-CRSADecryptVector::CRSADecryptVector(RFs& /*aFs*/,
- CConsoleBase& aConsole,
- Output& aOut)
-: CVectorTest(aConsole, aOut)
- {
- }
-
-void CRSADecryptVector::ConstructL(const TTestActionSpec& aTestActionSpec)
- {
- CVectorTest::ConstructL(aTestActionSpec);
-
- iPrivKey = VectorUtils::ReadRSAPrivateKeyL(aTestActionSpec.iActionBody);
-
- TPtrC8 ctextIn = Input::ParseElement(aTestActionSpec.iActionBody, KCiphertextStart, KCiphertextEnd);
- iCiphertext = VectorUtils::ParseBinaryL(ctextIn);
-
- TPtrC8 ptextIn = Input::ParseElement(aTestActionSpec.iActionBody, KPlaintextStart, KPlaintextEnd);
- iPlaintext = VectorUtils::ParseBinaryL(ptextIn);
- }
-
-void CRSADecryptVector::DoPerformanceTestActionL()
-{
- __UHEAP_MARK;
-
- CRSAPKCS1v15Decryptor* decryptor = CRSAPKCS1v15Decryptor::NewL(*iPrivKey);
- CleanupStack::PushL(decryptor);
-
- TTimeIntervalMicroSeconds decryptTime(0);
- TTime start, end;
- TTimeIntervalSeconds diff(0);
- const TTimeIntervalSeconds KIterationTime(iPerfTestIterations);
-
- HBufC8 *dResult = HBufC8::NewLC(decryptor->MaxOutputLength());
- TPtr8 dPtr = dResult->Des();
- TPtr8* dResultPtr = &dPtr;
- TInt noDecryptions = 0;
-
-// Time decryption
- start.UniversalTime();
- while (diff < KIterationTime)
- {
- decryptor->DecryptL(*iCiphertext, *dResultPtr);
- noDecryptions++;
- end.UniversalTime();
- end.SecondsFrom(start, diff);
- }
- end.UniversalTime();
- decryptTime = end.MicroSecondsFrom(start);
- TReal decrypttime = I64REAL(decryptTime.Int64());
- iResult = ETrue;
- if (*iPlaintext!=*dResult)
- {
- iResult = EFalse;
- }
-
- CleanupStack::PopAndDestroy(2); // decryptor, dResult
-
- __UHEAP_MARKEND;
-
- if (iResult)
- {
- TReal rate = I64REAL(decryptTime.Int64()) / noDecryptions;
- TBuf<256> buf;
- _LIT(KDecryptTime, "\tDecrypt Time: %f us/decryption (%i decryptions in %f us)\r\n");
- buf.Format(KDecryptTime, rate, noDecryptions, decrypttime);
- iOut.writeString(buf);
- }
- else
- {
- _LIT(KNoTimingInfo, "\tTest Failed! No benchmark data\n");
- iOut.writeString(KNoTimingInfo);
- }
-}
-
-void CRSADecryptVector::DoPerformActionL()
- {
- __UHEAP_MARK;
-
- CRSAPKCS1v15Decryptor* decryptor = CRSAPKCS1v15Decryptor::NewL(*iPrivKey);
- CleanupStack::PushL(decryptor);
-
- HBufC8* decryptBuf = HBufC8::NewLC(decryptor->MaxOutputLength());
- TPtr8 decryptPtr = decryptBuf->Des();
- TRAPD(err, decryptor->DecryptL(*iCiphertext, decryptPtr));
- iResult = (err == KErrNone) && (*iPlaintext == *decryptBuf);
-
- CleanupStack::PopAndDestroy(decryptBuf);
- CleanupStack::PopAndDestroy(decryptor);
-
- __UHEAP_MARKEND;
- }
-
-
-////////////////////////////////////////////////////////////////////////////////
-// CRSADecryptVectorCRT
-////////////////////////////////////////////////////////////////////////////////
-CTestAction* CRSADecryptVectorCRT::NewL(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CTestAction* self = CRSADecryptVectorCRT::NewLC(aFs, aConsole,
- aOut, aTestActionSpec);
- CleanupStack::Pop();
- return self;
- }
-
-CTestAction* CRSADecryptVectorCRT::NewLC(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CRSADecryptVectorCRT* self = new(ELeave) CRSADecryptVectorCRT(aFs, aConsole, aOut);
- CleanupStack::PushL(self);
- self->ConstructL(aTestActionSpec);
- return self;
- }
-
-CRSADecryptVectorCRT::~CRSADecryptVectorCRT()
- {
- delete iPrivKey;
- delete iPlaintext;
- delete iCiphertext;
- }
-
-CRSADecryptVectorCRT::CRSADecryptVectorCRT(RFs& /*aFs*/,
- CConsoleBase& aConsole,
- Output& aOut)
-: CVectorTest(aConsole, aOut)
- {
- }
-
-void CRSADecryptVectorCRT::ConstructL(const TTestActionSpec& aTestActionSpec)
- {
- CVectorTest::ConstructL(aTestActionSpec);
-
- iPrivKey = VectorUtils::ReadRSAPrivateKeyCRTL(aTestActionSpec.iActionBody);
-
- TPtrC8 ctextIn = Input::ParseElement(aTestActionSpec.iActionBody, KCiphertextStart, KCiphertextEnd);
- iCiphertext = VectorUtils::ParseBinaryL(ctextIn);
-
- TPtrC8 ptextIn = Input::ParseElement(aTestActionSpec.iActionBody, KPlaintextStart, KPlaintextEnd);
- iPlaintext = VectorUtils::ParseBinaryL(ptextIn);
- }
-
-void CRSADecryptVectorCRT::DoPerformanceTestActionL()
-{
- __UHEAP_MARK;
-
- CRSAPKCS1v15Decryptor* decryptor = CRSAPKCS1v15Decryptor::NewL(*iPrivKey);
- CleanupStack::PushL(decryptor);
-
- TTimeIntervalMicroSeconds decryptTime(0);
- TTime start, end;
- TTimeIntervalSeconds diff(0);
- const TTimeIntervalSeconds KIterationTime(iPerfTestIterations);
-
- TInt noDecryptions = 0;
- HBufC8 *dResult = HBufC8::NewLC(decryptor->MaxOutputLength());
- TPtr8 dPtr = dResult->Des();
- TPtr8* dResultPtr = &dPtr;
-
-// Time decryption
- start.UniversalTime();
- while (diff < KIterationTime)
- {
- decryptor->DecryptL(*iCiphertext, *dResultPtr);
- noDecryptions++;
- end.UniversalTime();
- end.SecondsFrom(start, diff);
- }
- end.UniversalTime();
- decryptTime = end.MicroSecondsFrom(start);
- TReal decrypttime = I64REAL(decryptTime.Int64());
-
- iResult = ETrue;
- if (*iPlaintext!=*dResult)
- {
- iResult = EFalse;
- }
-
-
- CleanupStack::PopAndDestroy(2); // decryptor, dResult
-
- __UHEAP_MARKEND;
-
- if (iResult)
- {
- TReal rate = I64REAL(decryptTime.Int64()) / noDecryptions;
- TBuf<256> buf;
- _LIT(KDecryptTime, "\tDecrypt Time: %f us/decryption (%i decryptions in %f us)\r\n");
- buf.Format(KDecryptTime, rate, noDecryptions, decrypttime);
- iOut.writeString(buf);
- }
- else
- {
- _LIT(KNoTimingInfo, "\tTest Failed! No benchmark data\n");
- iOut.writeString(KNoTimingInfo);
- }
-}
-
-void CRSADecryptVectorCRT::DoPerformActionL()
- {
- __UHEAP_MARK;
-
- CRSAPKCS1v15Decryptor* decryptor = CRSAPKCS1v15Decryptor::NewL(*iPrivKey);
- CleanupStack::PushL(decryptor);
-
- HBufC8* decryptBuf = HBufC8::NewLC(decryptor->MaxOutputLength());
- TPtr8 decryptPtr = decryptBuf->Des();
- TRAPD(err, decryptor->DecryptL(*iCiphertext, decryptPtr));
- iResult = (err == KErrNone) && (*iPlaintext == *decryptBuf);
-
- CleanupStack::PopAndDestroy(decryptBuf);
- CleanupStack::PopAndDestroy(decryptor);
-
- __UHEAP_MARKEND;
- }
-
-////////////////////////////////////////////////////////////////////////////////
-// CRSASignVector
-////////////////////////////////////////////////////////////////////////////////
-
-CTestAction* CRSASignVector::NewL(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CTestAction* self = CRSASignVector::NewLC(aFs, aConsole, aOut, aTestActionSpec);
- CleanupStack::Pop();
- return self;
- }
-
-CTestAction* CRSASignVector::NewLC(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CRSASignVector* self = new(ELeave) CRSASignVector(aFs, aConsole, aOut);
- CleanupStack::PushL(self);
- self->ConstructL(aTestActionSpec);
- return self;
- }
-
-CRSASignVector::~CRSASignVector()
- {
- delete iPrivKey;
- delete iDigestInfo;
- delete iSignature;
- }
-
-CRSASignVector::CRSASignVector(RFs& /*aFs*/,
- CConsoleBase& aConsole,
- Output& aOut)
- : CVectorTest(aConsole, aOut)
- {
- }
-
-void CRSASignVector::ConstructL(const TTestActionSpec& aTestActionSpec)
- {
- CVectorTest::ConstructL(aTestActionSpec);
-
- iPrivKey = VectorUtils::ReadRSAPrivateKeyL(aTestActionSpec.iActionBody);
-
- TPtrC8 digestInfoIn = Input::ParseElement(aTestActionSpec.iActionBody, KDigestInfoStart, KDigestInfoEnd);
- iDigestInfo = VectorUtils::ParseBinaryL(digestInfoIn);
-
- TPtrC8 signatureIn = Input::ParseElement(aTestActionSpec.iActionBody, KSignatureStart, KSignatureEnd);
- RInteger integer = VectorUtils::ParseIntegerL(signatureIn);
- CleanupStack::PushL(integer);
- iSignature = CRSASignature::NewL(integer);
- CleanupStack::Pop(&integer);
- }
-
-void CRSASignVector::DoPerformanceTestActionL()
-{
- __UHEAP_MARK;
-
- CRSAPKCS1v15Signer* signer = CRSAPKCS1v15Signer::NewL(*iPrivKey);
- CleanupStack::PushL(signer);
-
- TPtrC8 digestPtr = iDigestInfo->Des();
-
- TTimeIntervalMicroSeconds signTime(0);
- TTime start, end;
- TTimeIntervalSeconds diff(0);
- const TTimeIntervalSeconds KIterationTime(iPerfTestIterations);
-
- TInt noSignings = 0;
-
- const CRSASignature *testSig = 0;
-
-// Time signing
- start.UniversalTime();
- while (diff < KIterationTime)
- {
- testSig = signer->SignL(digestPtr);
- delete testSig;
- noSignings++;
- end.UniversalTime();
- end.SecondsFrom(start, diff);
- }
- end.UniversalTime();
- signTime = end.MicroSecondsFrom(start);
- TReal signtime = I64REAL(signTime.Int64());
-
- iResult = ETrue;
- testSig = signer->SignL(digestPtr);
- if (!(*testSig==*iSignature))
- {
- iResult = EFalse;
- }
- delete testSig;
-
- CleanupStack::PopAndDestroy(); // signer
-
- __UHEAP_MARKEND;
-
- if (iResult)
- {
- TReal rate = I64REAL(signTime.Int64()) / noSignings;
- TBuf<256> buf;
- _LIT(KSignTime, "\tSign Time: %f us/signing (%i signings in %f us)\r\n");
- buf.Format(KSignTime, rate, noSignings, signtime);
- iOut.writeString(buf);
- }
- else
- {
- _LIT(KNoTimingInfo, "\tTest Failed! No benchmark data\n");
- iOut.writeString(KNoTimingInfo);
- }
-}
-
-void CRSASignVector::DoPerformActionL()
- {
- __UHEAP_MARK;
-
- CRSAPKCS1v15Signer* digestSigner = CRSAPKCS1v15Signer::NewL(*iPrivKey);
- CleanupStack::PushL(digestSigner);
-
- TPtrC8 digestPtr2 = iDigestInfo->Des();
- const CRSASignature* testSig2 = digestSigner->SignL(digestPtr2);
- CleanupStack::PushL(const_cast<CRSASignature*>(testSig2));
- iResult = (*testSig2 == *iSignature);
-
- CleanupStack::PopAndDestroy(const_cast<CRSASignature*>(testSig2));
- CleanupStack::PopAndDestroy(digestSigner);
-
- __UHEAP_MARKEND;
- }
-
-////////////////////////////////////////////////////////////////////////////////
-// CRSASignVectorCRT
-////////////////////////////////////////////////////////////////////////////////
-
-CTestAction* CRSASignVectorCRT::NewL(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CTestAction* self = CRSASignVectorCRT::NewLC(aFs, aConsole, aOut, aTestActionSpec);
- CleanupStack::Pop();
- return self;
- }
-
-CTestAction* CRSASignVectorCRT::NewLC(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CRSASignVectorCRT* self = new(ELeave) CRSASignVectorCRT(aFs, aConsole, aOut);
- CleanupStack::PushL(self);
- self->ConstructL(aTestActionSpec);
- return self;
- }
-
-CRSASignVectorCRT::~CRSASignVectorCRT()
- {
- delete iPrivKey;
- delete iDigestInfo;
- delete iSignature;
- }
-
-CRSASignVectorCRT::CRSASignVectorCRT(RFs& /*aFs*/,
- CConsoleBase& aConsole,
- Output& aOut)
- : CVectorTest(aConsole, aOut)
- {
- }
-
-void CRSASignVectorCRT::ConstructL(const TTestActionSpec& aTestActionSpec)
- {
- CVectorTest::ConstructL(aTestActionSpec);
-
- iPrivKey = VectorUtils::ReadRSAPrivateKeyCRTL(aTestActionSpec.iActionBody);
-
- TPtrC8 digestInfoIn = Input::ParseElement(aTestActionSpec.iActionBody, KDigestInfoStart, KDigestInfoEnd);
- iDigestInfo = VectorUtils::ParseBinaryL(digestInfoIn);
-
- TPtrC8 signatureIn = Input::ParseElement(aTestActionSpec.iActionBody, KSignatureStart, KSignatureEnd);
- RInteger integer = VectorUtils::ParseIntegerL(signatureIn);
- CleanupStack::PushL(integer);
- iSignature = CRSASignature::NewL(integer);
- CleanupStack::Pop(&integer);
- }
-
-void CRSASignVectorCRT::DoPerformanceTestActionL()
-{
- __UHEAP_MARK;
-
- CRSAPKCS1v15Signer* signer = CRSAPKCS1v15Signer::NewL(*iPrivKey);
- CleanupStack::PushL(signer);
-
- TPtrC8 digestPtr = iDigestInfo->Des();
-
- TTimeIntervalMicroSeconds signTime(0);
- TTime start, end;
- TTimeIntervalSeconds diff(0);
- const TTimeIntervalSeconds KIterationTime(iPerfTestIterations);
- TInt noSignings = 0;
-
- const CRSASignature *testSig = NULL;
-
-// Time signing
- start.UniversalTime();
- while (diff < KIterationTime)
- {
- testSig = signer->SignL(digestPtr);
- delete testSig;
- noSignings++;
- end.UniversalTime();
- end.SecondsFrom(start, diff);
- }
- end.UniversalTime();
- signTime = end.MicroSecondsFrom(start);
- TReal signtime = I64REAL(signTime.Int64());
-
- testSig = signer->SignL(digestPtr);
- iResult = ETrue;
- if (!(*testSig==*iSignature))
- {
- iResult = EFalse;
- }
- delete testSig;
-
- CleanupStack::PopAndDestroy(); // signer
-
- __UHEAP_MARKEND;
-
- if (iResult)
- {
- TReal rate = I64REAL(signTime.Int64()) / noSignings;
- TBuf<256> buf;
- _LIT(KSignTime, "\tSign Time: %f us/signing (%i signings in %f us)\r\n");
- buf.Format(KSignTime, rate, noSignings, signtime);
- iOut.writeString(buf);
- }
- else
- {
- _LIT(KNoTimingInfo, "\tTest Failed! No benchmark data\n");
- iOut.writeString(KNoTimingInfo);
- }
-}
-
-void CRSASignVectorCRT::DoPerformActionL()
- {
- __UHEAP_MARK;
-
- CRSAPKCS1v15Signer* signer = CRSAPKCS1v15Signer::NewL(*iPrivKey);
- CleanupStack::PushL(signer);
-
- TPtrC8 digestPtr = iDigestInfo->Des();
- const CRSASignature* testSig = signer->SignL(digestPtr);
- CleanupStack::PushL(const_cast<CRSASignature*>(testSig));
-
-#ifdef _DEBUG
- HBufC8* theResultSig = testSig->S().BufferLC();
- HBufC8* theExpectedSig = iSignature->S().BufferLC();
- iResult = (theResultSig->Compare(*theExpectedSig)) ==0 ? ETrue : EFalse;
- CleanupStack::PopAndDestroy(2);
-#endif
-
- iResult = (*testSig == *iSignature);
-
- CleanupStack::PopAndDestroy(const_cast<CRSASignature*>(testSig));
- CleanupStack::PopAndDestroy(signer);
-
- __UHEAP_MARKEND;
- }
-
-
-////////////////////////////////////////////////////////////////////////////////
-// CRSAVerifyVector
-////////////////////////////////////////////////////////////////////////////////
-
-CTestAction* CRSAVerifyVector::NewL(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CTestAction* self = CRSAVerifyVector::NewLC(aFs, aConsole, aOut, aTestActionSpec);
- CleanupStack::Pop();
- return self;
- }
-
-CTestAction* CRSAVerifyVector::NewLC(RFs& aFs,
- CConsoleBase& aConsole,
- Output& aOut,
- const TTestActionSpec& aTestActionSpec)
- {
- CRSAVerifyVector* self = new(ELeave) CRSAVerifyVector(aFs, aConsole, aOut);
- CleanupStack::PushL(self);
- self->ConstructL(aTestActionSpec);
- return self;
- }
-
-CRSAVerifyVector::~CRSAVerifyVector()
- {
- delete iPubKey;
- delete iDigestInfo;
- delete iSignature;
- }
-
-CRSAVerifyVector::CRSAVerifyVector(RFs& /*aFs*/,
- CConsoleBase& aConsole,
- Output& aOut)
- : CVectorTest(aConsole, aOut)
- {
- }
-
-void CRSAVerifyVector::ConstructL(const TTestActionSpec& aTestActionSpec)
- {
- CVectorTest::ConstructL(aTestActionSpec);
-
- iPubKey = VectorUtils::ReadRSAPublicKeyL(aTestActionSpec.iActionBody);
-
- TPtrC8 digestInfoIn = Input::ParseElement(aTestActionSpec.iActionBody, KDigestInfoStart, KDigestInfoEnd);
- iDigestInfo = VectorUtils::ParseBinaryL(digestInfoIn);
-
- TPtrC8 signatureIn = Input::ParseElement(aTestActionSpec.iActionBody, KSignatureStart, KSignatureEnd);
- RInteger integer = VectorUtils::ParseIntegerL(signatureIn);
- CleanupStack::PushL(integer);
- iSignature = CRSASignature::NewL(integer);
- CleanupStack::Pop(&integer);
- }
-
-void CRSAVerifyVector::DoPerformanceTestActionL()
-{
- __UHEAP_MARK;
-
-
- TTimeIntervalMicroSeconds verifyTime(0);
- TTime start, end;
- TTimeIntervalSeconds diff(0);
- const TTimeIntervalSeconds KIterationTime(iPerfTestIterations);
-
- TInt noVerifies = 0;
-
- CRSAPKCS1v15Verifier *verifier = CRSAPKCS1v15Verifier::NewLC(*iPubKey);
-
-// Time verification
- start.UniversalTime();
- while (diff < KIterationTime)
- {
- iResult = verifier->VerifyL(*iDigestInfo, *iSignature);
- if (!iResult)
- {
- break;
- }
- noVerifies++;
- end.UniversalTime();
- end.SecondsFrom(start, diff);
- }
- end.UniversalTime();
- verifyTime = end.MicroSecondsFrom(start);
- TReal verifytime = I64REAL(verifyTime.Int64());
-
- CleanupStack::PopAndDestroy(verifier);
-
- __UHEAP_MARKEND;
-
- if (iResult)
- {
- TReal rate = I64REAL(verifyTime.Int64()) / noVerifies;
- TBuf<256> buf;
- _LIT(KVerifyTime, "\tVerify Time: %f us/verify (%i verifies in %f us)\r\n");
- buf.Format(KVerifyTime, rate, noVerifies, verifytime);
- iOut.writeString(buf);
- }
- else
- {
- _LIT(KNoTimingInfo, "\tTest Failed! No benchmark data\n");
- iOut.writeString(KNoTimingInfo);
- }
-}
-
-void CRSAVerifyVector::DoPerformActionL()
- {
- __UHEAP_MARK;
-
- CRSAPKCS1v15Verifier* verifier = CRSAPKCS1v15Verifier::NewL(*iPubKey);
- CleanupStack::PushL(verifier);
- iResult = verifier->VerifyL(*iDigestInfo, *iSignature);
-
- CleanupStack::PopAndDestroy(verifier);
-
- __UHEAP_MARKEND;
- }