os/security/cryptoservices/filebasedcertificateandkeystores/test/tkeystore/t_authenticationpolicy.cpp
Update contrib.
2 * Copyright (c) 2003-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.
19 #include <unifiedkeystore.h>
21 #include "t_keystore_actions.h"
22 #include "t_keystore_defs.h"
26 const TInt KKeyStoreEmpty = -1199;
27 _LIT(KEllipsis, "...");
29 /////////////////////////////////////////////////////////////////////////////////
30 // CAuthenticationPolicy
31 /////////////////////////////////////////////////////////////////////////////////
33 CTestAction* CAuthenticationPolicy::NewL(RFs& aFs,
34 CConsoleBase& aConsole,
36 const TTestActionSpec& aTestActionSpec)
38 CTestAction* self = CAuthenticationPolicy::NewLC(aFs, aConsole, aOut, aTestActionSpec);
39 CleanupStack::Pop(self);
43 CTestAction* CAuthenticationPolicy::NewLC(RFs& aFs,
44 CConsoleBase& aConsole,
46 const TTestActionSpec& aTestActionSpec)
48 CAuthenticationPolicy* self = new (ELeave) CAuthenticationPolicy(aFs, aConsole, aOut);
49 CleanupStack::PushL(self);
50 self->ConstructL(aTestActionSpec);
54 CAuthenticationPolicy::~CAuthenticationPolicy()
58 CAuthenticationPolicy::CAuthenticationPolicy(RFs& aFs, CConsoleBase& aConsole, Output& aOut) :
59 CKeyStoreTestAction(aFs, aConsole, aOut), iState(EInit)
63 void CAuthenticationPolicy::ConstructL(const TTestActionSpec& aTestActionSpec)
65 CKeyStoreTestAction::ConstructL(aTestActionSpec);
67 iMode.Copy(Input::ParseElement(aTestActionSpec.iActionBody, KAuthModeStart, KAuthModeEnd));
69 if(iMode.Compare(_L8("get")) == 0)
71 iExpectedExpression.Copy(Input::ParseElement(aTestActionSpec.iActionBody, KExpectedExpressionStart, KExpectedExpressionEnd));
72 iExpectedFreshness = Input::ParseIntElement(aTestActionSpec.iActionBody, KExpectedFreshnessStart, KExpectedFreshnessEnd);
77 void CAuthenticationPolicy::PerformAction(TRequestStatus& aStatus)
83 CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
85 iFilter.iUsage = EPKCS15UsageAll;
86 keyStore->List(iKeys, iFilter, aStatus);
99 TCTTokenObjectHandle keyHandle;
100 if (iKeys.Count() == 0)
102 iConsole.Printf(_L("keyStore empty!!"));
104 TRequestStatus *status = &aStatus;
105 User::RequestComplete(status, KKeyStoreEmpty);
109 // Select the key with the label we want!
110 for (TInt j = 0; j < iKeys.Count(); j++)
112 if (iKeys[j]->Label() == *iLabel)
114 keyHandle = iKeys[j]->Handle();
118 if(keyHandle.iObjectId == 0)
120 iConsole.Printf(_L("No keys with matching label!!"));
122 TRequestStatus *status = &aStatus;
123 User::RequestComplete(status, KErrNotFound);
127 CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
128 if(iMode.Compare(_L8("set")) == 0)
130 keyStore->SetAuthenticationPolicy(keyHandle, *iAuthExpression, iFreshness, aStatus);
133 else if(iMode.Compare(_L8("get")) == 0)
137 delete iAuthExpression;
138 iAuthExpression = NULL;
140 iAuthExpression = HBufC::NewL(1024);
141 keyStore->GetAuthenticationPolicy(keyHandle, iAuthExpression, iFreshness, aStatus);
142 iState = EGetAuthenticationPolicy;
146 iConsole.Printf(_L("Invalid Mode"));
148 TRequestStatus *status = &aStatus;
149 User::RequestComplete(status, aStatus.Int());
155 iConsole.Printf(_L("keyStore->ExportKey returned: %d\n"), aStatus.Int());
157 TRequestStatus *status = &aStatus;
158 User::RequestComplete(status, aStatus.Int());
164 case EGetAuthenticationPolicy:
165 switch(aStatus.Int())
170 HBufC* expectedExpr = HBufC::NewL(iExpectedExpression.Length());
171 expectedExpr->Des().Copy(iExpectedExpression);
172 if(iAuthExpression->Des().Compare(*expectedExpr) != 0 ||
173 iFreshness != iExpectedFreshness)
177 iConsole.Printf(_L("Authentication policy returned: %S, %d\n"), iAuthExpression, iFreshness);
180 delete iAuthExpression;
181 iAuthExpression = NULL;
182 TRequestStatus *status = &aStatus;
183 User::RequestComplete(status, err);
188 iConsole.Printf(_L("Setting Authentication policy returned: %d\n"), aStatus.Int());
190 TRequestStatus *status = &aStatus;
191 User::RequestComplete(status, aStatus.Int());
198 TRequestStatus* status = &aStatus;
199 User::RequestComplete(status, aStatus.Int());
200 if (aStatus == iExpectedResult)
209 iActionState = EPostrequisite;
214 break; // Nothing to do, for the compiler
218 void CAuthenticationPolicy::PerformCancel()
220 if (iState == EFinished)
222 CUnifiedKeyStore* keyStore = CSharedKeyStores::TheUnifiedKeyStores().operator[](iKeystore);
226 void CAuthenticationPolicy::Reset()
231 void CAuthenticationPolicy::DoReportAction()
233 if(iMode.Compare(_L8("set")) == 0)
235 _LIT(KSet, "Setting authentication policy...");
236 iOut.writeString(KSet);
238 else if(iMode.Compare(_L8("get")) == 0)
240 _LIT(KGet, "Getting authentication policy...");
241 iOut.writeString(KGet);
244 iOut.writeString(iLabel->Left(32));
245 if (iLabel->Length() > 32)
247 iOut.writeString(KEllipsis);
254 void CAuthenticationPolicy::DoCheckResult(TInt aError)
258 if (aError == KErrNone)
260 _LIT(KSuccessful, "Operation Successfull\n");
261 iConsole.Write(KSuccessful);
262 iOut.writeString(KSuccessful);
268 if (aError!=iExpectedResult)
270 _LIT(KFailed, "!!!Operation Failed!!!\n");
271 iConsole.Write(KFailed);
272 iOut.writeString(KFailed);
276 _LIT(KFailed, "Operation failed, but expected\n");
277 iConsole.Write(KFailed);
278 iOut.writeString(KFailed);