sl@0: /* sl@0: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: /** sl@0: @file sl@0: */ sl@0: sl@0: #include "t_unifiedcertstoreremove.h" sl@0: #include "t_certstoredefs.h" sl@0: #include "t_input.h" sl@0: #include "t_certstoreout.h" sl@0: #include sl@0: sl@0: sl@0: ///////////////////////////////////////////////////////////////////////////////// sl@0: //CDeleteCertificate sl@0: ///////////////////////////////////////////////////////////////////////////////// sl@0: sl@0: sl@0: CTestAction* CDeleteCertificate::NewL(RFs& aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CDeleteCertificate* self = new(ELeave) CDeleteCertificate(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CDeleteCertificate::CDeleteCertificate(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: : CSubscriberAction(aFs, aConsole, aOut), iState(EIdle),iCertDeleteType(NULL) sl@0: { sl@0: } sl@0: sl@0: void CDeleteCertificate::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: if (aStatus != KErrNone) sl@0: { sl@0: iState = EFinished; sl@0: } sl@0: sl@0: switch (iState) sl@0: { sl@0: case EIdle: sl@0: //get the certs sl@0: if (iCertInfos.Count() > 0) sl@0: { sl@0: iCertInfos.Close(); // JCS added for multiple delete case sl@0: } sl@0: sl@0: iState = EGettingCerts; sl@0: //get the certs sl@0: GetCerts(aStatus); sl@0: break; sl@0: sl@0: case EGettingCerts: sl@0: { sl@0: if (iNotificationSubscribed) sl@0: { sl@0: if (!iNotifier) sl@0: { sl@0: iNotifier = CCertStoreChangeNotifier::NewL(iNotifierFlag); sl@0: iNotifier->StartNotification(); sl@0: } sl@0: iState = ECheckNotification; sl@0: } sl@0: else sl@0: { sl@0: iState = EFinished; sl@0: } sl@0: DeleteCert(aStatus); sl@0: } sl@0: break; sl@0: sl@0: case ECheckNotification: sl@0: { sl@0: iState = EFinished; sl@0: if (iNotifierFlag) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, KErrNone); sl@0: } sl@0: else sl@0: { sl@0: iNotifier->SetCompleteStatus(&aStatus); sl@0: } sl@0: } sl@0: sl@0: break; sl@0: sl@0: case EFinished: sl@0: { sl@0: if (aStatus == iExpectedResult) sl@0: { sl@0: iResult = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = EIdle; sl@0: } sl@0: else sl@0: { sl@0: iFinished = ETrue; sl@0: } sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, aStatus.Int()); sl@0: } sl@0: break; sl@0: sl@0: default: sl@0: User::Invariant(); sl@0: } sl@0: } sl@0: sl@0: void CDeleteCertificate::PerformCancel() sl@0: { sl@0: switch (iState) sl@0: { sl@0: case EGettingCerts: sl@0: CertStore().CancelList(); sl@0: break; sl@0: case ECheckNotification: sl@0: case EIdle: sl@0: case EFinished: sl@0: // We /may/ be deleting a cert in these states - fortunately cancel is lenient sl@0: UnifiedCertStore().CancelRemove(); sl@0: break; sl@0: sl@0: default: sl@0: User::Invariant(); sl@0: } sl@0: } sl@0: sl@0: void CDeleteCertificate::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CSubscriberAction::ConstructL(aTestActionSpec); sl@0: sl@0: iFilter = CCertAttributeFilter::NewL(); sl@0: TInt pos = 0; sl@0: TInt err1 = KErrNone; sl@0: sl@0: TPtrC8 pLabel1 = Input::ParseElement(aTestActionSpec.iActionBody, KCertTypeStart, KCertTypeEnd, pos, err1); sl@0: sl@0: if(err1 == KErrNone) sl@0: { sl@0: iCertDeleteType = HBufC8::NewL(pLabel1.Size()); sl@0: *iCertDeleteType = pLabel1; sl@0: } sl@0: sl@0: pos=0; sl@0: TInt err2 = KErrNone; sl@0: TPtrC8 pLabel2 = Input::ParseElement(aTestActionSpec.iActionBody, KCertLabelStart, KCertLabelEnd, pos, err2); sl@0: if (err2 != KErrNone) sl@0: { sl@0: User::Leave(err2); sl@0: } sl@0: sl@0: iCertLabel.Copy(pLabel2); sl@0: if (iCertLabel.Compare(_L("*.*"))==0) // delete all certs sl@0: {// Check that the flag has been set sl@0: TPtrC8 pDeleteAll = Input::ParseElement(aTestActionSpec.iActionBody, KDeleteAllStart, KDeleteAllEnd, pos, err1); sl@0: if (pDeleteAll!=KNullDesC8) sl@0: { sl@0: TLex8 lexer(pDeleteAll); sl@0: TInt boolVal = 0; sl@0: lexer.Val(boolVal); sl@0: iDeleteAllCerts = (boolVal > 0) ? ETrue : EFalse; sl@0: } sl@0: } sl@0: else if( err1 != KErrNone && err1 != KErrNotFound) sl@0: { sl@0: User::Leave(err1); sl@0: } sl@0: sl@0: // Set expected result sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: } sl@0: sl@0: void CDeleteCertificate::GetCerts(TRequestStatus& aStatus) sl@0: { sl@0: CertStore().List(iCertInfos, *iFilter, aStatus); sl@0: } sl@0: sl@0: CDeleteCertificate::~CDeleteCertificate() sl@0: { sl@0: delete iCertDeleteType; sl@0: iCertInfos.Close(); sl@0: delete iFilter; sl@0: } sl@0: sl@0: void CDeleteCertificate::DeleteCert(TRequestStatus& aStatus) sl@0: { sl@0: TInt ix = KErrNotFound; sl@0: TInt count = iCertInfos.Count(); sl@0: for (TInt i = count-1; i >= 0 ; i--) sl@0: { sl@0: if (iDeleteAllCerts) sl@0: {// Just delete the first one we come across sl@0: if (i>=0) // Still some certificates to delete sl@0: { // Set the state back to continue sl@0: iState = EIdle; sl@0: } sl@0: sl@0: ix = i; sl@0: break; sl@0: } sl@0: // Only delete if there's a label match and the certificate is of specified type sl@0: else if (iCertInfos[i]->Label() == iCertLabel && CheckCertType(*iCertInfos[i]) ) sl@0: { sl@0: ix = i; sl@0: break; sl@0: } sl@0: } sl@0: sl@0: TRequestStatus* status = &aStatus; sl@0: if (ix == KErrNotFound) sl@0: { sl@0: TInt result = KErrNone; sl@0: sl@0: if(iDeleteAllCerts) sl@0: result = KErrNone; sl@0: else if(iCertDeleteType == NULL) sl@0: result = KErrNotSupported; sl@0: else sl@0: result = KErrNotFound; sl@0: sl@0: User::RequestComplete(status, result); sl@0: } sl@0: else sl@0: { sl@0: iCertInfoToDelete = iCertInfos[ix]; sl@0: UnifiedCertStore().Remove(*iCertInfos[ix], aStatus); sl@0: } sl@0: } sl@0: sl@0: TBool CDeleteCertificate::CheckCertType( CCTCertInfo& aCertInfo ) sl@0: { sl@0: if(iCertDeleteType == NULL) sl@0: return EFalse; sl@0: sl@0: TBool returnValue = EFalse; sl@0: switch(aCertInfo.CertificateOwnerType()) sl@0: { sl@0: case ECACertificate: sl@0: if(iCertDeleteType->Compare(KCACert) == 0 ) sl@0: returnValue = ETrue; sl@0: break; sl@0: case EUserCertificate: sl@0: if(iCertDeleteType->Compare(KUserCert) == 0 ) sl@0: returnValue = ETrue; sl@0: break; sl@0: case EPeerCertificate: sl@0: if(iCertDeleteType->Compare(KPeerCert) == 0 ) sl@0: returnValue = ETrue; sl@0: break; sl@0: } sl@0: return returnValue; sl@0: } sl@0: sl@0: void CDeleteCertificate::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Deleting certificate...")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeString(_L("\tLabel = ")); sl@0: iOut.writeString(iCertLabel); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CDeleteCertificate::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: if (aError == KErrNone && iCertInfoToDelete) sl@0: { sl@0: switch (iCertInfoToDelete->CertificateOwnerType()) sl@0: { sl@0: case ECACertificate: sl@0: iConsole.Write(_L("\tCA certificate deleted successfully\n")); sl@0: iOut.writeString(_L("\tCA certificate deleted successfully")); sl@0: break; sl@0: sl@0: case EUserCertificate: sl@0: iConsole.Write(_L("\tUser certificate deleted successfully\n")); sl@0: iOut.writeString(_L("\tUser certificate deleted successfully")); sl@0: break; sl@0: sl@0: case EPeerCertificate: sl@0: iConsole.Write(_L("\tPeer certificate deleted successfully\n")); sl@0: iOut.writeString(_L("\tPeer certificate deleted successfully")); sl@0: break; sl@0: default: sl@0: iConsole.Write(_L("\tUnknown owner certificate deleted successfully\n")); sl@0: iOut.writeString(_L("\tUnknown owner certificate deleted successfully")); sl@0: break; sl@0: } sl@0: } sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: sl@0: void CDeleteCertificate::Reset() sl@0: { sl@0: iState = EIdle; sl@0: iCertInfos.Close(); sl@0: } sl@0: sl@0: sl@0: ///////////////////////////////////////////////////////////////////////////////// sl@0: //CDeleteRetrieveCertificate sl@0: ///////////////////////////////////////////////////////////////////////////////// sl@0: CDeleteRetrieveCertificate::CDeleteRetrieveCertificate(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: : CSubscriberAction(aFs, aConsole, aOut), iState(EIdle) sl@0: { sl@0: } sl@0: sl@0: void CDeleteRetrieveCertificate::PerformAction(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: switch (iState) sl@0: { sl@0: case EIdle: sl@0: //get the certs sl@0: iState = EDeletingCert; sl@0: //get the certs sl@0: GetCerts(aStatus); sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = EFinished; sl@0: } sl@0: break; sl@0: sl@0: case EDeletingCert: sl@0: { sl@0: if (iNotificationSubscribed) sl@0: { sl@0: iNotifier = CCertStoreChangeNotifier::NewL(iNotifierFlag); sl@0: iNotifier->StartNotification(); sl@0: iState = ECheckNotification; sl@0: } sl@0: else sl@0: { sl@0: iState = EGettingCerts; sl@0: } sl@0: //delete the cert sl@0: DeleteCert(aStatus); sl@0: break; sl@0: } sl@0: sl@0: case ECheckNotification: sl@0: { sl@0: TInt ret=KErrNone; sl@0: if (!iNotifierFlag) sl@0: { sl@0: ret=KErrGeneral; sl@0: } sl@0: if (ret!=KErrNone) sl@0: { sl@0: iState = EFinished; sl@0: } sl@0: else sl@0: { sl@0: iState = EGettingCerts; sl@0: } sl@0: TRequestStatus* status = &aStatus; sl@0: User::RequestComplete(status, ret); sl@0: } sl@0: break; sl@0: case EGettingCerts: sl@0: { sl@0: iState = EFinished; sl@0: //get the cert sl@0: RetrieveCerts(aStatus); sl@0: break; sl@0: } sl@0: case EFinished: sl@0: { sl@0: if (aStatus == iExpectedResult) sl@0: { sl@0: iResult = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iResult = EFalse; sl@0: } sl@0: if (aStatus == KErrNoMemory) sl@0: { sl@0: iState = EIdle; sl@0: } sl@0: else sl@0: { sl@0: iFinished = ETrue; sl@0: } sl@0: User::RequestComplete(status, aStatus.Int()); sl@0: } sl@0: break; sl@0: default: sl@0: { sl@0: //some kind of error behaviour sl@0: } sl@0: } sl@0: } sl@0: sl@0: void CDeleteRetrieveCertificate::PerformCancel() sl@0: { sl@0: } sl@0: sl@0: void CDeleteRetrieveCertificate::Reset() sl@0: { sl@0: __ASSERT_DEBUG(EFalse, User::Panic(_L("CDeleteRetrieveCertificate::Reset()"), 1)); sl@0: } sl@0: sl@0: //////////////////////////////////////////////////////////////////////////////// sl@0: //CDeleteCACertificate sl@0: ////////////////////////////////////////////////////////////////////////////////// sl@0: sl@0: CTestAction* CDeleteRetrieveCACertificate::NewL(RFs& aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CDeleteRetrieveCACertificate* self = sl@0: new(ELeave) CDeleteRetrieveCACertificate(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CDeleteRetrieveCACertificate::CDeleteRetrieveCACertificate(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: :CDeleteRetrieveCertificate(aFs, aConsole, aOut) sl@0: { sl@0: } sl@0: sl@0: void CDeleteRetrieveCACertificate::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CSubscriberAction::ConstructL(aTestActionSpec); sl@0: iCertlisted = new(ELeave) RPointerArray; sl@0: iFilter = CCertAttributeFilter::NewL(); sl@0: TInt pos = 0; sl@0: TInt err = KErrNone; sl@0: TPtrC8 pLabel = Input::ParseElement(aTestActionSpec.iActionBody, KCertLabelStart, KCertLabelEnd, pos, err); sl@0: if (err != KErrNone) sl@0: { sl@0: User::Leave(err); sl@0: } sl@0: iCertLabel.Copy(pLabel); sl@0: sl@0: // Set expected result sl@0: pos = 0; sl@0: sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: } sl@0: sl@0: void CDeleteRetrieveCACertificate::GetCerts(TRequestStatus& aStatus) sl@0: { sl@0: CertStore().List(iCertInfos, *iFilter, aStatus); sl@0: } sl@0: sl@0: void CDeleteRetrieveCACertificate::RetrieveCerts(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: TInt ix = KErrNotFound; sl@0: TInt count = iCertInfos.Count(); sl@0: for (TInt i = 0; i < count; i++) sl@0: { sl@0: if (iCertInfos[i]->Label() == iCertLabel) sl@0: { sl@0: ix = i; sl@0: break; sl@0: } sl@0: } sl@0: if (ix == KErrNotFound) sl@0: { sl@0: User::RequestComplete(status, ix); sl@0: } sl@0: else sl@0: { sl@0: iCertInfoToRetrieve = iCertInfos[ix]; sl@0: sl@0: HBufC8* buf = HBufC8::NewLC(iCertInfoToRetrieve->Size()); sl@0: User::LeaveIfError(iCertlisted->Append(buf)); sl@0: CleanupStack::Pop();//buf sl@0: __ASSERT_DEBUG(!iBuf, User::Panic(_L("CListCACertificates"), 1)); sl@0: iBuf = new(ELeave) TPtr8(buf->Des()); sl@0: CertStore().Retrieve(*iCertInfoToRetrieve, *iBuf, aStatus); sl@0: } sl@0: } sl@0: sl@0: CDeleteRetrieveCACertificate::~CDeleteRetrieveCACertificate() sl@0: { sl@0: iCertInfos.Close(); sl@0: delete iFilter; sl@0: if (iCertlisted) sl@0: { sl@0: iCertlisted->ResetAndDestroy(); sl@0: delete iCertlisted; sl@0: } sl@0: delete iBuf; sl@0: } sl@0: sl@0: void CDeleteRetrieveCACertificate::DeleteCert(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: TInt ix = KErrNotFound; sl@0: TInt count = iCertInfos.Count(); sl@0: for (TInt i = 0; i < count; i++) sl@0: { sl@0: if (iCertInfos[i]->Label() == iCertLabel) sl@0: { sl@0: ix = i; sl@0: break; sl@0: } sl@0: } sl@0: if (ix == KErrNotFound) sl@0: { sl@0: User::RequestComplete(status, ix); sl@0: } sl@0: else sl@0: { sl@0: iCertInfoToDelete = iCertInfos[ix]; sl@0: UnifiedCertStore().Remove(*iCertInfoToDelete, aStatus); sl@0: } sl@0: } sl@0: sl@0: void CDeleteRetrieveCACertificate::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Deleting certificate...")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeString(_L("\tLabel = ")); sl@0: iOut.writeString(iCertLabel); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CDeleteRetrieveCACertificate::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: if (aError == KErrNone && iResult) sl@0: { sl@0: switch (iCertInfoToDelete->CertificateOwnerType()) sl@0: { sl@0: case ECACertificate: sl@0: iConsole.Write(_L("\tCA certificate deleted successfully\n")); sl@0: iOut.writeString(_L("\tCA certificate deleted successfully")); sl@0: break; sl@0: sl@0: case EUserCertificate: sl@0: iConsole.Write(_L("\tUser certificate deleted successfully\n")); sl@0: iOut.writeString(_L("\tUser certificate deleted successfully")); sl@0: break; sl@0: sl@0: default: sl@0: iConsole.Write(_L("\tUnknown owner certificate deleted successfully\n")); sl@0: iOut.writeString(_L("\tUnknown owner certificate deleted successfully")); sl@0: break; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: if (iResult) sl@0: { sl@0: iConsole.Write(_L("\tCA OK\n")); sl@0: iOut.writeString(_L("\tCA OK")); sl@0: } sl@0: } sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: sl@0: //////////////////////////////////////////////////////////////////////////////// sl@0: //CDeleteUserCertificate sl@0: ////////////////////////////////////////////////////////////////////////////////// sl@0: CTestAction* CDeleteRetrieveUserCertificate::NewL(RFs& aFs, sl@0: CConsoleBase& aConsole, sl@0: Output& aOut, sl@0: const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CDeleteRetrieveUserCertificate* self = sl@0: new(ELeave) CDeleteRetrieveUserCertificate(aFs, aConsole, aOut); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aTestActionSpec); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: CDeleteRetrieveUserCertificate::CDeleteRetrieveUserCertificate(RFs& aFs, CConsoleBase& aConsole, sl@0: Output& aOut) sl@0: :CDeleteRetrieveCertificate(aFs, aConsole, aOut) sl@0: { sl@0: } sl@0: sl@0: void CDeleteRetrieveUserCertificate::ConstructL(const TTestActionSpec& aTestActionSpec) sl@0: { sl@0: CSubscriberAction::ConstructL(aTestActionSpec); sl@0: iCertlisted = new(ELeave) RPointerArray; sl@0: iFilter = CCertAttributeFilter::NewL(); sl@0: TInt pos = 0; sl@0: TInt err = KErrNone; sl@0: TPtrC8 pLabel = Input::ParseElement(aTestActionSpec.iActionBody, KCertLabelStart, KCertLabelEnd, pos, err); sl@0: if (err != KErrNone) sl@0: { sl@0: User::Leave(err); sl@0: } sl@0: iCertLabel.Copy(pLabel); sl@0: sl@0: // Set expected result sl@0: HBufC* result = HBufC::NewLC(aTestActionSpec.iActionResult.Length()); sl@0: TPtr(result->Des()).Copy(aTestActionSpec.iActionResult); sl@0: Input::GetExpectedResultL(Input::ParseElement(*result, KReturnStart, KReturnEnd), iExpectedResult); sl@0: CleanupStack::PopAndDestroy(result); sl@0: } sl@0: sl@0: void CDeleteRetrieveUserCertificate::GetCerts(TRequestStatus& aStatus) sl@0: { sl@0: CertStore().List(iCertInfos, *iFilter, aStatus); sl@0: } sl@0: sl@0: void CDeleteRetrieveUserCertificate::RetrieveCerts(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: TInt ix = KErrNotFound; sl@0: TInt count = iCertInfos.Count(); sl@0: for (TInt i = 0; i < count; i++) sl@0: { sl@0: if (iCertInfos[i]->Label() == iCertLabel) sl@0: { sl@0: ix = i; sl@0: break; sl@0: } sl@0: } sl@0: if (ix == KErrNotFound) sl@0: { sl@0: User::RequestComplete(status, ix); sl@0: } sl@0: else sl@0: { sl@0: iCertInfoToRetrieve = iCertInfos[ix]; sl@0: sl@0: HBufC8* buf = HBufC8::NewLC(iCertInfoToRetrieve->Size()); sl@0: User::LeaveIfError(iCertlisted->Append(buf)); sl@0: CleanupStack::Pop();//buf sl@0: //__ASSERT_DEBUG(!iBuf, User::Panic(_L("CListCACertificates"), 1)); sl@0: iBuf = new(ELeave) TPtr8(buf->Des()); sl@0: CertStore().Retrieve(*iCertInfoToRetrieve, *iBuf, aStatus); sl@0: } sl@0: } sl@0: sl@0: CDeleteRetrieveUserCertificate::~CDeleteRetrieveUserCertificate() sl@0: { sl@0: iCertInfos.Close(); sl@0: delete iFilter; sl@0: if (iCertlisted) sl@0: { sl@0: iCertlisted->ResetAndDestroy(); sl@0: delete iCertlisted; sl@0: } sl@0: delete iBuf; sl@0: } sl@0: sl@0: void CDeleteRetrieveUserCertificate::DeleteCert(TRequestStatus& aStatus) sl@0: { sl@0: TRequestStatus* status = &aStatus; sl@0: TInt ix = KErrNotFound; sl@0: TInt count = iCertInfos.Count(); sl@0: for (TInt i = 0; i < count; i++) sl@0: { sl@0: if (iCertInfos[i]->Label() == iCertLabel) sl@0: { sl@0: ix = i; sl@0: break; sl@0: } sl@0: } sl@0: if (ix == KErrNotFound) sl@0: { sl@0: User::RequestComplete(status, ix); sl@0: } sl@0: else sl@0: { sl@0: CCTCertInfo* certInfo = iCertInfos[ix]; sl@0: UnifiedCertStore().Remove(*certInfo, aStatus); sl@0: } sl@0: } sl@0: sl@0: void CDeleteRetrieveUserCertificate::DoReportAction() sl@0: { sl@0: iOut.writeString(_L("Deleting user certificate...")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeString(_L("\tLabel = ")); sl@0: iOut.writeString(iCertLabel); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: sl@0: void CDeleteRetrieveUserCertificate::DoCheckResult(TInt aError) sl@0: { sl@0: if (iFinished) sl@0: { sl@0: if (aError == KErrNone && iResult) sl@0: { sl@0: iConsole.Write(_L("\tuser cert deleted successfully\n")); sl@0: iOut.writeString(_L("\tuser cert deleted successfully")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: else sl@0: { sl@0: if (iResult) sl@0: { sl@0: iConsole.Write(_L("\tnot retrieved but expected\n")); sl@0: iOut.writeString(_L("\tCA OK")); sl@0: } sl@0: else sl@0: { sl@0: iConsole.Write(_L("\tuser cert deleted successfully\n")); sl@0: iOut.writeString(_L("\tuser cert deleted successfully")); sl@0: iOut.writeNewLine(); sl@0: iOut.writeNewLine(); sl@0: } sl@0: } sl@0: } sl@0: }