Revision: 201027
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 16:21:56 +0300
changeset 80 b4bf7a662141
parent 71 dd83586b62d6
child 87 dd951c63fe4e
child 91 a675745f8b2e
Revision: 201027 Kit: 2010127
contentmgmt/contentaccessfwfordrm/group/bld.inf
crypto/weakcryptospi/source/bigint/bigint.cpp
cryptomgmtlibs/securityutils/group/bld.inf
cryptoservices/certificateandkeymgmt/asn1/asn1libdec.cpp
cryptoservices/certificateandkeymgmt/bwins/ASN1u.def
cryptoservices/certificateandkeymgmt/bwins/X509_v2u.def
cryptoservices/certificateandkeymgmt/certstore/certclients.dat
cryptoservices/certificateandkeymgmt/eabi/asn1U.def
cryptoservices/certificateandkeymgmt/eabi/x509_v2u.def
cryptoservices/certificateandkeymgmt/inc/x509cert.h
cryptoservices/certificateandkeymgmt/tcertstore/T_ccttokentypeinfoattributes.cpp
cryptoservices/certificateandkeymgmt/tpkixcert/Taction_build.cpp
cryptoservices/certificateandkeymgmt/tpkixcert/taction_build.h
cryptoservices/certificateandkeymgmt/tpkixcert_tef/src/validateteststep.cpp
cryptoservices/certificateandkeymgmt/tx509/extensiontest.cpp
cryptoservices/certificateandkeymgmt/x509/x509cert.cpp
cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.cpp
cryptoservices/filebasedcertificateandkeystores/source/keystore/Server/CKeyDataManager.cpp
securityanddataprivacytools/securityconfig/conf/ci_securityconfig.confml
securityanddataprivacytools/securityconfig/conf/securityconfig.confml
securityanddataprivacytools/securityconfig/conf/securityconfig_2001ea7f.crml
securityanddataprivacytools/securityconfig/conf/securityconfig_2002b28b.crml
securityanddataprivacytools/securityconfig/group/bld.inf
securityanddataprivacytools/securitytools/certapp/encdec/certinfo.cpp
securityanddataprivacytools/securitytools/certapp/encdec/certinfo.h
securityanddataprivacytools/securitytools/certapp/encdec/filecertstore.cpp
securityanddataprivacytools/securitytools/certapp/encdec/x509utils.cpp
securityanddataprivacytools/securitytools/certapp/encdec/x509utils.h
--- a/contentmgmt/contentaccessfwfordrm/group/bld.inf	Fri Jun 11 15:32:35 2010 +0300
+++ b/contentmgmt/contentaccessfwfordrm/group/bld.inf	Tue Jul 06 16:21:56 2010 +0300
@@ -21,6 +21,10 @@
  @file
 */
 
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+#include "../../referencedrmagent/refcafhelper/group/bld.inf"
+#endif
+
 
 PRJ_PLATFORMS
 DEFAULT
--- a/crypto/weakcryptospi/source/bigint/bigint.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/crypto/weakcryptospi/source/bigint/bigint.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -1084,16 +1084,13 @@
 	// For i from 1 to (2^(k-1) -1) do g2i+1 <- g2i-1 * g2
 	TUint count = (1 << (slider.WindowSize()-1)) - 1; //2^(k-1) -1
 	RRArray<RInteger> powerArray(count+1); //+1 because we append g1
-	User::LeaveIfError(powerArray.Append(g1));
+	powerArray.AppendL(g1);
 	CleanupStack::Pop(); //g1
 	CleanupClosePushL(powerArray);
 	for(TUint k=1; k <= count; k++)
 		{
 		RInteger g2iplus1 = g2.TimesL(powerArray[k-1]);
-		//This append can't fail as the granularity is set high enough
-		//plus we've already called Append once which will alloc to the 
-		//set granularity
-		powerArray.Append(g2iplus1);
+		powerArray.AppendL(g2iplus1);
 		}
 
 	// 2 A <- 1, i <- t
--- a/cryptomgmtlibs/securityutils/group/bld.inf	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptomgmtlibs/securityutils/group/bld.inf	Tue Jul 06 16:21:56 2010 +0300
@@ -28,7 +28,7 @@
 ../inc/euserext.h	SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(euserext.h)
 ../inc/miscutil.h 	SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(miscutil.h)
 ../inc/callbacktimer.h 	SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(callbacktimer.h)
