138 lines
3.5 KiB
C
138 lines
3.5 KiB
C
/* 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/. */
|
|
|
|
#ifndef PKISTORE_H
|
|
#define PKISTORE_H
|
|
|
|
#ifndef NSSPKIT_H
|
|
#include "nsspkit.h"
|
|
#endif /* NSSPKIT_H */
|
|
|
|
#ifndef BASE_H
|
|
#include "base.h"
|
|
#endif /* BASE_H */
|
|
|
|
PR_BEGIN_EXTERN_C
|
|
|
|
/*
|
|
* PKI Stores
|
|
*
|
|
* This is a set of routines for managing local stores of PKI objects.
|
|
* Currently, the only application is in crypto contexts, where the
|
|
* certificate store is used. In the future, methods should be added
|
|
* here for storing local references to keys.
|
|
*/
|
|
|
|
/*
|
|
* nssCertificateStore
|
|
*
|
|
* Manages local store of certificate, trust, and S/MIME profile objects.
|
|
* Within a crypto context, mappings of cert to trust and cert to S/MIME
|
|
* profile are always 1-1. Therefore, it is reasonable to store all objects
|
|
* in a single collection, indexed by the certificate.
|
|
*/
|
|
|
|
NSS_EXTERN nssCertificateStore *
|
|
nssCertificateStore_Create(
|
|
NSSArena *arenaOpt);
|
|
|
|
NSS_EXTERN PRStatus
|
|
nssCertificateStore_Destroy(
|
|
nssCertificateStore *store);
|
|
|
|
/* Atomic Find cert in store, or add this cert to the store.
|
|
** Ref counts properly maintained.
|
|
*/
|
|
NSS_EXTERN NSSCertificate *
|
|
nssCertificateStore_FindOrAdd(
|
|
nssCertificateStore *store,
|
|
NSSCertificate *c);
|
|
|
|
NSS_EXTERN void
|
|
nssCertificateStore_RemoveCertLOCKED(
|
|
nssCertificateStore *store,
|
|
NSSCertificate *cert);
|
|
|
|
struct nssCertificateStoreTraceStr {
|
|
nssCertificateStore *store;
|
|
PZLock *lock;
|
|
PRBool locked;
|
|
PRBool unlocked;
|
|
};
|
|
|
|
typedef struct nssCertificateStoreTraceStr nssCertificateStoreTrace;
|
|
|
|
NSS_EXTERN void
|
|
nssCertificateStore_Lock(
|
|
nssCertificateStore *store, nssCertificateStoreTrace *out);
|
|
|
|
NSS_EXTERN void
|
|
nssCertificateStore_Unlock(
|
|
nssCertificateStore *store, const nssCertificateStoreTrace *in,
|
|
nssCertificateStoreTrace *out);
|
|
|
|
NSS_EXTERN NSSCertificate **
|
|
nssCertificateStore_FindCertificatesBySubject(
|
|
nssCertificateStore *store,
|
|
NSSDER *subject,
|
|
NSSCertificate *rvOpt[],
|
|
PRUint32 maximumOpt,
|
|
NSSArena *arenaOpt);
|
|
|
|
NSS_EXTERN NSSCertificate **
|
|
nssCertificateStore_FindCertificatesByNickname(
|
|
nssCertificateStore *store,
|
|
const NSSUTF8 *nickname,
|
|
NSSCertificate *rvOpt[],
|
|
PRUint32 maximumOpt,
|
|
NSSArena *arenaOpt);
|
|
|
|
NSS_EXTERN NSSCertificate **
|
|
nssCertificateStore_FindCertificatesByEmail(
|
|
nssCertificateStore *store,
|
|
NSSASCII7 *email,
|
|
NSSCertificate *rvOpt[],
|
|
PRUint32 maximumOpt,
|
|
NSSArena *arenaOpt);
|
|
|
|
NSS_EXTERN NSSCertificate *
|
|
nssCertificateStore_FindCertificateByIssuerAndSerialNumber(
|
|
nssCertificateStore *store,
|
|
NSSDER *issuer,
|
|
NSSDER *serial);
|
|
|
|
NSS_EXTERN NSSCertificate *
|
|
nssCertificateStore_FindCertificateByEncodedCertificate(
|
|
nssCertificateStore *store,
|
|
NSSDER *encoding);
|
|
|
|
NSS_EXTERN PRStatus
|
|
nssCertificateStore_AddTrust(
|
|
nssCertificateStore *store,
|
|
NSSTrust *trust);
|
|
|
|
NSS_EXTERN NSSTrust *
|
|
nssCertificateStore_FindTrustForCertificate(
|
|
nssCertificateStore *store,
|
|
NSSCertificate *cert);
|
|
|
|
NSS_EXTERN PRStatus
|
|
nssCertificateStore_AddSMIMEProfile(
|
|
nssCertificateStore *store,
|
|
nssSMIMEProfile *profile);
|
|
|
|
NSS_EXTERN nssSMIMEProfile *
|
|
nssCertificateStore_FindSMIMEProfileForCertificate(
|
|
nssCertificateStore *store,
|
|
NSSCertificate *cert);
|
|
|
|
NSS_EXTERN void
|
|
nssCertificateStore_DumpStoreInfo(
|
|
nssCertificateStore *store,
|
|
void (*cert_dump_iter)(const void *, void *, void *),
|
|
void *arg);
|
|
|
|
PR_END_EXTERN_C
|
|
|
|
#endif /* PKISTORE_H */
|