os/security/cryptoservices/certificateandkeymgmt/tcertstore/t_swicertstoreactions.cpp
First public contribution.
2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
23 // t_metadataactions.cpp
27 #include "t_swicertstoreactions.h"
28 #include "t_certstoredefs.h"
29 #include "t_certstoreout.h"
31 #include <swicertstore.h>
32 #include "testutilclient.h"
34 TBool operator==(const TCapabilitySet& a, const TCapabilitySet& b)
36 return a.HasCapabilities(b) && b.HasCapabilities(a);
39 // CInitSWICertStoreAction /////////////////////////////////////////////////////
41 CTestAction* CInitSWICertStoreAction::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut,
42 const TTestActionSpec& aTestActionSpec)
44 CInitSWICertStoreAction* self = new (ELeave) CInitSWICertStoreAction(aFs, aConsole, aOut);
45 CleanupStack::PushL(self);
46 self->ConstructL(aTestActionSpec);
47 CleanupStack::Pop(self);
51 CInitSWICertStoreAction::CInitSWICertStoreAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut) :
52 CCertStoreTestAction(aFs, aConsole, aOut), iFs(aFs)
56 void CInitSWICertStoreAction::ConstructL(const TTestActionSpec& aTestActionSpec)
58 CCertStoreTestAction::ConstructL(aTestActionSpec);
62 TPtrC8 fileName = Input::ParseElement(aTestActionSpec.iActionBody, KFileNameStart,
63 KFileNameEnd, pos, err);
67 HBufC* tempFName = HBufC::NewLC(fileName.Length());
69 tempFName->Des().Copy(fileName);
71 RTestUtilSession testutil;
72 User::LeaveIfError(testutil.Connect());
73 CleanupClosePushL(testutil);
75 TDriveUnit sysDrive(RFs::GetSystemDrive());
76 TBuf<64> datfile (sysDrive.Name());
77 datfile.Append(_L("\\Resource\\SwiCertstore\\dat\\"));
78 testutil.MkDirAll(datfile);
80 datfile.Copy(sysDrive.Name());
81 datfile.Append(_L("\\Resource\\SwiCertstore\\dat\\00000001"));
82 err = testutil.Copy(tempFName->Des(), datfile);
83 CleanupStack::PopAndDestroy(&testutil);
84 CleanupStack::PopAndDestroy(tempFName);
87 HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length());
88 TPtr(result->Des()).Copy(aTestActionSpec.iActionResult);
89 Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult);
90 CleanupStack::PopAndDestroy(result);
93 void CInitSWICertStoreAction::PerformAction(TRequestStatus& aStatus)
100 CSWICertStore* swiCertStore = CSWICertStore::NewL(iFs);
101 CleanupReleasePushL(*swiCertStore);
102 AddCertStoreL(swiCertStore);
103 CleanupStack::Pop(swiCertStore);
104 TRequestStatus* status = &aStatus;
105 User::RequestComplete(status, KErrNone);
111 TRequestStatus* status = &aStatus;
112 User::RequestComplete(status, KErrNone);
120 void CInitSWICertStoreAction::PerformCancel()
124 void CInitSWICertStoreAction::Reset()
126 iState = EInitCertStore;
129 void CInitSWICertStoreAction::DoReportAction()
131 iOut.write(_L("Initialising SWI cert store...\n"));
134 void CInitSWICertStoreAction::DoCheckResult(TInt aError)
136 iResult = (aError == iExpectedResult);
139 // CSWICertStoreTestAction /////////////////////////////////////////////////////
141 CSWICertStoreTestAction::CSWICertStoreTestAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut)
142 : CCertStoreTestAction(aFs, aConsole, aOut), iState(EGetCert)
146 void CSWICertStoreTestAction::ConstructL(const TTestActionSpec& aTestActionSpec)
148 CCertStoreTestAction::ConstructL(aTestActionSpec);
149 iFilter = CCertAttributeFilter::NewL();
153 TPtrC8 pLabel = Input::ParseElement(aTestActionSpec.iActionBody, KCertLabelStart, KCertLabelEnd, pos, err);
158 iCertificateLabel.Copy(pLabel);
160 HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length());
161 TPtr(result->Des()).Copy(aTestActionSpec.iActionResult);
162 Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult);
163 CleanupStack::PopAndDestroy(result);
165 DoConstructL(aTestActionSpec);
168 CSWICertStoreTestAction::~CSWICertStoreTestAction()
174 void CSWICertStoreTestAction::PerformAction(TRequestStatus& aStatus)
179 iState = EPerformAction;
180 SWICertStore().List(iCertInfos, *iFilter, aStatus);
185 TInt err = KErrNotFound;
188 CCTCertInfo* certInfo = FindCertificate();
192 DoPerformActionL(*certInfo);
195 TRequestStatus* status = &aStatus;
196 User::RequestComplete(status, err);
202 TRequestStatus* status = &aStatus;
203 User::RequestComplete(status, aStatus.Int());
204 iResult = EFalse; // Must be set in DoCheckResult
211 void CSWICertStoreTestAction::PerformCancel()
216 SWICertStore().CancelList();
229 void CSWICertStoreTestAction::Reset()
235 CCTCertInfo* CSWICertStoreTestAction::FindCertificate()
237 TInt count = iCertInfos.Count();
238 for (TInt i = 0; i < count; i++)
240 CCTCertInfo* info = iCertInfos[i];
241 if (info->Label() == iCertificateLabel)
249 // CGetCapabilitiesAction //////////////////////////////////////////////////////
251 CTestAction* CGetCapabilitiesAction::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut,
252 const TTestActionSpec& aTestActionSpec)
254 CGetCapabilitiesAction* self = new (ELeave) CGetCapabilitiesAction(aFs, aConsole, aOut);
255 CleanupStack::PushL(self);
256 self->ConstructL(aTestActionSpec);
257 CleanupStack::Pop(self);
261 CGetCapabilitiesAction::CGetCapabilitiesAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut)
262 : CSWICertStoreTestAction(aFs, aConsole, aOut)
266 void CGetCapabilitiesAction::DoConstructL(const TTestActionSpec& aTestActionSpec)
268 if (iExpectedResult == KErrNone)
270 Input::ParseCapabilitySetL(aTestActionSpec.iActionResult, iExpectedCapapbilities);
274 void CGetCapabilitiesAction::DoReportAction()
276 iOut.writeString(_L("Getting certificate capabilities, expecting: "));
277 iOut.writeCapabilitySetL(iExpectedCapapbilities);
281 void CGetCapabilitiesAction::DoPerformActionL(CCTCertInfo& aCertInfo)
283 iCapabilities = SWICertStore().CertMetaInfoL(aCertInfo).iCapabilities;
286 void CGetCapabilitiesAction::DoCheckResult(TInt aError)
288 iResult = (aError == iExpectedResult &&
289 iCapabilities == iExpectedCapapbilities);
291 if (aError == KErrNone)
293 iOut.writeString(_L("Certificate has capabilities: "));
294 iOut.writeCapabilitySetL(iCapabilities);
298 void CGetCapabilitiesAction::DoCancel()
302 // CGetMandatoryAction //////////////////////////////////////////////////////
304 CTestAction* CGetMandatoryAction::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut,
305 const TTestActionSpec& aTestActionSpec)
307 CGetMandatoryAction* self = new (ELeave) CGetMandatoryAction(aFs, aConsole, aOut);
308 CleanupStack::PushL(self);
309 self->ConstructL(aTestActionSpec);
310 CleanupStack::Pop(self);
314 CGetMandatoryAction::CGetMandatoryAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut)
315 : CSWICertStoreTestAction(aFs, aConsole, aOut)
319 void CGetMandatoryAction::DoConstructL(const TTestActionSpec& aTestActionSpec)
321 if (iExpectedResult == KErrNone)
323 iExpectedValue = Input::ParseElementBoolL(aTestActionSpec.iActionResult, KMandatoryStart);
327 void CGetMandatoryAction::DoReportAction()
329 iOut.writeString(_L("Getting certificate mandatory flag, expecting: "));
330 iOut.writeBoolL(iExpectedValue);
334 void CGetMandatoryAction::DoPerformActionL(CCTCertInfo& aCertInfo)
336 iValue = SWICertStore().CertMetaInfoL(aCertInfo).iIsMandatory;
339 void CGetMandatoryAction::DoCheckResult(TInt aError)
341 iResult = (aError == iExpectedResult &&
342 iValue == iExpectedValue);
344 if (aError == KErrNone)
346 iOut.writeString(_L("Certificate mandatory flag: "));
347 iOut.writeBoolL(iValue);
351 void CGetMandatoryAction::DoCancel()
355 // CGetSystemUpgradeAction //////////////////////////////////////////////////////
357 CTestAction* CGetSystemUpgradeAction::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut,
358 const TTestActionSpec& aTestActionSpec)
360 CGetSystemUpgradeAction* self = new (ELeave) CGetSystemUpgradeAction(aFs, aConsole, aOut);
361 CleanupStack::PushL(self);
362 self->ConstructL(aTestActionSpec);
363 CleanupStack::Pop(self);
367 CGetSystemUpgradeAction::CGetSystemUpgradeAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut)
368 : CSWICertStoreTestAction(aFs, aConsole, aOut)
372 void CGetSystemUpgradeAction::DoConstructL(const TTestActionSpec& aTestActionSpec)
374 if (iExpectedResult == KErrNone)
376 iExpectedSystemUpgradeValue = Input::ParseElementBoolL(aTestActionSpec.iActionResult, KSystemUpgradeStart);
380 void CGetSystemUpgradeAction::DoReportAction()
382 iOut.writeString(_L("Getting certificate systemupgrade flag, expecting: "));
383 iOut.writeBoolL(iExpectedSystemUpgradeValue);
387 void CGetSystemUpgradeAction::DoPerformActionL(CCTCertInfo& aCertInfo)
389 iSystemUpgradeValue = SWICertStore().CertMetaInfoL(aCertInfo).iIsSystemUpgrade;
392 void CGetSystemUpgradeAction::DoCheckResult(TInt aError)
394 iResult = (aError == iExpectedResult &&
395 iSystemUpgradeValue == iExpectedSystemUpgradeValue);
397 if (aError == KErrNone)
399 iOut.writeString(_L("Certificate systemupgrade flag: "));
400 iOut.writeBoolL(iSystemUpgradeValue);
404 void CGetSystemUpgradeAction::DoCancel()
408 // CGetDeletableAction //////////////////////////////////////////////////////
410 CTestAction* CGetDeletionAction::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut,
411 const TTestActionSpec& aTestActionSpec)
413 CGetDeletionAction* self = new (ELeave) CGetDeletionAction(aFs, aConsole, aOut);
414 CleanupStack::PushL(self);
415 self->ConstructL(aTestActionSpec);
416 CleanupStack::Pop(self);
420 CGetDeletionAction::CGetDeletionAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut)
421 : CSWICertStoreTestAction(aFs, aConsole, aOut)
425 void CGetDeletionAction::DoConstructL(const TTestActionSpec& aTestActionSpec)
427 if (iExpectedResult == KErrNone)
429 iExpectedDeletableValue = Input::ParseElementBoolL(aTestActionSpec.iActionResult, KDeletionStart);
433 void CGetDeletionAction::DoReportAction()
435 iOut.writeString(_L("Getting certificate deletable flag, expecting: "));
436 iOut.writeBoolL(iExpectedDeletableValue);
440 void CGetDeletionAction::DoPerformActionL(CCTCertInfo& aCertInfo)
442 iDeletableValue = aCertInfo.IsDeletable();
445 void CGetDeletionAction::DoCheckResult(TInt aError)
447 iResult = (aError == iExpectedResult &&
448 iDeletableValue == iExpectedDeletableValue);
450 if (aError == KErrNone)
452 iOut.writeString(_L("Certificate Deletable flag: "));
453 iOut.writeBoolL(iDeletableValue);
457 void CGetDeletionAction::DoCancel()
462 // CMultipleReadersAction /////////////////////////////////////////////////////
465 CTestAction* CMultipleReadersAction::NewL(RFs& aFs, CConsoleBase& aConsole, Output& aOut,
466 const TTestActionSpec& aTestActionSpec)
468 CMultipleReadersAction* self = new (ELeave) CMultipleReadersAction(aFs,aConsole, aOut);
469 CleanupStack::PushL(self);
470 self->ConstructL(aTestActionSpec);
471 CleanupStack::Pop(self);
475 CMultipleReadersAction::CMultipleReadersAction(RFs& aFs, CConsoleBase& aConsole, Output& aOut)
476 : CSWICertStoreTestAction(aFs, aConsole, aOut)
480 void CMultipleReadersAction::DoConstructL(const TTestActionSpec& /* aTestActionSpec*/)
484 void CMultipleReadersAction::DoReportAction()
486 iOut.writeString(_L("Checking opening multiple readers works, expecting:"));
487 iOut.writeBoolL(true);
491 void CMultipleReadersAction::DoPerformActionL(CCTCertInfo& /*aCertInfo*/)
493 CSWICertStore* swiCertStore = 0;
495 TRAPD(err, swiCertStore = CSWICertStore::NewL(iFs));
497 if (err == KErrNone && swiCertStore != 0)
499 swiCertStore->Release();
504 void CMultipleReadersAction::DoCheckResult(TInt aError)
506 iResult = (aError == KErrNone &&
510 void CMultipleReadersAction::DoCancel()