--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networksecurity/tlsprovider/Test/ttlsoom/tlsoomstepbase.cpp Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,171 @@
+// 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 "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
+*/
+
+#include "tlsoomstepbase.h"
+
+#include <TestExecuteLog.h>
+
+TVerdict CTlsOOMStepBase::Start()
+ {
+
+ for (TInt i = 1; i < KMaxOOMSteps; i++)
+ {
+
+ __UHEAP_MARK;
+ __UHEAP_FAILNEXT(i);
+
+ TRAPD(err, DoTestStepL());
+
+ __UHEAP_MARKEND;
+ __UHEAP_RESET;
+
+ if (err == KErrNone && iStatus == KErrNone)
+ {
+
+ return EPass;
+
+ }
+
+
+ }
+
+ return EFail;
+
+ }
+
+void CTlsOOMStepBase::RunL()
+ {
+ CActiveScheduler::Stop();
+ }
+
+CTlsOOMStepBase::CTlsOOMStepBase(CTestExecuteLogger& aLogger, const TDesC& aConfigPath)
+ : CActive(EPriorityStandard),
+ iLogger(aLogger),
+ iConfigPath(aConfigPath)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+void CTlsOOMStepBase::DoCancel()
+ {
+ }
+
+// Leaves the tlsprovider and certificate on the stack
+// the attributes become owned by the provider.
+
+void CTlsOOMStepBase::InitTlsProviderLC(CTLSProvider*& aTlsProvider, CTlsCryptoAttributes*& aCryptoAttributes,
+ HBufC8*& aServerCert)
+ {
+
+ aTlsProvider = CTLSProvider::ConnectL();
+ CleanupStack::PushL(aTlsProvider);
+
+ RArray<TTLSCipherSuite> userCipherSuites;
+ CleanupClosePushL(userCipherSuites);
+ iStatus = KRequestPending;
+ aTlsProvider->CipherSuitesL(userCipherSuites, iStatus);
+ SetActive();
+ CActiveScheduler::Start();
+ TInt err = (0 == userCipherSuites.Count()) ? KErrNotSupported : KErrNone;
+ User::LeaveIfError(err);
+ CleanupStack::PopAndDestroy(&userCipherSuites);
+
+ aCryptoAttributes = aTlsProvider->Attributes();
+
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+
+ // Read server random
+
+ static const TInt KRandomDataLen = 32;
+
+ TBuf8<KRandomDataLen> input;
+ _LIT(KServerRandomFileName, "server.rnd");
+ ReadFileDataL(input, KServerRandomFileName, fs);
+ aCryptoAttributes->iMasterSecretInput.iServerRandom.Copy(input.Ptr(), KRandomDataLen);
+
+ // Read Client Random
+ input.Zero();
+ _LIT(KClientRandomFileName, "client.rnd");
+ ReadFileDataL(input, KClientRandomFileName, fs);
+ aCryptoAttributes->iMasterSecretInput.iClientRandom.Copy(input.Ptr(), KRandomDataLen);
+
+ // Read server key parameters
+
+ TBuf8<1000> paramInput;
+ _LIT(KParamFileFormat, "keyparam%d.prm");
+
+ TBuf<14> paramFile;
+
+ for (TInt i = 1; i <= 3; i++)
+ {
+
+ paramFile.Format(KParamFileFormat, i);
+ ReadFileDataL(paramInput, paramFile, fs);
+
+ switch (i)
+ {
+ case 1:
+ aCryptoAttributes->iPublicKeyParams->iValue1 = paramInput.AllocL();
+ break;
+ case 2:
+ aCryptoAttributes->iPublicKeyParams->iValue2 = paramInput.AllocL();
+ break;
+ case 3:
+ aCryptoAttributes->iPublicKeyParams->iValue3 = paramInput.AllocL();
+ break;
+ }
+
+ paramInput.Zero();
+
+ }
+
+ aCryptoAttributes->iPublicKeyParams->iKeyType = ERsa;
+
+ // Read server certificate
+
+ TBuf8<1000> certInput;
+ _LIT(KCertFileName, "server.cer");
+ ReadFileDataL(certInput, KCertFileName, fs);
+
+ aServerCert = certInput.AllocL();
+
+ CleanupStack::PopAndDestroy(&fs);
+ CleanupStack::PushL(aServerCert);
+
+ }
+
+void CTlsOOMStepBase::ReadFileDataL(TDes8& aDest, const TDesC& aFileName, RFs& aFileServer)
+ {
+
+ TPath fileName;
+ RFile file;
+ _LIT(KFileNameFormat, "%S\\%S");
+
+ fileName.Format(KFileNameFormat, &iConfigPath, &aFileName);
+
+ User::LeaveIfError(file.Open(aFileServer, fileName, EFileRead));
+ CleanupClosePushL(file);
+
+ User::LeaveIfError(file.Read(aDest));
+
+ CleanupStack::PopAndDestroy(&file);
+
+ }