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_ */ |