-../inc/SecSettingsclient.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(SecSettings/SecSettingsclient.h)
+../inc/secsettingsclient.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(secsettings/secsettingsclient.h)
 
 ../inc/securityerr.h	SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(securityerr.h)
 // ROMKIT includes
--- a/cryptoservices/certificateandkeymgmt/asn1/asn1libdec.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/asn1/asn1libdec.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -18,3 +18,8 @@
 
 
 #include <asn1dec.h>
+
+// Dummy definition, just to satisfy SDK creation check
+EXPORT_C TASN1DecEnumerated::TASN1DecEnumerated()
+{
+}
--- a/cryptoservices/certificateandkeymgmt/bwins/ASN1u.def	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/bwins/ASN1u.def	Tue Jul 06 16:21:56 2010 +0300
@@ -130,4 +130,5 @@
 	??1CASN1EncPrintableString@@UAE@XZ @ 129 NONAME ; CASN1EncPrintableString::~CASN1EncPrintableString(void)
 	?NewL@CASN1EncPrintableString@@SAPAV1@ABVTDesC8@@@Z @ 130 NONAME ; class CASN1EncPrintableString * CASN1EncPrintableString::NewL(class TDesC8 const &)
 	?NewLC@CASN1EncPrintableString@@SAPAV1@ABVTDesC8@@@Z @ 131 NONAME ; class CASN1EncPrintableString * CASN1EncPrintableString::NewLC(class TDesC8 const &)
+	??0TASN1DecEnumerated@@QAE@XZ @ 132 NONAME ; TASN1DecEnumerated::TASN1DecEnumerated(void)
 
--- a/cryptoservices/certificateandkeymgmt/bwins/X509_v2u.def	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/bwins/X509_v2u.def	Tue Jul 06 16:21:56 2010 +0300
@@ -279,5 +279,5 @@
 	?NewL@CCertificateValidationWarnings@@SAPAV1@H@Z @ 278 NONAME ; class CCertificateValidationWarnings * CCertificateValidationWarnings::NewL(int)
 	?NewLC@CCertificateValidationWarnings@@SAPAV1@H@Z @ 279 NONAME ; class CCertificateValidationWarnings * CCertificateValidationWarnings::NewLC(int)
 	?Warnings@CCertificateValidationWarnings@@QBEABV?$RArray@VTValidationStatus@@@@XZ @ 280 NONAME ; class RArray<class TValidationStatus> const & CCertificateValidationWarnings::Warnings(void) const
-	?SubjectKeyIdL@CX509Certificate@@QAE?AV?$TBuf8@$0BE@@@XZ @ 281 NONAME ; class TBuf8<20> CX509Certificate::SubjectKeyIdL(void)
+	?SubjectKeyIdL@CX509Certificate@@QBE?AV?$TBuf8@$0BE@@@XZ @ 281 NONAME ; class TBuf8<20> CX509Certificate::SubjectKeyIdL(void) const
 
Binary file cryptoservices/certificateandkeymgmt/certstore/certclients.dat has changed
--- a/cryptoservices/certificateandkeymgmt/eabi/asn1U.def	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/eabi/asn1U.def	Tue Jul 06 16:21:56 2010 +0300
@@ -204,4 +204,6 @@
 	_ZTV23CASN1EncPrintableString @ 203 NONAME ; #<VT>#
 	_ZN17CASN1EncPrimitiveC2Ej @ 204 NONAME
 	_ZN17TASN1DecBMPString10CheckValidERK6TDesC8 @ 205 NONAME
+	_ZN18TASN1DecEnumeratedC1Ev @ 206 NONAME
+	_ZN18TASN1DecEnumeratedC2Ev @ 207 NONAME
 
--- a/cryptoservices/certificateandkeymgmt/eabi/x509_v2u.def	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/eabi/x509_v2u.def	Tue Jul 06 16:21:56 2010 +0300
@@ -397,5 +397,5 @@
 	_ZNK30CCertificateValidationWarnings9CertIndexEv @ 396 NONAME
 	_ZTI30CCertificateValidationWarnings @ 397 NONAME
 	_ZTV30CCertificateValidationWarnings @ 398 NONAME
