cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_addkey.cpp
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_addkey.cpp	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2003-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: 
+*
+*/
+
+
+#include <unifiedkeystore.h>
+#include <e32base.h>
+#include "t_keystore_actions.h"
+#include "t_keystore_defs.h"
+#include "t_input.h"
+#include "t_output.h"
+
+_LIT(KEllipsis, "...");
+
+/////////////////////////////////////////////////////////////////////////////////
+// CAddKey
+/////////////////////////////////////////////////////////////////////////////////
+
+CTestAction* CAddKey::NewL(RFs& aFs, 
+							CConsoleBase& aConsole, 
+							Output& aOut,
+							const TTestActionSpec& aTestActionSpec)
+{
+	CTestAction* self = CAddKey::NewLC(aFs, aConsole, aOut, aTestActionSpec);
+	CleanupStack::Pop(self);
+	return self;
+}
+
+CTestAction* CAddKey::NewLC(RFs& aFs,
+							CConsoleBase& aConsole, 
+							Output& aOut,
+							const TTestActionSpec& aTestActionSpec)
+{
+	CAddKey* self = new (ELeave) CAddKey(aFs, aConsole, aOut);
+	CleanupStack::PushL(self);
+	self->ConstructL(aTestActionSpec);
+	return self;
+}
+
+CAddKey::~CAddKey()
+{
+	if (iKeyInfo != NULL)
+		{
+		iKeyInfo->Release();
+		}
+}
+
+CAddKey::CAddKey(RFs& aFs, CConsoleBase& aConsole, Output& aOut) :
+	CKeyStoreTestAction(aFs, aConsole, aOut), iState(EAddKey)
+	{
+	}
+
+void CAddKey::ConstructL(const TTestActionSpec& aTestActionSpec)
+{
+	CKeyStoreTestAction::ConstructL(aTestActionSpec);
+
+	SetKeySize(Input::ParseElement(aTestActionSpec.iActionBody, KKeySizeStart));
+	SetStartDate(Input::ParseElement(aTestActionSpec.iActionBody, KKeyStartDateStart));
+	SetEndDate(Input::ParseElement(aTestActionSpec.iActionBody, KKeyEndDateStart));
+}
+
+void CAddKey::SetKeySize(const TDesC8& aKeySize)
+	{
+	TLex8 lex(aKeySize);
+	lex.Val(iSize);
+	}
+
+void CAddKey::PerformAction(TRequestStatus& aStatus)
+	{
+	switch (iState)
+		{
+		case EAddKey:
+			{
+			CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
+		
+			keyStore->CreateKey(0, iUsage, iSize, *iLabel, iAlgorithm,
+								iAccessType, iStartDate, iEndDate, iKeyInfo, aStatus);
+
+			iState = EFinished;
+			}
+			break;
+
+		case EFinished:
+			{
+			TRequestStatus* status = &aStatus;
+			User::RequestComplete(status, aStatus.Int());
+			if (aStatus == iExpectedResult)
+				{
+				iResult = ETrue;
+				}
+			else
+				{
+				iResult = EFalse;
+				}
+		
+			iActionState = EPostrequisite;
+			}
+			break;
+			
+		default:
+			break;	//	Nothing to do, for the compiler
+		}
+	}
+
+void CAddKey::PerformCancel()
+    {
+    if (iState == EFinished)
+        {
+        CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
+        keyStore->CancelCreateKey();
+        }
+    }
+
+void CAddKey::Reset()
+	{
+	iState = EAddKey;
+	if (iKeyInfo != NULL)
+		{
+		iKeyInfo->Release();
+		iKeyInfo = NULL;
+		}
+	}
+
+void CAddKey::DoReportAction()
+{
+	_LIT(KAdding, "Adding key...");
+	iOut.writeString(KAdding);
+
+	iOut.writeString(iLabel->Left(32));
+	if (iLabel->Length() > 32)
+		{
+		iOut.writeString(KEllipsis);
+		}
+	
+	iOut.writeNewLine();
+}
+
+
+void CAddKey::DoCheckResult(TInt aError)
+{
+	if (iFinished)
+	{
+		if (aError == KErrNone)
+		{
+			_LIT(KSuccessful, "Key added successfully\n");
+			iConsole.Write(KSuccessful);
+			iOut.writeString(KSuccessful);
+			iOut.writeNewLine();
+			iOut.writeNewLine();
+		}
+		else
+		{
+			if (aError!=iExpectedResult)
+			{
+				_LIT(KFailed, "!!!Key adding failure!!!\n");
+				iConsole.Write(KFailed);
+				iOut.writeString(KFailed);
+			}
+			else
+			{
+				_LIT(KFailed, "Key adding failed, but expected\n");
+				iConsole.Write(KFailed);
+				iOut.writeString(KFailed);
+			}
+
+			iOut.writeNewLine();
+			iOut.writeNewLine();
+		}
+	}
+}
+
+
+void CAddKey::SetStartDate(const TDesC8& aData)
+	{
+    if (aData.Length() == 0)
+		return;
+
+	HBufC* buf = HBufC::NewLC(aData.Length());
+	TPtr ptr = buf->Des();
+	ptr.Copy(aData);	
+	User::LeaveIfError(iStartDate.Parse(*buf));
+	CleanupStack::PopAndDestroy(buf);
+	}
+
+void CAddKey::SetEndDate(const TDesC8& aData)
+	{
+    if (aData.Length() == 0)
+		return;
+
+	HBufC* buf = HBufC::NewLC(aData.Length());
+	TPtr ptr = buf->Des();
+	ptr.Copy(aData);	
+	User::LeaveIfError(iEndDate.Parse(*buf));
+	CleanupStack::PopAndDestroy(buf);
+	}