| Index: mozilla/security/nss/lib/certdb/cert.h
|
| ===================================================================
|
| --- mozilla/security/nss/lib/certdb/cert.h (revision 191424)
|
| +++ mozilla/security/nss/lib/certdb/cert.h (working copy)
|
| @@ -1,1650 +0,0 @@
|
| -/* 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/. */
|
| -
|
| -/*
|
| - * cert.h - public data structures and prototypes for the certificate library
|
| - *
|
| - * $Id: cert.h,v 1.91 2012/09/28 16:05:02 wtc%google.com Exp $
|
| - */
|
| -
|
| -#ifndef _CERT_H_
|
| -#define _CERT_H_
|
| -
|
| -#include "utilrename.h"
|
| -#include "plarena.h"
|
| -#include "plhash.h"
|
| -#include "prlong.h"
|
| -#include "prlog.h"
|
| -
|
| -#include "seccomon.h"
|
| -#include "secdert.h"
|
| -#include "secoidt.h"
|
| -#include "keyt.h"
|
| -#include "certt.h"
|
| -
|
| -SEC_BEGIN_PROTOS
|
| -
|
| -/****************************************************************************
|
| - *
|
| - * RFC1485 ascii to/from X.? RelativeDistinguishedName (aka CERTName)
|
| - *
|
| - ****************************************************************************/
|
| -
|
| -/*
|
| -** Convert an ascii RFC1485 encoded name into its CERTName equivalent.
|
| -*/
|
| -extern CERTName *CERT_AsciiToName(const char *string);
|
| -
|
| -/*
|
| -** Convert an CERTName into its RFC1485 encoded equivalent.
|
| -** Returns a string that must be freed with PORT_Free().
|
| -** This version produces a string for maximum human readability,
|
| -** not for strict RFC compliance.
|
| -*/
|
| -extern char *CERT_NameToAscii(CERTName *name);
|
| -
|
| -/*
|
| -** Convert an CERTName into its RFC1485 encoded equivalent.
|
| -** Returns a string that must be freed with PORT_Free().
|
| -** Caller chooses encoding rules.
|
| -*/
|
| -extern char *CERT_NameToAsciiInvertible(CERTName *name,
|
| - CertStrictnessLevel strict);
|
| -
|
| -extern CERTAVA *CERT_CopyAVA(PLArenaPool *arena, CERTAVA *src);
|
| -
|
| -/* convert an OID to dotted-decimal representation */
|
| -/* Returns a string that must be freed with PR_smprintf_free(). */
|
| -extern char * CERT_GetOidString(const SECItem *oid);
|
| -
|
| -/*
|
| -** Examine an AVA and return the tag that refers to it. The AVA tags are
|
| -** defined as SEC_OID_AVA*.
|
| -*/
|
| -extern SECOidTag CERT_GetAVATag(CERTAVA *ava);
|
| -
|
| -/*
|
| -** Compare two AVA's, returning the difference between them.
|
| -*/
|
| -extern SECComparison CERT_CompareAVA(const CERTAVA *a, const CERTAVA *b);
|
| -
|
| -/*
|
| -** Create an RDN (relative-distinguished-name). The argument list is a
|
| -** NULL terminated list of AVA's.
|
| -*/
|
| -extern CERTRDN *CERT_CreateRDN(PLArenaPool *arena, CERTAVA *avas, ...);
|
| -
|
| -/*
|
| -** Make a copy of "src" storing it in "dest".
|
| -*/
|
| -extern SECStatus CERT_CopyRDN(PLArenaPool *arena, CERTRDN *dest, CERTRDN *src);
|
| -
|
| -/*
|
| -** Destory an RDN object.
|
| -** "rdn" the RDN to destroy
|
| -** "freeit" if PR_TRUE then free the object as well as its sub-objects
|
| -*/
|
| -extern void CERT_DestroyRDN(CERTRDN *rdn, PRBool freeit);
|
| -
|
| -/*
|
| -** Add an AVA to an RDN.
|
| -** "rdn" the RDN to add to
|
| -** "ava" the AVA to add
|
| -*/
|
| -extern SECStatus CERT_AddAVA(PLArenaPool *arena, CERTRDN *rdn, CERTAVA *ava);
|
| -
|
| -/*
|
| -** Compare two RDN's, returning the difference between them.
|
| -*/
|
| -extern SECComparison CERT_CompareRDN(const CERTRDN *a, const CERTRDN *b);
|
| -
|
| -/*
|
| -** Create an X.500 style name using a NULL terminated list of RDN's.
|
| -*/
|
| -extern CERTName *CERT_CreateName(CERTRDN *rdn, ...);
|
| -
|
| -/*
|
| -** Make a copy of "src" storing it in "dest". Memory is allocated in
|
| -** "dest" for each of the appropriate sub objects. Memory is not freed in
|
| -** "dest" before allocation is done (use CERT_DestroyName(dest, PR_FALSE) to
|
| -** do that).
|
| -*/
|
| -extern SECStatus CERT_CopyName(PLArenaPool *arena, CERTName *dest, CERTName *src);
|
| -
|
| -/*
|
| -** Destroy a Name object.
|
| -** "name" the CERTName to destroy
|
| -** "freeit" if PR_TRUE then free the object as well as its sub-objects
|
| -*/
|
| -extern void CERT_DestroyName(CERTName *name);
|
| -
|
| -/*
|
| -** Add an RDN to a name.
|
| -** "name" the name to add the RDN to
|
| -** "rdn" the RDN to add to name
|
| -*/
|
| -extern SECStatus CERT_AddRDN(CERTName *name, CERTRDN *rdn);
|
| -
|
| -/*
|
| -** Compare two names, returning the difference between them.
|
| -*/
|
| -extern SECComparison CERT_CompareName(const CERTName *a, const CERTName *b);
|
| -
|
| -/*
|
| -** Convert a CERTName into something readable
|
| -*/
|
| -extern char *CERT_FormatName (CERTName *name);
|
| -
|
| -/*
|
| -** Convert a der-encoded integer to a hex printable string form.
|
| -** Perhaps this should be a SEC function but it's only used for certs.
|
| -*/
|
| -extern char *CERT_Hexify (SECItem *i, int do_colon);
|
| -
|
| -/*
|
| -** Converts DER string (with explicit length) into zString, if destination
|
| -** buffer is big enough to receive it. Does quoting and/or escaping as
|
| -** specified in RFC 1485. Input string must be single or multi-byte DER
|
| -** character set, (ASCII, UTF8, or ISO 8851-x) not a wide character set.
|
| -** Returns SECSuccess or SECFailure with error code set. If output buffer
|
| -** is too small, sets error code SEC_ERROR_OUTPUT_LEN.
|
| -*/
|
| -extern SECStatus
|
| -CERT_RFC1485_EscapeAndQuote(char *dst, int dstlen, char *src, int srclen);
|
| -
|
| -/******************************************************************************
|
| - *
|
| - * Certificate handling operations
|
| - *
|
| - *****************************************************************************/
|
| -
|
| -/*
|
| -** Create a new validity object given two unix time values.
|
| -** "notBefore" the time before which the validity is not valid
|
| -** "notAfter" the time after which the validity is not valid
|
| -*/
|
| -extern CERTValidity *CERT_CreateValidity(PRTime notBefore, PRTime notAfter);
|
| -
|
| -/*
|
| -** Destroy a validity object.
|
| -** "v" the validity to destroy
|
| -** "freeit" if PR_TRUE then free the object as well as its sub-objects
|
| -*/
|
| -extern void CERT_DestroyValidity(CERTValidity *v);
|
| -
|
| -/*
|
| -** Copy the "src" object to "dest". Memory is allocated in "dest" for
|
| -** each of the appropriate sub-objects. Memory in "dest" is not freed
|
| -** before memory is allocated (use CERT_DestroyValidity(v, PR_FALSE) to do
|
| -** that).
|
| -*/
|
| -extern SECStatus CERT_CopyValidity
|
| - (PLArenaPool *arena, CERTValidity *dest, CERTValidity *src);
|
| -
|
| -/*
|
| -** The cert lib considers a cert or CRL valid if the "notBefore" time is
|
| -** in the not-too-distant future, e.g. within the next 24 hours. This
|
| -** prevents freshly issued certificates from being considered invalid
|
| -** because the local system's time zone is incorrectly set.
|
| -** The amount of "pending slop time" is adjustable by the application.
|
| -** Units of SlopTime are seconds. Default is 86400 (24 hours).
|
| -** Negative SlopTime values are not allowed.
|
| -*/
|
| -PRInt32 CERT_GetSlopTime(void);
|
| -
|
| -SECStatus CERT_SetSlopTime(PRInt32 slop);
|
| -
|
| -/*
|
| -** Create a new certificate object. The result must be wrapped with an
|
| -** CERTSignedData to create a signed certificate.
|
| -** "serialNumber" the serial number
|
| -** "issuer" the name of the certificate issuer
|
| -** "validity" the validity period of the certificate
|
| -** "req" the certificate request that prompted the certificate issuance
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_CreateCertificate (unsigned long serialNumber, CERTName *issuer,
|
| - CERTValidity *validity, CERTCertificateRequest *req);
|
| -
|
| -/*
|
| -** Destroy a certificate object
|
| -** "cert" the certificate to destroy
|
| -** NOTE: certificate's are reference counted. This call decrements the
|
| -** reference count, and if the result is zero, then the object is destroyed
|
| -** and optionally freed.
|
| -*/
|
| -extern void CERT_DestroyCertificate(CERTCertificate *cert);
|
| -
|
| -/*
|
| -** Make a shallow copy of a certificate "c". Just increments the
|
| -** reference count on "c".
|
| -*/
|
| -extern CERTCertificate *CERT_DupCertificate(CERTCertificate *c);
|
| -
|
| -/*
|
| -** Create a new certificate request. This result must be wrapped with an
|
| -** CERTSignedData to create a signed certificate request.
|
| -** "name" the subject name (who the certificate request is from)
|
| -** "spki" describes/defines the public key the certificate is for
|
| -** "attributes" if non-zero, some optional attribute data
|
| -*/
|
| -extern CERTCertificateRequest *
|
| -CERT_CreateCertificateRequest (CERTName *name, CERTSubjectPublicKeyInfo *spki,
|
| - SECItem **attributes);
|
| -
|
| -/*
|
| -** Destroy a certificate-request object
|
| -** "r" the certificate-request to destroy
|
| -** "freeit" if PR_TRUE then free the object as well as its sub-objects
|
| -*/
|
| -extern void CERT_DestroyCertificateRequest(CERTCertificateRequest *r);
|
| -
|
| -/*
|
| -** Start adding extensions to a certificate request.
|
| -*/
|
| -void *
|
| -CERT_StartCertificateRequestAttributes(CERTCertificateRequest *req);
|
| -
|
| -/*
|
| -** Reformat the certificate extension list into a CertificateRequest
|
| -** attribute list.
|
| -*/
|
| -SECStatus
|
| -CERT_FinishCertificateRequestAttributes(CERTCertificateRequest *req);
|
| -
|
| -/*
|
| -** Extract the Extension Requests from a DER CertRequest attribute list.
|
| -*/
|
| -SECStatus
|
| -CERT_GetCertificateRequestExtensions(CERTCertificateRequest *req,
|
| - CERTCertExtension ***exts);
|
| -
|
| -/*
|
| -** Extract a public key object from a certificate
|
| -*/
|
| -extern SECKEYPublicKey *CERT_ExtractPublicKey(CERTCertificate *cert);
|
| -
|
| -/*
|
| -** Retrieve the Key Type associated with the cert we're dealing with
|
| -*/
|
| -
|
| -extern KeyType CERT_GetCertKeyType (CERTSubjectPublicKeyInfo *spki);
|
| -
|
| -/*
|
| -** Initialize the certificate database. This is called to create
|
| -** the initial list of certificates in the database.
|
| -*/
|
| -extern SECStatus CERT_InitCertDB(CERTCertDBHandle *handle);
|
| -
|
| -extern int CERT_GetDBContentVersion(CERTCertDBHandle *handle);
|
| -
|
| -/*
|
| -** Default certificate database routines
|
| -*/
|
| -extern void CERT_SetDefaultCertDB(CERTCertDBHandle *handle);
|
| -
|
| -extern CERTCertDBHandle *CERT_GetDefaultCertDB(void);
|
| -
|
| -extern CERTCertList *CERT_GetCertChainFromCert(CERTCertificate *cert,
|
| - PRTime time,
|
| - SECCertUsage usage);
|
| -extern CERTCertificate *
|
| -CERT_NewTempCertificate (CERTCertDBHandle *handle, SECItem *derCert,
|
| - char *nickname, PRBool isperm, PRBool copyDER);
|
| -
|
| -
|
| -/******************************************************************************
|
| - *
|
| - * X.500 Name handling operations
|
| - *
|
| - *****************************************************************************/
|
| -
|
| -/*
|
| -** Create an AVA (attribute-value-assertion)
|
| -** "arena" the memory arena to alloc from
|
| -** "kind" is one of SEC_OID_AVA_*
|
| -** "valueType" is one of DER_PRINTABLE_STRING, DER_IA5_STRING, or
|
| -** DER_T61_STRING
|
| -** "value" is the null terminated string containing the value
|
| -*/
|
| -extern CERTAVA *CERT_CreateAVA
|
| - (PLArenaPool *arena, SECOidTag kind, int valueType, char *value);
|
| -
|
| -/*
|
| -** Extract the Distinguished Name from a DER encoded certificate
|
| -** "derCert" is the DER encoded certificate
|
| -** "derName" is the SECItem that the name is returned in
|
| -*/
|
| -extern SECStatus CERT_NameFromDERCert(SECItem *derCert, SECItem *derName);
|
| -
|
| -/*
|
| -** Extract the Issuers Distinguished Name from a DER encoded certificate
|
| -** "derCert" is the DER encoded certificate
|
| -** "derName" is the SECItem that the name is returned in
|
| -*/
|
| -extern SECStatus CERT_IssuerNameFromDERCert(SECItem *derCert,
|
| - SECItem *derName);
|
| -
|
| -extern SECItem *
|
| -CERT_EncodeGeneralName(CERTGeneralName *genName, SECItem *dest,
|
| - PLArenaPool *arena);
|
| -
|
| -extern CERTGeneralName *
|
| -CERT_DecodeGeneralName(PLArenaPool *reqArena, SECItem *encodedName,
|
| - CERTGeneralName *genName);
|
| -
|
| -
|
| -
|
| -/*
|
| -** Generate a database search key for a certificate, based on the
|
| -** issuer and serial number.
|
| -** "arena" the memory arena to alloc from
|
| -** "derCert" the DER encoded certificate
|
| -** "key" the returned key
|
| -*/
|
| -extern SECStatus CERT_KeyFromDERCert(PLArenaPool *reqArena, SECItem *derCert,
|
| - SECItem *key);
|
| -
|
| -extern SECStatus CERT_KeyFromIssuerAndSN(PLArenaPool *arena, SECItem *issuer,
|
| - SECItem *sn, SECItem *key);
|
| -
|
| -extern SECStatus CERT_SerialNumberFromDERCert(SECItem *derCert,
|
| - SECItem *derName);
|
| -
|
| -
|
| -/*
|
| -** Generate a database search key for a crl, based on the
|
| -** issuer.
|
| -** "arena" the memory arena to alloc from
|
| -** "derCrl" the DER encoded crl
|
| -** "key" the returned key
|
| -*/
|
| -extern SECStatus CERT_KeyFromDERCrl(PLArenaPool *arena, SECItem *derCrl, SECItem *key);
|
| -
|
| -/*
|
| -** Open the certificate database. Use callback to get name of database.
|
| -*/
|
| -extern SECStatus CERT_OpenCertDB(CERTCertDBHandle *handle, PRBool readOnly,
|
| - CERTDBNameFunc namecb, void *cbarg);
|
| -
|
| -/* Open the certificate database. Use given filename for database. */
|
| -extern SECStatus CERT_OpenCertDBFilename(CERTCertDBHandle *handle,
|
| - char *certdbname, PRBool readOnly);
|
| -
|
| -/*
|
| -** Open and initialize a cert database that is entirely in memory. This
|
| -** can be used when the permanent database can not be opened or created.
|
| -*/
|
| -extern SECStatus CERT_OpenVolatileCertDB(CERTCertDBHandle *handle);
|
| -
|
| -/*
|
| -** Extract the list of host names, host name patters, IP address strings
|
| -** this cert is valid for.
|
| -** This function does NOT return nicknames.
|
| -** Type CERTCertNicknames is being used because it's a convenient
|
| -** data structure to carry a list of strings and its count.
|
| -*/
|
| -extern CERTCertNicknames *
|
| - CERT_GetValidDNSPatternsFromCert(CERTCertificate *cert);
|
| -
|
| -/*
|
| -** Check the hostname to make sure that it matches the shexp that
|
| -** is given in the common name of the certificate.
|
| -*/
|
| -extern SECStatus CERT_VerifyCertName(CERTCertificate *cert, const char *hostname);
|
| -
|
| -/*
|
| -** Add a domain name to the list of names that the user has explicitly
|
| -** allowed (despite cert name mismatches) for use with a server cert.
|
| -*/
|
| -extern SECStatus CERT_AddOKDomainName(CERTCertificate *cert, const char *hostname);
|
| -
|
| -/*
|
| -** Decode a DER encoded certificate into an CERTCertificate structure
|
| -** "derSignedCert" is the DER encoded signed certificate
|
| -** "copyDER" is true if the DER should be copied, false if the
|
| -** existing copy should be referenced
|
| -** "nickname" is the nickname to use in the database. If it is NULL
|
| -** then a temporary nickname is generated.
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_DecodeDERCertificate (SECItem *derSignedCert, PRBool copyDER, char *nickname);
|
| -/*
|
| -** Decode a DER encoded CRL into a CERTSignedCrl structure
|
| -** "derSignedCrl" is the DER encoded signed CRL.
|
| -** "type" must be SEC_CRL_TYPE.
|
| -*/
|
| -#define SEC_CRL_TYPE 1
|
| -#define SEC_KRL_TYPE 0 /* deprecated */
|
| -
|
| -extern CERTSignedCrl *
|
| -CERT_DecodeDERCrl (PLArenaPool *arena, SECItem *derSignedCrl,int type);
|
| -
|
| -/*
|
| - * same as CERT_DecodeDERCrl, plus allow options to be passed in
|
| - */
|
| -
|
| -extern CERTSignedCrl *
|
| -CERT_DecodeDERCrlWithFlags(PLArenaPool *narena, SECItem *derSignedCrl,
|
| - int type, PRInt32 options);
|
| -
|
| -/* CRL options to pass */
|
| -
|
| -#define CRL_DECODE_DEFAULT_OPTIONS 0x00000000
|
| -
|
| -/* when CRL_DECODE_DONT_COPY_DER is set, the DER is not copied . The
|
| - application must then keep derSignedCrl until it destroys the
|
| - CRL . Ideally, it should allocate derSignedCrl in an arena
|
| - and pass that arena in as the first argument to
|
| - CERT_DecodeDERCrlWithFlags */
|
| -
|
| -#define CRL_DECODE_DONT_COPY_DER 0x00000001
|
| -#define CRL_DECODE_SKIP_ENTRIES 0x00000002
|
| -#define CRL_DECODE_KEEP_BAD_CRL 0x00000004
|
| -#define CRL_DECODE_ADOPT_HEAP_DER 0x00000008
|
| -
|
| -/* complete the decoding of a partially decoded CRL, ie. decode the
|
| - entries. Note that entries is an optional field in a CRL, so the
|
| - "entries" pointer in CERTCrlStr may still be NULL even after
|
| - function returns SECSuccess */
|
| -
|
| -extern SECStatus CERT_CompleteCRLDecodeEntries(CERTSignedCrl* crl);
|
| -
|
| -/* Validate CRL then import it to the dbase. If there is already a CRL with the
|
| - * same CA in the dbase, it will be replaced if derCRL is more up to date.
|
| - * If the process successes, a CRL will be returned. Otherwise, a NULL will
|
| - * be returned. The caller should call PORT_GetError() for the exactly error
|
| - * code.
|
| - */
|
| -extern CERTSignedCrl *
|
| -CERT_ImportCRL (CERTCertDBHandle *handle, SECItem *derCRL, char *url,
|
| - int type, void * wincx);
|
| -
|
| -extern void CERT_DestroyCrl (CERTSignedCrl *crl);
|
| -
|
| -/* this is a hint to flush the CRL cache. crlKey is the DER subject of
|
| - the issuer (CA). */
|
| -void CERT_CRLCacheRefreshIssuer(CERTCertDBHandle* dbhandle, SECItem* crlKey);
|
| -
|
| -/* add the specified DER CRL object to the CRL cache. Doing so will allow
|
| - certificate verification functions (such as CERT_VerifyCertificate)
|
| - to automatically find and make use of this CRL object.
|
| - Once a CRL is added to the CRL cache, the application must hold on to
|
| - the object's memory, because the cache will reference it directly. The
|
| - application can only free the object after it calls CERT_UncacheCRL to
|
| - remove it from the CRL cache.
|
| -*/
|
| -SECStatus CERT_CacheCRL(CERTCertDBHandle* dbhandle, SECItem* newcrl);
|
| -
|
| -/* remove a previously added CRL object from the CRL cache. It is OK
|
| - for the application to free the memory after a successful removal
|
| -*/
|
| -SECStatus CERT_UncacheCRL(CERTCertDBHandle* dbhandle, SECItem* oldcrl);
|
| -
|
| -/*
|
| -** Find a certificate in the database
|
| -** "key" is the database key to look for
|
| -*/
|
| -extern CERTCertificate *CERT_FindCertByKey(CERTCertDBHandle *handle, SECItem *key);
|
| -
|
| -/*
|
| -** Find a certificate in the database by name
|
| -** "name" is the distinguished name to look up
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertByName (CERTCertDBHandle *handle, SECItem *name);
|
| -
|
| -/*
|
| -** Find a certificate in the database by name
|
| -** "name" is the distinguished name to look up (in ascii)
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertByNameString (CERTCertDBHandle *handle, char *name);
|
| -
|
| -/*
|
| -** Find a certificate in the database by name and keyid
|
| -** "name" is the distinguished name to look up
|
| -** "keyID" is the value of the subjectKeyID to match
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertByKeyID (CERTCertDBHandle *handle, SECItem *name, SECItem *keyID);
|
| -
|
| -/*
|
| -** Generate a certificate key from the issuer and serialnumber, then look it
|
| -** up in the database. Return the cert if found.
|
| -** "issuerAndSN" is the issuer and serial number to look for
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertByIssuerAndSN (CERTCertDBHandle *handle, CERTIssuerAndSN *issuerAndSN);
|
| -
|
| -/*
|
| -** Find a certificate in the database by a subject key ID
|
| -** "subjKeyID" is the subject Key ID to look for
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertBySubjectKeyID (CERTCertDBHandle *handle, SECItem *subjKeyID);
|
| -
|
| -/*
|
| -** Encode Certificate SKID (Subject Key ID) extension.
|
| -**
|
| -*/
|
| -extern SECStatus
|
| -CERT_EncodeSubjectKeyID(PLArenaPool *arena, const SECItem* srcString,
|
| - SECItem *encodedValue);
|
| -
|
| -/*
|
| -** Find a certificate in the database by a nickname
|
| -** "nickname" is the ascii string nickname to look for
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertByNickname (CERTCertDBHandle *handle, const char *nickname);
|
| -
|
| -/*
|
| -** Find a certificate in the database by a DER encoded certificate
|
| -** "derCert" is the DER encoded certificate
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertByDERCert(CERTCertDBHandle *handle, SECItem *derCert);
|
| -
|
| -/*
|
| -** Find a certificate in the database by a email address
|
| -** "emailAddr" is the email address to look up
|
| -*/
|
| -CERTCertificate *
|
| -CERT_FindCertByEmailAddr(CERTCertDBHandle *handle, char *emailAddr);
|
| -
|
| -/*
|
| -** Find a certificate in the database by a email address or nickname
|
| -** "name" is the email address or nickname to look up
|
| -*/
|
| -CERTCertificate *
|
| -CERT_FindCertByNicknameOrEmailAddr(CERTCertDBHandle *handle, const char *name);
|
| -
|
| -/*
|
| -** Find a certificate in the database by a email address or nickname
|
| -** and require it to have the given usage.
|
| -** "name" is the email address or nickname to look up
|
| -*/
|
| -CERTCertificate *
|
| -CERT_FindCertByNicknameOrEmailAddrForUsage(CERTCertDBHandle *handle,
|
| - const char *name,
|
| - SECCertUsage lookingForUsage);
|
| -
|
| -/*
|
| -** Find a certificate in the database by a digest of a subject public key
|
| -** "spkDigest" is the digest to look up
|
| -*/
|
| -extern CERTCertificate *
|
| -CERT_FindCertBySPKDigest(CERTCertDBHandle *handle, SECItem *spkDigest);
|
| -
|
| -/*
|
| - * Find the issuer of a cert
|
| - */
|
| -CERTCertificate *
|
| -CERT_FindCertIssuer(CERTCertificate *cert, PRTime validTime, SECCertUsage usage);
|
| -
|
| -/*
|
| -** Check the validity times of a certificate vs. time 't', allowing
|
| -** some slop for broken clocks and stuff.
|
| -** "cert" is the certificate to be checked
|
| -** "t" is the time to check against
|
| -** "allowOverride" if true then check to see if the invalidity has
|
| -** been overridden by the user.
|
| -*/
|
| -extern SECCertTimeValidity CERT_CheckCertValidTimes(CERTCertificate *cert,
|
| - PRTime t,
|
| - PRBool allowOverride);
|
| -
|
| -/*
|
| -** WARNING - this function is deprecated, and will either go away or have
|
| -** a new API in the near future.
|
| -**
|
| -** Check the validity times of a certificate vs. the current time, allowing
|
| -** some slop for broken clocks and stuff.
|
| -** "cert" is the certificate to be checked
|
| -*/
|
| -extern SECStatus CERT_CertTimesValid(CERTCertificate *cert);
|
| -
|
| -/*
|
| -** Extract the validity times from a certificate
|
| -** "c" is the certificate
|
| -** "notBefore" is the start of the validity period
|
| -** "notAfter" is the end of the validity period
|
| -*/
|
| -extern SECStatus
|
| -CERT_GetCertTimes (CERTCertificate *c, PRTime *notBefore, PRTime *notAfter);
|
| -
|
| -/*
|
| -** Extract the issuer and serial number from a certificate
|
| -*/
|
| -extern CERTIssuerAndSN *CERT_GetCertIssuerAndSN(PLArenaPool *,
|
| - CERTCertificate *);
|
| -
|
| -/*
|
| -** verify the signature of a signed data object with a given certificate
|
| -** "sd" the signed data object to be verified
|
| -** "cert" the certificate to use to check the signature
|
| -*/
|
| -extern SECStatus CERT_VerifySignedData(CERTSignedData *sd,
|
| - CERTCertificate *cert,
|
| - PRTime t,
|
| - void *wincx);
|
| -/*
|
| -** verify the signature of a signed data object with the given DER publickey
|
| -*/
|
| -extern SECStatus
|
| -CERT_VerifySignedDataWithPublicKeyInfo(CERTSignedData *sd,
|
| - CERTSubjectPublicKeyInfo *pubKeyInfo,
|
| - void *wincx);
|
| -
|
| -/*
|
| -** verify the signature of a signed data object with a SECKEYPublicKey.
|
| -*/
|
| -extern SECStatus
|
| -CERT_VerifySignedDataWithPublicKey(CERTSignedData *sd,
|
| - SECKEYPublicKey *pubKey, void *wincx);
|
| -
|
| -/*
|
| -** NEW FUNCTIONS with new bit-field-FIELD SECCertificateUsage - please use
|
| -** verify a certificate by checking validity times against a certain time,
|
| -** that we trust the issuer, and that the signature on the certificate is
|
| -** valid.
|
| -** "cert" the certificate to verify
|
| -** "checkSig" only check signatures if true
|
| -*/
|
| -extern SECStatus
|
| -CERT_VerifyCertificate(CERTCertDBHandle *handle, CERTCertificate *cert,
|
| - PRBool checkSig, SECCertificateUsage requiredUsages,
|
| - PRTime t, void *wincx, CERTVerifyLog *log,
|
| - SECCertificateUsage* returnedUsages);
|
| -
|
| -/* same as above, but uses current time */
|
| -extern SECStatus
|
| -CERT_VerifyCertificateNow(CERTCertDBHandle *handle, CERTCertificate *cert,
|
| - PRBool checkSig, SECCertificateUsage requiredUsages,
|
| - void *wincx, SECCertificateUsage* returnedUsages);
|
| -
|
| -/*
|
| -** Verify that a CA cert can certify some (unspecified) leaf cert for a given
|
| -** purpose. This is used by UI code to help identify where a chain may be
|
| -** broken and why. This takes identical parameters to CERT_VerifyCert
|
| -*/
|
| -extern SECStatus
|
| -CERT_VerifyCACertForUsage(CERTCertDBHandle *handle, CERTCertificate *cert,
|
| - PRBool checkSig, SECCertUsage certUsage, PRTime t,
|
| - void *wincx, CERTVerifyLog *log);
|
| -
|
| -/*
|
| -** OLD OBSOLETE FUNCTIONS with enum SECCertUsage - DO NOT USE FOR NEW CODE
|
| -** verify a certificate by checking validity times against a certain time,
|
| -** that we trust the issuer, and that the signature on the certificate is
|
| -** valid.
|
| -** "cert" the certificate to verify
|
| -** "checkSig" only check signatures if true
|
| -*/
|
| -extern SECStatus
|
| -CERT_VerifyCert(CERTCertDBHandle *handle, CERTCertificate *cert,
|
| - PRBool checkSig, SECCertUsage certUsage, PRTime t,
|
| - void *wincx, CERTVerifyLog *log);
|
| -
|
| -/* same as above, but uses current time */
|
| -extern SECStatus
|
| -CERT_VerifyCertNow(CERTCertDBHandle *handle, CERTCertificate *cert,
|
| - PRBool checkSig, SECCertUsage certUsage, void *wincx);
|
| -
|
| -SECStatus
|
| -CERT_VerifyCertChain(CERTCertDBHandle *handle, CERTCertificate *cert,
|
| - PRBool checkSig, SECCertUsage certUsage, PRTime t,
|
| - void *wincx, CERTVerifyLog *log);
|
| -
|
| -/*
|
| -** Read a base64 ascii encoded DER certificate and convert it to our
|
| -** internal format.
|
| -** "certstr" is a null-terminated string containing the certificate
|
| -*/
|
| -extern CERTCertificate *CERT_ConvertAndDecodeCertificate(char *certstr);
|
| -
|
| -/*
|
| -** Read a certificate in some foreign format, and convert it to our
|
| -** internal format.
|
| -** "certbuf" is the buffer containing the certificate
|
| -** "certlen" is the length of the buffer
|
| -** NOTE - currently supports netscape base64 ascii encoded raw certs
|
| -** and netscape binary DER typed files.
|
| -*/
|
| -extern CERTCertificate *CERT_DecodeCertFromPackage(char *certbuf, int certlen);
|
| -
|
| -extern SECStatus
|
| -CERT_ImportCAChain (SECItem *certs, int numcerts, SECCertUsage certUsage);
|
| -
|
| -extern SECStatus
|
| -CERT_ImportCAChainTrusted(SECItem *certs, int numcerts, SECCertUsage certUsage);
|
| -
|
| -/*
|
| -** Read a certificate chain in some foreign format, and pass it to a
|
| -** callback function.
|
| -** "certbuf" is the buffer containing the certificate
|
| -** "certlen" is the length of the buffer
|
| -** "f" is the callback function
|
| -** "arg" is the callback argument
|
| -*/
|
| -typedef SECStatus (PR_CALLBACK *CERTImportCertificateFunc)
|
| - (void *arg, SECItem **certs, int numcerts);
|
| -
|
| -extern SECStatus
|
| -CERT_DecodeCertPackage(char *certbuf, int certlen, CERTImportCertificateFunc f,
|
| - void *arg);
|
| -
|
| -/*
|
| -** Returns the value of an AVA. This was a formerly static
|
| -** function that has been exposed due to the need to decode
|
| -** and convert unicode strings to UTF8.
|
| -**
|
| -** XXX This function resides in certhtml.c, should it be
|
| -** moved elsewhere?
|
| -*/
|
| -extern SECItem *CERT_DecodeAVAValue(const SECItem *derAVAValue);
|
| -
|
| -
|
| -
|
| -/*
|
| -** extract various element strings from a distinguished name.
|
| -** "name" the distinguished name
|
| -*/
|
| -
|
| -extern char *CERT_GetCertificateEmailAddress(CERTCertificate *cert);
|
| -
|
| -extern char *CERT_GetCertEmailAddress(CERTName *name);
|
| -
|
| -extern const char * CERT_GetFirstEmailAddress(CERTCertificate * cert);
|
| -
|
| -extern const char * CERT_GetNextEmailAddress(CERTCertificate * cert,
|
| - const char * prev);
|
| -
|
| -/* The return value must be freed with PORT_Free. */
|
| -extern char *CERT_GetCommonName(CERTName *name);
|
| -
|
| -extern char *CERT_GetCountryName(CERTName *name);
|
| -
|
| -extern char *CERT_GetLocalityName(CERTName *name);
|
| -
|
| -extern char *CERT_GetStateName(CERTName *name);
|
| -
|
| -extern char *CERT_GetOrgName(CERTName *name);
|
| -
|
| -extern char *CERT_GetOrgUnitName(CERTName *name);
|
| -
|
| -extern char *CERT_GetDomainComponentName(CERTName *name);
|
| -
|
| -extern char *CERT_GetCertUid(CERTName *name);
|
| -
|
| -/* manipulate the trust parameters of a certificate */
|
| -
|
| -extern SECStatus CERT_GetCertTrust(CERTCertificate *cert, CERTCertTrust *trust);
|
| -
|
| -extern SECStatus
|
| -CERT_ChangeCertTrust (CERTCertDBHandle *handle, CERTCertificate *cert,
|
| - CERTCertTrust *trust);
|
| -
|
| -extern SECStatus
|
| -CERT_ChangeCertTrustByUsage(CERTCertDBHandle *certdb, CERTCertificate *cert,
|
| - SECCertUsage usage);
|
| -
|
| -/*************************************************************************
|
| - *
|
| - * manipulate the extensions of a certificate
|
| - *
|
| - ************************************************************************/
|
| -
|
| -/*
|
| -** Set up a cert for adding X509v3 extensions. Returns an opaque handle
|
| -** used by the next two routines.
|
| -** "cert" is the certificate we are adding extensions to
|
| -*/
|
| -extern void *CERT_StartCertExtensions(CERTCertificate *cert);
|
| -
|
| -/*
|
| -** Add an extension to a certificate.
|
| -** "exthandle" is the handle returned by the previous function
|
| -** "idtag" is the integer tag for the OID that should ID this extension
|
| -** "value" is the value of the extension
|
| -** "critical" is the critical extension flag
|
| -** "copyData" is a flag indicating whether the value data should be
|
| -** copied.
|
| -*/
|
| -extern SECStatus CERT_AddExtension (void *exthandle, int idtag,
|
| - SECItem *value, PRBool critical, PRBool copyData);
|
| -
|
| -extern SECStatus CERT_AddExtensionByOID (void *exthandle, SECItem *oid,
|
| - SECItem *value, PRBool critical, PRBool copyData);
|
| -
|
| -extern SECStatus CERT_EncodeAndAddExtension
|
| - (void *exthandle, int idtag, void *value, PRBool critical,
|
| - const SEC_ASN1Template *atemplate);
|
| -
|
| -extern SECStatus CERT_EncodeAndAddBitStrExtension
|
| - (void *exthandle, int idtag, SECItem *value, PRBool critical);
|
| -
|
| -
|
| -extern SECStatus
|
| -CERT_EncodeAltNameExtension(PLArenaPool *arena, CERTGeneralName *value, SECItem *encodedValue);
|
| -
|
| -
|
| -/*
|
| -** Finish adding cert extensions. Does final processing on extension
|
| -** data, putting it in the right format, and freeing any temporary
|
| -** storage.
|
| -** "exthandle" is the handle used to add extensions to a certificate
|
| -*/
|
| -extern SECStatus CERT_FinishExtensions(void *exthandle);
|
| -
|
| -/*
|
| -** Merge an external list of extensions into a cert's extension list, adding one
|
| -** only when its OID matches none of the cert's existing extensions. Call this
|
| -** immediately before calling CERT_FinishExtensions().
|
| -*/
|
| -SECStatus
|
| -CERT_MergeExtensions(void *exthandle, CERTCertExtension **exts);
|
| -
|
| -/* If the extension is found, return its criticality and value.
|
| -** This allocate storage for the returning extension value.
|
| -*/
|
| -extern SECStatus CERT_GetExtenCriticality
|
| - (CERTCertExtension **extensions, int tag, PRBool *isCritical);
|
| -
|
| -extern void
|
| -CERT_DestroyOidSequence(CERTOidSequence *oidSeq);
|
| -
|
| -/****************************************************************************
|
| - *
|
| - * DER encode and decode extension values
|
| - *
|
| - ****************************************************************************/
|
| -
|
| -/* Encode the value of the basicConstraint extension.
|
| -** arena - where to allocate memory for the encoded value.
|
| -** value - extension value to encode
|
| -** encodedValue - output encoded value
|
| -*/
|
| -extern SECStatus CERT_EncodeBasicConstraintValue
|
| - (PLArenaPool *arena, CERTBasicConstraints *value, SECItem *encodedValue);
|
| -
|
| -/*
|
| -** Encode the value of the authorityKeyIdentifier extension.
|
| -*/
|
| -extern SECStatus CERT_EncodeAuthKeyID
|
| - (PLArenaPool *arena, CERTAuthKeyID *value, SECItem *encodedValue);
|
| -
|
| -/*
|
| -** Encode the value of the crlDistributionPoints extension.
|
| -*/
|
| -extern SECStatus CERT_EncodeCRLDistributionPoints
|
| - (PLArenaPool *arena, CERTCrlDistributionPoints *value,SECItem *derValue);
|
| -
|
| -/*
|
| -** Decodes a DER encoded basicConstaint extension value into a readable format
|
| -** value - decoded value
|
| -** encodedValue - value to decoded
|
| -*/
|
| -extern SECStatus CERT_DecodeBasicConstraintValue
|
| - (CERTBasicConstraints *value, SECItem *encodedValue);
|
| -
|
| -/* Decodes a DER encoded authorityKeyIdentifier extension value into a
|
| -** readable format.
|
| -** arena - where to allocate memory for the decoded value
|
| -** encodedValue - value to be decoded
|
| -** Returns a CERTAuthKeyID structure which contains the decoded value
|
| -*/
|
| -extern CERTAuthKeyID *CERT_DecodeAuthKeyID
|
| - (PLArenaPool *arena, SECItem *encodedValue);
|
| -
|
| -
|
| -/* Decodes a DER encoded crlDistributionPoints extension value into a
|
| -** readable format.
|
| -** arena - where to allocate memory for the decoded value
|
| -** der - value to be decoded
|
| -** Returns a CERTCrlDistributionPoints structure which contains the
|
| -** decoded value
|
| -*/
|
| -extern CERTCrlDistributionPoints * CERT_DecodeCRLDistributionPoints
|
| - (PLArenaPool *arena, SECItem *der);
|
| -
|
| -/* Extract certain name type from a generalName */
|
| -extern void *CERT_GetGeneralNameByType
|
| - (CERTGeneralName *genNames, CERTGeneralNameType type, PRBool derFormat);
|
| -
|
| -
|
| -extern CERTOidSequence *
|
| -CERT_DecodeOidSequence(SECItem *seqItem);
|
| -
|
| -
|
| -
|
| -
|
| -/****************************************************************************
|
| - *
|
| - * Find extension values of a certificate
|
| - *
|
| - ***************************************************************************/
|
| -
|
| -extern SECStatus CERT_FindCertExtension
|
| - (CERTCertificate *cert, int tag, SECItem *value);
|
| -
|
| -extern SECStatus CERT_FindNSCertTypeExtension
|
| - (CERTCertificate *cert, SECItem *value);
|
| -
|
| -extern char * CERT_FindNSStringExtension (CERTCertificate *cert, int oidtag);
|
| -
|
| -extern SECStatus CERT_FindIssuerCertExtension
|
| - (CERTCertificate *cert, int tag, SECItem *value);
|
| -
|
| -extern SECStatus CERT_FindCertExtensionByOID
|
| - (CERTCertificate *cert, SECItem *oid, SECItem *value);
|
| -
|
| -extern char *CERT_FindCertURLExtension (CERTCertificate *cert, int tag,
|
| - int catag);
|
| -
|
| -/* Returns the decoded value of the authKeyID extension.
|
| -** Note that this uses passed in the arena to allocate storage for the result
|
| -*/
|
| -extern CERTAuthKeyID * CERT_FindAuthKeyIDExten (PLArenaPool *arena,CERTCertificate *cert);
|
| -
|
| -/* Returns the decoded value of the basicConstraint extension.
|
| - */
|
| -extern SECStatus CERT_FindBasicConstraintExten
|
| - (CERTCertificate *cert, CERTBasicConstraints *value);
|
| -
|
| -/* Returns the decoded value of the crlDistributionPoints extension.
|
| -** Note that the arena in cert is used to allocate storage for the result
|
| -*/
|
| -extern CERTCrlDistributionPoints * CERT_FindCRLDistributionPoints
|
| - (CERTCertificate *cert);
|
| -
|
| -/* Returns value of the keyUsage extension. This uses PR_Alloc to allocate
|
| -** buffer for the decoded value. The caller should free up the storage
|
| -** allocated in value->data.
|
| -*/
|
| -extern SECStatus CERT_FindKeyUsageExtension (CERTCertificate *cert,
|
| - SECItem *value);
|
| -
|
| -/* Return the decoded value of the subjectKeyID extension. The caller should
|
| -** free up the storage allocated in retItem->data.
|
| -*/
|
| -extern SECStatus CERT_FindSubjectKeyIDExtension (CERTCertificate *cert,
|
| - SECItem *retItem);
|
| -
|
| -/*
|
| -** If cert is a v3 certificate, and a critical keyUsage extension is included,
|
| -** then check the usage against the extension value. If a non-critical
|
| -** keyUsage extension is included, this will return SECSuccess without
|
| -** checking, since the extension is an advisory field, not a restriction.
|
| -** If cert is not a v3 certificate, this will return SECSuccess.
|
| -** cert - certificate
|
| -** usage - one of the x.509 v3 the Key Usage Extension flags
|
| -*/
|
| -extern SECStatus CERT_CheckCertUsage (CERTCertificate *cert,
|
| - unsigned char usage);
|
| -
|
| -/****************************************************************************
|
| - *
|
| - * CRL v2 Extensions supported routines
|
| - *
|
| - ****************************************************************************/
|
| -
|
| -extern SECStatus CERT_FindCRLExtensionByOID
|
| - (CERTCrl *crl, SECItem *oid, SECItem *value);
|
| -
|
| -extern SECStatus CERT_FindCRLExtension
|
| - (CERTCrl *crl, int tag, SECItem *value);
|
| -
|
| -extern SECStatus
|
| - CERT_FindInvalidDateExten (CERTCrl *crl, PRTime *value);
|
| -
|
| -/*
|
| -** Set up a crl for adding X509v3 extensions. Returns an opaque handle
|
| -** used by routines that take an exthandle (void*) argument .
|
| -** "crl" is the CRL we are adding extensions to
|
| -*/
|
| -extern void *CERT_StartCRLExtensions(CERTCrl *crl);
|
| -
|
| -/*
|
| -** Set up a crl entry for adding X509v3 extensions. Returns an opaque handle
|
| -** used by routines that take an exthandle (void*) argument .
|
| -** "crl" is the crl we are adding certs entries to
|
| -** "entry" is the crl entry we are adding extensions to
|
| -*/
|
| -extern void *CERT_StartCRLEntryExtensions(CERTCrl *crl, CERTCrlEntry *entry);
|
| -
|
| -extern CERTCertNicknames *CERT_GetCertNicknames (CERTCertDBHandle *handle,
|
| - int what, void *wincx);
|
| -
|
| -/*
|
| -** Finds the crlNumber extension and decodes its value into 'value'
|
| -*/
|
| -extern SECStatus CERT_FindCRLNumberExten (PLArenaPool *arena, CERTCrl *crl,
|
| - SECItem *value);
|
| -
|
| -extern SECStatus CERT_FindCRLEntryReasonExten (CERTCrlEntry *crlEntry,
|
| - CERTCRLEntryReasonCode *value);
|
| -
|
| -extern void CERT_FreeNicknames(CERTCertNicknames *nicknames);
|
| -
|
| -extern PRBool CERT_CompareCerts(CERTCertificate *c1, CERTCertificate *c2);
|
| -
|
| -extern PRBool CERT_CompareCertsForRedirection(CERTCertificate *c1,
|
| - CERTCertificate *c2);
|
| -
|
| -/*
|
| -** Generate an array of the Distinguished Names that the given cert database
|
| -** "trusts"
|
| -*/
|
| -extern CERTDistNames *CERT_GetSSLCACerts(CERTCertDBHandle *handle);
|
| -
|
| -extern void CERT_FreeDistNames(CERTDistNames *names);
|
| -
|
| -/* Duplicate distinguished name array */
|
| -extern CERTDistNames *CERT_DupDistNames(CERTDistNames *orig);
|
| -
|
| -/*
|
| -** Generate an array of Distinguished names from an array of nicknames
|
| -*/
|
| -extern CERTDistNames *CERT_DistNamesFromNicknames
|
| - (CERTCertDBHandle *handle, char **nicknames, int nnames);
|
| -
|
| -/*
|
| -** Generate an array of Distinguished names from a list of certs.
|
| -*/
|
| -extern CERTDistNames *CERT_DistNamesFromCertList(CERTCertList *list);
|
| -
|
| -/*
|
| -** Generate a certificate chain from a certificate.
|
| -*/
|
| -extern CERTCertificateList *
|
| -CERT_CertChainFromCert(CERTCertificate *cert, SECCertUsage usage,
|
| - PRBool includeRoot);
|
| -
|
| -extern CERTCertificateList *
|
| -CERT_CertListFromCert(CERTCertificate *cert);
|
| -
|
| -extern CERTCertificateList *
|
| -CERT_DupCertList(const CERTCertificateList * oldList);
|
| -
|
| -extern void CERT_DestroyCertificateList(CERTCertificateList *list);
|
| -
|
| -/*
|
| -** is cert a user cert? i.e. does it have CERTDB_USER trust,
|
| -** i.e. a private key?
|
| -*/
|
| -PRBool CERT_IsUserCert(CERTCertificate* cert);
|
| -
|
| -/* is cert a newer than cert b? */
|
| -PRBool CERT_IsNewer(CERTCertificate *certa, CERTCertificate *certb);
|
| -
|
| -/* currently a stub for address book */
|
| -PRBool
|
| -CERT_IsCertRevoked(CERTCertificate *cert);
|
| -
|
| -void
|
| -CERT_DestroyCertArray(CERTCertificate **certs, unsigned int ncerts);
|
| -
|
| -/* convert an email address to lower case */
|
| -char *CERT_FixupEmailAddr(const char *emailAddr);
|
| -
|
| -/* decode string representation of trust flags into trust struct */
|
| -SECStatus
|
| -CERT_DecodeTrustString(CERTCertTrust *trust, const char *trusts);
|
| -
|
| -/* encode trust struct into string representation of trust flags */
|
| -char *
|
| -CERT_EncodeTrustString(CERTCertTrust *trust);
|
| -
|
| -/* find the next or prev cert in a subject list */
|
| -CERTCertificate *
|
| -CERT_PrevSubjectCert(CERTCertificate *cert);
|
| -CERTCertificate *
|
| -CERT_NextSubjectCert(CERTCertificate *cert);
|
| -
|
| -/*
|
| - * import a collection of certs into the temporary or permanent cert
|
| - * database
|
| - */
|
| -SECStatus
|
| -CERT_ImportCerts(CERTCertDBHandle *certdb, SECCertUsage usage,
|
| - unsigned int ncerts, SECItem **derCerts,
|
| - CERTCertificate ***retCerts, PRBool keepCerts,
|
| - PRBool caOnly, char *nickname);
|
| -
|
| -char *
|
| -CERT_MakeCANickname(CERTCertificate *cert);
|
| -
|
| -PRBool
|
| -CERT_IsCACert(CERTCertificate *cert, unsigned int *rettype);
|
| -
|
| -PRBool
|
| -CERT_IsCADERCert(SECItem *derCert, unsigned int *rettype);
|
| -
|
| -PRBool
|
| -CERT_IsRootDERCert(SECItem *derCert);
|
| -
|
| -SECStatus
|
| -CERT_SaveSMimeProfile(CERTCertificate *cert, SECItem *emailProfile,
|
| - SECItem *profileTime);
|
| -
|
| -/*
|
| - * find the smime symmetric capabilities profile for a given cert
|
| - */
|
| -SECItem *
|
| -CERT_FindSMimeProfile(CERTCertificate *cert);
|
| -
|
| -SECStatus
|
| -CERT_AddNewCerts(CERTCertDBHandle *handle);
|
| -
|
| -CERTCertificatePolicies *
|
| -CERT_DecodeCertificatePoliciesExtension(SECItem *extnValue);
|
| -
|
| -void
|
| -CERT_DestroyCertificatePoliciesExtension(CERTCertificatePolicies *policies);
|
| -
|
| -CERTCertificatePolicyMappings *
|
| -CERT_DecodePolicyMappingsExtension(SECItem *encodedCertPolicyMaps);
|
| -
|
| -SECStatus
|
| -CERT_DestroyPolicyMappingsExtension(CERTCertificatePolicyMappings *mappings);
|
| -
|
| -SECStatus
|
| -CERT_DecodePolicyConstraintsExtension(
|
| - CERTCertificatePolicyConstraints *decodedValue, SECItem *encodedValue);
|
| -
|
| -SECStatus CERT_DecodeInhibitAnyExtension
|
| - (CERTCertificateInhibitAny *decodedValue, SECItem *extnValue);
|
| -
|
| -CERTUserNotice *
|
| -CERT_DecodeUserNotice(SECItem *noticeItem);
|
| -
|
| -extern CERTGeneralName *
|
| -CERT_DecodeAltNameExtension(PLArenaPool *reqArena, SECItem *EncodedAltName);
|
| -
|
| -extern CERTNameConstraints *
|
| -CERT_DecodeNameConstraintsExtension(PLArenaPool *arena,
|
| - SECItem *encodedConstraints);
|
| -
|
| -/* returns addr of a NULL termainated array of pointers to CERTAuthInfoAccess */
|
| -extern CERTAuthInfoAccess **
|
| -CERT_DecodeAuthInfoAccessExtension(PLArenaPool *reqArena,
|
| - SECItem *encodedExtension);
|
| -
|
| -extern CERTPrivKeyUsagePeriod *
|
| -CERT_DecodePrivKeyUsagePeriodExtension(PLArenaPool *arena, SECItem *extnValue);
|
| -
|
| -extern CERTGeneralName *
|
| -CERT_GetNextGeneralName(CERTGeneralName *current);
|
| -
|
| -extern CERTGeneralName *
|
| -CERT_GetPrevGeneralName(CERTGeneralName *current);
|
| -
|
| -CERTNameConstraint *
|
| -CERT_GetNextNameConstraint(CERTNameConstraint *current);
|
| -
|
| -CERTNameConstraint *
|
| -CERT_GetPrevNameConstraint(CERTNameConstraint *current);
|
| -
|
| -void
|
| -CERT_DestroyUserNotice(CERTUserNotice *userNotice);
|
| -
|
| -typedef char * (* CERTPolicyStringCallback)(char *org,
|
| - unsigned long noticeNumber,
|
| - void *arg);
|
| -void
|
| -CERT_SetCAPolicyStringCallback(CERTPolicyStringCallback cb, void *cbarg);
|
| -
|
| -char *
|
| -CERT_GetCertCommentString(CERTCertificate *cert);
|
| -
|
| -PRBool
|
| -CERT_GovtApprovedBitSet(CERTCertificate *cert);
|
| -
|
| -SECStatus
|
| -CERT_AddPermNickname(CERTCertificate *cert, char *nickname);
|
| -
|
| -CERTCertList *
|
| -CERT_MatchUserCert(CERTCertDBHandle *handle,
|
| - SECCertUsage usage,
|
| - int nCANames, char **caNames,
|
| - void *proto_win);
|
| -
|
| -CERTCertList *
|
| -CERT_NewCertList(void);
|
| -
|
| -void
|
| -CERT_DestroyCertList(CERTCertList *certs);
|
| -
|
| -/* remove the node and free the cert */
|
| -void
|
| -CERT_RemoveCertListNode(CERTCertListNode *node);
|
| -
|
| -SECStatus
|
| -CERT_AddCertToListTail(CERTCertList *certs, CERTCertificate *cert);
|
| -
|
| -SECStatus
|
| -CERT_AddCertToListHead(CERTCertList *certs, CERTCertificate *cert);
|
| -
|
| -SECStatus
|
| -CERT_AddCertToListTailWithData(CERTCertList *certs, CERTCertificate *cert,
|
| - void *appData);
|
| -
|
| -SECStatus
|
| -CERT_AddCertToListHeadWithData(CERTCertList *certs, CERTCertificate *cert,
|
| - void *appData);
|
| -
|
| -typedef PRBool (* CERTSortCallback)(CERTCertificate *certa,
|
| - CERTCertificate *certb,
|
| - void *arg);
|
| -SECStatus
|
| -CERT_AddCertToListSorted(CERTCertList *certs, CERTCertificate *cert,
|
| - CERTSortCallback f, void *arg);
|
| -
|
| -/* callback for CERT_AddCertToListSorted that sorts based on validity
|
| - * period and a given time.
|
| - */
|
| -PRBool
|
| -CERT_SortCBValidity(CERTCertificate *certa,
|
| - CERTCertificate *certb,
|
| - void *arg);
|
| -
|
| -SECStatus
|
| -CERT_CheckForEvilCert(CERTCertificate *cert);
|
| -
|
| -CERTGeneralName *
|
| -CERT_GetCertificateNames(CERTCertificate *cert, PLArenaPool *arena);
|
| -
|
| -CERTGeneralName *
|
| -CERT_GetConstrainedCertificateNames(CERTCertificate *cert, PLArenaPool *arena,
|
| - PRBool includeSubjectCommonName);
|
| -
|
| -/*
|
| - * Creates or adds to a list of all certs with a give subject name, sorted by
|
| - * validity time, newest first. Invalid certs are considered older than
|
| - * valid certs. If validOnly is set, do not include invalid certs on list.
|
| - */
|
| -CERTCertList *
|
| -CERT_CreateSubjectCertList(CERTCertList *certList, CERTCertDBHandle *handle,
|
| - SECItem *name, PRTime sorttime, PRBool validOnly);
|
| -
|
| -/*
|
| - * remove certs from a list that don't have keyUsage and certType
|
| - * that match the given usage.
|
| - */
|
| -SECStatus
|
| -CERT_FilterCertListByUsage(CERTCertList *certList, SECCertUsage usage,
|
| - PRBool ca);
|
| -
|
| -/*
|
| - * check the key usage of a cert against a set of required values
|
| - */
|
| -SECStatus
|
| -CERT_CheckKeyUsage(CERTCertificate *cert, unsigned int requiredUsage);
|
| -
|
| -/*
|
| - * return required key usage and cert type based on cert usage
|
| - */
|
| -SECStatus
|
| -CERT_KeyUsageAndTypeForCertUsage(SECCertUsage usage,
|
| - PRBool ca,
|
| - unsigned int *retKeyUsage,
|
| - unsigned int *retCertType);
|
| -/*
|
| - * return required trust flags for various cert usages for CAs
|
| - */
|
| -SECStatus
|
| -CERT_TrustFlagsForCACertUsage(SECCertUsage usage,
|
| - unsigned int *retFlags,
|
| - SECTrustType *retTrustType);
|
| -
|
| -/*
|
| - * Find all user certificates that match the given criteria.
|
| - *
|
| - * "handle" - database to search
|
| - * "usage" - certificate usage to match
|
| - * "oneCertPerName" - if set then only return the "best" cert per
|
| - * name
|
| - * "validOnly" - only return certs that are curently valid
|
| - * "proto_win" - window handle passed to pkcs11
|
| - */
|
| -CERTCertList *
|
| -CERT_FindUserCertsByUsage(CERTCertDBHandle *handle,
|
| - SECCertUsage usage,
|
| - PRBool oneCertPerName,
|
| - PRBool validOnly,
|
| - void *proto_win);
|
| -
|
| -/*
|
| - * Find a user certificate that matchs the given criteria.
|
| - *
|
| - * "handle" - database to search
|
| - * "nickname" - nickname to match
|
| - * "usage" - certificate usage to match
|
| - * "validOnly" - only return certs that are curently valid
|
| - * "proto_win" - window handle passed to pkcs11
|
| - */
|
| -CERTCertificate *
|
| -CERT_FindUserCertByUsage(CERTCertDBHandle *handle,
|
| - const char *nickname,
|
| - SECCertUsage usage,
|
| - PRBool validOnly,
|
| - void *proto_win);
|
| -
|
| -/*
|
| - * Filter a list of certificates, removing those certs that do not have
|
| - * one of the named CA certs somewhere in their cert chain.
|
| - *
|
| - * "certList" - the list of certificates to filter
|
| - * "nCANames" - number of CA names
|
| - * "caNames" - array of CA names in string(rfc 1485) form
|
| - * "usage" - what use the certs are for, this is used when
|
| - * selecting CA certs
|
| - */
|
| -SECStatus
|
| -CERT_FilterCertListByCANames(CERTCertList *certList, int nCANames,
|
| - char **caNames, SECCertUsage usage);
|
| -
|
| -/*
|
| - * Filter a list of certificates, removing those certs that aren't user certs
|
| - */
|
| -SECStatus
|
| -CERT_FilterCertListForUserCerts(CERTCertList *certList);
|
| -
|
| -/*
|
| - * Collect the nicknames from all certs in a CertList. If the cert is not
|
| - * valid, append a string to that nickname.
|
| - *
|
| - * "certList" - the list of certificates
|
| - * "expiredString" - the string to append to the nickname of any expired cert
|
| - * "notYetGoodString" - the string to append to the nickname of any cert
|
| - * that is not yet valid
|
| - */
|
| -CERTCertNicknames *
|
| -CERT_NicknameStringsFromCertList(CERTCertList *certList, char *expiredString,
|
| - char *notYetGoodString);
|
| -
|
| -/*
|
| - * Extract the nickname from a nickmake string that may have either
|
| - * expiredString or notYetGoodString appended.
|
| - *
|
| - * Args:
|
| - * "namestring" - the string containing the nickname, and possibly
|
| - * one of the validity label strings
|
| - * "expiredString" - the expired validity label string
|
| - * "notYetGoodString" - the not yet good validity label string
|
| - *
|
| - * Returns the raw nickname
|
| - */
|
| -char *
|
| -CERT_ExtractNicknameString(char *namestring, char *expiredString,
|
| - char *notYetGoodString);
|
| -
|
| -/*
|
| - * Given a certificate, return a string containing the nickname, and possibly
|
| - * one of the validity strings, based on the current validity state of the
|
| - * certificate.
|
| - *
|
| - * "arena" - arena to allocate returned string from. If NULL, then heap
|
| - * is used.
|
| - * "cert" - the cert to get nickname from
|
| - * "expiredString" - the string to append to the nickname if the cert is
|
| - * expired.
|
| - * "notYetGoodString" - the string to append to the nickname if the cert is
|
| - * not yet good.
|
| - */
|
| -char *
|
| -CERT_GetCertNicknameWithValidity(PLArenaPool *arena, CERTCertificate *cert,
|
| - char *expiredString, char *notYetGoodString);
|
| -
|
| -/*
|
| - * Return the string representation of a DER encoded distinguished name
|
| - * "dername" - The DER encoded name to convert
|
| - */
|
| -char *
|
| -CERT_DerNameToAscii(SECItem *dername);
|
| -
|
| -/*
|
| - * Supported usage values and types:
|
| - * certUsageSSLClient
|
| - * certUsageSSLServer
|
| - * certUsageSSLServerWithStepUp
|
| - * certUsageEmailSigner
|
| - * certUsageEmailRecipient
|
| - * certUsageObjectSigner
|
| - */
|
| -
|
| -CERTCertificate *
|
| -CERT_FindMatchingCert(CERTCertDBHandle *handle, SECItem *derName,
|
| - CERTCertOwner owner, SECCertUsage usage,
|
| - PRBool preferTrusted, PRTime validTime, PRBool validOnly);
|
| -
|
| -/*
|
| - * Acquire the global lock on the cert database.
|
| - * This lock is currently used for the following operations:
|
| - * adding or deleting a cert to either the temp or perm databases
|
| - * converting a temp to perm or perm to temp
|
| - * changing(maybe just adding?) the trust of a cert
|
| - * adjusting the reference count of a cert
|
| - */
|
| -void
|
| -CERT_LockDB(CERTCertDBHandle *handle);
|
| -
|
| -/*
|
| - * Free the global cert database lock.
|
| - */
|
| -void
|
| -CERT_UnlockDB(CERTCertDBHandle *handle);
|
| -
|
| -/*
|
| - * Get the certificate status checking configuratino data for
|
| - * the certificate database
|
| - */
|
| -CERTStatusConfig *
|
| -CERT_GetStatusConfig(CERTCertDBHandle *handle);
|
| -
|
| -/*
|
| - * Set the certificate status checking information for the
|
| - * database. The input structure becomes part of the certificate
|
| - * database and will be freed by calling the 'Destroy' function in
|
| - * the configuration object.
|
| - */
|
| -void
|
| -CERT_SetStatusConfig(CERTCertDBHandle *handle, CERTStatusConfig *config);
|
| -
|
| -
|
| -
|
| -/*
|
| - * Acquire the cert reference count lock
|
| - * There is currently one global lock for all certs, but I'm putting a cert
|
| - * arg here so that it will be easy to make it per-cert in the future if
|
| - * that turns out to be necessary.
|
| - */
|
| -void
|
| -CERT_LockCertRefCount(CERTCertificate *cert);
|
| -
|
| -/*
|
| - * Free the cert reference count lock
|
| - */
|
| -void
|
| -CERT_UnlockCertRefCount(CERTCertificate *cert);
|
| -
|
| -/*
|
| - * Acquire the cert trust lock
|
| - * There is currently one global lock for all certs, but I'm putting a cert
|
| - * arg here so that it will be easy to make it per-cert in the future if
|
| - * that turns out to be necessary.
|
| - */
|
| -void
|
| -CERT_LockCertTrust(CERTCertificate *cert);
|
| -
|
| -/*
|
| - * Free the cert trust lock
|
| - */
|
| -void
|
| -CERT_UnlockCertTrust(CERTCertificate *cert);
|
| -
|
| -/*
|
| - * Digest the cert's subject public key using the specified algorithm.
|
| - * The necessary storage for the digest data is allocated. If "fill" is
|
| - * non-null, the data is put there, otherwise a SECItem is allocated.
|
| - * Allocation from "arena" if it is non-null, heap otherwise. Any problem
|
| - * results in a NULL being returned (and an appropriate error set).
|
| - */
|
| -extern SECItem *
|
| -CERT_GetSPKIDigest(PLArenaPool *arena, const CERTCertificate *cert,
|
| - SECOidTag digestAlg, SECItem *fill);
|
| -
|
| -
|
| -SECStatus CERT_CheckCRL(CERTCertificate* cert, CERTCertificate* issuer,
|
| - const SECItem* dp, PRTime t, void* wincx);
|
| -
|
| -
|
| -/*
|
| - * Add a CERTNameConstraint to the CERTNameConstraint list
|
| - */
|
| -extern CERTNameConstraint *
|
| -CERT_AddNameConstraint(CERTNameConstraint *list,
|
| - CERTNameConstraint *constraint);
|
| -
|
| -/*
|
| - * Allocate space and copy CERTNameConstraint from src to dest.
|
| - * Arena is used to allocate result(if dest eq NULL) and its members
|
| - * SECItem data.
|
| - */
|
| -extern CERTNameConstraint *
|
| -CERT_CopyNameConstraint(PLArenaPool *arena,
|
| - CERTNameConstraint *dest,
|
| - CERTNameConstraint *src);
|
| -
|
| -/*
|
| - * Verify name against all the constraints relevant to that type of
|
| - * the name.
|
| - */
|
| -extern SECStatus
|
| -CERT_CheckNameSpace(PLArenaPool *arena,
|
| - CERTNameConstraints *constraints,
|
| - CERTGeneralName *currentName);
|
| -
|
| -/*
|
| - * Extract and allocate the name constraints extension from the CA cert.
|
| - */
|
| -extern SECStatus
|
| -CERT_FindNameConstraintsExten(PLArenaPool *arena,
|
| - CERTCertificate *cert,
|
| - CERTNameConstraints **constraints);
|
| -
|
| -/*
|
| - * Initialize a new GERTGeneralName fields (link)
|
| - */
|
| -extern CERTGeneralName *
|
| -CERT_NewGeneralName(PLArenaPool *arena, CERTGeneralNameType type);
|
| -
|
| -/*
|
| - * PKIX extension encoding routines
|
| - */
|
| -extern SECStatus
|
| -CERT_EncodePolicyConstraintsExtension(PLArenaPool *arena,
|
| - CERTCertificatePolicyConstraints *constr,
|
| - SECItem *dest);
|
| -extern SECStatus
|
| -CERT_EncodeInhibitAnyExtension(PLArenaPool *arena,
|
| - CERTCertificateInhibitAny *inhibitAny,
|
| - SECItem *dest);
|
| -extern SECStatus
|
| -CERT_EncodePolicyMappingExtension(PLArenaPool *arena,
|
| - CERTCertificatePolicyMappings *maps,
|
| - SECItem *dest);
|
| -
|
| -extern SECStatus CERT_EncodeInfoAccessExtension(PLArenaPool *arena,
|
| - CERTAuthInfoAccess **info,
|
| - SECItem *dest);
|
| -extern SECStatus
|
| -CERT_EncodeUserNotice(PLArenaPool *arena,
|
| - CERTUserNotice *notice,
|
| - SECItem *dest);
|
| -
|
| -extern SECStatus
|
| -CERT_EncodeDisplayText(PLArenaPool *arena,
|
| - SECItem *text,
|
| - SECItem *dest);
|
| -
|
| -extern SECStatus
|
| -CERT_EncodeCertPoliciesExtension(PLArenaPool *arena,
|
| - CERTPolicyInfo **info,
|
| - SECItem *dest);
|
| -extern SECStatus
|
| -CERT_EncodeNoticeReference(PLArenaPool *arena,
|
| - CERTNoticeReference *reference,
|
| - SECItem *dest);
|
| -
|
| -/*
|
| - * Returns a pointer to a static structure.
|
| - */
|
| -extern const CERTRevocationFlags*
|
| -CERT_GetPKIXVerifyNistRevocationPolicy(void);
|
| -
|
| -/*
|
| - * Returns a pointer to a static structure.
|
| - */
|
| -extern const CERTRevocationFlags*
|
| -CERT_GetClassicOCSPEnabledSoftFailurePolicy(void);
|
| -
|
| -/*
|
| - * Returns a pointer to a static structure.
|
| - */
|
| -extern const CERTRevocationFlags*
|
| -CERT_GetClassicOCSPEnabledHardFailurePolicy(void);
|
| -
|
| -/*
|
| - * Returns a pointer to a static structure.
|
| - */
|
| -extern const CERTRevocationFlags*
|
| -CERT_GetClassicOCSPDisabledPolicy(void);
|
| -
|
| -/*
|
| - * Verify a Cert with libpkix
|
| - * paramsIn control the verification options. If a value isn't specified
|
| - * in paramsIn, it reverts to the application default.
|
| - * paramsOut specifies the parameters the caller would like to get back.
|
| - * the caller may pass NULL, in which case no parameters are returned.
|
| - */
|
| -extern SECStatus CERT_PKIXVerifyCert(
|
| - CERTCertificate *cert,
|
| - SECCertificateUsage usages,
|
| - CERTValInParam *paramsIn,
|
| - CERTValOutParam *paramsOut,
|
| - void *wincx);
|
| -
|
| -/* Makes old cert validation APIs(CERT_VerifyCert, CERT_VerifyCertificate)
|
| - * to use libpkix validation engine. The function should be called ones at
|
| - * application initialization time.
|
| - * Function is not thread safe.*/
|
| -extern SECStatus CERT_SetUsePKIXForValidation(PRBool enable);
|
| -
|
| -/* The function return PR_TRUE if cert validation should use
|
| - * libpkix cert validation engine. */
|
| -extern PRBool CERT_GetUsePKIXForValidation(void);
|
| -
|
| -/*
|
| - * Allocate a parameter container of type CERTRevocationFlags,
|
| - * and allocate the inner arrays of the given sizes.
|
| - * To cleanup call CERT_DestroyCERTRevocationFlags.
|
| - */
|
| -extern CERTRevocationFlags *
|
| -CERT_AllocCERTRevocationFlags(
|
| - PRUint32 number_leaf_methods, PRUint32 number_leaf_pref_methods,
|
| - PRUint32 number_chain_methods, PRUint32 number_chain_pref_methods);
|
| -
|
| -/*
|
| - * Destroy the arrays inside flags,
|
| - * and destroy the object pointed to by flags, too.
|
| - */
|
| -extern void
|
| -CERT_DestroyCERTRevocationFlags(CERTRevocationFlags *flags);
|
| -
|
| -SEC_END_PROTOS
|
| -
|
| -#endif /* _CERT_H_ */
|
|
|