diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/tasn1/tasn1normaltest.cpp --- a/cryptoservices/certificateandkeymgmt/tasn1/tasn1normaltest.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/tasn1/tasn1normaltest.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,216 +1,215 @@ -/* -* Copyright (c) 2005-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: -* ASN1TestAction.cpp: implementation of the CASN1NormalTest class. -* -*/ - - - - -/** - @file -*/ - -#include "tasn1normaltest.h" -#include "testnull.h" -#include "testboolean.h" -#include "testint.h" -#include "testbigint.h" -#include "testoctetstr.h" -#include "testoid.h" -#include "testinvalidoid.h" -#include "testgeneralizedtime.h" -#include "testsequence.h" -#include "testexplicittag.h" -#include "testimplicittag.h" -#include "testoutput.h" -#include "testbitstr.h" -#include "t_input.h" - -////////////////////////////////////////////////////////////////////// -// Construction/Destruction -////////////////////////////////////////////////////////////////////// -TInt CASN1NormalTest::iReportCount = 1; - -_LIT(KASN1TestStart, ""); -_LIT(KTypeStart, ""); -_LIT(KIntType, "int"); -_LIT(KBigIntType, "bigint"); -_LIT(KBooleanType, "boolean"); -_LIT(KNullType, "null"); -_LIT(KExplicitTagType, "explicittag"); -_LIT(KImplicitTagType, "implicittag"); -_LIT(KGeneralizedTimeType, "generalizedtime"); -_LIT(KOctetStringType, "octetstring"); -_LIT(KObjectIDType, "objectid"); -_LIT(KInvaidObjectIDType, "invalidobjectid"); -_LIT(KSequenceType, "sequence"); -_LIT(KOutputType, "output"); -_LIT(KBitStrType, "bitstring"); - -CASN1NormalTest::~CASN1NormalTest() - { - delete iTestType; - } - -CASN1NormalTest::CASN1NormalTest(RFs& /*aFs*/, - CConsoleBase& aConsole, - Output& aOut) -: CTestAction(aConsole, aOut), iTestType(0), iPercentReported(-1), iReportNumber(iReportCount++) - { - } - -CTestAction* CASN1NormalTest::NewL(RFs& aFs, - CConsoleBase& aConsole, - Output& aOut, - const TTestActionSpec& aTestActionSpec) - { - CTestAction* self = CASN1NormalTest::NewLC(aFs, aConsole, - aOut, aTestActionSpec); - CleanupStack::Pop(self); - return self; - } - -CTestAction* CASN1NormalTest::NewLC(RFs& aFs, - CConsoleBase& aConsole, - Output& aOut, - const TTestActionSpec& aTestActionSpec) - { - CASN1NormalTest* self = new(ELeave) CASN1NormalTest(aFs, aConsole, aOut); - CleanupStack::PushL(self); - self->ConstructL(aTestActionSpec); - return self; - } - - -void CASN1NormalTest::ConstructL(const TTestActionSpec& aTestActionSpec) - { - CTestAction::ConstructL(aTestActionSpec); - HBufC* body = HBufC::NewLC(aTestActionSpec.iActionBody.Length()); - - body->Des().Copy(aTestActionSpec.iActionBody); - TPtrC rootCert = Input::ParseElement(*body, KASN1TestStart); - TPtrC iType = Input::ParseElement(rootCert, KTypeStart); - - // constucts correct class depending on string - if(iType.CompareF(KIntType)==0) - iTestType = CTestInt::NewL(*this); - else if(iType.CompareF(KBigIntType)==0) - iTestType = CTestBigInt::NewL(*this); - else if(iType.CompareF(KBooleanType)==0) - iTestType = CTestBoolean::NewL(*this); - else if(iType.CompareF(KNullType)==0) - iTestType = CTestNull::NewL(*this); - else if(iType.CompareF(KExplicitTagType)==0) - iTestType = CTestExplicitTag::NewL(*this); - else if(iType.CompareF(KImplicitTagType)==0) - iTestType = CTestImplicitTag::NewL(*this); - else if(iType.CompareF(KGeneralizedTimeType)==0) - iTestType = CTestGeneralizedTime::NewL(*this); - else if(iType.CompareF(KOctetStringType)==0) - iTestType = CTestOctetString::NewL(*this); - else if(iType.CompareF(KObjectIDType)==0) - iTestType = CTestOID::NewL(*this); - else if(iType.CompareF(KSequenceType)==0) - iTestType = CTestSequence::NewL(*this); - else if(iType.CompareF(KOutputType)==0) - iTestType = CTestOutput::NewL(*this); - else if(iType.CompareF(KBitStrType)==0) - iTestType = CTestBitStr::NewL(*this); - else if(iType.CompareF(KInvaidObjectIDType)==0) - iTestType = CTestInvalidOID::NewL(*this); - - if(iTestType) - SetScriptError(iTestType->ConstructL(aTestActionSpec), iTestType->iSyntaxErrorDescription); - - CleanupStack::PopAndDestroy(); // body - } - -void CASN1NormalTest::PerformAction(TRequestStatus& aStatus) - { - TRAPD(err, iResult = iTestType->PerformTestsL(iConsole)); - if (err==KErrNoMemory) - User::Leave(err); - else - { - iActionState = EPostrequisite; - TRequestStatus* status = &aStatus; - User::RequestComplete(status, err); - } - } - - -void CASN1NormalTest::ReportProgressL(const TInt aError, const TInt aCount, const TInt aMax) - { - if(aMax == 0) return; - TInt newPercentage = aCount * 100 / aMax; - - if (newPercentage > iPercentReported && iResult == 0) - { - iPercentReported = newPercentage; - - iConsole.Printf(_L(" %d"), iPercentReported); - - if (iPercentReported == 100) - { - iConsole.Write(_L("%")); - iConsole.Write(_L(" Completed:\n")); - CheckResult(aError); - iPercentReported = -1; - } - } - if(aError != 0) - { - iFinished = ETrue; - iResult = EFalse; - } - } - -void CASN1NormalTest::DoCheckResult(TInt aError) - { - if(aError == 0 && !iFinished) - { - iFinished = ETrue; - iResult = ETrue; - } - } - - -void CASN1NormalTest::DoReportAction() - { - HBufC *tmp = HBufC::NewMaxLC(iNameInfo->Length()); - - // converts name to unicode (if necessary) and dumps it out to screen - tmp->Des().Copy(*iNameInfo); - iConsole.Printf(_L("\n")); - iConsole.Printf(_L("Report %d - "), iReportNumber); - iConsole.Write(*tmp); - iConsole.Printf(_L("\n")); - - CleanupStack::PopAndDestroy(); // tmp - } - -TBool CASN1NormalTest::TestResult(TInt /*aError*/) - { - return 0; - } - -void CASN1NormalTest::PerformCancel() - { - } - -void CASN1NormalTest::Reset() - { - } +/* +* Copyright (c) 2005-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: +* ASN1TestAction.cpp: implementation of the CASN1NormalTest class. +* +*/ + + +/** + @file +*/ + +#include "tasn1normaltest.h" +#include "testnull.h" +#include "testboolean.h" +#include "testint.h" +#include "testbigint.h" +#include "testoctetstr.h" +#include "testoid.h" +#include "testinvalidoid.h" +#include "testgeneralizedtime.h" +#include "testsequence.h" +#include "testexplicittag.h" +#include "testimplicittag.h" +#include "testoutput.h" +#include "testbitstr.h" +#include "t_input.h" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// +TInt CASN1NormalTest::iReportCount = 1; + +_LIT(KASN1TestStart, ""); +_LIT(KTypeStart, ""); +_LIT(KIntType, "int"); +_LIT(KBigIntType, "bigint"); +_LIT(KBooleanType, "boolean"); +_LIT(KNullType, "null"); +_LIT(KExplicitTagType, "explicittag"); +_LIT(KImplicitTagType, "implicittag"); +_LIT(KGeneralizedTimeType, "generalizedtime"); +_LIT(KOctetStringType, "octetstring"); +_LIT(KObjectIDType, "objectid"); +_LIT(KInvaidObjectIDType, "invalidobjectid"); +_LIT(KSequenceType, "sequence"); +_LIT(KOutputType, "output"); +_LIT(KBitStrType, "bitstring"); + +CASN1NormalTest::~CASN1NormalTest() + { + delete iTestType; + } + +CASN1NormalTest::CASN1NormalTest(RFs& /*aFs*/, + CConsoleBase& aConsole, + Output& aOut) +: CTestAction(aConsole, aOut), iTestType(0), iPercentReported(-1), iReportNumber(iReportCount++) + { + } + +CTestAction* CASN1NormalTest::NewL(RFs& aFs, + CConsoleBase& aConsole, + Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CTestAction* self = CASN1NormalTest::NewLC(aFs, aConsole, + aOut, aTestActionSpec); + CleanupStack::Pop(self); + return self; + } + +CTestAction* CASN1NormalTest::NewLC(RFs& aFs, + CConsoleBase& aConsole, + Output& aOut, + const TTestActionSpec& aTestActionSpec) + { + CASN1NormalTest* self = new(ELeave) CASN1NormalTest(aFs, aConsole, aOut); + CleanupStack::PushL(self); + self->ConstructL(aTestActionSpec); + return self; + } + + +void CASN1NormalTest::ConstructL(const TTestActionSpec& aTestActionSpec) + { + CTestAction::ConstructL(aTestActionSpec); + HBufC* body = HBufC::NewLC(aTestActionSpec.iActionBody.Length()); + + body->Des().Copy(aTestActionSpec.iActionBody); + TPtrC rootCert = Input::ParseElement(*body, KASN1TestStart); + TPtrC iType = Input::ParseElement(rootCert, KTypeStart); + + // constucts correct class depending on string + if(iType.CompareF(KIntType)==0) + iTestType = CTestInt::NewL(*this); + else if(iType.CompareF(KBigIntType)==0) + iTestType = CTestBigInt::NewL(*this); + else if(iType.CompareF(KBooleanType)==0) + iTestType = CTestBoolean::NewL(*this); + else if(iType.CompareF(KNullType)==0) + iTestType = CTestNull::NewL(*this); + else if(iType.CompareF(KExplicitTagType)==0) + iTestType = CTestExplicitTag::NewL(*this); + else if(iType.CompareF(KImplicitTagType)==0) + iTestType = CTestImplicitTag::NewL(*this); + else if(iType.CompareF(KGeneralizedTimeType)==0) + iTestType = CTestGeneralizedTime::NewL(*this); + else if(iType.CompareF(KOctetStringType)==0) + iTestType = CTestOctetString::NewL(*this); + else if(iType.CompareF(KObjectIDType)==0) + iTestType = CTestOID::NewL(*this); + else if(iType.CompareF(KSequenceType)==0) + iTestType = CTestSequence::NewL(*this); + else if(iType.CompareF(KOutputType)==0) + iTestType = CTestOutput::NewL(*this); + else if(iType.CompareF(KBitStrType)==0) + iTestType = CTestBitStr::NewL(*this); + else if(iType.CompareF(KInvaidObjectIDType)==0) + iTestType = CTestInvalidOID::NewL(*this); + + if(iTestType) + SetScriptError(iTestType->ConstructL(aTestActionSpec), iTestType->iSyntaxErrorDescription); + + CleanupStack::PopAndDestroy(); // body + } + +void CASN1NormalTest::PerformAction(TRequestStatus& aStatus) + { + TRAPD(err, iResult = iTestType->PerformTestsL(iConsole)); + if (err==KErrNoMemory) + User::Leave(err); + else + { + iActionState = EPostrequisite; + TRequestStatus* status = &aStatus; + User::RequestComplete(status, err); + } + } + + +void CASN1NormalTest::ReportProgressL(const TInt aError, const TInt aCount, const TInt aMax) + { + if(aMax == 0) return; + TInt newPercentage = aCount * 100 / aMax; + + if (newPercentage > iPercentReported && iResult == 0) + { + iPercentReported = newPercentage; + + iConsole.Printf(_L(" %d"), iPercentReported); + + if (iPercentReported == 100) + { + iConsole.Write(_L("%")); + iConsole.Write(_L(" Completed:\n")); + CheckResult(aError); + iPercentReported = -1; + } + } + if(aError != 0) + { + iFinished = ETrue; + iResult = EFalse; + } + } + +void CASN1NormalTest::DoCheckResult(TInt aError) + { + if(aError == 0 && !iFinished) + { + iFinished = ETrue; + iResult = ETrue; + } + } + + +void CASN1NormalTest::DoReportAction() + { + HBufC *tmp = HBufC::NewMaxLC(iNameInfo->Length()); + + // converts name to unicode (if necessary) and dumps it out to screen + tmp->Des().Copy(*iNameInfo); + iConsole.Printf(_L("\n")); + iConsole.Printf(_L("Report %d - "), iReportNumber); + iConsole.Write(*tmp); + iConsole.Printf(_L("\n")); + + CleanupStack::PopAndDestroy(); // tmp + } + +TBool CASN1NormalTest::TestResult(TInt /*aError*/) + { + return 0; + } + +void CASN1NormalTest::PerformCancel() + { + } + +void CASN1NormalTest::Reset() + { + } +