os/security/cryptoservices/filebasedcertificateandkeystores/test/certtool/certtool_addapps.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 "certtool_commands.h"
20 #include "certtool_controller.h"
21 #include "keytool_utils.h"
23 /*static*/ CCertToolAddApps* CCertToolAddApps::NewLC(CCertToolController* aController)
25 CCertToolAddApps* self = new (ELeave) CCertToolAddApps(aController);
26 CleanupStack::PushL(self);
31 /*static*/ CCertToolAddApps* CCertToolAddApps::NewL(CCertToolController* aController)
33 CCertToolAddApps* self = CCertToolAddApps::NewLC(aController);
34 CleanupStack::Pop(self);
38 CCertToolAddApps::CCertToolAddApps(CCertToolController* aController) : CCertToolList(aController), iCertIndex (-1)
43 CCertToolAddApps::~CCertToolAddApps()
48 void CCertToolAddApps::RunL()
50 if (iStatus.Int() != KErrNone)
52 // A problem occured. Handle gracefully.
53 User::Leave(iStatus.Int());
60 if (iCertInfos.Count()==0)
62 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_EMPTY);
63 CActiveScheduler::Stop();
67 if (iParams->iDefault)
69 // Look for a specific certificate
70 for (TInt j = 0; j < iCertInfos.Count(); j++)
72 if (iCertInfos[j]->Label() == *iParams->iDefault)
81 // Certificate found set app uids!
82 if (iParams->iCertstoreIndex == -1)
84 iParams->iCertstoreIndex = 0;
86 if (iParams->iCertstoreIndex >= iCertStore->CertStoreCount())
88 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_NOTEXIST);
89 User::Leave(KErrArgument);
91 iCertStore->Applications(*iCertInfos[iCertIndex], iApps, iStatus);
97 User::Leave(KErrNotFound);
105 if (iParams->iCertstoreIndex == -1)
107 iParams->iCertstoreIndex = 0;
109 if (iParams->iCertstoreIndex >= iCertStore->CertStoreCount())
111 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_NOTEXIST);
112 User::Leave(KErrArgument);
114 // Check for duplicates
115 for (TInt k = 0; k < iParams->iUIDs.Count(); k++)
117 if (iApps.Find(iParams->iUIDs[k]) != KErrNotFound)
120 const TDesC& tmp = KeyToolUtils::Uid2Des(iParams->iUIDs[k]);
121 msg.Format(_L("The certificate is already trusted for application %S."), &tmp);
122 iController->DisplayErrorL(msg, iParams->iPageWise);
123 User::Leave(KErrArgument);
127 // add the apps to the array
128 for (TInt j = 0; j < iApps.Count(); j++)
130 iParams->iUIDs.Append(iApps[j]);
132 if(iCertInfos[iCertIndex]->CertificateOwnerType() == ECACertificate)
140 iCertStore->SetApplicability(*iCertInfos[iCertIndex], iParams->iUIDs, iStatus);
147 const TBool caCert = ETrue;
148 iCertStore->SetTrust(*iCertInfos[iCertIndex],caCert,iStatus);
155 iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_ADDAPPS_SUCCESS);
156 CActiveScheduler::Stop();
161 User::Panic(_L("ADDAPPS action: Illegal state."), 1);
166 TInt CCertToolAddApps::RunError(TInt aError)
168 CActiveScheduler::Stop();
174 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_NOTFOUND));
175 TRAP_IGNORE(iController->DisplayErrorL(_L("\n"), iParams->iPageWise));
180 TRAP_IGNORE(iController->DisplayLocalisedMsgL(R_CERTTOOL_ERR_ADDAPPS_FAIL));
181 TRAP_IGNORE(iController->DisplayErrorL(_L("\n"), iParams->iPageWise));