installationservices/swi/source/securitymanager/securitymanager.cpp
branchRCL_3
changeset 26 8b7f4e561641
parent 25 7333d7932ef7
equal deleted inserted replaced
25:7333d7932ef7 26:8b7f4e561641
     1 /*
     1 /*
     2 * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of the License "Eclipse Public License v1.0"
     5 * under the terms of the License "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    39 #include "swi/sisinstallblock.h"
    39 #include "swi/sisinstallblock.h"
    40 #include "swi/sistruststatus.h"
    40 #include "swi/sistruststatus.h"
    41 #include "hashcontainer.h"
    41 #include "hashcontainer.h"
    42 #include "certchainconstraints.h"
    42 #include "certchainconstraints.h"
    43 #include "devinfosupportclient.h"
    43 #include "devinfosupportclient.h"
    44 
    44 #include "cleanuputils.h"
    45 #include "log.h"
    45 #include "log.h"
    46 
    46 
    47 // PKIX dependencies
    47 // PKIX dependencies
    48 #include <pkixcertchain.h>
    48 #include <pkixcertchain.h>
    49 #include <x509keys.h> 
    49 #include <x509keys.h> 
   709 											 TRevocationDialogMessage* aRevocationMessageOut, 
   709 											 TRevocationDialogMessage* aRevocationMessageOut, 
   710 											 RPointerArray<TOCSPOutcome>& aOcspOutcomeOut, 
   710 											 RPointerArray<TOCSPOutcome>& aOcspOutcomeOut, 
   711 											 RPointerArray<CX509Certificate>& aCertOut,
   711 											 RPointerArray<CX509Certificate>& aCertOut,
   712 											 TRequestStatus& aStatus)
   712 											 TRequestStatus& aStatus)
   713 	{	
   713 	{	
       
   714 	CleanupResetAndDestroyPushL(aCertOut);
   714 	Cancel();
   715 	Cancel();
   715 	
   716 	
   716 	DEBUG_PRINTF2(_L8("Security Manager - Performing OCSP with revocation server at %S."),
   717 	DEBUG_PRINTF2(_L8("Security Manager - Performing OCSP with revocation server at %S."),
   717 		&aOcspUri);
   718 		&aOcspUri);
   718 
   719 
   725  		{
   726  		{
   726  		CX509Certificate* certOut = CX509Certificate::NewLC(iValidPkixChains[index]->Cert(0));
   727  		CX509Certificate* certOut = CX509Certificate::NewLC(iValidPkixChains[index]->Cert(0));
   727  		aCertOut.AppendL(certOut);
   728  		aCertOut.AppendL(certOut);
   728  		CleanupStack::Pop(certOut);
   729  		CleanupStack::Pop(certOut);
   729  		}
   730  		}
   730  		
   731  	
   731  	DEBUG_PRINTF2(_L8("Security Manager - Validating %d certificate chains for this controller."), numChains);
   732  	DEBUG_PRINTF2(_L8("Security Manager - Validating %d certificate chains for this controller."), numChains);
   732 
   733 
   733 	iClientStatus = &aStatus;
   734 	iClientStatus = &aStatus;
   734 	*iClientStatus = KRequestPending;
   735 	*iClientStatus = KRequestPending;
   735 
   736 
   746 	iRevocationHandler->SetDefaultURIL(aOcspUri);
   747 	iRevocationHandler->SetDefaultURIL(aOcspUri);
   747 	iState = EOCSPCheck;
   748 	iState = EOCSPCheck;
   748 	
   749 	
   749 	iRevocationHandler->SendRequestL(iValidPkixChains, aIap, iStatus);
   750 	iRevocationHandler->SendRequestL(iValidPkixChains, aIap, iStatus);
   750 	
   751 	
       
   752 	CleanupStack::Pop(&aCertOut);
   751 	SetActive();
   753 	SetActive();
   752 	}
   754 	}
   753 
   755 
   754 EXPORT_C void CSecurityManager::VerifyControllerL(
   756 EXPORT_C void CSecurityManager::VerifyControllerL(
   755 				TDesC8& aRawController,
   757 				TDesC8& aRawController,
  1142 
  1144 
  1143 EXPORT_C void CSecurityManager::GetCertificatesFromControllerL(
  1145 EXPORT_C void CSecurityManager::GetCertificatesFromControllerL(
  1144 	const Sis::CController& aController,
  1146 	const Sis::CController& aController,
  1145 	RPointerArray<CX509Certificate>& aCerts)
  1147 	RPointerArray<CX509Certificate>& aCerts)
  1146 	{
  1148 	{
       
  1149 	CleanupResetAndDestroyPushL(aCerts);
  1147 	// Go through all SIS chains and extract end certificates from them.
  1150 	// Go through all SIS chains and extract end certificates from them.
  1148 	const RPointerArray<Sis::CSignatureCertificateChain>& chains=
  1151 	const RPointerArray<Sis::CSignatureCertificateChain>& chains=
  1149 		aController.SignatureCertificateChains();
  1152 		aController.SignatureCertificateChains();
  1150 	for (TInt i=0; i<chains.Count(); i++)
  1153 	for (TInt i=0; i<chains.Count(); i++)
  1151 		{
  1154 		{
  1163 		CleanupStack::Pop(endCertCopy);
  1166 		CleanupStack::Pop(endCertCopy);
  1164 		
  1167 		
  1165 		// Cleanup.
  1168 		// Cleanup.
  1166 		CleanupStack::PopAndDestroy(pkixChain);
  1169 		CleanupStack::PopAndDestroy(pkixChain);
  1167 		}
  1170 		}
       
  1171 	CleanupStack::Pop(&aCerts);
  1168 	}
  1172 	}
  1169 
  1173 
  1170 EXPORT_C void CSecurityManager::FillCertInfoArrayL(
  1174 EXPORT_C void CSecurityManager::FillCertInfoArrayL(
  1171 	const RPointerArray<CX509Certificate>& aCertificates,
  1175 	const RPointerArray<CX509Certificate>& aCertificates,
  1172 	RPointerArray<CCertificateInfo>& aCertInfos)
  1176 	RPointerArray<CCertificateInfo>& aCertInfos)