|
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 CKDBM_H |
|
6 #define CKDBM_H |
|
7 |
|
8 #include "nssckmdt.h" |
|
9 #include "nssckfw.h" |
|
10 |
|
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 */ |
|
18 |
|
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 */ |
|
25 |
|
26 #include "mcom_db.h" |
|
27 |
|
28 NSS_EXTERN_DATA NSSCKMDInstance nss_dbm_mdInstance; |
|
29 |
|
30 typedef struct nss_dbm_db_struct nss_dbm_db_t; |
|
31 struct nss_dbm_db_struct { |
|
32 DB *db; |
|
33 NSSCKFWMutex *crustylock; |
|
34 }; |
|
35 |
|
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 }; |
|
41 |
|
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 }; |
|
49 |
|
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 }; |
|
57 |
|
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 }; |
|
65 |
|
66 struct nss_dbm_dbt_node { |
|
67 struct nss_dbm_dbt_node *next; |
|
68 nss_dbm_dbt_t *dbt; |
|
69 }; |
|
70 |
|
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 }; |
|
79 |
|
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 }; |
|
85 |
|
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 }; |
|
92 |
|
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 ); |
|
101 |
|
102 NSS_EXTERN NSSCKMDToken * |
|
103 nss_dbm_mdToken_factory |
|
104 ( |
|
105 nss_dbm_slot_t *slot, |
|
106 CK_RV *pError |
|
107 ); |
|
108 |
|
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 ); |
|
118 |
|
119 NSS_EXTERN NSSCKMDObject * |
|
120 nss_dbm_mdObject_factory |
|
121 ( |
|
122 nss_dbm_object_t *object, |
|
123 CK_RV *pError |
|
124 ); |
|
125 |
|
126 NSS_EXTERN NSSCKMDFindObjects * |
|
127 nss_dbm_mdFindObjects_factory |
|
128 ( |
|
129 nss_dbm_find_t *find, |
|
130 CK_RV *pError |
|
131 ); |
|
132 |
|
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 ); |
|
142 |
|
143 NSS_EXTERN void |
|
144 nss_dbm_db_close |
|
145 ( |
|
146 nss_dbm_db_t *db |
|
147 ); |
|
148 |
|
149 NSS_EXTERN CK_VERSION |
|
150 nss_dbm_db_get_format_version |
|
151 ( |
|
152 nss_dbm_db_t *db |
|
153 ); |
|
154 |
|
155 NSS_EXTERN CK_RV |
|
156 nss_dbm_db_set_label |
|
157 ( |
|
158 nss_dbm_db_t *db, |
|
159 NSSUTF8 *label |
|
160 ); |
|
161 |
|
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 ); |
|
169 |
|
170 NSS_EXTERN CK_RV |
|
171 nss_dbm_db_delete_object |
|
172 ( |
|
173 nss_dbm_dbt_t *dbt |
|
174 ); |
|
175 |
|
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 ); |
|
186 |
|
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 ); |
|
196 |
|
197 NSS_EXTERN CK_BBOOL |
|
198 nss_dbm_db_object_still_exists |
|
199 ( |
|
200 nss_dbm_dbt_t *dbt |
|
201 ); |
|
202 |
|
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 ); |
|
210 |
|
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 ); |
|
219 |
|
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 ); |
|
228 |
|
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 ); |
|
238 |
|
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 ); |
|
247 |
|
248 #endif /* CKDBM_H */ |