diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/tpkcs10/tpkcs10negatives.cpp --- a/cryptoservices/certificateandkeymgmt/tpkcs10/tpkcs10negatives.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/tpkcs10/tpkcs10negatives.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,478 +1,479 @@ -/* -* Copyright (c) 2007-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: -* Implementation of negative step classes for PKCS#10 tests. -* -*/ - - -#include "tpkcs10negatives.h" -#include -#include - -// Key label -_LIT(KKeyLabel, "new pkcs10 neg test key"); - -// Panics -_LIT(KPanicNegativeTests, "PKCS10NegativeTests"); -TInt EPanicNegInvalidTestData = 1; - -// String of 256 characters -_LIT8(KHugeString, "p000000001p000000002p000000003p000000004p000000005p000000006p000000007" - "p000000008p000000009p000000010p000000011p000000012p000000013p000000014" - "p000000015p000000016p000000017p000000018p000000019p000000020p000000021" - "p000000022p000000023p000000024p000000025p23456"); - - -CPKCS10NegTesterActive::CPKCS10NegTesterActive(CTestExecuteLogger& aLogger) : - CActive(EPriorityStandard), - iLogger(aLogger), - iKeyImportStarted(EFalse) - { - CActiveScheduler::Add(this); - User::LeaveIfError(iFs.Connect()); - } - -CPKCS10NegTesterActive::~CPKCS10NegTesterActive() - { - Cancel(); - delete iKeyData; - if (iKeyInfo) - { - iKeyInfo->Release(); - } - delete iKeyStore; - iFs.Close(); - } - -CCTKeyInfo* CPKCS10NegTesterActive::doImportKeyL(CCertificateRequestStep *aStep) -{ - INFO_PRINTF1(_L("Active object tester for Key Import")); - - iStep = aStep; - // Initialise Key store - iKeyStore = CUnifiedKeyStore::NewL(iFs); - iKeyStore->Initialize(iStatus); - - SetActive(); - CActiveScheduler::Start(); - - User::LeaveIfError(iStatus.Int()); - - return iKeyInfo; -} - -void CPKCS10NegTesterActive::RunL() - { - iError = iStatus.Int(); - if (iError != KErrNone) - { - CActiveScheduler::Stop(); - } - - if (iKeyImportStarted == EFalse) - { - INFO_PRINTF1(_L("Importing keys")); - TFileName filename; - filename = iStep->iPrivateKey; - RFile file; - User::LeaveIfError(file.Open(iFs, filename, EFileRead)); - CleanupClosePushL(file); - TInt size; - User::LeaveIfError(file.Size(size)); - iKeyData = HBufC8::NewMaxL(size); - TPtr8 keyPtr = iKeyData->Des(); - User::LeaveIfError(file.Read(keyPtr)); - CleanupStack::PopAndDestroy(); // file - - TTime start(0.0); - TTime end(0.0); - - // Assumes only one keystore - ASSERT(iKeyInfo == NULL); - iKeyStore->ImportKey(0, *iKeyData, EPKCS15UsageSign, KKeyLabel,0, start, end, iKeyInfo, iStatus); - iKeyImportStarted = ETrue; - SetActive(); - } - else - { - // Key import done - CActiveScheduler::Stop(); - } - } - -TInt CPKCS10NegTesterActive::RunError(TInt aError) - { - iError = aError; - CActiveScheduler::Stop(); - return KErrNone; - } - -TVerdict CPKCS10NegPKCS10GenericAttr::doTestStepL() - { - // Set it to pass initially - SetTestStepResult(EPass); - - ////////////////////////////////////////////////////////////////////////////// - // Test for invalid attribute for NewL - TInt numAttr = iArrayGenAttrOID.Count(); - __ASSERT_ALWAYS((numAttr > 0), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); - - HBufC8 *string = HBufC8::NewMaxLC(iArrayGenAttrValue[0].Length()); - string->Des().Copy(iArrayGenAttrValue[0]); - - CASN1EncOctetString* attrString = CASN1EncOctetString::NewLC(*string); - - CPKCS10Attribute *genericAttr = NULL; - TRAPD(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[0], attrString)); - CleanupStack::Pop(attrString); - CleanupStack::PopAndDestroy(string); - - if (err != KErrNone) - { - delete attrString; - } - else - { - delete genericAttr; - } - - if (err != KErrBadDescriptor) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for NULL value for NewL - __ASSERT_ALWAYS((numAttr > 1), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); - - string = HBufC8::NewMaxLC(iArrayGenAttrValue[1].Length()); - string->Des().Copy(iArrayGenAttrValue[1]); - - if (*string == KNullDesC8) - { - attrString = NULL; - } - else - { - attrString = CASN1EncOctetString::NewLC(*string); - } - - TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[1], attrString)); - if (attrString != NULL) - { - CleanupStack::Pop(attrString); - } - CleanupStack::PopAndDestroy(string); - - if (err != KErrNone) - { - delete attrString; - } - else - { - delete genericAttr; - } - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for NULL value for AddValueL - __ASSERT_ALWAYS((numAttr > 2), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); - string = HBufC8::NewMaxLC(iArrayGenAttrValue[2].Length()); - string->Des().Copy(iArrayGenAttrValue[2]); - - attrString = CASN1EncOctetString::NewLC(*string); - - TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[2], attrString)); - CleanupStack::Pop(attrString); - CleanupStack::PopAndDestroy(string); - - // Should not be an error - if (err != KErrNone) - { - SetTestStepResult(EFail); - } - - // Try to add a NULL value - TRAP(err, genericAttr->AddValueL(NULL)); - delete genericAttr; - - // Should return an error - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for invalid attribute for ResetL - string = HBufC8::NewMaxLC(iArrayGenAttrValue[2].Length()); - string->Des().Copy(iArrayGenAttrValue[2]); - - attrString = CASN1EncOctetString::NewLC(*string); - - TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[2], attrString)); - CleanupStack::Pop(attrString); - - // Should not be an error - if (err != KErrNone) - { - SetTestStepResult(EFail); - } - - // Try to reset with an invalid attribute OID - attrString = CASN1EncOctetString::NewLC(*string); - TRAP(err, genericAttr->ResetL(KNullDesC, attrString)); - - if (err != KErrNone) - { - delete attrString; - } - - CleanupStack::Pop(attrString); - CleanupStack::PopAndDestroy(string); - delete genericAttr; - - // Should return an error - if (err != KErrBadDescriptor) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for NULL value for ResetL - string = HBufC8::NewMaxLC(iArrayGenAttrValue[2].Length()); - string->Des().Copy(iArrayGenAttrValue[2]); - - attrString = CASN1EncOctetString::NewLC(*string); - - TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[2], attrString)); - CleanupStack::Pop(attrString); - CleanupStack::PopAndDestroy(string); - - // Should not be an error - if (err != KErrNone) - { - SetTestStepResult(EFail); - } - - // Try to reset with a NULL value - TRAP(err, genericAttr->ResetL(iArrayGenAttrOID[2], NULL)); - delete genericAttr; - - // Should return an error - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - return TestStepResult(); - } - -TVerdict CPKCS10NegPKCS9ChallengePasswordAttr::doTestStepL() - { - // Set it to pass initially - SetTestStepResult(EPass); - - ////////////////////////////////////////////////////////////////////////////// - // Test for empty password for NewL - HBufC8 *passwordString = HBufC8::NewMaxLC(iChallengePassword.Length()); - passwordString->Des().Copy(iChallengePassword); - - CPKCS9ChallengePasswordAttr *chPasswordAttr = NULL; - TRAPD(err, chPasswordAttr = CPKCS9ChallengePasswordAttr::NewL(*passwordString)); - CleanupStack::PopAndDestroy(passwordString); - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for big password for ResetL - TRAP(err, chPasswordAttr = CPKCS9ChallengePasswordAttr::NewL(_L8("password"))); - - // Should not fail - if (err != KErrNone) - { - SetTestStepResult(EFail); - } - - TRAP(err, chPasswordAttr->ResetL(KHugeString)); - delete chPasswordAttr; - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - return TestStepResult(); - } - -TVerdict CPKCS10NegPKCS9ExtensionRequestAttr::doTestStepL() - { - // Set it to pass initially - SetTestStepResult(EPass); - - ////////////////////////////////////////////////////////////////////////////// - // Test for empty attribute OID for NewL - TInt numAttr = iArrayV3AttrOID.Count(); - __ASSERT_ALWAYS((numAttr > 0), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); - - CX509CertExtension* x509CertExtn = CX509CertExtension::NewL(iArrayV3AttrOID[0], iArrayV3AttrCritical[0], _L8("value")); - - CPKCS9ExtensionRequestAttr *chExtReqAttr = NULL; - TRAPD(err, chExtReqAttr = CPKCS9ExtensionRequestAttr::NewL(*x509CertExtn)); - - delete x509CertExtn; - - if (err != KErrBadDescriptor) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for empty attribute OID for AddExtensionL - __ASSERT_ALWAYS((numAttr > 1), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); - - x509CertExtn = CX509CertExtension::NewLC(iArrayV3AttrOID[1], iArrayV3AttrCritical[1], _L8("value")); - chExtReqAttr = CPKCS9ExtensionRequestAttr::NewLC(*x509CertExtn); - - CX509CertExtension *x509CertExtnNew = CX509CertExtension::NewLC(iArrayV3AttrOID[0], iArrayV3AttrCritical[0], _L8("value")); - TRAP(err, chExtReqAttr->AddExtensionL(*x509CertExtnNew)); - - CleanupStack::PopAndDestroy(3, x509CertExtn); // chExtReqAttr, x509CertExtnNew - - if (err != KErrBadDescriptor) - { - SetTestStepResult(EFail); - } - - return TestStepResult(); - } - -TVerdict CPKCS10NegPKCS10Attributes::doTestStepL() - { - // Set it to pass initially - SetTestStepResult(EPass); - - ////////////////////////////////////////////////////////////////////////////// - // Test for NULL attribute for AddPKCSAttributeL - CPKCS10Attributes *attrList = NULL; - attrList = CPKCS10Attributes::NewLC(); - TRAPD(err, attrList->AddPKCSAttributeL(NULL)); - CleanupStack::PopAndDestroy(attrList); - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - return TestStepResult(); - } - -TVerdict CPKCS10NegPKCS10Request::doTestStepL() - { - // Set it to pass initially - SetTestStepResult(EPass); - - ////////////////////////////////////////////////////////////////////////////// - // Test for invalid DN for NewL - CActiveScheduler* sch = new(ELeave) CActiveScheduler; - CActiveScheduler::Install(sch); - - // Import the key - CPKCS10NegTesterActive* activeObj = new (ELeave) CPKCS10NegTesterActive(Logger()); - CCTKeyInfo *keyInfo = activeObj->doImportKeyL(this); - - // Try to generate a cert req - CX500DistinguishedName* dn = NULL; - CPKCS10Request* req = NULL; - TRAPD(err, req = CPKCS10Request::NewL(*dn, *keyInfo)); - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for EDH for SetDigestAlgL - CArrayPtrFlat* array = new(ELeave) CArrayPtrFlat(7); - CleanupStack::PushL(array); - dn = CX500DistinguishedName::NewL(*array); - CleanupStack::PushL(dn); - - req = CPKCS10Request::NewL(*dn, *keyInfo); - - TRAP(err, req->SetDigestAlgL(EDH)); - - delete req; - array->ResetAndDestroy(); - CleanupStack::PopAndDestroy(2, array); //array, dn - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for NULL DN for SetDistinguishedNameL - array = new(ELeave) CArrayPtrFlat(7); - CleanupStack::PushL(array); - dn = CX500DistinguishedName::NewL(*array); - CleanupStack::PushL(dn); - - req = CPKCS10Request::NewL(*dn, *keyInfo); - - CX500DistinguishedName* nullDN = NULL; - TRAP(err, req->SetDistinguishedNameL(*nullDN)); - - delete req; - array->ResetAndDestroy(); - CleanupStack::PopAndDestroy(2, array); //array, dn - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - ////////////////////////////////////////////////////////////////////////////// - // Test for NULL for SetKeyInfoL - array = new(ELeave) CArrayPtrFlat(7); - CleanupStack::PushL(array); - dn = CX500DistinguishedName::NewL(*array); - CleanupStack::PushL(dn); - - req = CPKCS10Request::NewL(*dn, *keyInfo); - - CCTKeyInfo* nullKeyInfo = NULL; - TRAP(err, req->SetKeyInfoL(*nullKeyInfo)); - - delete req; - array->ResetAndDestroy(); - CleanupStack::PopAndDestroy(2, array); //array, dn - - if (err != KErrArgument) - { - SetTestStepResult(EFail); - } - - delete activeObj; // Will release keyInfo - delete sch; - - return TestStepResult(); - } +/* +* Copyright (c) 2007-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: +* Implementation of negative step classes for PKCS#10 tests. +* +*/ + + +#include "tpkcs10negatives.h" +#include +#include + +// Key label +_LIT(KKeyLabel, "new pkcs10 neg test key"); + +// Panics +_LIT(KPanicNegativeTests, "PKCS10NegativeTests"); +TInt EPanicNegInvalidTestData = 1; + +// String of 256 characters +_LIT8(KHugeString, "p000000001p000000002p000000003p000000004p000000005p000000006p000000007" + "p000000008p000000009p000000010p000000011p000000012p000000013p000000014" + "p000000015p000000016p000000017p000000018p000000019p000000020p000000021" + "p000000022p000000023p000000024p000000025p23456"); + + +CPKCS10NegTesterActive::CPKCS10NegTesterActive(CTestExecuteLogger& aLogger) : + CActive(EPriorityStandard), + iLogger(aLogger), + iKeyImportStarted(EFalse) + { + CActiveScheduler::Add(this); + User::LeaveIfError(iFs.Connect()); + } + +CPKCS10NegTesterActive::~CPKCS10NegTesterActive() + { + Cancel(); + delete iKeyData; + if (iKeyInfo) + { + iKeyInfo->Release(); + } + delete iKeyStore; + iFs.Close(); + } + +CCTKeyInfo* CPKCS10NegTesterActive::doImportKeyL(CCertificateRequestStep *aStep) +{ + INFO_PRINTF1(_L("Active object tester for Key Import")); + + iStep = aStep; + // Initialise Key store + iKeyStore = CUnifiedKeyStore::NewL(iFs); + iKeyStore->Initialize(iStatus); + + SetActive(); + CActiveScheduler::Start(); + + User::LeaveIfError(iStatus.Int()); + + return iKeyInfo; +} + +void CPKCS10NegTesterActive::RunL() + { + iError = iStatus.Int(); + if (iError != KErrNone) + { + CActiveScheduler::Stop(); + } + + if (iKeyImportStarted == EFalse) + { + INFO_PRINTF1(_L("Importing keys")); + TFileName filename; + filename = iStep->iPrivateKey; + RFile file; + User::LeaveIfError(file.Open(iFs, filename, EFileRead)); + CleanupClosePushL(file); + TInt size; + User::LeaveIfError(file.Size(size)); + iKeyData = HBufC8::NewMaxL(size); + TPtr8 keyPtr = iKeyData->Des(); + User::LeaveIfError(file.Read(keyPtr)); + CleanupStack::PopAndDestroy(); // file + + TTime start(0.0); + TTime end(0.0); + + // Assumes only one keystore + ASSERT(iKeyInfo == NULL); + iKeyStore->ImportKey(0, *iKeyData, EPKCS15UsageSign, KKeyLabel,0, start, end, iKeyInfo, iStatus); + iKeyImportStarted = ETrue; + SetActive(); + } + else + { + // Key import done + CActiveScheduler::Stop(); + } + } + +TInt CPKCS10NegTesterActive::RunError(TInt aError) + { + iError = aError; + CActiveScheduler::Stop(); + return KErrNone; + } + +TVerdict CPKCS10NegPKCS10GenericAttr::doTestStepL() + { + // Set it to pass initially + SetTestStepResult(EPass); + + ////////////////////////////////////////////////////////////////////////////// + // Test for invalid attribute for NewL + TInt numAttr = iArrayGenAttrOID.Count(); + __ASSERT_ALWAYS((numAttr > 0), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); + + HBufC8 *string = HBufC8::NewMaxLC(iArrayGenAttrValue[0].Length()); + string->Des().Copy(iArrayGenAttrValue[0]); + + CASN1EncOctetString* attrString = CASN1EncOctetString::NewLC(*string); + + CPKCS10Attribute *genericAttr = NULL; + TRAPD(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[0], attrString)); + CleanupStack::Pop(attrString); + CleanupStack::PopAndDestroy(string); + + if (err != KErrNone) + { + delete attrString; + } + else + { + delete genericAttr; + } + + if (err != KErrBadDescriptor) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for NULL value for NewL + __ASSERT_ALWAYS((numAttr > 1), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); + + string = HBufC8::NewMaxLC(iArrayGenAttrValue[1].Length()); + string->Des().Copy(iArrayGenAttrValue[1]); + + if (*string == KNullDesC8) + { + attrString = NULL; + } + else + { + attrString = CASN1EncOctetString::NewLC(*string); + } + + TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[1], attrString)); + if (attrString != NULL) + { + CleanupStack::Pop(attrString); + } + CleanupStack::PopAndDestroy(string); + + if (err != KErrNone) + { + delete attrString; + } + else + { + delete genericAttr; + } + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for NULL value for AddValueL + __ASSERT_ALWAYS((numAttr > 2), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); + string = HBufC8::NewMaxLC(iArrayGenAttrValue[2].Length()); + string->Des().Copy(iArrayGenAttrValue[2]); + + attrString = CASN1EncOctetString::NewLC(*string); + + TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[2], attrString)); + CleanupStack::Pop(attrString); + CleanupStack::PopAndDestroy(string); + + // Should not be an error + if (err != KErrNone) + { + SetTestStepResult(EFail); + } + + // Try to add a NULL value + TRAP(err, genericAttr->AddValueL(NULL)); + delete genericAttr; + + // Should return an error + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for invalid attribute for ResetL + string = HBufC8::NewMaxLC(iArrayGenAttrValue[2].Length()); + string->Des().Copy(iArrayGenAttrValue[2]); + + attrString = CASN1EncOctetString::NewLC(*string); + + TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[2], attrString)); + CleanupStack::Pop(attrString); + + // Should not be an error + if (err != KErrNone) + { + SetTestStepResult(EFail); + } + + // Try to reset with an invalid attribute OID + attrString = CASN1EncOctetString::NewLC(*string); + TRAP(err, genericAttr->ResetL(KNullDesC, attrString)); + + if (err != KErrNone) + { + delete attrString; + } + + CleanupStack::Pop(attrString); + CleanupStack::PopAndDestroy(string); + delete genericAttr; + + // Should return an error + if (err != KErrBadDescriptor) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for NULL value for ResetL + string = HBufC8::NewMaxLC(iArrayGenAttrValue[2].Length()); + string->Des().Copy(iArrayGenAttrValue[2]); + + attrString = CASN1EncOctetString::NewLC(*string); + + TRAP(err, genericAttr = CPKCS10Attribute::NewL(iArrayGenAttrOID[2], attrString)); + CleanupStack::Pop(attrString); + CleanupStack::PopAndDestroy(string); + + // Should not be an error + if (err != KErrNone) + { + SetTestStepResult(EFail); + } + + // Try to reset with a NULL value + TRAP(err, genericAttr->ResetL(iArrayGenAttrOID[2], NULL)); + delete genericAttr; + + // Should return an error + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + return TestStepResult(); + } + +TVerdict CPKCS10NegPKCS9ChallengePasswordAttr::doTestStepL() + { + // Set it to pass initially + SetTestStepResult(EPass); + + ////////////////////////////////////////////////////////////////////////////// + // Test for empty password for NewL + HBufC8 *passwordString = HBufC8::NewMaxLC(iChallengePassword.Length()); + passwordString->Des().Copy(iChallengePassword); + + CPKCS9ChallengePasswordAttr *chPasswordAttr = NULL; + TRAPD(err, chPasswordAttr = CPKCS9ChallengePasswordAttr::NewL(*passwordString)); + CleanupStack::PopAndDestroy(passwordString); + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for big password for ResetL + TRAP(err, chPasswordAttr = CPKCS9ChallengePasswordAttr::NewL(_L8("password"))); + + // Should not fail + if (err != KErrNone) + { + SetTestStepResult(EFail); + } + + TRAP(err, chPasswordAttr->ResetL(KHugeString)); + delete chPasswordAttr; + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + return TestStepResult(); + } + +TVerdict CPKCS10NegPKCS9ExtensionRequestAttr::doTestStepL() + { + // Set it to pass initially + SetTestStepResult(EPass); + + ////////////////////////////////////////////////////////////////////////////// + // Test for empty attribute OID for NewL + TInt numAttr = iArrayV3AttrOID.Count(); + __ASSERT_ALWAYS((numAttr > 0), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); + + CX509CertExtension* x509CertExtn = CX509CertExtension::NewL(iArrayV3AttrOID[0], iArrayV3AttrCritical[0], _L8("value")); + + CPKCS9ExtensionRequestAttr *chExtReqAttr = NULL; + TRAPD(err, chExtReqAttr = CPKCS9ExtensionRequestAttr::NewL(*x509CertExtn)); + + delete x509CertExtn; + + if (err != KErrBadDescriptor) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for empty attribute OID for AddExtensionL + __ASSERT_ALWAYS((numAttr > 1), User::Panic(KPanicNegativeTests, EPanicNegInvalidTestData)); + + x509CertExtn = CX509CertExtension::NewLC(iArrayV3AttrOID[1], iArrayV3AttrCritical[1], _L8("value")); + chExtReqAttr = CPKCS9ExtensionRequestAttr::NewLC(*x509CertExtn); + + CX509CertExtension *x509CertExtnNew = CX509CertExtension::NewLC(iArrayV3AttrOID[0], iArrayV3AttrCritical[0], _L8("value")); + TRAP(err, chExtReqAttr->AddExtensionL(*x509CertExtnNew)); + + CleanupStack::PopAndDestroy(3, x509CertExtn); // chExtReqAttr, x509CertExtnNew + + if (err != KErrBadDescriptor) + { + SetTestStepResult(EFail); + } + + return TestStepResult(); + } + +TVerdict CPKCS10NegPKCS10Attributes::doTestStepL() + { + // Set it to pass initially + SetTestStepResult(EPass); + + ////////////////////////////////////////////////////////////////////////////// + // Test for NULL attribute for AddPKCSAttributeL + CPKCS10Attributes *attrList = NULL; + attrList = CPKCS10Attributes::NewLC(); + TRAPD(err, attrList->AddPKCSAttributeL(NULL)); + CleanupStack::PopAndDestroy(attrList); + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + return TestStepResult(); + } + +TVerdict CPKCS10NegPKCS10Request::doTestStepL() + { + // Set it to pass initially + SetTestStepResult(EPass); + + ////////////////////////////////////////////////////////////////////////////// + // Test for invalid DN for NewL + CActiveScheduler* sch = new(ELeave) CActiveScheduler; + CActiveScheduler::Install(sch); + + // Import the key + CPKCS10NegTesterActive* activeObj = new (ELeave) CPKCS10NegTesterActive(Logger()); + CCTKeyInfo *keyInfo = activeObj->doImportKeyL(this); + + // Try to generate a cert req + CX500DistinguishedName* dn = NULL; + CPKCS10Request* req = NULL; + TRAPD(err, req = CPKCS10Request::NewL(*dn, *keyInfo)); + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for EDH for SetDigestAlgL + CArrayPtrFlat* array = new(ELeave) CArrayPtrFlat(7); + CleanupStack::PushL(array); + dn = CX500DistinguishedName::NewL(*array); + CleanupStack::PushL(dn); + + req = CPKCS10Request::NewL(*dn, *keyInfo); + + TRAP(err, req->SetDigestAlgL(EDH)); + + delete req; + array->ResetAndDestroy(); + CleanupStack::PopAndDestroy(2, array); //array, dn + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for NULL DN for SetDistinguishedNameL + array = new(ELeave) CArrayPtrFlat(7); + CleanupStack::PushL(array); + dn = CX500DistinguishedName::NewL(*array); + CleanupStack::PushL(dn); + + req = CPKCS10Request::NewL(*dn, *keyInfo); + + CX500DistinguishedName* nullDN = NULL; + TRAP(err, req->SetDistinguishedNameL(*nullDN)); + + delete req; + array->ResetAndDestroy(); + CleanupStack::PopAndDestroy(2, array); //array, dn + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + ////////////////////////////////////////////////////////////////////////////// + // Test for NULL for SetKeyInfoL + array = new(ELeave) CArrayPtrFlat(7); + CleanupStack::PushL(array); + dn = CX500DistinguishedName::NewL(*array); + CleanupStack::PushL(dn); + + req = CPKCS10Request::NewL(*dn, *keyInfo); + + CCTKeyInfo* nullKeyInfo = NULL; + TRAP(err, req->SetKeyInfoL(*nullKeyInfo)); + + delete req; + array->ResetAndDestroy(); + CleanupStack::PopAndDestroy(2, array); //array, dn + + if (err != KErrArgument) + { + SetTestStepResult(EFail); + } + + delete activeObj; // Will release keyInfo + delete sch; + + return TestStepResult(); + } +