cryptoservices/certificateandkeymgmt/tpkcs12intgrtn/src/tpkcs12data.cpp
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/tpkcs12intgrtn/src/tpkcs12data.cpp	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2005-2009 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"
+* 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: 
+* This file contains the implementation of the CPfxHeader,CSafeBagAttribute,
+* CSafeContentBag,CSafeBagData.
+*
+*/
+
+
+
+
+/**
+ @file 
+ @internalTechnology
+*/
+//User Include 
+#include "tpkcs12data.h"
+
+// Implementation of CPfxHeader
+
+/**
+Description:constructor
+@internalTechnology:
+@test
+*/
+CPfxHeader::CPfxHeader()
+	{
+	}
+/**
+Description:Function is intended to create the  CPfxHeader object
+@internalTechnology:
+@test
+*/
+ CPfxHeader* CPfxHeader::NewL(const CDecPkcs12& aDecPkcs12 , TInt aError)
+	{
+	CPfxHeader* self = NewLC(aDecPkcs12 , aError);
+	CleanupStack::Pop(self);
+	return self;
+	}
+/**
+Description:Function is intended to pcreate the  CPfxHeader object and push it to cleanupstack
+@internalTechnology:
+@test
+*/
+ CPfxHeader* CPfxHeader::NewLC(const CDecPkcs12& aDecPkcs12 , TInt aError)
+	{
+	CPfxHeader* self = new (ELeave) CPfxHeader();
+	CleanupStack::PushL(self);
+	self->ConstructL(aDecPkcs12 , aError);
+	return self;
+	}
+
+/**
+Description:Function is intended to construct the CPfxHeader object
+@param-CDecPkcs12&: reference to the CDecPkcs12 object
+@param-aError: Error to be set in case, the CDecPkcs12 object creation fails
+@internalTechnology:
+@test
+*/	
+void CPfxHeader::ConstructL(const CDecPkcs12& aDecPkcs12 , TInt aError)
+	{	
+	if(aError != KErrNone)
+		{
+		iPkcs12ActualError = aError;
+		return;
+		}
+	//get the version
+	iVersion = 	aDecPkcs12.Version();
+	// put the integrity mode in the Header
+	iIntegrityMode =  aDecPkcs12.IntegrityMode();
+	
+	// Get the macData 
+	const CDecPkcs12MacData* macData = aDecPkcs12.MacData();
+	
+	// set the macData member in the Header
+
+	iIsMacDataPresent = ( macData != NULL) ;
+	
+	if (macData  && iIntegrityMode ==  CDecPkcs12::EPasswordIntegrityMode)
+		{
+		// MacL method returns the DigestInfo structure.
+		const CPKCS7DigestInfo& digestInfo = macData->DigestInfo();		
+		iMac = digestInfo.Digest().AllocL();
+		// MacSaltL method returns the macSalt
+		iMacSalt = macData->MacSalt().AllocL();
+		// IterationCountL method returns the iteration Count.
+		iIterationCount= macData->IterationCount();
+		}
+	}
+/**
+Description:destructor
+@internalTechnology:
+@test
+*/
+CPfxHeader::~CPfxHeader()
+	{
+	delete iMac;
+	delete iMacSalt;		
+	}
+		
+// Implementation of CSafeBagAttribute
+/**
+Description:constructor
+@internalTechnology:
+@test
+*/
+CSafeBagAttribute::CSafeBagAttribute()
+	{
+	}
+/**
+Description:destructor
+@internalTechnology:
+@test
+*/
+CSafeBagAttribute::~CSafeBagAttribute()
+	{
+	delete iAttrId;
+	}
+/**
+Description:Function is intended create CSafeBagAttribute object
+@param-aAttribute: constant reference to the CDecPkcs12Attribute
+@internalTechnology:
+@test
+*/
+ CSafeBagAttribute* CSafeBagAttribute::NewL(const CDecPkcs12Attribute& aAttribute)
+	{
+	CSafeBagAttribute* self = NewLC(aAttribute);
+	CleanupStack::Pop(self);
+	return self;
+	}
+/**
+Description:Function is intended to construct CSafeBagAttribute object, push it to cleanupstack
+@param-aAttribute: constant reference to the CDecPkcs12Attribute
+@internalTechnology:
+@test
+*/
+ CSafeBagAttribute* CSafeBagAttribute::NewLC(const CDecPkcs12Attribute& aAttribute)
+	{
+	CSafeBagAttribute* self = new (ELeave) CSafeBagAttribute();
+	CleanupStack::PushL(self);
+	self->ConstructL(aAttribute);
+	return self;
+	}
+/**
+Description:Function is intended to construct the CSafeBagAttribute object
+@param-CDecPkcs12Attribute: pointer to the CDecPkcs12ShroudedKeyBag
+@internalTechnology:
+@test
+*/
+void CSafeBagAttribute::ConstructL(const CDecPkcs12Attribute& aAttribute)	
+	{
+	iAttrId = aAttribute.AttributeId().AllocL();
+	iAttrValCount = aAttribute.AttributeValue().Count();
+	}
+	
+//Implementation of CSafeContentBag
+
+/**
+Description:Function is intended to create the  CSafeContentBag
+@internalTechnology:
+@test
+*/
+ CSafeContentBag* CSafeContentBag::NewL()
+	{
+	CSafeContentBag* self = NewLC();
+	CleanupStack::Pop(self);
+	return self;	
+	}
+/**
+Description:Function is intended to create the  CSafeContentBag, push it to cleanupstack
+@internalTechnology:
+@test
+*/
+ CSafeContentBag* CSafeContentBag::NewLC()
+	{
+	CSafeContentBag* self = new (ELeave) CSafeContentBag();
+	CleanupStack::PushL(self);
+	return self;	
+	}
+/**
+Description:constructor
+@internalTechnology:
+@test
+*/
+CSafeContentBag::CSafeContentBag()
+	{	
+	}
+	
+// Implementation of CSafeBagData
+
+/**
+Description:destructor
+@internalTechnology:
+@test
+*/
+CSafeBagData::~CSafeBagData()
+	{
+	delete iBagValue;
+	delete iAlgorithmID;
+	delete iCertificateID;	
+	iAttributeIDs.ResetAndDestroy();
+	iAttributeValues.ResetAndDestroy();
+	}	
+/**
+Description:Function is intended to create  the  CSafeBagData object
+@internalTechnology:
+@test
+*/
+ CSafeBagData* CSafeBagData::NewL()
+	{
+	CSafeBagData* self = NewLC();
+	CleanupStack::Pop(self);
+	return self;	
+	}
+/**
+Description:Function is intended to create  the  CSafeBagData object, push it to cleanupstack
+@internalTechnology:
+@test
+*/
+ CSafeBagData* CSafeBagData::NewLC()
+	{
+	CSafeBagData* self = new (ELeave) CSafeBagData;
+	CleanupStack::PushL(self);
+	return self;	
+	}
+/**
+Description:constructor
+@internalTechnology:
+@test
+*/		
+CSafeBagData::CSafeBagData()
+	{		
+	}