os/security/cryptoservices/filebasedcertificateandkeystores/test/keytool/keytool_setpolicy.cpp
First public contribution.
2 * Copyright (c) 2007-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 <mctkeystore.h>
21 #include "keytool_utils.h"
22 #include "keytool_commands.h"
23 #include "keytool_controller.h"
25 #include <keytool.rsg>
28 /*static*/ CKeytoolSetPolicy* CKeytoolSetPolicy::NewLC(CKeyToolController* aController)
30 CKeytoolSetPolicy* self = new (ELeave) CKeytoolSetPolicy(aController);
31 CleanupStack::PushL(self);
36 /*static*/ CKeytoolSetPolicy* CKeytoolSetPolicy::NewL(CKeyToolController* aController)
38 CKeytoolSetPolicy* self = CKeytoolSetPolicy::NewLC(aController);
39 CleanupStack::Pop(self);
43 CKeytoolSetPolicy::CKeytoolSetPolicy(CKeyToolController* aController) : CKeytoolList(aController)
47 CKeytoolSetPolicy::~CKeytoolSetPolicy()
52 void CKeytoolSetPolicy::RunL()
54 if (iStatus.Int() != KErrNone)
56 // A problem occured. Handle gracefully.
57 User::Leave(iStatus.Int());
64 iKey = KeyToolUtils::findKey(iKeys, *iParams->iDefault);
67 TSecureId secureId; // Application secure ID
68 TSecurityPolicy securePolicy;
70 if (iParams->iPolicy == CKeyToolParameters::ESetManagerPolicy)
72 securePolicy = ECapabilityWriteDeviceData;
73 iKeyStore->SetManagementPolicy(iKey->Handle(), securePolicy, iStatus);
77 if (iParams->iPolicy == CKeyToolParameters::ESetUserPolicy)
79 secureId = iParams->iUIDs[idx];
80 securePolicy = secureId;
82 else if (iParams->iPolicy == CKeyToolParameters::ESetAllUsersPolicy)
84 securePolicy = TSecurityPolicy::EAlwaysPass;
86 else if (iParams->iPolicy == CKeyToolParameters::ERemoveUserPolicy)
88 iParams->iUIDs.Close();
89 iParams->iUIDs.Append(TUid::Uid(KUidSecurityKeytool));
90 secureId = iParams->iUIDs[idx];
91 securePolicy = secureId;
95 User::Leave(KErrNotFound); //should not come here
97 iKeyStore->SetUsePolicy(iKey->Handle(), securePolicy, iStatus);
104 User::Leave(KErrNotFound);
110 if (iParams->iPolicy == CKeyToolParameters::ESetManagerPolicy)
112 iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_SMANAGERSUCCESS);
114 else if (iParams->iPolicy == CKeyToolParameters::ESetUserPolicy)
116 iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_SUSERSUCCESS);
118 else if (iParams->iPolicy == CKeyToolParameters::ESetAllUsersPolicy)
120 iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_SALLUSERSSUCCESS);
124 iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_RUSERSUCCESS);
126 CActiveScheduler::Stop();
131 User::Panic(_L("SETUSERS action: Illegal state."), 1);
136 TInt CKeytoolSetPolicy::RunError(TInt aError)
138 CActiveScheduler::Stop();
144 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_NOTFOUND));
147 case KErrAccessDenied :
149 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_ACCESS));
154 if (iParams->iPolicy == CKeyToolParameters::ESetManagerPolicy)
156 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_SMANAGERFAIL, aError));
158 else if (iParams->iPolicy == CKeyToolParameters::ESetUserPolicy)
160 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_SUSERFAIL, aError));
162 else if (iParams->iPolicy == CKeyToolParameters::ESetAllUsersPolicy)
164 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_SALLUSERSFAIL, aError));
168 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_KEYTOOL_ERR_RUSERFAIL, aError));