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 NSSCKFW_H
6 #define NSSCKFW_H
7 
8 /*
9  * nssckfw.h
10  *
11  * This file prototypes the publicly available calls of the
12  * NSS Cryptoki Framework.
13  */
14 
15 #ifndef NSSBASET_H
16 #include "nssbaset.h"
17 #endif /* NSSBASET_H */
18 
19 #ifndef NSSCKT_H
20 #include "nssckt.h"
21 #endif /* NSSCKT_H */
22 
23 #ifndef NSSCKFWT_H
24 #include "nssckfwt.h"
25 #endif /* NSSCKFWT_H */
26 
27 /*
28  * NSSCKFWInstance
29  *
30  *  NSSCKFWInstance_GetMDInstance
31  *  NSSCKFWInstance_GetArena
32  *  NSSCKFWInstance_MayCreatePthreads
33  *  NSSCKFWInstance_CreateMutex
34  *  NSSCKFWInstance_GetConfigurationData
35  *  NSSCKFWInstance_GetInitArgs
36  *  NSSCKFWInstance_DestroySessionHandle
37  *  NSSCKFWInstance_FindSessionHandle
38  */
39 
40 /*
41  * NSSCKFWInstance_GetMDInstance
42  *
43  */
44 
45 NSS_EXTERN NSSCKMDInstance *
46 NSSCKFWInstance_GetMDInstance(
47     NSSCKFWInstance *fwInstance);
48 
49 /*
50  * NSSCKFWInstance_GetArena
51  *
52  */
53 
54 NSS_EXTERN NSSArena *
55 NSSCKFWInstance_GetArena(
56     NSSCKFWInstance *fwInstance,
57     CK_RV *pError);
58 
59 /*
60  * NSSCKFWInstance_MayCreatePthreads
61  *
62  */
63 
64 NSS_EXTERN CK_BBOOL
65 NSSCKFWInstance_MayCreatePthreads(
66     NSSCKFWInstance *fwInstance);
67 
68 /*
69  * NSSCKFWInstance_CreateMutex
70  *
71  */
72 
73 NSS_EXTERN NSSCKFWMutex *
74 NSSCKFWInstance_CreateMutex(
75     NSSCKFWInstance *fwInstance,
76     NSSArena *arena,
77     CK_RV *pError);
78 
79 /*
80  * NSSCKFWInstance_GetConfigurationData
81  *
82  */
83 
84 NSS_EXTERN NSSUTF8 *
85 NSSCKFWInstance_GetConfigurationData(
86     NSSCKFWInstance *fwInstance);
87 
88 /*
89  * NSSCKFWInstance_GetInitArgs
90  *
91  */
92 
93 NSS_EXTERN CK_C_INITIALIZE_ARGS_PTR
94 NSSCKFWInstance_GetInitArgs(
95     NSSCKFWInstance *fwInstance);
96 
97 /*
98  * nssCKFWInstance_DestroySessionHandle
99  *
100  */
101 NSS_EXTERN void
102 NSSCKFWInstance_DestroySessionHandle(
103     NSSCKFWInstance *fwInstance,
104     CK_SESSION_HANDLE hSession);
105 
106 /*
107  * nssCKFWInstance_FindSessionHandle
108  *
109  */
110 NSS_EXTERN CK_SESSION_HANDLE
111 NSSCKFWInstance_FindSessionHandle(
112     NSSCKFWInstance *fwInstance,
113     NSSCKFWSession *fwSession);
114 
115 /*
116  * NSSCKFWSlot
117  *
118  *  NSSCKFWSlot_GetMDSlot
119  *  NSSCKFWSlot_GetFWInstance
120  *  NSSCKFWSlot_GetMDInstance
121  *  NSSCKFWSlot_GetSlotID
122  *
123  */
124 
125 /*
126  * NSSCKFWSlot_GetMDSlot
127  *
128  */
129 
130 NSS_EXTERN NSSCKMDSlot *
131 NSSCKFWSlot_GetMDSlot(
132     NSSCKFWSlot *fwSlot);
133 
134 /*
135  * NSSCKFWSlot_GetFWInstance
136  *
137  */
138 
139 NSS_EXTERN NSSCKFWInstance *
140 NSSCKFWSlot_GetFWInstance(
141     NSSCKFWSlot *fwSlot);
142 
143 /*
144  * NSSCKFWSlot_GetMDInstance
145  *
146  */
147 
148 NSS_EXTERN NSSCKMDInstance *
149 NSSCKFWSlot_GetMDInstance(
150     NSSCKFWSlot *fwSlot);
151 
152 /*
153  * NSSCKFWSlot_GetSlotID
154  *
155  */
156 
157 NSS_EXTERN CK_SLOT_ID
158 NSSCKFWSlot_GetSlotID(
159     NSSCKFWSlot *fwSlot);
160 
161 /*
162  * NSSCKFWToken
163  *
164  *  NSSCKFWToken_GetMDToken
165  *  NSSCKFWToken_GetFWSlot
166  *  NSSCKFWToken_GetMDSlot
167  *  NSSCKFWToken_GetSessionState
168  *
169  */
170 
171 /*
172  * NSSCKFWToken_GetMDToken
173  *
174  */
175 
176 NSS_EXTERN NSSCKMDToken *
177 NSSCKFWToken_GetMDToken(
178     NSSCKFWToken *fwToken);
179 
180 /*
181  * NSSCKFWToken_GetArena
182  *
183  */
184 
185 NSS_EXTERN NSSArena *
186 NSSCKFWToken_GetArena(
187     NSSCKFWToken *fwToken,
188     CK_RV *pError);
189 
190 /*
191  * NSSCKFWToken_GetFWSlot
192  *
193  */
194 
195 NSS_EXTERN NSSCKFWSlot *
196 NSSCKFWToken_GetFWSlot(
197     NSSCKFWToken *fwToken);
198 
199 /*
200  * NSSCKFWToken_GetMDSlot
201  *
202  */
203 
204 NSS_EXTERN NSSCKMDSlot *
205 NSSCKFWToken_GetMDSlot(
206     NSSCKFWToken *fwToken);
207 
208 /*
209  * NSSCKFWToken_GetSessionState
210  *
211  */
212 
213 NSS_EXTERN CK_STATE
214 NSSCKFWToken_GetSessionState(
215     NSSCKFWToken *fwToken);
216 
217 /*
218  * NSSCKFWMechanism
219  *
220  *  NSSKCFWMechanism_GetMDMechanism
221  *  NSSCKFWMechanism_GetParameter
222  *
223  */
224 
225 /*
226  * NSSKCFWMechanism_GetMDMechanism
227  *
228  */
229 
230 NSS_EXTERN NSSCKMDMechanism *
231 NSSCKFWMechanism_GetMDMechanism(
232     NSSCKFWMechanism *fwMechanism);
233 
234 /*
235  * NSSCKFWMechanism_GetParameter
236  *
237  */
238 
239 NSS_EXTERN NSSItem *
240 NSSCKFWMechanism_GetParameter(
241     NSSCKFWMechanism *fwMechanism);
242 
243 /*
244  * NSSCKFWSession
245  *
246  *  NSSCKFWSession_GetMDSession
247  *  NSSCKFWSession_GetArena
248  *  NSSCKFWSession_CallNotification
249  *  NSSCKFWSession_IsRWSession
250  *  NSSCKFWSession_IsSO
251  *  NSSCKFWSession_GetCurrentCryptoOperation
252  *  NSSCKFWSession_GetFWSlot
253  *
254  */
255 
256 /*
257  * NSSCKFWSession_GetMDSession
258  *
259  */
260 
261 NSS_EXTERN NSSCKMDSession *
262 NSSCKFWSession_GetMDSession(
263     NSSCKFWSession *fwSession);
264 
265 /*
266  * NSSCKFWSession_GetArena
267  *
268  */
269 
270 NSS_EXTERN NSSArena *
271 NSSCKFWSession_GetArena(
272     NSSCKFWSession *fwSession,
273     CK_RV *pError);
274 
275 /*
276  * NSSCKFWSession_CallNotification
277  *
278  */
279 
280 NSS_EXTERN CK_RV
281 NSSCKFWSession_CallNotification(
282     NSSCKFWSession *fwSession,
283     CK_NOTIFICATION event);
284 
285 /*
286  * NSSCKFWSession_IsRWSession
287  *
288  */
289 
290 NSS_EXTERN CK_BBOOL
291 NSSCKFWSession_IsRWSession(
292     NSSCKFWSession *fwSession);
293 
294 /*
295  * NSSCKFWSession_IsSO
296  *
297  */
298 
299 NSS_EXTERN CK_BBOOL
300 NSSCKFWSession_IsSO(
301     NSSCKFWSession *fwSession);
302 
303 /*
304  * NSSCKFWSession_GetCurrentCryptoOperation
305  *
306  */
307 
308 NSS_EXTERN NSSCKFWCryptoOperation *
309 NSSCKFWSession_GetCurrentCryptoOperation(
310     NSSCKFWSession *fwSession,
311     NSSCKFWCryptoOperationState state);
312 
313 /*
314  * NSSCKFWSession_GetFWSlot
315  *
316  */
317 
318 NSS_EXTERN NSSCKFWSlot *
319 NSSCKFWSession_GetFWSlot(
320     NSSCKFWSession *fwSession);
321 
322 /*
323  * NSSCKFWObject
324  *
325  *  NSSCKFWObject_GetMDObject
326  *  NSSCKFWObject_GetArena
327  *  NSSCKFWObject_IsTokenObject
328  *  NSSCKFWObject_GetAttributeCount
329  *  NSSCKFWObject_GetAttributeTypes
330  *  NSSCKFWObject_GetAttributeSize
331  *  NSSCKFWObject_GetAttribute
332  *  NSSCKFWObject_GetObjectSize
333  */
334 
335 /*
336  * NSSCKFWObject_GetMDObject
337  *
338  */
339 NSS_EXTERN NSSCKMDObject *
340 NSSCKFWObject_GetMDObject(
341     NSSCKFWObject *fwObject);
342 
343 /*
344  * NSSCKFWObject_GetArena
345  *
346  */
347 NSS_EXTERN NSSArena *
348 NSSCKFWObject_GetArena(
349     NSSCKFWObject *fwObject,
350     CK_RV *pError);
351 
352 /*
353  * NSSCKFWObject_IsTokenObject
354  *
355  */
356 NSS_EXTERN CK_BBOOL
357 NSSCKFWObject_IsTokenObject(
358     NSSCKFWObject *fwObject);
359 
360 /*
361  * NSSCKFWObject_GetAttributeCount
362  *
363  */
364 NSS_EXTERN CK_ULONG
365 NSSCKFWObject_GetAttributeCount(
366     NSSCKFWObject *fwObject,
367     CK_RV *pError);
368 
369 /*
370  * NSSCKFWObject_GetAttributeTypes
371  *
372  */
373 NSS_EXTERN CK_RV
374 NSSCKFWObject_GetAttributeTypes(
375     NSSCKFWObject *fwObject,
376     CK_ATTRIBUTE_TYPE_PTR typeArray,
377     CK_ULONG ulCount);
378 
379 /*
380  * NSSCKFWObject_GetAttributeSize
381  *
382  */
383 NSS_EXTERN CK_ULONG
384 NSSCKFWObject_GetAttributeSize(
385     NSSCKFWObject *fwObject,
386     CK_ATTRIBUTE_TYPE attribute,
387     CK_RV *pError);
388 
389 /*
390  * NSSCKFWObject_GetAttribute
391  *
392  */
393 NSS_EXTERN NSSItem *
394 NSSCKFWObject_GetAttribute(
395     NSSCKFWObject *fwObject,
396     CK_ATTRIBUTE_TYPE attribute,
397     NSSItem *itemOpt,
398     NSSArena *arenaOpt,
399     CK_RV *pError);
400 
401 /*
402  * NSSCKFWObject_GetObjectSize
403  *
404  */
405 NSS_EXTERN CK_ULONG
406 NSSCKFWObject_GetObjectSize(
407     NSSCKFWObject *fwObject,
408     CK_RV *pError);
409 
410 /*
411  * NSSCKFWFindObjects
412  *
413  *  NSSCKFWFindObjects_GetMDFindObjects
414  *
415  */
416 
417 /*
418  * NSSCKFWFindObjects_GetMDFindObjects
419  *
420  */
421 
422 NSS_EXTERN NSSCKMDFindObjects *
423 NSSCKFWFindObjects_GetMDFindObjects(
424     NSSCKFWFindObjects *);
425 
426 /*
427  * NSSCKFWMutex
428  *
429  *  NSSCKFWMutex_Destroy
430  *  NSSCKFWMutex_Lock
431  *  NSSCKFWMutex_Unlock
432  *
433  */
434 
435 /*
436  * NSSCKFWMutex_Destroy
437  *
438  */
439 
440 NSS_EXTERN CK_RV
441 NSSCKFWMutex_Destroy(
442     NSSCKFWMutex *mutex);
443 
444 /*
445  * NSSCKFWMutex_Lock
446  *
447  */
448 
449 NSS_EXTERN CK_RV
450 NSSCKFWMutex_Lock(
451     NSSCKFWMutex *mutex);
452 
453 /*
454  * NSSCKFWMutex_Unlock
455  *
456  */
457 
458 NSS_EXTERN CK_RV
459 NSSCKFWMutex_Unlock(
460     NSSCKFWMutex *mutex);
461 
462 #endif /* NSSCKFW_H */
463