diff -r 000000000000 -r bde4ae8d615e os/security/crypto/weakcryptospi/test/tcryptospi/src/symmetriccipherbadivlengthstep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/security/crypto/weakcryptospi/test/tcryptospi/src/symmetriccipherbadivlengthstep.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,123 @@ +/* +* 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: +* +*/ + + +/** + @file + @internalTechnology +*/ + +#include "symmetriccipherbadivlengthstep.h" + +using namespace CryptoSpi; + +CSymmetricCipherBadIvLengthStep::CSymmetricCipherBadIvLengthStep() + { + SetTestStepName(KSymmetricCipherBadIvLengthStep); + } + + +TVerdict CSymmetricCipherBadIvLengthStep::doTestStepPreambleL() + { + SetTestStepResult(EPass); + return TestStepResult(); + } + + +TVerdict CSymmetricCipherBadIvLengthStep::doTestStepL() + { + INFO_PRINTF1(_L("*** Symmetric Cipher - Trying to set the IV to a descriptor of the wrong length ***")); + INFO_PRINTF2(_L("HEAP CELLS: %d"), User::CountAllocCells()); + + if (TestStepResult()!=EPass) + { + return TestStepResult(); + } + + // Assume failure, unless all is successful + SetTestStepResult(EFail); + + TVariantPtrC operationMode; + CSymmetricCipher* impl = NULL; + CKey* key = NULL; + SetupCipherL(EFalse, EFalse, operationMode, impl, key); + + INFO_PRINTF1(_L("Plugin loaded.")); + + CleanupStack::PushL(key); + CleanupStack::PushL(impl); + + if((TUid(operationMode) == KOperationModeCBCUid) || (TUid(operationMode) == KOperationModeCTRUid)) + { + TInt blockSize(0); + + if (TUid(operationMode) == KOperationModeCTRUid) + { + blockSize = CtrModeCalcBlockSizeL(*impl) * 2; + } + else + { + blockSize = impl->BlockSize() * 2; + } + + // blocksize is in bits so to allocate the correct number of bytes devide by 8 + HBufC8* iv = HBufC8::NewLC(blockSize/8); + + // blocksize is in bits so to allocate the correct number of 8 byte chunks divide by 64 + for(TInt i = 0 ; i Des().Append(_L8("12345678")); + } + + TRAPD(err,impl->SetIvL(iv->Des())); + + if(err == KErrArgument) + { + INFO_PRINTF1(_L("PASS : SetIvL() errored with KErrArgument as expected")); + SetTestStepResult(EPass); + } + else if (err == KErrNone) + { + ERR_PRINTF1(_L("*** FAIL: SetIvL() did not error ***")); + SetTestStepResult(EFail); + } + else + { + ERR_PRINTF2(_L("*** FAIL: SetIvL() errored with unexpected error code - %d ***"), err); + SetTestStepResult(EFail); + } + CleanupStack::PopAndDestroy(iv); + } + else + { + ERR_PRINTF2(_L("*** FAIL: This test requires an operation mode that supports an initialisation vector and does not support operation id: %d ***"), (TUid(operationMode)).iUid); + SetTestStepResult(EFail); + } + + CleanupStack::PopAndDestroy(impl); + CleanupStack::PopAndDestroy(key); + + INFO_PRINTF2(_L("HEAP CELLS: %d"), User::CountAllocCells()); + + return TestStepResult(); + } + + +TVerdict CSymmetricCipherBadIvLengthStep::doTestStepPostambleL() + { + return TestStepResult(); + }