os/security/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_removeapps.cpp
First public contribution.
2 * Copyright (c) 2004-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 <mctwritablecertstore.h>
21 #include "certtool_commands.h"
22 #include "certtool_controller.h"
24 #include "keytool_utils.h"
26 /*static*/ CCertToolRemoveApps* CCertToolRemoveApps::NewLC(CCertToolController* aController)
28 CCertToolRemoveApps* self = new (ELeave) CCertToolRemoveApps(aController);
29 CleanupStack::PushL(self);
34 /*static*/ CCertToolRemoveApps* CCertToolRemoveApps::NewL(CCertToolController* aController)
36 CCertToolRemoveApps* self = CCertToolRemoveApps::NewLC(aController);
37 CleanupStack::Pop(self);
41 CCertToolRemoveApps::CCertToolRemoveApps(CCertToolController* aController) : CCertToolList(aController)
46 CCertToolRemoveApps::~CCertToolRemoveApps()
51 void CCertToolRemoveApps::RunL()
53 if (iStatus.Int() != KErrNone)
55 // A problem occured. Handle gracefully.
56 User::Leave(iStatus.Int());
62 if (iCertInfos.Count()==0)
64 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_EMPTY);
65 CActiveScheduler::Stop();
69 if (iParams->iDefault)
71 // Look for a specific certificate
73 for (TInt j = 0; j < iCertInfos.Count(); j++)
75 if (iCertInfos[j]->Label() == *iParams->iDefault)
85 // Certificate found set app uids!
86 if (iParams->iCertstoreIndex == -1)
88 iParams->iCertstoreIndex = 0;
90 if (iParams->iCertstoreIndex >= iCertStore->CertStoreCount())
92 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_NOTEXIST);
93 User::Leave(KErrArgument);
95 iCertStore->Applications(*iCertInfos[iIndex], iApps, iStatus);
101 User::Leave(KErrNotFound);
110 if (iParams->iCertstoreIndex == -1)
112 iParams->iCertstoreIndex = 0;
114 if (iParams->iCertstoreIndex >= iCertStore->CertStoreCount())
116 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_NOTEXIST);
117 User::Leave(KErrArgument);
120 // Check for duplicates
121 for (TInt k = 0; k < iParams->iUIDs.Count(); k++)
123 TInt idx = iApps.Find(iParams->iUIDs[k]);
124 if ( idx == KErrNotFound)
128 const TDesC& tmp = KeyToolUtils::Uid2Des(iParams->iUIDs[k]);
129 msg.Format(_L("The certificate wan not trusted for application %S."), &tmp);
130 iController->DisplayErrorL(msg, iParams->iPageWise);
138 if (failCount == iParams->iUIDs.Count())
140 CActiveScheduler::Stop();
145 iCertStore->SetApplicability(*iCertInfos[iIndex], iApps, iStatus);
152 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_REMOVEAPPS_SUCCESS);
153 CActiveScheduler::Stop();
158 User::Panic(_L("REMOVEAPPS action: Illegal state."), 1);
164 TInt CCertToolRemoveApps::RunError(TInt aError)
166 CActiveScheduler::Stop();
172 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_NOTFOUND));
173 TRAP_IGNORE(iController->DisplayErrorL(_L("\n"), iParams->iPageWise));
178 TRAP_IGNORE(iController->DisplayErrorL(_L("RemoveApps: Unknown error. "), aError));
179 TRAP_IGNORE(iController->DisplayErrorL(_L("\n"), iParams->iPageWise));