tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

pkistore.h (3561B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #ifndef PKISTORE_H
      6 #define PKISTORE_H
      7 
      8 #ifndef NSSPKIT_H
      9 #include "nsspkit.h"
     10 #endif /* NSSPKIT_H */
     11 
     12 #ifndef BASE_H
     13 #include "base.h"
     14 #endif /* BASE_H */
     15 
     16 PR_BEGIN_EXTERN_C
     17 
     18 /*
     19 * PKI Stores
     20 *
     21 * This is a set of routines for managing local stores of PKI objects.
     22 * Currently, the only application is in crypto contexts, where the
     23 * certificate store is used.  In the future, methods should be added
     24 * here for storing local references to keys.
     25 */
     26 
     27 /*
     28 * nssCertificateStore
     29 *
     30 * Manages local store of certificate, trust, and S/MIME profile objects.
     31 * Within a crypto context, mappings of cert to trust and cert to S/MIME
     32 * profile are always 1-1.  Therefore, it is reasonable to store all objects
     33 * in a single collection, indexed by the certificate.
     34 */
     35 
     36 NSS_EXTERN nssCertificateStore *
     37 nssCertificateStore_Create(
     38    NSSArena *arenaOpt);
     39 
     40 NSS_EXTERN PRStatus
     41 nssCertificateStore_Destroy(
     42    nssCertificateStore *store);
     43 
     44 /* Atomic Find cert in store, or add this cert to the store.
     45 ** Ref counts properly maintained.
     46 */
     47 NSS_EXTERN NSSCertificate *
     48 nssCertificateStore_FindOrAdd(
     49    nssCertificateStore *store,
     50    NSSCertificate *c);
     51 
     52 NSS_EXTERN void
     53 nssCertificateStore_RemoveCertLOCKED(
     54    nssCertificateStore *store,
     55    NSSCertificate *cert);
     56 
     57 struct nssCertificateStoreTraceStr {
     58    nssCertificateStore *store;
     59    PZLock *lock;
     60    PRBool locked;
     61    PRBool unlocked;
     62 };
     63 
     64 typedef struct nssCertificateStoreTraceStr nssCertificateStoreTrace;
     65 
     66 NSS_EXTERN void
     67 nssCertificateStore_Lock(
     68    nssCertificateStore *store, nssCertificateStoreTrace *out);
     69 
     70 NSS_EXTERN void
     71 nssCertificateStore_Unlock(
     72    nssCertificateStore *store, const nssCertificateStoreTrace *in,
     73    nssCertificateStoreTrace *out);
     74 
     75 NSS_EXTERN NSSCertificate **
     76 nssCertificateStore_FindCertificatesBySubject(
     77    nssCertificateStore *store,
     78    NSSDER *subject,
     79    NSSCertificate *rvOpt[],
     80    PRUint32 maximumOpt,
     81    NSSArena *arenaOpt);
     82 
     83 NSS_EXTERN NSSCertificate **
     84 nssCertificateStore_FindCertificatesByNickname(
     85    nssCertificateStore *store,
     86    const NSSUTF8 *nickname,
     87    NSSCertificate *rvOpt[],
     88    PRUint32 maximumOpt,
     89    NSSArena *arenaOpt);
     90 
     91 NSS_EXTERN NSSCertificate **
     92 nssCertificateStore_FindCertificatesByEmail(
     93    nssCertificateStore *store,
     94    NSSASCII7 *email,
     95    NSSCertificate *rvOpt[],
     96    PRUint32 maximumOpt,
     97    NSSArena *arenaOpt);
     98 
     99 NSS_EXTERN NSSCertificate *
    100 nssCertificateStore_FindCertificateByIssuerAndSerialNumber(
    101    nssCertificateStore *store,
    102    NSSDER *issuer,
    103    NSSDER *serial);
    104 
    105 NSS_EXTERN NSSCertificate *
    106 nssCertificateStore_FindCertificateByEncodedCertificate(
    107    nssCertificateStore *store,
    108    NSSDER *encoding);
    109 
    110 NSS_EXTERN PRStatus
    111 nssCertificateStore_AddTrust(
    112    nssCertificateStore *store,
    113    NSSTrust *trust);
    114 
    115 NSS_EXTERN NSSTrust *
    116 nssCertificateStore_FindTrustForCertificate(
    117    nssCertificateStore *store,
    118    NSSCertificate *cert);
    119 
    120 NSS_EXTERN PRStatus
    121 nssCertificateStore_AddSMIMEProfile(
    122    nssCertificateStore *store,
    123    nssSMIMEProfile *profile);
    124 
    125 NSS_EXTERN nssSMIMEProfile *
    126 nssCertificateStore_FindSMIMEProfileForCertificate(
    127    nssCertificateStore *store,
    128    NSSCertificate *cert);
    129 
    130 NSS_EXTERN void
    131 nssCertificateStore_DumpStoreInfo(
    132    nssCertificateStore *store,
    133    void (*cert_dump_iter)(const void *, void *, void *),
    134    void *arg);
    135 
    136 PR_END_EXTERN_C
    137 
    138 #endif /* PKISTORE_H */