Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
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 CKDBM_H
6 #define CKDBM_H
8 #include "nssckmdt.h"
9 #include "nssckfw.h"
11 /*
12 * I'm including this for access to the arena functions.
13 * Looks like we should publish that API.
14 */
15 #ifndef BASE_H
16 #include "base.h"
17 #endif /* BASE_H */
19 /*
20 * This is where the Netscape extensions live, at least for now.
21 */
22 #ifndef CKT_H
23 #include "ckt.h"
24 #endif /* CKT_H */
26 #include "mcom_db.h"
28 NSS_EXTERN_DATA NSSCKMDInstance nss_dbm_mdInstance;
30 typedef struct nss_dbm_db_struct nss_dbm_db_t;
31 struct nss_dbm_db_struct {
32 DB *db;
33 NSSCKFWMutex *crustylock;
34 };
36 typedef struct nss_dbm_dbt_struct nss_dbm_dbt_t;
37 struct nss_dbm_dbt_struct {
38 DBT dbt;
39 nss_dbm_db_t *my_db;
40 };
42 typedef struct nss_dbm_instance_struct nss_dbm_instance_t;
43 struct nss_dbm_instance_struct {
44 NSSArena *arena;
45 CK_ULONG nSlots;
46 char **filenames;
47 int *flags; /* e.g. O_RDONLY, O_RDWR */
48 };
50 typedef struct nss_dbm_slot_struct nss_dbm_slot_t;
51 struct nss_dbm_slot_struct {
52 nss_dbm_instance_t *instance;
53 char *filename;
54 int flags;
55 nss_dbm_db_t *token_db;
56 };
58 typedef struct nss_dbm_token_struct nss_dbm_token_t;
59 struct nss_dbm_token_struct {
60 NSSArena *arena;
61 nss_dbm_slot_t *slot;
62 nss_dbm_db_t *session_db;
63 NSSUTF8 *label;
64 };
66 struct nss_dbm_dbt_node {
67 struct nss_dbm_dbt_node *next;
68 nss_dbm_dbt_t *dbt;
69 };
71 typedef struct nss_dbm_session_struct nss_dbm_session_t;
72 struct nss_dbm_session_struct {
73 NSSArena *arena;
74 nss_dbm_token_t *token;
75 CK_ULONG deviceError;
76 struct nss_dbm_dbt_node *session_objects;
77 NSSCKFWMutex *list_lock;
78 };
80 typedef struct nss_dbm_object_struct nss_dbm_object_t;
81 struct nss_dbm_object_struct {
82 NSSArena *arena; /* token or session */
83 nss_dbm_dbt_t *handle;
84 };
86 typedef struct nss_dbm_find_struct nss_dbm_find_t;
87 struct nss_dbm_find_struct {
88 NSSArena *arena;
89 struct nss_dbm_dbt_node *found;
90 NSSCKFWMutex *list_lock;
91 };
93 NSS_EXTERN NSSCKMDSlot *
94 nss_dbm_mdSlot_factory
95 (
96 nss_dbm_instance_t *instance,
97 char *filename,
98 int flags,
99 CK_RV *pError
100 );
102 NSS_EXTERN NSSCKMDToken *
103 nss_dbm_mdToken_factory
104 (
105 nss_dbm_slot_t *slot,
106 CK_RV *pError
107 );
109 NSS_EXTERN NSSCKMDSession *
110 nss_dbm_mdSession_factory
111 (
112 nss_dbm_token_t *token,
113 NSSCKFWSession *fwSession,
114 NSSCKFWInstance *fwInstance,
115 CK_BBOOL rw,
116 CK_RV *pError
117 );
119 NSS_EXTERN NSSCKMDObject *
120 nss_dbm_mdObject_factory
121 (
122 nss_dbm_object_t *object,
123 CK_RV *pError
124 );
126 NSS_EXTERN NSSCKMDFindObjects *
127 nss_dbm_mdFindObjects_factory
128 (
129 nss_dbm_find_t *find,
130 CK_RV *pError
131 );
133 NSS_EXTERN nss_dbm_db_t *
134 nss_dbm_db_open
135 (
136 NSSArena *arena,
137 NSSCKFWInstance *fwInstance,
138 char *filename,
139 int flags,
140 CK_RV *pError
141 );
143 NSS_EXTERN void
144 nss_dbm_db_close
145 (
146 nss_dbm_db_t *db
147 );
149 NSS_EXTERN CK_VERSION
150 nss_dbm_db_get_format_version
151 (
152 nss_dbm_db_t *db
153 );
155 NSS_EXTERN CK_RV
156 nss_dbm_db_set_label
157 (
158 nss_dbm_db_t *db,
159 NSSUTF8 *label
160 );
162 NSS_EXTERN NSSUTF8 *
163 nss_dbm_db_get_label
164 (
165 nss_dbm_db_t *db,
166 NSSArena *arena,
167 CK_RV *pError
168 );
170 NSS_EXTERN CK_RV
171 nss_dbm_db_delete_object
172 (
173 nss_dbm_dbt_t *dbt
174 );
176 NSS_EXTERN nss_dbm_dbt_t *
177 nss_dbm_db_create_object
178 (
179 NSSArena *arena,
180 nss_dbm_db_t *db,
181 CK_ATTRIBUTE_PTR pTemplate,
182 CK_ULONG ulAttributeCount,
183 CK_RV *pError,
184 CK_ULONG *pdbrv
185 );
187 NSS_EXTERN CK_RV
188 nss_dbm_db_find_objects
189 (
190 nss_dbm_find_t *find,
191 nss_dbm_db_t *db,
192 CK_ATTRIBUTE_PTR pTemplate,
193 CK_ULONG ulAttributeCount,
194 CK_ULONG *pdbrv
195 );
197 NSS_EXTERN CK_BBOOL
198 nss_dbm_db_object_still_exists
199 (
200 nss_dbm_dbt_t *dbt
201 );
203 NSS_EXTERN CK_ULONG
204 nss_dbm_db_get_object_attribute_count
205 (
206 nss_dbm_dbt_t *dbt,
207 CK_RV *pError,
208 CK_ULONG *pdbrv
209 );
211 NSS_EXTERN CK_RV
212 nss_dbm_db_get_object_attribute_types
213 (
214 nss_dbm_dbt_t *dbt,
215 CK_ATTRIBUTE_TYPE_PTR typeArray,
216 CK_ULONG ulCount,
217 CK_ULONG *pdbrv
218 );
220 NSS_EXTERN CK_ULONG
221 nss_dbm_db_get_object_attribute_size
222 (
223 nss_dbm_dbt_t *dbt,
224 CK_ATTRIBUTE_TYPE type,
225 CK_RV *pError,
226 CK_ULONG *pdbrv
227 );
229 NSS_EXTERN NSSItem *
230 nss_dbm_db_get_object_attribute
231 (
232 nss_dbm_dbt_t *dbt,
233 NSSArena *arena,
234 CK_ATTRIBUTE_TYPE type,
235 CK_RV *pError,
236 CK_ULONG *pdbrv
237 );
239 NSS_EXTERN CK_RV
240 nss_dbm_db_set_object_attribute
241 (
242 nss_dbm_dbt_t *dbt,
243 CK_ATTRIBUTE_TYPE type,
244 NSSItem *value,
245 CK_ULONG *pdbrv
246 );
248 #endif /* CKDBM_H */