Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
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/. */
5 #ifndef PKISTORE_H
6 #define PKISTORE_H
8 #ifndef NSSPKIT_H
9 #include "nsspkit.h"
10 #endif /* NSSPKIT_H */
12 #ifndef BASE_H
13 #include "base.h"
14 #endif /* BASE_H */
16 PR_BEGIN_EXTERN_C
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 */
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 */
36 NSS_EXTERN nssCertificateStore *
37 nssCertificateStore_Create
38 (
39 NSSArena *arenaOpt
40 );
42 NSS_EXTERN PRStatus
43 nssCertificateStore_Destroy
44 (
45 nssCertificateStore *store
46 );
48 /* Atomic Find cert in store, or add this cert to the store.
49 ** Ref counts properly maintained.
50 */
51 NSS_EXTERN NSSCertificate *
52 nssCertificateStore_FindOrAdd
53 (
54 nssCertificateStore *store,
55 NSSCertificate *c
56 );
58 NSS_EXTERN void
59 nssCertificateStore_RemoveCertLOCKED
60 (
61 nssCertificateStore *store,
62 NSSCertificate *cert
63 );
65 struct nssCertificateStoreTraceStr {
66 nssCertificateStore* store;
67 PZLock* lock;
68 PRBool locked;
69 PRBool unlocked;
70 };
72 typedef struct nssCertificateStoreTraceStr nssCertificateStoreTrace;
74 NSS_EXTERN void
75 nssCertificateStore_Lock (
76 nssCertificateStore *store, nssCertificateStoreTrace* out
77 );
79 NSS_EXTERN void
80 nssCertificateStore_Unlock (
81 nssCertificateStore *store, const nssCertificateStoreTrace* in,
82 nssCertificateStoreTrace* out
83 );
85 NSS_EXTERN NSSCertificate **
86 nssCertificateStore_FindCertificatesBySubject
87 (
88 nssCertificateStore *store,
89 NSSDER *subject,
90 NSSCertificate *rvOpt[],
91 PRUint32 maximumOpt,
92 NSSArena *arenaOpt
93 );
95 NSS_EXTERN NSSCertificate **
96 nssCertificateStore_FindCertificatesByNickname
97 (
98 nssCertificateStore *store,
99 const NSSUTF8 *nickname,
100 NSSCertificate *rvOpt[],
101 PRUint32 maximumOpt,
102 NSSArena *arenaOpt
103 );
105 NSS_EXTERN NSSCertificate **
106 nssCertificateStore_FindCertificatesByEmail
107 (
108 nssCertificateStore *store,
109 NSSASCII7 *email,
110 NSSCertificate *rvOpt[],
111 PRUint32 maximumOpt,
112 NSSArena *arenaOpt
113 );
115 NSS_EXTERN NSSCertificate *
116 nssCertificateStore_FindCertificateByIssuerAndSerialNumber
117 (
118 nssCertificateStore *store,
119 NSSDER *issuer,
120 NSSDER *serial
121 );
123 NSS_EXTERN NSSCertificate *
124 nssCertificateStore_FindCertificateByEncodedCertificate
125 (
126 nssCertificateStore *store,
127 NSSDER *encoding
128 );
130 NSS_EXTERN PRStatus
131 nssCertificateStore_AddTrust
132 (
133 nssCertificateStore *store,
134 NSSTrust *trust
135 );
137 NSS_EXTERN NSSTrust *
138 nssCertificateStore_FindTrustForCertificate
139 (
140 nssCertificateStore *store,
141 NSSCertificate *cert
142 );
144 NSS_EXTERN PRStatus
145 nssCertificateStore_AddSMIMEProfile
146 (
147 nssCertificateStore *store,
148 nssSMIMEProfile *profile
149 );
151 NSS_EXTERN nssSMIMEProfile *
152 nssCertificateStore_FindSMIMEProfileForCertificate
153 (
154 nssCertificateStore *store,
155 NSSCertificate *cert
156 );
158 NSS_EXTERN void
159 nssCertificateStore_DumpStoreInfo
160 (
161 nssCertificateStore *store,
162 void (* cert_dump_iter)(const void *, void *, void *),
163 void *arg
164 );
166 PR_END_EXTERN_C
168 #endif /* PKISTORE_H */