--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimUtil/src/WimCertInfo.cpp Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Certificate trust settings information
+*
+*/
+
+
+
+// INCLUDE FILES
+
+#include "WimCertInfo.h"
+#include "WimDummyToken.h"
+#include <securitydefs.h>
+#include "WimTrace.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::CWimCertInfo( CCTCertInfo* aCCTCertInfo,
+// const TBuf8<KSHA1HashLengthBytes> aHash,
+// RArray<HBufC*> aTrustedUsages,
+// TUint8 aCDFRefs )
+// : iCCTCertInfo( aCCTCertInfo ),
+// iCertHash( aHash ),
+// iTrustedUsage( aTrustedUsages ),
+// iCDFRefs( aCDFRefs )
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+CWimCertInfo::CWimCertInfo( CCTCertInfo* aCCTCertInfo,
+ const TBuf8<KSHA1HashLengthBytes> aHash,
+ RArray<HBufC*> aTrustedUsages,
+ TUint8 aCDFRefs )
+ : iCCTCertInfo( aCCTCertInfo ),
+ iCertHash( aHash ),
+ iTrustedUsage( aTrustedUsages ),
+ iCDFRefs( aCDFRefs )
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::CWimCertInfo | Begin"));
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::ConstructL()
+// Second phase constructor
+// -----------------------------------------------------------------------------
+//
+void CWimCertInfo::ConstructL()
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::ConstructL | Begin"));
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::NewLNewL( CCTCertInfo* aCCTCertInfo,
+// const TBuf8<KSHA1HashLengthBytes> aHash,
+// RArray<HBufC*> aTrustedUsages,
+// TUint8 aCDFRefs )
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CWimCertInfo* CWimCertInfo::NewL( CCTCertInfo* aCCTCertInfo,
+ const TBuf8<KSHA1HashLengthBytes> aHash,
+ RArray<HBufC*> aTrustedUsages,
+ TUint8 aCDFRefs )
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::NewL | Begin"));
+ CWimCertInfo* self = new( ELeave ) CWimCertInfo( aCCTCertInfo,
+ aHash,
+ aTrustedUsages,
+ aCDFRefs );
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::~CWimCertInfo()
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CWimCertInfo::~CWimCertInfo()
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::~CWimCertInfo | Begin"));
+ if ( iCCTCertInfo )
+ {
+ iCCTCertInfo->Release();
+ iCCTCertInfo = NULL;
+ }
+
+ //Delete arrays of trusted usaga and extendedkeyusage
+ for ( TInt i = 0; i < iTrustedUsage.Count(); i++ )
+ {
+ delete iTrustedUsage[i]; //Delete buffers
+ }
+
+ iTrustedUsage.Close();
+
+ for ( TInt j = 0; j < iExtendedKeyUsage.Count(); j++ )
+ {
+ delete iExtendedKeyUsage[j]; //Delete buffers
+ }
+
+ iExtendedKeyUsage.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::AddTrustedUsage( HBufC* aTrustedUsage )
+// Add TrustedUsage OID
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CWimCertInfo::AddTrustedUsage( HBufC* aTrustedUsage )
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::AddTrustedUsage | Begin"));
+ return ( iTrustedUsage.Append( aTrustedUsage ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::AddExtendedKeyUsage( HBufC* aExtendedKeyUsage )
+// Add ExtendedKeyUsage OID
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CWimCertInfo::AddExtendedKeyUsage( HBufC* aExtendedKeyUsage )
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::AddExtendedKeyUsage | Begin"));
+ return ( iExtendedKeyUsage.Append( aExtendedKeyUsage ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::GetCertHash( TBuf8<KSHA1HashLengthBytes>& aHash ) const
+// Get hash of certificate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimCertInfo::GetCertHash(
+ TBuf8<KSHA1HashLengthBytes>& aHash ) const
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::GetCertHash | Begin"));
+ aHash = iCertHash;
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::CctCert() const
+// Return pointer to CctCert (Symbian's certificate info )
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CCTCertInfo* CWimCertInfo::CctCert() const
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::CctCert | Begin"));
+ return iCCTCertInfo;
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::TrustedUsage() const
+// Get pointer array of TrustedUsage OID's
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RArray<HBufC*> CWimCertInfo::TrustedUsage() const
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::TrustedUsage | Begin"));
+ return iTrustedUsage;
+ }
+// -----------------------------------------------------------------------------
+// CWimCertInfo::ExtendedKeyUsage
+// Get pointer array of ExtendedKeyUsage OID's
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RArray<HBufC*> CWimCertInfo::ExtendedKeyUsage() const
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::ExtendedKeyUsage | Begin"));
+ return iExtendedKeyUsage;
+ }
+// -----------------------------------------------------------------------------
+// CWimCertInfo::CDFRefs
+// Get location of certificate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint8 CWimCertInfo::CDFRefs() const
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::CDFRefs | Begin"));
+ return iCDFRefs;
+ }
+// -----------------------------------------------------------------------------
+// CWimCertInfo::SetCDFRefs
+// Set location of certificate
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CWimCertInfo::SetCDFRefs( TUint8 aCDFRefs )
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::SetCDFRefs | Begin"));
+ iCDFRefs = aCDFRefs;
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::Externalize
+// Externalize CWimCertInfo data to flat buffer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TWimCertInfoPckg* CWimCertInfo::ExternalizeL() const
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::ExternalizeL | Begin"));
+ TWimCertInfoPckg* certPckg = new( ELeave ) TWimCertInfoPckg();
+
+ GetCertHash( certPckg->iHash );
+ certPckg->iCertLabel.Copy( iCCTCertInfo->Label() );
+ certPckg->iCertificateOwnerType = iCCTCertInfo->CertificateOwnerType();
+ certPckg->iSize = iCCTCertInfo->Size();
+ certPckg->iFormat = iCCTCertInfo->CertificateFormat();
+ certPckg->iSubjectKeyId = iCCTCertInfo->SubjectKeyId();
+ certPckg->iIssuerKeyId = iCCTCertInfo->IssuerKeyId();
+ certPckg->iCDFRefs = iCDFRefs;
+ certPckg->iTokenSerialNbr = iCCTCertInfo->Token().Label();
+ certPckg->iIndex = iCCTCertInfo->Handle().iObjectId;
+ return certPckg;
+ }
+
+// -----------------------------------------------------------------------------
+// CWimCertInfo::InternalizeL
+// Instantiates CWimCertInfo of externalized data
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CWimCertInfo* CWimCertInfo::InternalizeL(
+ TWimCertInfoPckg& aExternalizedInfo )
+ {
+ _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::InternalizeL | Begin"));
+ RArray<HBufC*> trustedUsages;
+
+ CWimDummyTokenType* tokenType = CWimDummyTokenType::NewL();
+ CleanupReleasePushL( *tokenType );
+
+ CWimDummyToken* token = CWimDummyToken::NewL( *tokenType );
+ CleanupStack::Pop( tokenType );
+ CleanupReleasePushL( *token );
+
+ token->SetSerialNumber( aExternalizedInfo.iTokenSerialNbr );
+
+ TInt certificateId = aExternalizedInfo.iIndex;
+ TBool deletable = EFalse;
+
+
+ CCTCertInfo* cctCertInfo = CCTCertInfo::NewL(
+ aExternalizedInfo.iCertLabel,
+ aExternalizedInfo.iFormat,
+ aExternalizedInfo.iCertificateOwnerType,
+ aExternalizedInfo.iSize,
+ &(aExternalizedInfo.iSubjectKeyId),
+ &(aExternalizedInfo.iIssuerKeyId),
+ *token,
+ certificateId,
+ deletable );
+ CleanupStack::Pop( token );
+ CleanupReleasePushL( *cctCertInfo );
+
+ CWimCertInfo* certInfo = CWimCertInfo::NewL( cctCertInfo,
+ aExternalizedInfo.iHash,
+ trustedUsages,
+ 0 );
+
+ CleanupStack::Pop( cctCertInfo );
+
+ certInfo->SetCDFRefs( aExternalizedInfo.iCDFRefs );
+
+ return certInfo;
+ }
+
+// End of File