sl@0: /* sl@0: * Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * tdsasignfb.cpp sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include "t_input.h" sl@0: #include "t_output.h" sl@0: #include sl@0: #include "tvectorutils.h" sl@0: #include "trsaparams.h" sl@0: sl@0: _LIT8(KModStart, ""); sl@0: _LIT8(KModEnd, ""); sl@0: _LIT8(KPubExpStart, ""); sl@0: _LIT8(KPubExpEnd, ""); sl@0: _LIT8(KPrivExpStart, ""); sl@0: _LIT8(KPrivExpEnd, ""); sl@0: _LIT8(KPStart, "

"); sl@0: _LIT8(KPEnd, "

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