| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| /* |
| * pkix_build.h |
| * |
| * Header file for buildChain function |
| * |
| */ |
| |
| #ifndef _PKIX_BUILD_H |
| #define _PKIX_BUILD_H |
| #include "pkix_tools.h" |
| #ifndef NSS_PKIX_NO_LDAP |
| #include "pkix_pl_ldapt.h" |
| #endif |
| #include "pkix_ekuchecker.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum { |
| BUILD_SHORTCUTPENDING, |
| BUILD_INITIAL, |
| BUILD_TRYAIA, |
| BUILD_AIAPENDING, |
| BUILD_COLLECTINGCERTS, |
| BUILD_GATHERPENDING, |
| BUILD_CERTVALIDATING, |
| BUILD_ABANDONNODE, |
| BUILD_DATEPREP, |
| BUILD_CHECKTRUSTED, |
| BUILD_CHECKTRUSTED2, |
| BUILD_ADDTOCHAIN, |
| BUILD_VALCHAIN, |
| BUILD_VALCHAIN2, |
| BUILD_EXTENDCHAIN, |
| BUILD_GETNEXTCERT |
| } BuildStatus; |
| |
| typedef struct BuildConstantsStruct BuildConstants; |
| |
| /* |
| * These fields (the ones that are objects) are not reference-counted |
| * in *each* state, but only in the root, the state that has no parent. |
| * That saves time in creation and destruction of child states, but is |
| * safe enough since they are constants. |
| */ |
| struct BuildConstantsStruct { |
| PKIX_UInt32 numAnchors; |
| PKIX_UInt32 numCertStores; |
| PKIX_UInt32 numHintCerts; |
| PKIX_UInt32 maxDepth; |
| PKIX_UInt32 maxFanout; |
| PKIX_UInt32 maxTime; |
| PKIX_ProcessingParams *procParams; |
| PKIX_PL_Date *testDate; |
| PKIX_PL_Date *timeLimit; |
| PKIX_PL_Cert *targetCert; |
| PKIX_PL_PublicKey *targetPubKey; |
| PKIX_List *certStores; |
| PKIX_List *anchors; |
| PKIX_List *userCheckers; |
| PKIX_List *hintCerts; |
| PKIX_RevocationChecker *revChecker; |
| PKIX_PL_AIAMgr *aiaMgr; |
| PKIX_Boolean useAIAForCertFetching; |
| PKIX_Boolean trustOnlyUserAnchors; |
| }; |
| |
| struct PKIX_ForwardBuilderStateStruct{ |
| BuildStatus status; |
| PKIX_Int32 traversedCACerts; |
| PKIX_UInt32 certStoreIndex; |
| PKIX_UInt32 numCerts; |
| PKIX_UInt32 numAias; |
| PKIX_UInt32 certIndex; |
| PKIX_UInt32 aiaIndex; |
| PKIX_UInt32 certCheckedIndex; |
| PKIX_UInt32 checkerIndex; |
| PKIX_UInt32 hintCertIndex; |
| PKIX_UInt32 numFanout; |
| PKIX_UInt32 numDepth; |
| PKIX_UInt32 reasonCode; |
| PKIX_Boolean canBeCached; |
| PKIX_Boolean useOnlyLocal; |
| PKIX_Boolean revChecking; |
| PKIX_Boolean usingHintCerts; |
| PKIX_Boolean certLoopingDetected; |
| PKIX_PL_Date *validityDate; |
| PKIX_PL_Cert *prevCert; |
| PKIX_PL_Cert *candidateCert; |
| PKIX_List *traversedSubjNames; |
| PKIX_List *trustChain; |
| PKIX_List *aia; |
| PKIX_List *candidateCerts; |
| PKIX_List *reversedCertChain; |
| PKIX_List *checkedCritExtOIDs; |
| PKIX_List *checkerChain; |
| PKIX_CertSelector *certSel; |
| PKIX_VerifyNode *verifyNode; |
| void *client; /* messageHandler, such as LDAPClient */ |
| PKIX_ForwardBuilderState *parentState; |
| BuildConstants buildConstants; |
| }; |
| |
| /* --Private-Functions-------------------------------------------- */ |
| |
| PKIX_Error * |
| pkix_ForwardBuilderState_RegisterSelf(void *plContext); |
| |
| PKIX_Error * |
| PKIX_Build_GetNBIOContext(void *state, void **pNBIOContext, void *plContext); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _PKIX_BUILD_H */ |