--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptoservices/certificateandkeymgmt/pkixcertbase/pkixCertState.cpp Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 1998-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:
+*
+*/
+
+
+#include "pkixcertstate.h"
+
+//********************************************************************************//
+CPKIXValidationState* CPKIXValidationState::NewL( const TTime aValidationTime, TInt aChainLength,
+ const CArrayPtr<HBufC>* aInitialPolicies)
+ {
+ CPKIXValidationState* s = CPKIXValidationState::NewLC(aValidationTime, aChainLength, aInitialPolicies);
+ CleanupStack::Pop();
+ return s;
+ }
+
+CPKIXValidationState* CPKIXValidationState::NewLC( const TTime aValidationTime, TInt aChainLength,
+ const CArrayPtr<HBufC>* aInitialPolicies)
+ {
+ CPKIXValidationState* s = new(ELeave) CPKIXValidationState(aValidationTime, aChainLength, aInitialPolicies);
+ CleanupStack::PushL(s);
+ s->ConstructL();
+ return s;
+ }
+
+CPKIXValidationState::~CPKIXValidationState()
+ {
+ if (iAuthorityConstrainedPolicies != NULL)
+ {
+ iAuthorityConstrainedPolicies->ResetAndDestroy();
+ }
+ delete iAuthorityConstrainedPolicies;
+
+ if (iUserPolicies != NULL)
+ {
+ iUserPolicies->ResetAndDestroy();
+ }
+ delete iUserPolicies;
+
+ if (iMappedPolicies != NULL)
+ {
+ iMappedPolicies->ResetAndDestroy();
+ }
+ delete iMappedPolicies;
+
+ if (iExcludedDNSubtrees != NULL)
+ {
+ iExcludedDNSubtrees->ResetAndDestroy();
+ }
+ delete iExcludedDNSubtrees;
+
+ if (iPermittedDNSubtrees != NULL)
+ {
+ iPermittedDNSubtrees->ResetAndDestroy();
+ }
+ delete iPermittedDNSubtrees;
+
+ if (iExcludedRFC822Subtrees != NULL)
+ {
+ iExcludedRFC822Subtrees->ResetAndDestroy();
+ }
+ delete iExcludedRFC822Subtrees;
+
+ if (iPermittedRFC822Subtrees != NULL)
+ {
+ iPermittedRFC822Subtrees->ResetAndDestroy();
+ }
+ delete iPermittedRFC822Subtrees;
+
+ if (iExcludedDNSNameSubtrees != NULL)
+ {
+ iExcludedDNSNameSubtrees->ResetAndDestroy();
+ }
+ delete iExcludedDNSNameSubtrees;
+
+ if (iPermittedDNSNameSubtrees != NULL)
+ {
+ iPermittedDNSNameSubtrees->ResetAndDestroy();
+ }
+ delete iPermittedDNSNameSubtrees;
+
+ if (iExcludedIPAddressSubtrees != NULL)
+ {
+ iExcludedIPAddressSubtrees->ResetAndDestroy();
+ }
+ delete iExcludedIPAddressSubtrees;
+
+ if (iPermittedIPAddressSubtrees != NULL)
+ {
+ iPermittedIPAddressSubtrees->ResetAndDestroy();
+ }
+ delete iPermittedIPAddressSubtrees;
+ delete iCriticalExts;
+ }
+
+CPKIXValidationState::CPKIXValidationState( const TTime aValidationTime, TInt aChainLength,
+ const CArrayPtr<HBufC>* aInitialPolicies)
+ :iValidationTime(aValidationTime), iPolicyMapping(aChainLength), iPolicyRequired(aChainLength),
+ iMaxPathLength(aChainLength), iPos(aChainLength-1), iAnyAuthorityPolicy(ETrue)
+ {
+ // iUserConstrainedPolicies only set if we have any
+ if (aInitialPolicies && aInitialPolicies->Count() != 0)
+ {
+ iUserConstrainedPolicies = aInitialPolicies;
+ }
+ }
+
+void CPKIXValidationState::ConstructL()
+ {
+ iAuthorityConstrainedPolicies = new(ELeave) CArrayPtrFlat<CX509CertPolicyInfo> (1);
+ iUserPolicies = new(ELeave) CArrayPtrFlat<HBufC> (1);
+ iMappedPolicies = new(ELeave) CArrayPtrFlat<CX509PolicyMapping> (1);
+ iExcludedDNSubtrees = new(ELeave) CArrayPtrFlat<CX500DistinguishedName> (1);
+ iPermittedDNSubtrees = new(ELeave) CArrayPtrFlat<CX500DistinguishedName> (1);
+ iExcludedRFC822Subtrees = new(ELeave) CArrayPtrFlat<CX509DomainName> (1);
+ iPermittedRFC822Subtrees = new(ELeave) CArrayPtrFlat<CX509DomainName> (1);
+ iExcludedDNSNameSubtrees = new(ELeave) CArrayPtrFlat<CX509DomainName> (1);
+ iPermittedDNSNameSubtrees = new(ELeave) CArrayPtrFlat<CX509DomainName> (1);
+ iExcludedIPAddressSubtrees = new(ELeave) CArrayPtrFlat<CX509IPSubnetMask> (1);
+ iPermittedIPAddressSubtrees = new(ELeave) CArrayPtrFlat<CX509IPSubnetMask> (1);
+ iCriticalExts = new(ELeave) CArrayPtrFlat<CX509CertExtension> (1);
+ //copy the user-supplied policies into userpolicies
+ if (iUserConstrainedPolicies)
+ {
+ TInt userPolicyCount = iUserConstrainedPolicies->Count();
+ for (TInt i = 0; i < userPolicyCount; i++)
+ {
+ HBufC* policy = iUserConstrainedPolicies->At(i)->AllocL();
+ CleanupStack::PushL(policy);
+ iUserPolicies->AppendL(policy);
+ CleanupStack::Pop();
+ }
+ }
+ }