First public contribution.
2 * Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
15 * CPKIXValidationState class implementation
25 #if !defined (__PKIXCERTSTATE_H__)
26 #define __PKIXCERTSTATE_H__
30 #include <x509certchain.h>
31 #include <x509certext.h>
34 /*this class has no brains at all. all it does it act as a container for
35 state information needed when processing a certificate chain according to
36 the PKIX algorithm. it gets passed around among the classes which use it.
37 the classes which use it are all friends 'cos that seems neater than making
38 all its data public or including 500 accessors*/
40 class CPKIXCertChainAO;
42 class CPKIXValidationState : public CBase
44 friend class CPKIXCertChainAO;
45 friend class TPKIXPolicyConstraint;
46 friend class TPKIXNameConstraint;
47 friend class TPKIXBasicConstraint;
48 friend class TPKIXKeyUsageConstraint;
50 static CPKIXValidationState* NewL( const TTime aValidationTime, TInt aChainLength,
51 const CArrayPtr<HBufC>* aInitialPolicies);
52 static CPKIXValidationState* NewLC( const TTime aValidationTime, TInt aChainLength,
53 const CArrayPtr<HBufC>* aInitialPolicies);
54 ~CPKIXValidationState();
56 CPKIXValidationState( const TTime aValidationTime, TInt aChainLength,
57 const CArrayPtr<HBufC>* aInitialPolicies);
60 const TTime iValidationTime;
66 // TBool iAnyUserPolicy;
67 TBool iAnyAuthorityPolicy;
69 const CArrayPtr<HBufC>* iUserConstrainedPolicies;
70 CArrayPtrFlat<CX509CertPolicyInfo>* iAuthorityConstrainedPolicies;
72 CArrayPtrFlat<HBufC>* iUserPolicies;
73 CArrayPtrFlat<CX509PolicyMapping>* iMappedPolicies;
74 CArrayPtrFlat<CX500DistinguishedName>* iExcludedDNSubtrees;
75 CArrayPtrFlat<CX500DistinguishedName>* iPermittedDNSubtrees;
76 //these are all just to deal with name constraints on alt names
78 CArrayPtrFlat<CX509DomainName>* iExcludedRFC822Subtrees;
79 CArrayPtrFlat<CX509DomainName>* iPermittedRFC822Subtrees;
80 CArrayPtrFlat<CX509DomainName>* iExcludedDNSNameSubtrees;
81 CArrayPtrFlat<CX509DomainName>* iPermittedDNSNameSubtrees;
82 CArrayPtrFlat<CX509IPSubnetMask>* iExcludedIPAddressSubtrees;
83 CArrayPtrFlat<CX509IPSubnetMask>* iPermittedIPAddressSubtrees;
84 CArrayPtrFlat<CX509CertExtension>* iCriticalExts;