blob: 56fe64228d4f1b0530150450a2400061c8672543 [file] [log] [blame]
/* 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_pl_cert.h
*
* Certificate Object Definitions
*
*/
#ifndef _PKIX_PL_CERT_H
#define _PKIX_PL_CERT_H
#include "pkix_pl_common.h"
#ifdef __cplusplus
extern "C" {
#endif
struct PKIX_PL_CertStruct {
CERTCertificate *nssCert; /* Must be the first field. The
* cert_NSSCertFromPKIXCert function in
* lib/certhigh/certvfypkix.c depends on
* this. */
CERTGeneralName *nssSubjAltNames;
PLArenaPool *arenaNameConstraints;
PKIX_PL_X500Name *issuer;
PKIX_PL_X500Name *subject;
PKIX_List *subjAltNames;
PKIX_Boolean subjAltNamesAbsent;
PKIX_PL_OID *publicKeyAlgId;
PKIX_PL_PublicKey *publicKey;
PKIX_PL_BigInt *serialNumber;
PKIX_List *critExtOids;
PKIX_PL_ByteArray *subjKeyId;
PKIX_Boolean subjKeyIdAbsent;
PKIX_PL_ByteArray *authKeyId;
PKIX_Boolean authKeyIdAbsent;
PKIX_List *extKeyUsages;
PKIX_Boolean extKeyUsagesAbsent;
PKIX_PL_CertBasicConstraints *certBasicConstraints;
PKIX_Boolean basicConstraintsAbsent;
PKIX_List *certPolicyInfos;
PKIX_Boolean policyInfoAbsent;
PKIX_Boolean policyMappingsAbsent;
PKIX_List *certPolicyMappings; /* List of PKIX_PL_CertPolicyMap */
PKIX_Boolean policyConstraintsProcessed;
PKIX_Int32 policyConstraintsExplicitPolicySkipCerts;
PKIX_Int32 policyConstraintsInhibitMappingSkipCerts;
PKIX_Boolean inhibitAnyPolicyProcessed;
PKIX_Int32 inhibitAnySkipCerts;
PKIX_PL_CertNameConstraints *nameConstraints;
PKIX_Boolean nameConstraintsAbsent;
PKIX_Boolean cacheFlag;
PKIX_CertStore *store;
PKIX_List *authorityInfoAccess; /* list of PKIX_PL_InfoAccess */
PKIX_List *subjectInfoAccess; /* list of PKIX_PL_InfoAccess */
PKIX_Boolean isUserTrustAnchor;
PKIX_List *crldpList; /* list of CRL DPs based on der in nssCert arena.
* Destruction is needed for pkix object and
* not for undelying der as it is a part
* nssCert arena. */
};
/* see source file for function documentation */
PKIX_Error *
pkix_pl_Cert_RegisterSelf(void *plContext);
PKIX_Error *
pkix_pl_Cert_CreateWithNSSCert(
CERTCertificate *nssCert,
PKIX_PL_Cert **pCert,
void *plContext);
PKIX_Error *
pkix_pl_Cert_CreateToList(
SECItem *derCertItem,
PKIX_List *certList,
void *plContext);
PKIX_Error *
pkix_pl_Cert_CheckSubjectAltNameConstraints(
PKIX_PL_Cert *cert,
PKIX_PL_CertNameConstraints *nameConstraints,
PKIX_Boolean matchAll,
void *plContext);
PKIX_Error *
pkix_pl_Cert_ToString_Helper(
PKIX_PL_Cert *cert,
PKIX_Boolean partialString,
PKIX_PL_String **pString,
void *plContext);
PKIX_Error *
pkix_pl_Cert_CheckExtendedKeyUsage(
PKIX_PL_Cert *cert,
PKIX_UInt32 requiredExtendedKeyUsages,
PKIX_Boolean *pPass,
void *plContext);
#ifdef __cplusplus
}
#endif
#endif /* _PKIX_PL_CERT_H */