-	_ZN16CX509Certificate13SubjectKeyIdLEv @ 399 NONAME
+	_ZNK16CX509Certificate13SubjectKeyIdLEv @ 399 NONAME
 
--- a/cryptoservices/certificateandkeymgmt/inc/x509cert.h	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/inc/x509cert.h	Tue Jul 06 16:21:56 2010 +0300
@@ -621,7 +621,7 @@
 	* as an extension in the certificate, any other certificate it returns the keyidentifier as 
 	* calculated by Symbian's proprietary logic.
 	* @return	The subject key identifier for the certificate. */
-	IMPORT_C TKeyIdentifier SubjectKeyIdL();
+	IMPORT_C TKeyIdentifier SubjectKeyIdL() const;
 				
 
 	/** Destructor.
--- a/cryptoservices/certificateandkeymgmt/tcertstore/T_ccttokentypeinfoattributes.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/tcertstore/T_ccttokentypeinfoattributes.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -70,8 +70,8 @@
 			RArray<TUid> uidArray;
 			CleanupClosePushL(uidArray);
 			TUid uid1 = { KInterfaceCertStore };
-				
-			uidArray.Append(uid1);
+						
+			uidArray.AppendL(uid1);
 			TCTFindTokenTypesByInterface filter(uidArray.Array());
 			CCTTokenTypeInfo::ListL(iTokenTypes, filter);
 
--- a/cryptoservices/certificateandkeymgmt/tpkixcert/Taction_build.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert/Taction_build.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -161,7 +161,7 @@
 		{
 		}
 
-	while(AddAddCalls(*aBody, pos))
+	while(AddAddCallsL(*aBody, pos))
 		{
 		}
 
@@ -354,13 +354,14 @@
 	return EFalse;
 	} 
 
-TBool CTestActionBuild::AddAddCalls(const TDesC& aBuf, TInt& aPos)
+TBool CTestActionBuild::AddAddCallsL(const TDesC& aBuf, TInt& aPos)
 	{
 	TPtrC addCallsBuf = Input::ParseElement(aBuf, KAddCallStart, KAddCallEnd, aPos);
 	if (addCallsBuf != KNullDesC)
 		{
-		CAddCall* addCall = CAddCall::NewL(addCallsBuf);
-		iAddCalls.Append(addCall);
+		CAddCall* addCall = CAddCall::NewLC(addCallsBuf);		
+		iAddCalls.AppendL(addCall);
+		CleanupStack::Pop(addCall);
 		return ETrue;
 		}
 	return EFalse;
--- a/cryptoservices/certificateandkeymgmt/tpkixcert/taction_build.h	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert/taction_build.h	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -69,7 +69,7 @@
 	TBool AddCert(const TDesC& aBuf, const TDesC& aStart,
 		const TDesC& aEnd, TInt& aPos, CDesCArray& aCertsFileName, 
 		CDesCArray& aCertsLabel);
-	TBool AddAddCalls(const TDesC& aBuf, TInt& aPos);
+	TBool AddAddCallsL(const TDesC& aBuf, TInt& aPos);
 	TBool CompareChainsL(const CPKIXCertChain& aChain);
 	TBool CompareCertL(const CX509Certificate& aCert, const TDesC& aFilename);
 
--- a/cryptoservices/certificateandkeymgmt/tpkixcert_tef/src/validateteststep.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/tpkixcert_tef/src/validateteststep.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -123,7 +123,7 @@
 		if (policyIndex > 0)
 			{
 			TValidationError error = (TValidationError) qualifierWarning;
-			processedPolicyQualifiers.Append(TValidationStatus(error, policyIndex));
+			processedPolicyQualifiers.AppendL(TValidationStatus(error, policyIndex));
 			}
 
 		CleanupStack::PopAndDestroy(key);
@@ -157,7 +157,7 @@
 		for (TInt i=0; i < configOldWarnings.Count(); ++i)
 			{
 			TValidationError error = (TValidationError) configOldWarnings[i];
-			processedConfigOldWarnings.Append(TValidationStatus(error, cert_index));
+			processedConfigOldWarnings.AppendL(TValidationStatus(error, cert_index));
 			}
 		
 		TransferToNewWarningsL(configOldWarnings, configNewWarnings, cert_index);
@@ -198,7 +198,7 @@
 		if (policyIndex > 0)
 			{
 			TValidationError error = (TValidationError) qualifierWarning;
-			configNewWarnings.Append(TValidationStatus(error, policyIndex));
+			configNewWarnings.AppendL(TValidationStatus(error, policyIndex));
 			}
 
 		CleanupStack::PopAndDestroy(key);
--- a/cryptoservices/certificateandkeymgmt/tx509/extensiontest.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/tx509/extensiontest.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -135,8 +135,10 @@
 		// if it exists.
 		TPtrC str = Input::ParseElement(aBuf, aTag, pos, err);
 		if (err >= 0)
-			{			
-			aStrings.Append(str.AllocL());
+			{
+			HBufC* string = str.AllocLC();			
+			aStrings.AppendL(string);
+			CleanupStack::Pop(string);
 			}								
 		}
 	while (err >= 0);	
@@ -153,7 +155,9 @@
 		TInt n = Input::ParseIntElement(aBuf, aTag, pos, err);
 		if (err >= 0)
 			{
-			aInts.Append(n);
+			// This append should not fail as the parsing went fine. 
+			// So, ignoring the leave just to satisfy non leaving method convention.
+			TRAP_IGNORE(aInts.AppendL(n));
 			}								
 		}
 	while (err >= 0);
--- a/cryptoservices/certificateandkeymgmt/x509/x509cert.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/certificateandkeymgmt/x509/x509cert.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1339,10 +1339,10 @@
 	}
 
 
-EXPORT_C TKeyIdentifier CX509Certificate::SubjectKeyIdL()
+EXPORT_C TKeyIdentifier CX509Certificate::SubjectKeyIdL() const
 	{
 	// if it is a v1 or v2 type then there is no way of knowing which is a CA, treat all certs as CA as done in the certificate recognizer.
-	if (Version() != 3 )
+	if (Version() < 3 )
 		{
 		return SubjectKeyIdentifierL();
 		}
--- a/cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/source/certapps/server/CFSCertAppsServer.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -123,7 +123,7 @@
 
 	for (TInt i = 0; i < count; ++i)
 		{
-		aAppArray.Append(iClients[i]);
+		aAppArray.AppendL(iClients[i]);
 		}
 	}
 
--- a/cryptoservices/filebasedcertificateandkeystores/source/keystore/Server/CKeyDataManager.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/cryptoservices/filebasedcertificateandkeystores/source/keystore/Server/CKeyDataManager.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -92,12 +92,14 @@
 	TInt count = lookupStream.ReadInt32L();
 	for (TInt index = 0; index < count; index++)
 		{
-		const CFileKeyData* keyData = CFileKeyData::NewL(lookupStream);
+		CFileKeyData* keyData = CFileKeyData::NewL(lookupStream);
+		CleanupStack::PushL(keyData);
 
 		if (keyData->Handle() > iKeyIdentifier)
 			iKeyIdentifier = keyData->Handle();
 
-		iKeys.Append(keyData);
+		iKeys.AppendL(keyData);
+		CleanupStack::Pop(keyData);
 		}
 	
 	CleanupStack::PopAndDestroy(&lookupStream);
Binary file securityanddataprivacytools/securityconfig/conf/ci_securityconfig.confml has changed
Binary file securityanddataprivacytools/securityconfig/conf/securityconfig.confml has changed
Binary file securityanddataprivacytools/securityconfig/conf/securityconfig_2001ea7f.crml has changed
Binary file securityanddataprivacytools/securityconfig/conf/securityconfig_2002b28b.crml has changed
--- a/securityanddataprivacytools/securityconfig/group/bld.inf	Fri Jun 11 15:32:35 2010 +0300
+++ b/securityanddataprivacytools/securityconfig/group/bld.inf	Tue Jul 06 16:21:56 2010 +0300
@@ -42,8 +42,9 @@
 
 #endif // SYMBIAN_AUTH_SERVER
 // ConfML Files
+../conf/ci_securityconfig.confml            OS_LAYER_EXPORTS_CONFML(ci_securityconfig.confml)
 ../conf/securityconfig.confml            OS_LAYER_EXPORTS_CONFML(securityconfig.confml)
-../conf/securityconfig_2001ea7f.crml	 OS_LAYER_EXPORTS_CRML(securityconfig_2001ea7f.crml)
+../conf/securityconfig_2002b28b.crml	 OS_LAYER_EXPORTS_CRML(securityconfig_2002b28b.crml)
 
 PRJ_TESTEXPORTS
 
--- a/securityanddataprivacytools/securitytools/certapp/encdec/certinfo.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/securityanddataprivacytools/securitytools/certapp/encdec/certinfo.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -197,6 +197,11 @@
 	return (TCertificateFormat)iFormat.Value();
 }
 
+TCertificateOwnerType CertInfo::CertificateOwnerType() const
+{
+	return (TCertificateOwnerType)iCertificateOwnerType.Value();
+}
+
 
 KeyIdentifierObject &CertInfo::SubjectKeyId()
 {
--- a/securityanddataprivacytools/securitytools/certapp/encdec/certinfo.h	Fri Jun 11 15:32:35 2010 +0300
+++ b/securityanddataprivacytools/securitytools/certapp/encdec/certinfo.h	Tue Jul 06 16:21:56 2010 +0300
@@ -64,6 +64,8 @@
 
 	TUint32 OutputCertificateId() const;
 	void SetOutputCertificateId(TUint32 aId);
+
+	TCertificateOwnerType CertificateOwnerType() const;
 	
 private:
 	EncDecObject<TUint8> iTmpCombinedDeletableAndFormat;
--- a/securityanddataprivacytools/securitytools/certapp/encdec/filecertstore.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/securityanddataprivacytools/securitytools/certapp/encdec/filecertstore.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -286,10 +286,11 @@
 	if(iCertInfo.CertificateFormat() == EX509Certificate)
 		{
 		TKeyIdentifier subjectKeyId;
-		
+		bool isCA = ( iCertInfo.CertificateOwnerType() != EUserCertificate );
+
 		// nb. If processing a swicertstore we ignore any SubjectKeyId in the extension.
 		if(X509SubjectKeyId((iSwiMode)?(KIgnoreCertificateExtension) : (KUseCertificateExtension), 
-							false,
+							false, isCA,
 							iCertData,
 							iCertSubject, subjectKeyId))
 			{
--- a/securityanddataprivacytools/securitytools/certapp/encdec/x509utils.cpp	Fri Jun 11 15:32:35 2010 +0300
+++ b/securityanddataprivacytools/securitytools/certapp/encdec/x509utils.cpp	Tue Jul 06 16:21:56 2010 +0300
@@ -191,7 +191,7 @@
 #endif
 
 bool X509SubjectKeyId(EUseCertificateExtension aUseExtension, bool aUseRfc3280Algorithm,
-					  const std::string &aCert, 
+					  bool aIsCa, const std::string &aCert, 
 					  std::string &aSubject, TKeyIdentifier &aSubjectKeyId)
 {
 	bool done = false;
@@ -210,8 +210,17 @@
 	// Return the Subject Name
 	prog << Log::Indent() << "Cert subject is '" << x509->name << "'" << Log::Endl();
 	aSubject = std::string(x509->name);
-
-	if(aUseExtension)
+	TUint32 ver = X509_get_version(x509);
+	prog << Log::Indent() << "Cert version is '" << ver << "'" << Log::Endl();
+	
+	// if the ver is a v1 or v2 type then there is no way of knowing which is a CA, treat all certs as CA as done in the certificate recognizer.
+	bool treatAsCa = false;  
+	if ( ver < 3 || aIsCa )
+		{
+		treatAsCa = true;
+		}
+	
+	if(treatAsCa && aUseExtension)
 		{
 		// Attempt to read Subject Key Id extension
 		ASN1_OCTET_STRING *subKeyId = (ASN1_OCTET_STRING *) X509_get_ext_d2i(x509, NID_subject_key_identifier, NULL, NULL);
--- a/securityanddataprivacytools/securitytools/certapp/encdec/x509utils.h	Fri Jun 11 15:32:35 2010 +0300
+++ b/securityanddataprivacytools/securitytools/certapp/encdec/x509utils.h	Tue Jul 06 16:21:56 2010 +0300
@@ -71,7 +71,7 @@
    If the certificate is invalid then exit the program with an error message!
  */
 bool X509SubjectKeyId(EUseCertificateExtension aUseExtension, bool aUseRfc3280Algorithm,
-					  const std::string &aCert, 
+					  bool aIsCa, const std::string &aCert, 
 					  std::string &aSubject, TKeyIdentifier &aSubjectKeyId);
 
 /**