diff -r 000000000000 -r 164170e6151a wim/WimUtil/src/WimCertInfo.cpp --- /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 +#include "WimTrace.h" + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWimCertInfo::CWimCertInfo( CCTCertInfo* aCCTCertInfo, +// const TBuf8 aHash, +// RArray aTrustedUsages, +// TUint8 aCDFRefs ) +// : iCCTCertInfo( aCCTCertInfo ), +// iCertHash( aHash ), +// iTrustedUsage( aTrustedUsages ), +// iCDFRefs( aCDFRefs ) +// Default constructor +// ----------------------------------------------------------------------------- +// +CWimCertInfo::CWimCertInfo( CCTCertInfo* aCCTCertInfo, + const TBuf8 aHash, + RArray 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 aHash, +// RArray aTrustedUsages, +// TUint8 aCDFRefs ) +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CWimCertInfo* CWimCertInfo::NewL( CCTCertInfo* aCCTCertInfo, + const TBuf8 aHash, + RArray 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& aHash ) const +// Get hash of certificate +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWimCertInfo::GetCertHash( + TBuf8& 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 CWimCertInfo::TrustedUsage() const + { + _WIMTRACE(_L("WIM | WIMUtil | CWimCertInfo::TrustedUsage | Begin")); + return iTrustedUsage; + } +// ----------------------------------------------------------------------------- +// CWimCertInfo::ExtendedKeyUsage +// Get pointer array of ExtendedKeyUsage OID's +// ----------------------------------------------------------------------------- +// +EXPORT_C RArray 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 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