diff -r 8873e6835f7b -r dd83586b62d6 crypto/weakcrypto/test/tasymmetric/trsaparams.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crypto/weakcrypto/test/tasymmetric/trsaparams.cpp Fri Jun 11 15:32:35 2010 +0300 @@ -0,0 +1,392 @@ +/* +* 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: +* tdsasignfb.cpp +* +*/ + + +#include "t_input.h" +#include "t_output.h" +#include +#include "tvectorutils.h" +#include "trsaparams.h" + +_LIT8(KModStart, ""); +_LIT8(KModEnd, ""); +_LIT8(KPubExpStart, ""); +_LIT8(KPubExpEnd, ""); +_LIT8(KPrivExpStart, ""); +_LIT8(KPrivExpEnd, ""); +_LIT8(KPStart, "

"); +_LIT8(KPEnd, "

"); +_LIT8(KQStart, ""); +_LIT8(KQEnd, ""); +_LIT8(KdPStart, ""); +_LIT8(KdPEnd, ""); +_LIT8(KdQStart, ""); +_LIT8(KdQEnd, ""); +_LIT8(KqInvStart, ""); +_LIT8(KqInvEnd, ""); +_LIT8(KReturnCodeStart, ""); +_LIT8(KReturnCodeEnd, ""); +_LIT8(KErrArgumentString, "KErrArgument"); + +CTestAction* CRSATestPublicKey::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CTestAction* self = CRSATestPublicKey::NewLC(aFs, aConsole, + aOut, aTestActionSpec); + CleanupStack::Pop(); + return self; + } + +CTestAction* CRSATestPublicKey::NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CRSATestPublicKey* self = new(ELeave) CRSATestPublicKey(aFs, aConsole, aOut); + CleanupStack::PushL(self); + self->ConstructL(aTestActionSpec); + return self; + } + +CRSATestPublicKey::~CRSATestPublicKey() + { + delete iBody; + } + +CRSATestPublicKey::CRSATestPublicKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut) + : CTestAction(aConsole, aOut), iFs(aFs) + { + } + +void CRSATestPublicKey::ConstructL(const TTestActionSpec& aTestActionSpec) + { + CTestAction::ConstructL(aTestActionSpec); + iBody = HBufC8::NewL(aTestActionSpec.iActionBody.Length()); + iBody->Des().Copy(aTestActionSpec.iActionBody); + + iExpectedReturnValue = KErrNone; + TPtrC8 returnValue = Input::ParseElement(aTestActionSpec.iActionResult, KReturnCodeStart, KReturnCodeEnd); + if(returnValue.Compare(KErrArgumentString) == 0) + { + iExpectedReturnValue = KErrArgument; + } + + } + +void CRSATestPublicKey::DoPerformPrerequisite(TRequestStatus& aStatus) + { + TRequestStatus* status = &aStatus; + User::RequestComplete(status, KErrNone); + iActionState = CTestAction::EAction; + } + +void CRSATestPublicKey::DoPerformPostrequisite(TRequestStatus& aStatus) + { + TRequestStatus* status = &aStatus; + + iFinished = ETrue; + User::RequestComplete(status, KErrNone); + } + +void CRSATestPublicKey::DoReportAction(void) + { + } + +void CRSATestPublicKey::DoCheckResult(TInt) + { + if (iResult) + iConsole.Printf(_L(".")); + else + iConsole.Printf(_L("X")); + } + +void CRSATestPublicKey::PerformAction(TRequestStatus& aStatus) + { + __UHEAP_MARK; + TRequestStatus* status = &aStatus; + iResult = EFalse; + + TPtrC8 modIn = Input::ParseElement(*iBody, KModStart, KModEnd); + RInteger mod = VectorUtils::ParseIntegerL(modIn); + CleanupStack::PushL(mod); + + TPtrC8 expIn = Input::ParseElement(*iBody, KPubExpStart, KPubExpEnd); + RInteger exp = VectorUtils::ParseIntegerL(expIn); + CleanupStack::PushL(exp); + + + CRSAPublicKey* key = NULL; + TRAPD(err, key = CRSAPublicKey::NewL(mod, exp)); + if(err == iExpectedReturnValue) + { + iResult=ETrue; + } + else + { + iOut.writeString(_L("CRSAPublicKey construction did not return expected result\n")); + } + if(err != KErrNone) + { + CleanupStack::PopAndDestroy(2); + } + else + { + CleanupStack::PushL(key); + CleanupStack::PopAndDestroy(3); + } + + User::RequestComplete(status, KErrNone); + iActionState = CTestAction::EPostrequisite; + __UHEAP_MARKEND; + } + + +CTestAction* CRSATestPrivateKey::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CTestAction* self = CRSATestPrivateKey::NewLC(aFs, aConsole, + aOut, aTestActionSpec); + CleanupStack::Pop(); + return self; + } + +CTestAction* CRSATestPrivateKey::NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CRSATestPrivateKey* self = new(ELeave) CRSATestPrivateKey(aFs, aConsole, aOut); + CleanupStack::PushL(self); + self->ConstructL(aTestActionSpec); + return self; + } + +CRSATestPrivateKey::~CRSATestPrivateKey() + { + delete iBody; + } + +CRSATestPrivateKey::CRSATestPrivateKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut) + : CTestAction(aConsole, aOut), iFs(aFs) + { + } + +void CRSATestPrivateKey::ConstructL(const TTestActionSpec& aTestActionSpec) + { + CTestAction::ConstructL(aTestActionSpec); + iBody = HBufC8::NewL(aTestActionSpec.iActionBody.Length()); + iBody->Des().Copy(aTestActionSpec.iActionBody); + + iExpectedReturnValue = KErrNone; + TPtrC8 returnValue = Input::ParseElement(aTestActionSpec.iActionResult, KReturnCodeStart, KReturnCodeEnd); + if(returnValue.Compare(KErrArgumentString) == 0) + { + iExpectedReturnValue = KErrArgument; + } + + } + +void CRSATestPrivateKey::DoPerformPrerequisite(TRequestStatus& aStatus) + { + TRequestStatus* status = &aStatus; + User::RequestComplete(status, KErrNone); + iActionState = CTestAction::EAction; + } + +void CRSATestPrivateKey::DoPerformPostrequisite(TRequestStatus& aStatus) + { + TRequestStatus* status = &aStatus; + + iFinished = ETrue; + User::RequestComplete(status, KErrNone); + } + +void CRSATestPrivateKey::DoReportAction(void) + { + } + +void CRSATestPrivateKey::DoCheckResult(TInt) + { + if (iResult) + iConsole.Printf(_L(".")); + else + iConsole.Printf(_L("X")); + } + +void CRSATestPrivateKey::PerformAction(TRequestStatus& aStatus) + { + __UHEAP_MARK; + TRequestStatus* status = &aStatus; + iResult = EFalse; + + TPtrC8 modIn = Input::ParseElement(*iBody, KModStart, KModEnd); + RInteger mod = VectorUtils::ParseIntegerL(modIn); + CleanupStack::PushL(mod); + + TPtrC8 expIn = Input::ParseElement(*iBody, KPrivExpStart, KPrivExpEnd); + RInteger exp = VectorUtils::ParseIntegerL(expIn); + CleanupStack::PushL(exp); + + + CRSAPrivateKeyStandard* key = NULL; + TRAPD(err, key = CRSAPrivateKeyStandard::NewL(mod, exp)); + if(err == iExpectedReturnValue) + { + iResult=ETrue; + } + else + { + iOut.writeString(_L("CRSAPrivateKey construction did not return expected result\n")); + } + if(err != KErrNone) + { + CleanupStack::PopAndDestroy(2); + } + else + { + CleanupStack::PushL(key); + CleanupStack::PopAndDestroy(3); + } + + User::RequestComplete(status, KErrNone); + iActionState = CTestAction::EPostrequisite; + __UHEAP_MARKEND; + } + +CTestAction* CRSATestPrivateKeyCRT::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CTestAction* self = CRSATestPrivateKeyCRT::NewLC(aFs, aConsole, + aOut, aTestActionSpec); + CleanupStack::Pop(); + return self; + } + +CTestAction* CRSATestPrivateKeyCRT::NewLC(RFs& aFs, CConsoleBase& aConsole, Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CRSATestPrivateKeyCRT* self = new(ELeave) CRSATestPrivateKeyCRT(aFs, aConsole, aOut); + CleanupStack::PushL(self); + self->ConstructL(aTestActionSpec); + return self; + } + +CRSATestPrivateKeyCRT::~CRSATestPrivateKeyCRT() + { + delete iBody; + } + +CRSATestPrivateKeyCRT::CRSATestPrivateKeyCRT(RFs& aFs, CConsoleBase& aConsole, Output& aOut) + : CTestAction(aConsole, aOut), iFs(aFs) + { + } + +void CRSATestPrivateKeyCRT::ConstructL(const TTestActionSpec& aTestActionSpec) + { + CTestAction::ConstructL(aTestActionSpec); + iBody = HBufC8::NewL(aTestActionSpec.iActionBody.Length()); + iBody->Des().Copy(aTestActionSpec.iActionBody); + + iExpectedReturnValue = KErrNone; + TPtrC8 returnValue = Input::ParseElement(aTestActionSpec.iActionResult, KReturnCodeStart, KReturnCodeEnd); + if(returnValue.Compare(KErrArgumentString) == 0) + { + iExpectedReturnValue = KErrArgument; + } + + } + +void CRSATestPrivateKeyCRT::DoPerformPrerequisite(TRequestStatus& aStatus) + { + TRequestStatus* status = &aStatus; + User::RequestComplete(status, KErrNone); + iActionState = CTestAction::EAction; + } + +void CRSATestPrivateKeyCRT::DoPerformPostrequisite(TRequestStatus& aStatus) + { + TRequestStatus* status = &aStatus; + + iFinished = ETrue; + User::RequestComplete(status, KErrNone); + } + +void CRSATestPrivateKeyCRT::DoReportAction(void) + { + } + +void CRSATestPrivateKeyCRT::DoCheckResult(TInt) + { + if (iResult) + iConsole.Printf(_L(".")); + else + iConsole.Printf(_L("X")); + } + +void CRSATestPrivateKeyCRT::PerformAction(TRequestStatus& aStatus) + { + __UHEAP_MARK; + TRequestStatus* status = &aStatus; + iResult = EFalse; + + TPtrC8 modIn = Input::ParseElement(*iBody, KModStart, KModEnd); + RInteger mod = VectorUtils::ParseIntegerL(modIn); + CleanupStack::PushL(mod); + + TPtrC8 PIn = Input::ParseElement(*iBody, KPStart, KPEnd); + RInteger P = VectorUtils::ParseIntegerL(PIn); + CleanupStack::PushL(P); + + TPtrC8 QIn = Input::ParseElement(*iBody, KQStart, KQEnd); + RInteger Q = VectorUtils::ParseIntegerL(QIn); + CleanupStack::PushL(Q); + + TPtrC8 dPIn = Input::ParseElement(*iBody, KdPStart, KdPEnd); + RInteger dP = VectorUtils::ParseIntegerL(dPIn); + CleanupStack::PushL(dP); + + TPtrC8 dQIn = Input::ParseElement(*iBody, KdQStart, KdQEnd); + RInteger dQ = VectorUtils::ParseIntegerL(dQIn); + CleanupStack::PushL(dQ); + + TPtrC8 QInvIn = Input::ParseElement(*iBody, KqInvStart, KqInvEnd); + RInteger QInv = VectorUtils::ParseIntegerL(QInvIn); + CleanupStack::PushL(QInv); + + + CRSAPrivateKeyCRT* key = NULL; + TRAPD(err, key = CRSAPrivateKeyCRT::NewL(mod, P, Q, dP, dQ, QInv)); + if(err == iExpectedReturnValue) + { + iResult=ETrue; + } + else + { + iOut.writeString(_L("CRSAPrivateKeyCRT construction did not return expected result\n")); + } + if(err != KErrNone) + { + CleanupStack::PopAndDestroy(6); + } + else + { + CleanupStack::PushL(key); + CleanupStack::PopAndDestroy(7); + } + + User::RequestComplete(status, KErrNone); + iActionState = CTestAction::EPostrequisite; + __UHEAP_MARKEND; + } +