Imported Upstream version 3.13.6
[platform/upstream/nss.git] / mozilla / security / nss / lib / ckfw / ckfw.h
1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * The contents of this file are subject to the Mozilla Public License Version
5  * 1.1 (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS" basis,
10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11  * for the specific language governing rights and limitations under the
12  * License.
13  *
14  * The Original Code is the Netscape security libraries.
15  *
16  * The Initial Developer of the Original Code is
17  * Netscape Communications Corporation.
18  * Portions created by the Initial Developer are Copyright (C) 1994-2000
19  * the Initial Developer. All Rights Reserved.
20  *
21  * Contributor(s):
22  *
23  * Alternatively, the contents of this file may be used under the terms of
24  * either the GNU General Public License Version 2 or later (the "GPL"), or
25  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26  * in which case the provisions of the GPL or the LGPL are applicable instead
27  * of those above. If you wish to allow use of your version of this file only
28  * under the terms of either the GPL or the LGPL, and not to allow others to
29  * use your version of this file under the terms of the MPL, indicate your
30  * decision by deleting the provisions above and replace them with the notice
31  * and other provisions required by the GPL or the LGPL. If you do not delete
32  * the provisions above, a recipient may use your version of this file under
33  * the terms of any one of the MPL, the GPL or the LGPL.
34  *
35  * ***** END LICENSE BLOCK ***** */
36
37 #ifndef CKFW_H
38 #define CKFW_H
39
40 #ifdef DEBUG
41 static const char CKFW_CVS_ID[] = "@(#) $RCSfile: ckfw.h,v $ $Revision: 1.10 $ $Date: 2007/10/06 01:41:28 $";
42 #endif /* DEBUG */
43
44 /*
45  * ckfw.h
46  *
47  * This file prototypes the private calls of the NSS Cryptoki Framework.
48  */
49
50 #ifndef NSSBASET_H
51 #include "nssbaset.h"
52 #endif /* NSSBASET_H */
53
54 #ifndef NSSCKT_H
55 #include "nssckt.h"
56 #endif /* NSSCKT_H */
57
58 #ifndef NSSCKFWT_H
59 #include "nssckfwt.h"
60 #endif /* NSSCKFWT_H */
61
62 #ifndef NSSCKMDT_H
63 #include "nssckmdt.h"
64 #endif /* NSSCKMDT_H */
65
66 /*
67  * NSSCKFWInstance
68  *
69  *  -- create/destroy --
70  *  nssCKFWInstance_Create
71  *  nssCKFWInstance_Destroy
72  *
73  *  -- implement public accessors --
74  *  nssCKFWInstance_GetMDInstance
75  *  nssCKFWInstance_GetArena
76  *  nssCKFWInstance_MayCreatePthreads
77  *  nssCKFWInstance_CreateMutex
78  *  nssCKFWInstance_GetConfigurationData
79  *  nssCKFWInstance_GetInitArgs 
80  *
81  *  -- private accessors --
82  *  nssCKFWInstance_CreateSessionHandle
83  *  nssCKFWInstance_ResolveSessionHandle
84  *  nssCKFWInstance_DestroySessionHandle
85  *  nssCKFWInstance_FindSessionHandle
86  *  nssCKFWInstance_CreateObjectHandle
87  *  nssCKFWInstance_ResolveObjectHandle
88  *  nssCKFWInstance_DestroyObjectHandle
89  *  nssCKFWInstance_FindObjectHandle
90  *
91  *  -- module fronts --
92  *  nssCKFWInstance_GetNSlots
93  *  nssCKFWInstance_GetCryptokiVersion
94  *  nssCKFWInstance_GetManufacturerID
95  *  nssCKFWInstance_GetFlags
96  *  nssCKFWInstance_GetLibraryDescription
97  *  nssCKFWInstance_GetLibraryVersion
98  *  nssCKFWInstance_GetModuleHandlesSessionObjects
99  *  nssCKFWInstance_GetSlots
100  *  nssCKFWInstance_WaitForSlotEvent
101  *
102  *  -- debugging versions only --
103  *  nssCKFWInstance_verifyPointer
104  */
105
106 /*
107  * nssCKFWInstance_Create
108  *
109  */
110 NSS_EXTERN NSSCKFWInstance *
111 nssCKFWInstance_Create
112 (
113   CK_C_INITIALIZE_ARGS_PTR pInitArgs,
114   CryptokiLockingState LockingState,
115   NSSCKMDInstance *mdInstance,
116   CK_RV *pError
117 );
118
119 /*
120  * nssCKFWInstance_Destroy
121  *
122  */
123 NSS_EXTERN CK_RV
124 nssCKFWInstance_Destroy
125 (
126   NSSCKFWInstance *fwInstance
127 );
128
129 /*
130  * nssCKFWInstance_GetMDInstance
131  *
132  */
133 NSS_EXTERN NSSCKMDInstance *
134 nssCKFWInstance_GetMDInstance
135 (
136   NSSCKFWInstance *fwInstance
137 );
138
139 /*
140  * nssCKFWInstance_GetArena
141  *
142  */
143 NSS_EXTERN NSSArena *
144 nssCKFWInstance_GetArena
145 (
146   NSSCKFWInstance *fwInstance,
147   CK_RV *pError
148 );
149
150 /*
151  * nssCKFWInstance_MayCreatePthreads
152  *
153  */
154 NSS_EXTERN CK_BBOOL
155 nssCKFWInstance_MayCreatePthreads
156 (
157   NSSCKFWInstance *fwInstance
158 );
159
160 /*
161  * nssCKFWInstance_CreateMutex
162  *
163  */
164 NSS_EXTERN NSSCKFWMutex *
165 nssCKFWInstance_CreateMutex
166 (
167   NSSCKFWInstance *fwInstance,
168   NSSArena *arena,
169   CK_RV *pError
170 );
171
172 /*
173  * nssCKFWInstance_GetConfigurationData
174  *
175  */
176 NSS_EXTERN NSSUTF8 *
177 nssCKFWInstance_GetConfigurationData
178 (
179   NSSCKFWInstance *fwInstance
180 );
181
182 /*
183  * nssCKFWInstance_GetInitArgs
184  *
185  */
186 NSS_EXTERN CK_C_INITIALIZE_ARGS_PTR
187 nssCKFWInstance_GetInitArgs
188 (
189   NSSCKFWInstance *fwInstance
190 );
191
192 /*
193  * nssCKFWInstance_CreateSessionHandle
194  *
195  */
196 NSS_EXTERN CK_SESSION_HANDLE
197 nssCKFWInstance_CreateSessionHandle
198 (
199   NSSCKFWInstance *fwInstance,
200   NSSCKFWSession *fwSession,
201   CK_RV *pError
202 );
203
204 /*
205  * nssCKFWInstance_ResolveSessionHandle
206  *
207  */
208 NSS_EXTERN NSSCKFWSession *
209 nssCKFWInstance_ResolveSessionHandle
210 (
211   NSSCKFWInstance *fwInstance,
212   CK_SESSION_HANDLE hSession
213 );
214
215 /*
216  * nssCKFWInstance_DestroySessionHandle
217  *
218  */
219 NSS_EXTERN void
220 nssCKFWInstance_DestroySessionHandle
221 (
222   NSSCKFWInstance *fwInstance,
223   CK_SESSION_HANDLE hSession
224 );
225
226 /*
227  * nssCKFWInstance_FindSessionHandle
228  *
229  */
230 NSS_EXTERN CK_SESSION_HANDLE
231 nssCKFWInstance_FindSessionHandle
232 (
233   NSSCKFWInstance *fwInstance,
234   NSSCKFWSession *fwSession
235 );
236
237 /*
238  * nssCKFWInstance_CreateObjectHandle
239  *
240  */
241 NSS_EXTERN CK_OBJECT_HANDLE
242 nssCKFWInstance_CreateObjectHandle
243 (
244   NSSCKFWInstance *fwInstance,
245   NSSCKFWObject *fwObject,
246   CK_RV *pError
247 );
248
249 /*
250  * nssCKFWInstance_ResolveObjectHandle
251  *
252  */
253 NSS_EXTERN NSSCKFWObject *
254 nssCKFWInstance_ResolveObjectHandle
255 (
256   NSSCKFWInstance *fwInstance,
257   CK_OBJECT_HANDLE hObject
258 );
259
260 /*
261  * nssCKFWInstance_ReassignObjectHandle
262  *
263  */
264 NSS_EXTERN CK_RV
265 nssCKFWInstance_ReassignObjectHandle
266 (
267   NSSCKFWInstance *fwInstance,
268   CK_OBJECT_HANDLE hObject,
269   NSSCKFWObject *fwObject
270 );
271
272 /*
273  * nssCKFWInstance_DestroyObjectHandle
274  *
275  */
276 NSS_EXTERN void
277 nssCKFWInstance_DestroyObjectHandle
278 (
279   NSSCKFWInstance *fwInstance,
280   CK_OBJECT_HANDLE hObject
281 );
282
283 /*
284  * nssCKFWInstance_FindObjectHandle
285  *
286  */
287 NSS_EXTERN CK_OBJECT_HANDLE
288 nssCKFWInstance_FindObjectHandle
289 (
290   NSSCKFWInstance *fwInstance,
291   NSSCKFWObject *fwObject
292 );
293
294 /*
295  * nssCKFWInstance_GetNSlots
296  *
297  */
298 NSS_EXTERN CK_ULONG
299 nssCKFWInstance_GetNSlots
300 (
301   NSSCKFWInstance *fwInstance,
302   CK_RV *pError
303 );
304
305 /*
306  * nssCKFWInstance_GetCryptokiVersion
307  *
308  */
309 NSS_EXTERN CK_VERSION
310 nssCKFWInstance_GetCryptokiVersion
311 (
312   NSSCKFWInstance *fwInstance
313 );
314
315 /*
316  * nssCKFWInstance_GetManufacturerID
317  *
318  */
319 NSS_EXTERN CK_RV
320 nssCKFWInstance_GetManufacturerID
321 (
322   NSSCKFWInstance *fwInstance,
323   CK_CHAR manufacturerID[32]
324 );
325
326 /*
327  * nssCKFWInstance_GetFlags
328  *
329  */
330 NSS_EXTERN CK_ULONG
331 nssCKFWInstance_GetFlags
332 (
333   NSSCKFWInstance *fwInstance
334 );
335
336 /*
337  * nssCKFWInstance_GetLibraryDescription
338  *
339  */
340 NSS_EXTERN CK_RV
341 nssCKFWInstance_GetLibraryDescription
342 (
343   NSSCKFWInstance *fwInstance,
344   CK_CHAR libraryDescription[32]
345 );
346
347 /*
348  * nssCKFWInstance_GetLibraryVersion
349  *
350  */
351 NSS_EXTERN CK_VERSION
352 nssCKFWInstance_GetLibraryVersion
353 (
354   NSSCKFWInstance *fwInstance
355 );
356
357 /*
358  * nssCKFWInstance_GetModuleHandlesSessionObjects
359  *
360  */
361 NSS_EXTERN CK_BBOOL
362 nssCKFWInstance_GetModuleHandlesSessionObjects
363 (
364   NSSCKFWInstance *fwInstance
365 );
366
367 /*
368  * nssCKFWInstance_GetSlots
369  *
370  */
371 NSS_EXTERN NSSCKFWSlot **
372 nssCKFWInstance_GetSlots
373 (
374   NSSCKFWInstance *fwInstance,
375   CK_RV *pError
376 );
377
378 /*
379  * nssCKFWInstance_WaitForSlotEvent
380  *
381  */
382 NSS_EXTERN NSSCKFWSlot *
383 nssCKFWInstance_WaitForSlotEvent
384 (
385   NSSCKFWInstance *fwInstance,
386   CK_BBOOL block,
387   CK_RV *pError
388 );
389
390 /*
391  * nssCKFWInstance_verifyPointer
392  *
393  */
394 NSS_EXTERN CK_RV
395 nssCKFWInstance_verifyPointer
396 (
397   const NSSCKFWInstance *fwInstance
398 );
399
400
401 /*
402  * NSSCKFWSlot
403  *
404  *  -- create/destroy --
405  *  nssCKFWSlot_Create
406  *  nssCKFWSlot_Destroy
407  *
408  *  -- implement public accessors --
409  *  nssCKFWSlot_GetMDSlot
410  *  nssCKFWSlot_GetFWInstance
411  *  nssCKFWSlot_GetMDInstance
412  *
413  *  -- private accessors --
414  *  nssCKFWSlot_GetSlotID
415  *
416  *  -- module fronts --
417  *  nssCKFWSlot_GetSlotDescription
418  *  nssCKFWSlot_GetManufacturerID
419  *  nssCKFWSlot_GetTokenPresent
420  *  nssCKFWSlot_GetRemovableDevice
421  *  nssCKFWSlot_GetHardwareSlot
422  *  nssCKFWSlot_GetHardwareVersion
423  *  nssCKFWSlot_GetFirmwareVersion
424  *  nssCKFWSlot_GetToken
425  */
426
427 /*
428  * nssCKFWSlot_Create
429  *
430  */
431 NSS_EXTERN NSSCKFWSlot *
432 nssCKFWSlot_Create
433 (
434   NSSCKFWInstance *fwInstance,
435   NSSCKMDSlot *mdSlot,
436   CK_SLOT_ID slotID,
437   CK_RV *pError
438 );
439
440 /*
441  * nssCKFWSlot_Destroy
442  *
443  */
444 NSS_EXTERN CK_RV
445 nssCKFWSlot_Destroy
446 (
447   NSSCKFWSlot *fwSlot
448 );
449
450 /*
451  * nssCKFWSlot_GetMDSlot
452  *
453  */
454 NSS_EXTERN NSSCKMDSlot *
455 nssCKFWSlot_GetMDSlot
456 (
457   NSSCKFWSlot *fwSlot
458 );
459
460 /*
461  * nssCKFWSlot_GetFWInstance
462  *
463  */
464
465 NSS_EXTERN NSSCKFWInstance *
466 nssCKFWSlot_GetFWInstance
467 (
468   NSSCKFWSlot *fwSlot
469 );
470
471 /*
472  * nssCKFWSlot_GetMDInstance
473  *
474  */
475
476 NSS_EXTERN NSSCKMDInstance *
477 nssCKFWSlot_GetMDInstance
478 (
479   NSSCKFWSlot *fwSlot
480 );
481
482 /*
483  * nssCKFWSlot_GetSlotID
484  *
485  */
486 NSS_EXTERN CK_SLOT_ID
487 nssCKFWSlot_GetSlotID
488 (
489   NSSCKFWSlot *fwSlot
490 );
491
492 /*
493  * nssCKFWSlot_GetSlotDescription
494  *
495  */
496 NSS_EXTERN CK_RV
497 nssCKFWSlot_GetSlotDescription
498 (
499   NSSCKFWSlot *fwSlot,
500   CK_CHAR slotDescription[64]
501 );
502
503 /*
504  * nssCKFWSlot_GetManufacturerID
505  *
506  */
507 NSS_EXTERN CK_RV
508 nssCKFWSlot_GetManufacturerID
509 (
510   NSSCKFWSlot *fwSlot,
511   CK_CHAR manufacturerID[32]
512 );
513
514 /*
515  * nssCKFWSlot_GetTokenPresent
516  *
517  */
518 NSS_EXTERN CK_BBOOL
519 nssCKFWSlot_GetTokenPresent
520 (
521   NSSCKFWSlot *fwSlot
522 );
523
524 /*
525  * nssCKFWSlot_GetRemovableDevice
526  *
527  */
528 NSS_EXTERN CK_BBOOL
529 nssCKFWSlot_GetRemovableDevice
530 (
531   NSSCKFWSlot *fwSlot
532 );
533
534 /*
535  * nssCKFWSlot_GetHardwareSlot
536  *
537  */
538 NSS_EXTERN CK_BBOOL
539 nssCKFWSlot_GetHardwareSlot
540 (
541   NSSCKFWSlot *fwSlot
542 );
543
544 /*
545  * nssCKFWSlot_GetHardwareVersion
546  *
547  */
548 NSS_EXTERN CK_VERSION
549 nssCKFWSlot_GetHardwareVersion
550 (
551   NSSCKFWSlot *fwSlot
552 );
553
554 /*
555  * nssCKFWSlot_GetFirmwareVersion
556  *
557  */
558 NSS_EXTERN CK_VERSION
559 nssCKFWSlot_GetFirmwareVersion
560 (
561   NSSCKFWSlot *fwSlot
562 );
563
564 /*
565  * nssCKFWSlot_GetToken
566  * 
567  */
568 NSS_EXTERN NSSCKFWToken *
569 nssCKFWSlot_GetToken
570 (
571   NSSCKFWSlot *fwSlot,
572   CK_RV *pError
573 );
574
575 /*
576  * nssCKFWSlot_ClearToken
577  *
578  */
579 NSS_EXTERN void
580 nssCKFWSlot_ClearToken
581 (
582   NSSCKFWSlot *fwSlot
583 );
584
585 /*
586  * NSSCKFWToken
587  *
588  *  -- create/destroy --
589  *  nssCKFWToken_Create
590  *  nssCKFWToken_Destroy
591  *
592  *  -- implement public accessors --
593  *  nssCKFWToken_GetMDToken
594  *  nssCKFWToken_GetFWSlot
595  *  nssCKFWToken_GetMDSlot
596  *  nssCKFWToken_GetSessionState
597  *
598  *  -- private accessors --
599  *  nssCKFWToken_SetSessionState
600  *  nssCKFWToken_RemoveSession
601  *  nssCKFWToken_CloseAllSessions
602  *  nssCKFWToken_GetSessionCount
603  *  nssCKFWToken_GetRwSessionCount
604  *  nssCKFWToken_GetRoSessionCount
605  *  nssCKFWToken_GetSessionObjectHash
606  *  nssCKFWToken_GetMDObjectHash
607  *  nssCKFWToken_GetObjectHandleHash
608  *
609  *  -- module fronts --
610  *  nssCKFWToken_InitToken
611  *  nssCKFWToken_GetLabel
612  *  nssCKFWToken_GetManufacturerID
613  *  nssCKFWToken_GetModel
614  *  nssCKFWToken_GetSerialNumber
615  *  nssCKFWToken_GetHasRNG
616  *  nssCKFWToken_GetIsWriteProtected
617  *  nssCKFWToken_GetLoginRequired
618  *  nssCKFWToken_GetUserPinInitialized
619  *  nssCKFWToken_GetRestoreKeyNotNeeded
620  *  nssCKFWToken_GetHasClockOnToken
621  *  nssCKFWToken_GetHasProtectedAuthenticationPath
622  *  nssCKFWToken_GetSupportsDualCryptoOperations
623  *  nssCKFWToken_GetMaxSessionCount
624  *  nssCKFWToken_GetMaxRwSessionCount
625  *  nssCKFWToken_GetMaxPinLen
626  *  nssCKFWToken_GetMinPinLen
627  *  nssCKFWToken_GetTotalPublicMemory
628  *  nssCKFWToken_GetFreePublicMemory
629  *  nssCKFWToken_GetTotalPrivateMemory
630  *  nssCKFWToken_GetFreePrivateMemory
631  *  nssCKFWToken_GetHardwareVersion
632  *  nssCKFWToken_GetFirmwareVersion
633  *  nssCKFWToken_GetUTCTime
634  *  nssCKFWToken_OpenSession
635  *  nssCKFWToken_GetMechanismCount
636  *  nssCKFWToken_GetMechanismTypes
637  *  nssCKFWToken_GetMechanism
638  */
639
640 /*
641  * nssCKFWToken_Create
642  *
643  */
644 NSS_EXTERN NSSCKFWToken *
645 nssCKFWToken_Create
646 (
647   NSSCKFWSlot *fwSlot,
648   NSSCKMDToken *mdToken,
649   CK_RV *pError
650 );
651
652 /*
653  * nssCKFWToken_Destroy
654  *
655  */
656 NSS_EXTERN CK_RV
657 nssCKFWToken_Destroy
658 (
659   NSSCKFWToken *fwToken
660 );
661
662 /*
663  * nssCKFWToken_GetMDToken
664  *
665  */
666 NSS_EXTERN NSSCKMDToken *
667 nssCKFWToken_GetMDToken
668 (
669   NSSCKFWToken *fwToken
670 );
671
672 /*
673  * nssCKFWToken_GetArena
674  *
675  */
676 NSS_EXTERN NSSArena *
677 nssCKFWToken_GetArena
678 (
679   NSSCKFWToken *fwToken,
680   CK_RV *pError
681 );
682
683 /*
684  * nssCKFWToken_GetFWSlot
685  *
686  */
687 NSS_EXTERN NSSCKFWSlot *
688 nssCKFWToken_GetFWSlot
689 (
690   NSSCKFWToken *fwToken
691 );
692
693 /*
694  * nssCKFWToken_GetMDSlot
695  *
696  */
697 NSS_EXTERN NSSCKMDSlot *
698 nssCKFWToken_GetMDSlot
699 (
700   NSSCKFWToken *fwToken
701 );
702
703 /*
704  * nssCKFWToken_GetSessionState
705  *
706  */
707 NSS_EXTERN CK_STATE
708 nssCKFWToken_GetSessionState
709 (
710   NSSCKFWToken *fwToken
711 );
712
713 /*
714  * nssCKFWToken_InitToken
715  *
716  */
717 NSS_EXTERN CK_RV
718 nssCKFWToken_InitToken
719 (
720   NSSCKFWToken *fwToken,
721   NSSItem *pin,
722   NSSUTF8 *label
723 );
724
725 /*
726  * nssCKFWToken_GetLabel
727  *
728  */
729 NSS_EXTERN CK_RV
730 nssCKFWToken_GetLabel
731 (
732   NSSCKFWToken *fwToken,
733   CK_CHAR label[32]
734 );
735
736 /*
737  * nssCKFWToken_GetManufacturerID
738  *
739  */
740 NSS_EXTERN CK_RV
741 nssCKFWToken_GetManufacturerID
742 (
743   NSSCKFWToken *fwToken,
744   CK_CHAR manufacturerID[32]
745 );
746
747 /*
748  * nssCKFWToken_GetModel
749  *
750  */
751 NSS_EXTERN CK_RV
752 nssCKFWToken_GetModel
753 (
754   NSSCKFWToken *fwToken,
755   CK_CHAR model[16]
756 );
757
758 /*
759  * nssCKFWToken_GetSerialNumber
760  *
761  */
762 NSS_EXTERN CK_RV
763 nssCKFWToken_GetSerialNumber
764 (
765   NSSCKFWToken *fwToken,
766   CK_CHAR serialNumber[16]
767 );
768
769 /*
770  * nssCKFWToken_GetHasRNG
771  *
772  */
773 NSS_EXTERN CK_BBOOL
774 nssCKFWToken_GetHasRNG
775 (
776   NSSCKFWToken *fwToken
777 );
778
779 /*
780  * nssCKFWToken_GetIsWriteProtected
781  *
782  */
783 NSS_EXTERN CK_BBOOL
784 nssCKFWToken_GetIsWriteProtected
785 (
786   NSSCKFWToken *fwToken
787 );
788
789 /*
790  * nssCKFWToken_GetLoginRequired
791  *
792  */
793 NSS_EXTERN CK_BBOOL
794 nssCKFWToken_GetLoginRequired
795 (
796   NSSCKFWToken *fwToken
797 );
798
799 /*
800  * nssCKFWToken_GetUserPinInitialized
801  *
802  */
803 NSS_EXTERN CK_BBOOL
804 nssCKFWToken_GetUserPinInitialized
805 (
806   NSSCKFWToken *fwToken
807 );
808
809 /*
810  * nssCKFWToken_GetRestoreKeyNotNeeded
811  *
812  */
813 NSS_EXTERN CK_BBOOL
814 nssCKFWToken_GetRestoreKeyNotNeeded
815 (
816   NSSCKFWToken *fwToken
817 );
818
819 /*
820  * nssCKFWToken_GetHasClockOnToken
821  *
822  */
823 NSS_EXTERN CK_BBOOL
824 nssCKFWToken_GetHasClockOnToken
825 (
826   NSSCKFWToken *fwToken
827 );
828
829 /*
830  * nssCKFWToken_GetHasProtectedAuthenticationPath
831  *
832  */
833 NSS_EXTERN CK_BBOOL
834 nssCKFWToken_GetHasProtectedAuthenticationPath
835 (
836   NSSCKFWToken *fwToken
837 );
838
839 /*
840  * nssCKFWToken_GetSupportsDualCryptoOperations
841  *
842  */
843 NSS_EXTERN CK_BBOOL
844 nssCKFWToken_GetSupportsDualCryptoOperations
845 (
846   NSSCKFWToken *fwToken
847 );
848
849 /*
850  * nssCKFWToken_GetMaxSessionCount
851  *
852  */
853 NSS_EXTERN CK_ULONG
854 nssCKFWToken_GetMaxSessionCount
855 (
856   NSSCKFWToken *fwToken
857 );
858
859 /*
860  * nssCKFWToken_GetMaxRwSessionCount
861  *
862  */
863 NSS_EXTERN CK_ULONG
864 nssCKFWToken_GetMaxRwSessionCount
865 (
866   NSSCKFWToken *fwToken
867 );
868
869 /*
870  * nssCKFWToken_GetMaxPinLen
871  *
872  */
873 NSS_EXTERN CK_ULONG
874 nssCKFWToken_GetMaxPinLen
875 (
876   NSSCKFWToken *fwToken
877 );
878
879 /*
880  * nssCKFWToken_GetMinPinLen
881  *
882  */
883 NSS_EXTERN CK_ULONG
884 nssCKFWToken_GetMinPinLen
885 (
886   NSSCKFWToken *fwToken
887 );
888
889 /*
890  * nssCKFWToken_GetTotalPublicMemory
891  *
892  */
893 NSS_EXTERN CK_ULONG
894 nssCKFWToken_GetTotalPublicMemory
895 (
896   NSSCKFWToken *fwToken
897 );
898
899 /*
900  * nssCKFWToken_GetFreePublicMemory
901  *
902  */
903 NSS_EXTERN CK_ULONG
904 nssCKFWToken_GetFreePublicMemory
905 (
906   NSSCKFWToken *fwToken
907 );
908
909 /*
910  * nssCKFWToken_GetTotalPrivateMemory
911  *
912  */
913 NSS_EXTERN CK_ULONG
914 nssCKFWToken_GetTotalPrivateMemory
915 (
916   NSSCKFWToken *fwToken
917 );
918
919 /*
920  * nssCKFWToken_GetFreePrivateMemory
921  *
922  */
923 NSS_EXTERN CK_ULONG
924 nssCKFWToken_GetFreePrivateMemory
925 (
926   NSSCKFWToken *fwToken
927 );
928
929 /*
930  * nssCKFWToken_GetHardwareVersion
931  *
932  */
933 NSS_EXTERN CK_VERSION
934 nssCKFWToken_GetHardwareVersion
935 (
936   NSSCKFWToken *fwToken
937 );
938
939 /*
940  * nssCKFWToken_GetFirmwareVersion
941  *
942  */
943 NSS_EXTERN CK_VERSION
944 nssCKFWToken_GetFirmwareVersion
945 (
946   NSSCKFWToken *fwToken
947 );
948
949 /*
950  * nssCKFWToken_GetUTCTime
951  *
952  */
953 NSS_EXTERN CK_RV
954 nssCKFWToken_GetUTCTime
955 (
956   NSSCKFWToken *fwToken,
957   CK_CHAR utcTime[16]
958 );
959
960 /*
961  * nssCKFWToken_OpenSession
962  *
963  */
964 NSS_EXTERN NSSCKFWSession *
965 nssCKFWToken_OpenSession
966 (
967   NSSCKFWToken *fwToken,
968   CK_BBOOL rw,
969   CK_VOID_PTR pApplication,
970   CK_NOTIFY Notify,
971   CK_RV *pError
972 );
973
974 /*
975  * nssCKFWToken_GetMechanismCount
976  *
977  */
978 NSS_EXTERN CK_ULONG
979 nssCKFWToken_GetMechanismCount
980 (
981   NSSCKFWToken *fwToken
982 );
983
984 /*
985  * nssCKFWToken_GetMechanismTypes
986  *
987  */
988 NSS_EXTERN CK_RV
989 nssCKFWToken_GetMechanismTypes
990 (
991   NSSCKFWToken *fwToken,
992   CK_MECHANISM_TYPE types[]
993 );
994
995 /*
996  * nssCKFWToken_GetMechanism
997  *
998  */
999 NSS_EXTERN NSSCKFWMechanism *
1000 nssCKFWToken_GetMechanism
1001 (
1002   NSSCKFWToken *fwToken,
1003   CK_MECHANISM_TYPE which,
1004   CK_RV *pError
1005 );
1006
1007 /*
1008  * nssCKFWToken_SetSessionState
1009  *
1010  */
1011 NSS_EXTERN CK_RV
1012 nssCKFWToken_SetSessionState
1013 (
1014   NSSCKFWToken *fwToken,
1015   CK_STATE newState
1016 );
1017
1018 /*
1019  * nssCKFWToken_RemoveSession
1020  *
1021  */
1022 NSS_EXTERN CK_RV
1023 nssCKFWToken_RemoveSession
1024 (
1025   NSSCKFWToken *fwToken,
1026   NSSCKFWSession *fwSession
1027 );
1028
1029 /*
1030  * nssCKFWToken_CloseAllSessions
1031  *
1032  */
1033 NSS_EXTERN CK_RV
1034 nssCKFWToken_CloseAllSessions
1035 (
1036   NSSCKFWToken *fwToken
1037 );
1038
1039 /*
1040  * nssCKFWToken_GetSessionCount
1041  *
1042  */
1043 NSS_EXTERN CK_ULONG
1044 nssCKFWToken_GetSessionCount
1045 (
1046   NSSCKFWToken *fwToken
1047 );
1048
1049 /*
1050  * nssCKFWToken_GetRwSessionCount
1051  *
1052  */
1053 NSS_EXTERN CK_ULONG
1054 nssCKFWToken_GetRwSessionCount
1055 (
1056   NSSCKFWToken *fwToken
1057 );
1058
1059 /*
1060  * nssCKFWToken_GetRoSessionCount
1061  *
1062  */
1063 NSS_EXTERN CK_ULONG
1064 nssCKFWToken_GetRoSessionCount
1065 (
1066   NSSCKFWToken *fwToken
1067 );
1068
1069 /*
1070  * nssCKFWToken_GetSessionObjectHash
1071  *
1072  */
1073 NSS_EXTERN nssCKFWHash *
1074 nssCKFWToken_GetSessionObjectHash
1075 (
1076   NSSCKFWToken *fwToken
1077 );
1078
1079 /*
1080  * nssCKFWToken_GetMDObjectHash
1081  *
1082  */
1083 NSS_EXTERN nssCKFWHash *
1084 nssCKFWToken_GetMDObjectHash
1085 (
1086   NSSCKFWToken *fwToken
1087 );
1088
1089 /*
1090  * nssCKFWToken_GetObjectHandleHash
1091  *
1092  */
1093 NSS_EXTERN nssCKFWHash *
1094 nssCKFWToken_GetObjectHandleHash
1095 (
1096   NSSCKFWToken *fwToken
1097 );
1098
1099 /*
1100  * NSSCKFWMechanism
1101  *
1102  *  -- create/destroy --
1103  *  nssCKFWMechanism_Create
1104  *  nssCKFWMechanism_Destroy
1105  *
1106  *  -- implement public accessors --
1107  *  nssCKFWMechanism_GetMDMechanism
1108  *
1109  *  -- private accessors --
1110  *
1111  *  -- module fronts --
1112  *  nssCKFWMechanism_GetMinKeySize
1113  *  nssCKFWMechanism_GetMaxKeySize
1114  *  nssCKFWMechanism_GetInHardware
1115  *  nssCKFWMechanism_GetCanEncrypt
1116  *  nssCKFWMechanism_GetCanDecrypt
1117  *  nssCKFWMechanism_GetCanDigest
1118  *  nssCKFWMechanism_GetCanSignRecover
1119  *  nssCKFWMechanism_GetCanVerify
1120  *  nssCKFWMechanism_GetCanVerifyRecover
1121  *  nssCKFWMechanism_GetCanGenerate
1122  *  nssCKFWMechanism_GetCanGenerateKeyPair
1123  *  nssCKFWMechanism_GetCanWrap
1124  *  nssCKFWMechanism_GetCanUnwrap
1125  *  nssCKFWMechanism_GetCanDerive
1126  *  nssCKFWMechanism_EncryptInit
1127  *  nssCKFWMechanism_DecryptInit
1128  *  nssCKFWMechanism_DigestInit
1129  *  nssCKFWMechanism_SignInit
1130  *  nssCKFWMechanism_SignRecoverInit
1131  *  nssCKFWMechanism_VerifyInit
1132  *  nssCKFWMechanism_VerifyRecoverInit
1133  *  nssCKFWMechanism_GenerateKey
1134  *  nssCKFWMechanism_GenerateKeyPair
1135  *  nssCKFWMechanism_GetWrapKeyLength
1136  *  nssCKFWMechanism_WrapKey
1137  *  nssCKFWMechanism_UnwrapKey
1138  *  nssCKFWMechanism_DeriveKey
1139  */
1140
1141 /*
1142  * nssCKFWMechanism_Create
1143  *
1144  */
1145 NSS_EXTERN NSSCKFWMechanism *
1146 nssCKFWMechanism_Create
1147 (
1148   NSSCKMDMechanism *mdMechanism,
1149   NSSCKMDToken *mdToken,
1150   NSSCKFWToken *fwToken,
1151   NSSCKMDInstance *mdInstance,
1152   NSSCKFWInstance *fwInstance
1153 );
1154
1155 /*
1156  * nssCKFWMechanism_Destroy
1157  *
1158  */
1159 NSS_EXTERN void
1160 nssCKFWMechanism_Destroy
1161 (
1162   NSSCKFWMechanism *fwMechanism
1163 );
1164
1165 /*
1166  * nssCKFWMechanism_GetMDMechanism
1167  *
1168  */
1169
1170 NSS_EXTERN NSSCKMDMechanism *
1171 nssCKFWMechanism_GetMDMechanism
1172 (
1173   NSSCKFWMechanism *fwMechanism
1174 );
1175
1176 /*
1177  * nssCKFWMechanism_GetMinKeySize
1178  *
1179  */
1180 NSS_EXTERN CK_ULONG
1181 nssCKFWMechanism_GetMinKeySize
1182 (
1183   NSSCKFWMechanism *fwMechanism,
1184   CK_RV *pError
1185 );
1186
1187 /*
1188  * nssCKFWMechanism_GetMaxKeySize
1189  *
1190  */
1191 NSS_EXTERN CK_ULONG
1192 nssCKFWMechanism_GetMaxKeySize
1193 (
1194   NSSCKFWMechanism *fwMechanism,
1195   CK_RV *pError
1196 );
1197
1198 /*
1199  * nssCKFWMechanism_GetInHardware
1200  *
1201  */
1202 NSS_EXTERN CK_BBOOL
1203 nssCKFWMechanism_GetInHardware
1204 (
1205   NSSCKFWMechanism *fwMechanism,
1206   CK_RV *pError
1207 );
1208
1209 /*
1210  * the following are determined automatically by which of the cryptographic
1211  * functions are defined for this mechanism.
1212  */
1213 /*
1214  * nssCKFWMechanism_GetCanEncrypt
1215  *
1216  */
1217 NSS_EXTERN CK_BBOOL
1218 nssCKFWMechanism_GetCanEncrypt
1219 (
1220   NSSCKFWMechanism *fwMechanism,
1221   CK_RV *pError
1222 );
1223
1224 /*
1225  * nssCKFWMechanism_GetCanDecrypt
1226  *
1227  */
1228 NSS_EXTERN CK_BBOOL
1229 nssCKFWMechanism_GetCanDecrypt
1230 (
1231   NSSCKFWMechanism *fwMechanism,
1232   CK_RV *pError
1233 );
1234
1235 /*
1236  * nssCKFWMechanism_GetCanDigest
1237  *
1238  */
1239 NSS_EXTERN CK_BBOOL
1240 nssCKFWMechanism_GetCanDigest
1241 (
1242   NSSCKFWMechanism *fwMechanism,
1243   CK_RV *pError
1244 );
1245
1246 /*
1247  * nssCKFWMechanism_GetCanSign
1248  *
1249  */
1250 NSS_EXTERN CK_BBOOL
1251 nssCKFWMechanism_GetCanSign
1252 (
1253   NSSCKFWMechanism *fwMechanism,
1254   CK_RV *pError
1255 );
1256
1257 /*
1258  * nssCKFWMechanism_GetCanSignRecover
1259  *
1260  */
1261 NSS_EXTERN CK_BBOOL
1262 nssCKFWMechanism_GetCanSignRecover
1263 (
1264   NSSCKFWMechanism *fwMechanism,
1265   CK_RV *pError
1266 );
1267
1268 /*
1269  * nssCKFWMechanism_GetCanVerify
1270  *
1271  */
1272 NSS_EXTERN CK_BBOOL
1273 nssCKFWMechanism_GetCanVerify
1274 (
1275   NSSCKFWMechanism *fwMechanism,
1276   CK_RV *pError
1277 );
1278
1279 /*
1280  * nssCKFWMechanism_GetCanVerifyRecover
1281  *
1282  */
1283 NSS_EXTERN CK_BBOOL
1284 nssCKFWMechanism_GetCanVerifyRecover
1285 (
1286   NSSCKFWMechanism *fwMechanism,
1287   CK_RV *pError
1288 );
1289
1290 /*
1291  * nssCKFWMechanism_GetCanGenerate
1292  *
1293  */
1294 NSS_EXTERN CK_BBOOL
1295 nssCKFWMechanism_GetCanGenerate
1296 (
1297   NSSCKFWMechanism *fwMechanism,
1298   CK_RV *pError
1299 );
1300
1301 /*
1302  * nssCKFWMechanism_GetCanGenerateKeyPair
1303  *
1304  */
1305 NSS_EXTERN CK_BBOOL
1306 nssCKFWMechanism_GetCanGenerateKeyPair
1307 (
1308   NSSCKFWMechanism *fwMechanism,
1309   CK_RV *pError
1310 );
1311
1312 /*
1313  * nssCKFWMechanism_GetCanWrap
1314  *
1315  */
1316 NSS_EXTERN CK_BBOOL
1317 nssCKFWMechanism_GetCanWrap
1318 (
1319   NSSCKFWMechanism *fwMechanism,
1320   CK_RV *pError
1321 );
1322
1323 /*
1324  * nssCKFWMechanism_GetCanUnwrap
1325  *
1326  */
1327 NSS_EXTERN CK_BBOOL
1328 nssCKFWMechanism_GetCanUnwrap
1329 (
1330   NSSCKFWMechanism *fwMechanism,
1331   CK_RV *pError
1332 );
1333
1334 /*
1335  * nssCKFWMechanism_GetCanDerive
1336  *
1337  */
1338 NSS_EXTERN CK_BBOOL
1339 nssCKFWMechanism_GetCanDerive
1340 (
1341   NSSCKFWMechanism *fwMechanism,
1342   CK_RV *pError
1343 );
1344
1345 /*
1346  *  nssCKFWMechanism_EncryptInit
1347  */
1348 NSS_EXTERN CK_RV
1349 nssCKFWMechanism_EncryptInit
1350 (
1351   NSSCKFWMechanism *fwMechanism,
1352   CK_MECHANISM      *pMechanism,
1353   NSSCKFWSession    *fwSession,
1354   NSSCKFWObject     *fwObject
1355 );
1356
1357 /*
1358  *  nssCKFWMechanism_DecryptInit
1359  */
1360 NSS_EXTERN CK_RV
1361 nssCKFWMechanism_DecryptInit
1362 (
1363   NSSCKFWMechanism *fwMechanism,
1364   CK_MECHANISM      *pMechanism,
1365   NSSCKFWSession    *fwSession,
1366   NSSCKFWObject     *fwObject
1367 );
1368
1369 /*
1370  *  nssCKFWMechanism_DigestInit
1371  */
1372 NSS_EXTERN CK_RV
1373 nssCKFWMechanism_DigestInit
1374 (
1375   NSSCKFWMechanism *fwMechanism,
1376   CK_MECHANISM      *pMechanism,
1377   NSSCKFWSession    *fwSession
1378 );
1379
1380 /*
1381  *  nssCKFWMechanism_SignInit
1382  */
1383 NSS_EXTERN CK_RV
1384 nssCKFWMechanism_SignInit
1385 (
1386   NSSCKFWMechanism *fwMechanism,
1387   CK_MECHANISM      *pMechanism,
1388   NSSCKFWSession    *fwSession,
1389   NSSCKFWObject     *fwObject
1390 );
1391
1392 /*
1393  *  nssCKFWMechanism_SignRecoverInit
1394  */
1395 NSS_EXTERN CK_RV
1396 nssCKFWMechanism_SignRecoverInit
1397 (
1398   NSSCKFWMechanism *fwMechanism,
1399   CK_MECHANISM      *pMechanism,
1400   NSSCKFWSession    *fwSession,
1401   NSSCKFWObject     *fwObject
1402 );
1403
1404 /*
1405  *  nssCKFWMechanism_VerifyInit
1406  */
1407 NSS_EXTERN CK_RV
1408 nssCKFWMechanism_VerifyInit
1409 (
1410   NSSCKFWMechanism *fwMechanism,
1411   CK_MECHANISM      *pMechanism,
1412   NSSCKFWSession    *fwSession,
1413   NSSCKFWObject     *fwObject
1414 );
1415
1416 /*
1417  *  nssCKFWMechanism_VerifyRecoverInit
1418  */
1419 NSS_EXTERN CK_RV
1420 nssCKFWMechanism_VerifyRecoverInit
1421 (
1422   NSSCKFWMechanism *fwMechanism,
1423   CK_MECHANISM      *pMechanism,
1424   NSSCKFWSession    *fwSession,
1425   NSSCKFWObject     *fwObject
1426 );
1427
1428 /*
1429  * nssCKFWMechanism_GenerateKey
1430  */
1431 NSS_EXTERN NSSCKFWObject *
1432 nssCKFWMechanism_GenerateKey
1433 (
1434   NSSCKFWMechanism *fwMechanism,
1435   CK_MECHANISM_PTR pMechanism,
1436   NSSCKFWSession   *fwSession,
1437   CK_ATTRIBUTE_PTR pTemplate,
1438   CK_ULONG         ulAttributeCount,
1439   CK_RV            *pError
1440 );
1441
1442 /*
1443  * nssCKFWMechanism_GenerateKeyPair
1444  */
1445 NSS_EXTERN CK_RV
1446 nssCKFWMechanism_GenerateKeyPair
1447 (
1448   NSSCKFWMechanism *fwMechanism,
1449   CK_MECHANISM_PTR pMechanism,
1450   NSSCKFWSession   *fwSession,
1451   CK_ATTRIBUTE_PTR pPublicKeyTemplate,
1452   CK_ULONG         ulPublicKeyAttributeCount,
1453   CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
1454   CK_ULONG         ulPrivateKeyAttributeCount,
1455   NSSCKFWObject    **fwPublicKeyObject,
1456   NSSCKFWObject    **fwPrivateKeyObject
1457 );
1458
1459 /*
1460  * nssCKFWMechanism_GetWrapKeyLength
1461  */
1462 NSS_EXTERN CK_ULONG
1463 nssCKFWMechanism_GetWrapKeyLength
1464 (
1465   NSSCKFWMechanism *fwMechanism,
1466   CK_MECHANISM_PTR pMechanism,
1467   NSSCKFWSession   *fwSession,
1468   NSSCKFWObject    *fwWrappingKeyObject,
1469   NSSCKFWObject    *fwObject,
1470   CK_RV            *pError
1471 );
1472
1473 /*
1474  * nssCKFWMechanism_WrapKey
1475  */
1476 NSS_EXTERN CK_RV
1477 nssCKFWMechanism_WrapKey
1478 (
1479   NSSCKFWMechanism *fwMechanism,
1480   CK_MECHANISM_PTR pMechanism,
1481   NSSCKFWSession   *fwSession,
1482   NSSCKFWObject    *fwWrappingKeyObject,
1483   NSSCKFWObject    *fwObject,
1484   NSSItem          *wrappedKey
1485 );
1486
1487 /*
1488  * nssCKFWMechanism_UnwrapKey
1489  */
1490 NSS_EXTERN NSSCKFWObject *
1491 nssCKFWMechanism_UnwrapKey
1492 (
1493   NSSCKFWMechanism *fwMechanism,
1494   CK_MECHANISM_PTR pMechanism,
1495   NSSCKFWSession   *fwSession,
1496   NSSCKFWObject    *fwWrappingKeyObject,
1497   NSSItem          *wrappedKey,
1498   CK_ATTRIBUTE_PTR pTemplate,
1499   CK_ULONG         ulAttributeCount,
1500   CK_RV            *pError
1501 );
1502
1503 /* 
1504  * nssCKFWMechanism_DeriveKey
1505  */
1506 NSS_EXTERN NSSCKFWObject *
1507 nssCKFWMechanism_DeriveKey
1508 (
1509   NSSCKFWMechanism *fwMechanism,
1510   CK_MECHANISM_PTR pMechanism,
1511   NSSCKFWSession   *fwSession,
1512   NSSCKFWObject    *fwBaseKeyObject,
1513   CK_ATTRIBUTE_PTR pTemplate,
1514   CK_ULONG         ulAttributeCount,
1515   CK_RV            *pError
1516 );
1517
1518 /*
1519  * NSSCKFWCryptoOperation
1520  *
1521  *  -- create/destroy --
1522  *  nssCKFWCryptoOperation_Create
1523  *  nssCKFWCryptoOperation_Destroy
1524  *
1525  *  -- implement public accessors --
1526  *  nssCKFWCryptoOperation_GetMDCryptoOperation
1527  *  nssCKFWCryptoOperation_GetType
1528  *
1529  *  -- private accessors --
1530  *
1531  *  -- module fronts --
1532  * nssCKFWCryptoOperation_GetFinalLength
1533  * nssCKFWCryptoOperation_GetOperationLength
1534  * nssCKFWCryptoOperation_Final
1535  * nssCKFWCryptoOperation_Update
1536  * nssCKFWCryptoOperation_DigestUpdate
1537  * nssCKFWCryptoOperation_DigestKey
1538  * nssCKFWCryptoOperation_UpdateFinal
1539  */
1540
1541 /*
1542  *  nssCKFWCrytoOperation_Create
1543  */
1544 NSS_EXTERN NSSCKFWCryptoOperation *
1545 nssCKFWCryptoOperation_Create
1546 (
1547   NSSCKMDCryptoOperation *mdOperation,
1548   NSSCKMDSession *mdSession,
1549   NSSCKFWSession *fwSession,
1550   NSSCKMDToken *mdToken,
1551   NSSCKFWToken *fwToken,
1552   NSSCKMDInstance *mdInstance,
1553   NSSCKFWInstance *fwInstance,
1554   NSSCKFWCryptoOperationType type,
1555   CK_RV *pError
1556 );
1557
1558 /*
1559  *  nssCKFWCryptoOperation_Destroy
1560  */
1561 NSS_EXTERN void
1562 nssCKFWCryptoOperation_Destroy
1563 (
1564   NSSCKFWCryptoOperation *fwOperation
1565 );
1566
1567 /*
1568  *  nssCKFWCryptoOperation_GetMDCryptoOperation
1569  */
1570 NSS_EXTERN NSSCKMDCryptoOperation *
1571 nssCKFWCryptoOperation_GetMDCryptoOperation
1572 (
1573   NSSCKFWCryptoOperation *fwOperation
1574 );
1575
1576 /*
1577  *  nssCKFWCryptoOperation_GetType
1578  */
1579 NSS_EXTERN NSSCKFWCryptoOperationType
1580 nssCKFWCryptoOperation_GetType
1581 (
1582   NSSCKFWCryptoOperation *fwOperation
1583 );
1584
1585 /*
1586  * nssCKFWCryptoOperation_GetFinalLength
1587  */
1588 NSS_EXTERN CK_ULONG
1589 nssCKFWCryptoOperation_GetFinalLength
1590 (
1591   NSSCKFWCryptoOperation *fwOperation,
1592   CK_RV *pError
1593 );
1594
1595 /*
1596  * nssCKFWCryptoOperation_GetOperationLength
1597  */
1598 NSS_EXTERN CK_ULONG
1599 nssCKFWCryptoOperation_GetOperationLength
1600 (
1601   NSSCKFWCryptoOperation *fwOperation,
1602   NSSItem *inputBuffer,
1603   CK_RV *pError
1604 );
1605
1606 /*
1607  * nssCKFWCryptoOperation_Final
1608  */
1609 NSS_EXTERN CK_RV
1610 nssCKFWCryptoOperation_Final
1611 (
1612   NSSCKFWCryptoOperation *fwOperation,
1613   NSSItem *outputBuffer
1614 );
1615
1616 /*
1617  * nssCKFWCryptoOperation_Update
1618  */
1619 NSS_EXTERN CK_RV
1620 nssCKFWCryptoOperation_Update
1621 (
1622   NSSCKFWCryptoOperation *fwOperation,
1623   NSSItem *inputBuffer,
1624   NSSItem *outputBuffer
1625 );
1626
1627 /*
1628  * nssCKFWCryptoOperation_DigestUpdate
1629  */
1630 NSS_EXTERN CK_RV
1631 nssCKFWCryptoOperation_DigestUpdate
1632 (
1633   NSSCKFWCryptoOperation *fwOperation,
1634   NSSItem *inputBuffer
1635 );
1636
1637 /*
1638  * nssCKFWCryptoOperation_DigestKey
1639  */
1640 NSS_EXTERN CK_RV
1641 nssCKFWCryptoOperation_DigestKey
1642 (
1643   NSSCKFWCryptoOperation *fwOperation,
1644   NSSCKFWObject *fwKey
1645 );
1646
1647 /*
1648  * nssCKFWCryptoOperation_UpdateFinal
1649  */
1650 NSS_EXTERN CK_RV
1651 nssCKFWCryptoOperation_UpdateFinal
1652 (
1653   NSSCKFWCryptoOperation *fwOperation,
1654   NSSItem *inputBuffer,
1655   NSSItem *outputBuffer
1656 );
1657
1658 /*
1659  * nssCKFWCryptoOperation_UpdateCombo
1660  */
1661 NSS_EXTERN CK_RV
1662 nssCKFWCryptoOperation_UpdateCombo
1663 (
1664   NSSCKFWCryptoOperation *fwOperation,
1665   NSSCKFWCryptoOperation *fwPeerOperation,
1666   NSSItem *inputBuffer,
1667   NSSItem *outputBuffer
1668 );
1669
1670 /*
1671  * NSSCKFWSession
1672  *
1673  *  -- create/destroy --
1674  *  nssCKFWSession_Create
1675  *  nssCKFWSession_Destroy
1676  *
1677  *  -- implement public accessors --
1678  *  nssCKFWSession_GetMDSession
1679  *  nssCKFWSession_GetArena
1680  *  nssCKFWSession_CallNotification
1681  *  nssCKFWSession_IsRWSession
1682  *  nssCKFWSession_IsSO
1683  *  nssCKFWSession_GetCurrentCryptoOperation
1684  *
1685  *  -- private accessors --
1686  *  nssCKFWSession_GetFWSlot
1687  *  nssCKFWSession_GetSessionState
1688  *  nssCKFWSession_SetFWFindObjects
1689  *  nssCKFWSession_GetFWFindObjects
1690  *  nssCKFWSession_SetMDSession
1691  *  nssCKFWSession_SetHandle
1692  *  nssCKFWSession_GetHandle
1693  *  nssCKFWSession_RegisterSessionObject
1694  *  nssCKFWSession_DeregisterSessionObject
1695  *  nssCKFWSession_SetCurrentCryptoOperation
1696  *
1697  *  -- module fronts --
1698  *  nssCKFWSession_GetDeviceError
1699  *  nssCKFWSession_Login
1700  *  nssCKFWSession_Logout
1701  *  nssCKFWSession_InitPIN
1702  *  nssCKFWSession_SetPIN
1703  *  nssCKFWSession_GetOperationStateLen
1704  *  nssCKFWSession_GetOperationState
1705  *  nssCKFWSession_SetOperationState
1706  *  nssCKFWSession_CreateObject
1707  *  nssCKFWSession_CopyObject
1708  *  nssCKFWSession_FindObjectsInit
1709  *  nssCKFWSession_SeedRandom
1710  *  nssCKFWSession_GetRandom
1711  *  nssCKFWSession_Final
1712  *  nssCKFWSession_Update
1713  *  nssCKFWSession_DigestUpdate
1714  *  nssCKFWSession_DigestKey
1715  *  nssCKFWSession_UpdateFinal
1716  *  nssCKFWSession_UpdateCombo
1717  */
1718
1719 /*
1720  * nssCKFWSession_Create
1721  *
1722  */
1723 NSS_EXTERN NSSCKFWSession *
1724 nssCKFWSession_Create
1725 (
1726   NSSCKFWToken *fwToken,
1727   CK_BBOOL rw,
1728   CK_VOID_PTR pApplication,
1729   CK_NOTIFY Notify,
1730   CK_RV *pError
1731 );
1732
1733 /*
1734  * nssCKFWSession_Destroy
1735  *
1736  */
1737 NSS_EXTERN CK_RV
1738 nssCKFWSession_Destroy
1739 (
1740   NSSCKFWSession *fwSession,
1741   CK_BBOOL removeFromTokenHash
1742 );
1743
1744 /*
1745  * nssCKFWSession_GetMDSession
1746  *
1747  */
1748 NSS_EXTERN NSSCKMDSession *
1749 nssCKFWSession_GetMDSession
1750 (
1751   NSSCKFWSession *fwSession
1752 );
1753
1754 /*
1755  * nssCKFWSession_GetArena
1756  *
1757  */
1758 NSS_EXTERN NSSArena *
1759 nssCKFWSession_GetArena
1760 (
1761   NSSCKFWSession *fwSession,
1762   CK_RV *pError
1763 );
1764
1765 /*
1766  * nssCKFWSession_CallNotification
1767  *
1768  */
1769 NSS_EXTERN CK_RV
1770 nssCKFWSession_CallNotification
1771 (
1772   NSSCKFWSession *fwSession,
1773   CK_NOTIFICATION event
1774 );
1775
1776 /*
1777  * nssCKFWSession_IsRWSession
1778  *
1779  */
1780 NSS_EXTERN CK_BBOOL
1781 nssCKFWSession_IsRWSession
1782 (
1783   NSSCKFWSession *fwSession
1784 );
1785
1786 /*
1787  * nssCKFWSession_IsSO
1788  *
1789  */
1790 NSS_EXTERN CK_BBOOL
1791 nssCKFWSession_IsSO
1792 (
1793   NSSCKFWSession *fwSession
1794 );
1795
1796 /*
1797  * nssCKFWSession_GetFWSlot
1798  *
1799  */
1800 NSS_EXTERN NSSCKFWSlot *
1801 nssCKFWSession_GetFWSlot
1802 (
1803   NSSCKFWSession *fwSession
1804 );
1805
1806 /*
1807  * nssCFKWSession_GetSessionState
1808  *
1809  */
1810 NSS_EXTERN CK_STATE
1811 nssCKFWSession_GetSessionState
1812 (
1813   NSSCKFWSession *fwSession
1814 );
1815
1816 /*
1817  * nssCKFWSession_SetFWFindObjects
1818  *
1819  */
1820 NSS_EXTERN CK_RV
1821 nssCKFWSession_SetFWFindObjects
1822 (
1823   NSSCKFWSession *fwSession,
1824   NSSCKFWFindObjects *fwFindObjects
1825 );
1826
1827 /*
1828  * nssCKFWSession_GetFWFindObjects
1829  *
1830  */
1831 NSS_EXTERN NSSCKFWFindObjects *
1832 nssCKFWSession_GetFWFindObjects
1833 (
1834   NSSCKFWSession *fwSesssion,
1835   CK_RV *pError
1836 );
1837
1838 /*
1839  * nssCKFWSession_SetMDSession
1840  *
1841  */
1842 NSS_EXTERN CK_RV
1843 nssCKFWSession_SetMDSession
1844 (
1845   NSSCKFWSession *fwSession,
1846   NSSCKMDSession *mdSession
1847 );
1848
1849 /*
1850  * nssCKFWSession_SetHandle
1851  *
1852  */
1853 NSS_EXTERN CK_RV
1854 nssCKFWSession_SetHandle
1855 (
1856   NSSCKFWSession *fwSession,
1857   CK_SESSION_HANDLE hSession
1858 );
1859
1860 /*
1861  * nssCKFWSession_GetHandle
1862  *
1863  */
1864 NSS_EXTERN CK_SESSION_HANDLE
1865 nssCKFWSession_GetHandle
1866 (
1867   NSSCKFWSession *fwSession
1868 );
1869
1870 /*
1871  * nssCKFWSession_RegisterSessionObject
1872  *
1873  */
1874 NSS_EXTERN CK_RV
1875 nssCKFWSession_RegisterSessionObject
1876 (
1877   NSSCKFWSession *fwSession,
1878   NSSCKFWObject *fwObject
1879 );
1880
1881 /*
1882  * nssCKFWSession_DeregisterSessionObject
1883  *
1884  */
1885 NSS_EXTERN CK_RV
1886 nssCKFWSession_DeregisterSessionObject
1887 (
1888   NSSCKFWSession *fwSession,
1889   NSSCKFWObject *fwObject
1890 );
1891
1892 /*
1893  * nssCKFWSession_GetDeviceError
1894  *
1895  */
1896 NSS_EXTERN CK_ULONG
1897 nssCKFWSession_GetDeviceError
1898 (
1899   NSSCKFWSession *fwSession
1900 );
1901
1902 /*
1903  * nssCKFWSession_Login
1904  *
1905  */
1906 NSS_EXTERN CK_RV
1907 nssCKFWSession_Login
1908 (
1909   NSSCKFWSession *fwSession,
1910   CK_USER_TYPE userType,
1911   NSSItem *pin
1912 );
1913
1914 /*
1915  * nssCKFWSession_Logout
1916  *
1917  */
1918 NSS_EXTERN CK_RV
1919 nssCKFWSession_Logout
1920 (
1921   NSSCKFWSession *fwSession
1922 );
1923
1924 /*
1925  * nssCKFWSession_InitPIN
1926  *
1927  */
1928 NSS_EXTERN CK_RV
1929 nssCKFWSession_InitPIN
1930 (
1931   NSSCKFWSession *fwSession,
1932   NSSItem *pin
1933 );
1934
1935 /*
1936  * nssCKFWSession_SetPIN
1937  *
1938  */
1939 NSS_EXTERN CK_RV
1940 nssCKFWSession_SetPIN
1941 (
1942   NSSCKFWSession *fwSession,
1943   NSSItem *newPin,
1944   NSSItem *oldPin
1945 );
1946
1947 /*
1948  * nssCKFWSession_GetOperationStateLen
1949  *
1950  */
1951 NSS_EXTERN CK_ULONG
1952 nssCKFWSession_GetOperationStateLen
1953 (
1954   NSSCKFWSession *fwSession,
1955   CK_RV *pError
1956 );
1957
1958 /*
1959  * nssCKFWSession_GetOperationState
1960  *
1961  */
1962 NSS_EXTERN CK_RV
1963 nssCKFWSession_GetOperationState
1964 (
1965   NSSCKFWSession *fwSession,
1966   NSSItem *buffer
1967 );
1968
1969 /*
1970  * nssCKFWSession_SetOperationState
1971  *
1972  */
1973 NSS_EXTERN CK_RV
1974 nssCKFWSession_SetOperationState
1975 (
1976   NSSCKFWSession *fwSession,
1977   NSSItem *state,
1978   NSSCKFWObject *encryptionKey,
1979   NSSCKFWObject *authenticationKey
1980 );
1981
1982 /*
1983  * nssCKFWSession_CreateObject
1984  *
1985  */
1986 NSS_EXTERN NSSCKFWObject *
1987 nssCKFWSession_CreateObject
1988 (
1989   NSSCKFWSession *fwSession,
1990   CK_ATTRIBUTE_PTR pTemplate,
1991   CK_ULONG ulAttributeCount,
1992   CK_RV *pError
1993 );
1994
1995 /*
1996  * nssCKFWSession_CopyObject
1997  *
1998  */
1999 NSS_EXTERN NSSCKFWObject *
2000 nssCKFWSession_CopyObject
2001 (
2002   NSSCKFWSession *fwSession,
2003   NSSCKFWObject *object,
2004   CK_ATTRIBUTE_PTR pTemplate,
2005   CK_ULONG ulAttributeCount,
2006   CK_RV *pError
2007 );
2008
2009 /*
2010  * nssCKFWSession_FindObjectsInit
2011  *
2012  */
2013 NSS_EXTERN NSSCKFWFindObjects *
2014 nssCKFWSession_FindObjectsInit
2015 (
2016   NSSCKFWSession *fwSession,
2017   CK_ATTRIBUTE_PTR pTemplate,
2018   CK_ULONG ulAttributeCount,
2019   CK_RV *pError
2020 );
2021
2022 /*
2023  * nssCKFWSession_SetCurrentCryptoOperation
2024  */
2025 NSS_IMPLEMENT void
2026 nssCKFWSession_SetCurrentCryptoOperation
2027 (
2028   NSSCKFWSession *fwSession,
2029   NSSCKFWCryptoOperation * fwOperation,
2030   NSSCKFWCryptoOperationState state
2031 );
2032
2033 /*
2034  * nssCKFWSession_GetCurrentCryptoOperation
2035  */
2036 NSS_IMPLEMENT NSSCKFWCryptoOperation *
2037 nssCKFWSession_GetCurrentCryptoOperation
2038 (
2039   NSSCKFWSession *fwSession,
2040   NSSCKFWCryptoOperationState state
2041 );
2042
2043 /*
2044  * nssCKFWSession_Final
2045  * (terminate a cryptographic operation and get the result)
2046  */
2047 NSS_IMPLEMENT CK_RV
2048 nssCKFWSession_Final
2049 (
2050   NSSCKFWSession *fwSession,
2051   NSSCKFWCryptoOperationType type,
2052   NSSCKFWCryptoOperationState state,
2053   CK_BYTE_PTR  outBuf,
2054   CK_ULONG_PTR outBufLen
2055 );
2056
2057 /*
2058  * nssCKFWSession_Update
2059  * (get the next step of an encrypt/decrypt operation)
2060  */
2061 NSS_IMPLEMENT CK_RV
2062 nssCKFWSession_Update
2063 (
2064   NSSCKFWSession *fwSession,
2065   NSSCKFWCryptoOperationType type,
2066   NSSCKFWCryptoOperationState state,
2067   CK_BYTE_PTR  inBuf,
2068   CK_ULONG     inBufLen,
2069   CK_BYTE_PTR  outBuf,
2070   CK_ULONG_PTR outBufLen
2071 );
2072
2073 /*
2074  * nssCKFWSession_DigestUpdate
2075  * (do the next step of an digest/sign/verify operation)
2076  */
2077 NSS_IMPLEMENT CK_RV
2078 nssCKFWSession_DigestUpdate
2079 (
2080   NSSCKFWSession *fwSession,
2081   NSSCKFWCryptoOperationType type,
2082   NSSCKFWCryptoOperationState state,
2083   CK_BYTE_PTR  inBuf,
2084   CK_ULONG     inBufLen
2085 );
2086
2087 /*
2088  * nssCKFWSession_DigestKey
2089  * (do the next step of an digest/sign/verify operation)
2090  */
2091 NSS_IMPLEMENT CK_RV
2092 nssCKFWSession_DigestKey
2093 (
2094   NSSCKFWSession *fwSession,
2095   NSSCKFWObject *fwKey
2096 );
2097
2098 /*
2099  * nssCKFWSession_UpdateFinal
2100  * (do a single-step of a cryptographic operation and get the result)
2101  */
2102 NSS_IMPLEMENT CK_RV
2103 nssCKFWSession_UpdateFinal
2104 (
2105   NSSCKFWSession *fwSession,
2106   NSSCKFWCryptoOperationType type,
2107   NSSCKFWCryptoOperationState state,
2108   CK_BYTE_PTR  inBuf,
2109   CK_ULONG     inBufLen,
2110   CK_BYTE_PTR  outBuf,
2111   CK_ULONG_PTR outBufLen
2112 );
2113
2114 /*
2115  * nssCKFWSession_UpdateCombo
2116  * (do a combination encrypt/decrypt and sign/digest/verify operation)
2117  */
2118 NSS_IMPLEMENT CK_RV
2119 nssCKFWSession_UpdateCombo
2120 (
2121   NSSCKFWSession *fwSession,
2122   NSSCKFWCryptoOperationType encryptType,
2123   NSSCKFWCryptoOperationType digestType,
2124   NSSCKFWCryptoOperationState digestState,
2125   CK_BYTE_PTR  inBuf,
2126   CK_ULONG     inBufLen,
2127   CK_BYTE_PTR  outBuf,
2128   CK_ULONG_PTR outBufLen
2129 );
2130
2131 /*
2132  * nssCKFWSession_SeedRandom
2133  *
2134  */
2135 NSS_EXTERN CK_RV
2136 nssCKFWSession_SeedRandom
2137 (
2138   NSSCKFWSession *fwSession,
2139   NSSItem *seed
2140 );
2141
2142 /*
2143  * nssCKFWSession_GetRandom
2144  *
2145  */
2146 NSS_EXTERN CK_RV
2147 nssCKFWSession_GetRandom
2148 (
2149   NSSCKFWSession *fwSession,
2150   NSSItem *buffer
2151 );
2152
2153 /*
2154  * NSSCKFWObject
2155  *
2156  * -- create/destroy --
2157  *  nssCKFWObject_Create
2158  *  nssCKFWObject_Finalize
2159  *  nssCKFWObject_Destroy
2160  *
2161  * -- implement public accessors --
2162  *  nssCKFWObject_GetMDObject
2163  *  nssCKFWObject_GetArena
2164  *
2165  * -- private accessors --
2166  *  nssCKFWObject_SetHandle
2167  *  nssCKFWObject_GetHandle
2168  *
2169  * -- module fronts --
2170  *  nssCKFWObject_IsTokenObject
2171  *  nssCKFWObject_GetAttributeCount
2172  *  nssCKFWObject_GetAttributeTypes
2173  *  nssCKFWObject_GetAttributeSize
2174  *  nssCKFWObject_GetAttribute
2175  *  nssCKFWObject_SetAttribute
2176  *  nssCKFWObject_GetObjectSize
2177  */
2178
2179 /*
2180  * nssCKFWObject_Create
2181  *
2182  */
2183 NSS_EXTERN NSSCKFWObject *
2184 nssCKFWObject_Create
2185 (
2186   NSSArena *arena,
2187   NSSCKMDObject *mdObject,
2188   NSSCKFWSession *fwSession,
2189   NSSCKFWToken *fwToken,
2190   NSSCKFWInstance *fwInstance,
2191   CK_RV *pError
2192 );
2193
2194 /*
2195  * nssCKFWObject_Finalize
2196  *
2197  */
2198 NSS_EXTERN void
2199 nssCKFWObject_Finalize
2200 (
2201   NSSCKFWObject *fwObject,
2202   PRBool removeFromHash
2203 );
2204
2205 /*
2206  * nssCKFWObject_Destroy
2207  *
2208  */
2209 NSS_EXTERN void
2210 nssCKFWObject_Destroy
2211 (
2212   NSSCKFWObject *fwObject
2213 );
2214
2215 /*
2216  * nssCKFWObject_GetMDObject
2217  *
2218  */
2219 NSS_EXTERN NSSCKMDObject *
2220 nssCKFWObject_GetMDObject
2221 (
2222   NSSCKFWObject *fwObject
2223 );
2224
2225 /*
2226  * nssCKFWObject_GetArena
2227  *
2228  */
2229 NSS_EXTERN NSSArena *
2230 nssCKFWObject_GetArena
2231 (
2232   NSSCKFWObject *fwObject,
2233   CK_RV *pError
2234 );
2235
2236 /*
2237  * nssCKFWObject_SetHandle
2238  *
2239  */
2240 NSS_EXTERN CK_RV
2241 nssCKFWObject_SetHandle
2242 (
2243   NSSCKFWObject *fwObject,
2244   CK_OBJECT_HANDLE hObject
2245 );
2246
2247 /*
2248  * nssCKFWObject_GetHandle
2249  *
2250  */
2251 NSS_EXTERN CK_OBJECT_HANDLE
2252 nssCKFWObject_GetHandle
2253 (
2254   NSSCKFWObject *fwObject
2255 );
2256
2257 /*
2258  * nssCKFWObject_IsTokenObject
2259  *
2260  */
2261 NSS_EXTERN CK_BBOOL
2262 nssCKFWObject_IsTokenObject
2263 (
2264   NSSCKFWObject *fwObject
2265 );
2266
2267 /*
2268  * nssCKFWObject_GetAttributeCount
2269  *
2270  */
2271 NSS_EXTERN CK_ULONG
2272 nssCKFWObject_GetAttributeCount
2273 (
2274   NSSCKFWObject *fwObject,
2275   CK_RV *pError
2276 );
2277
2278 /*
2279  * nssCKFWObject_GetAttributeTypes
2280  *
2281  */
2282 NSS_EXTERN CK_RV
2283 nssCKFWObject_GetAttributeTypes
2284 (
2285   NSSCKFWObject *fwObject,
2286   CK_ATTRIBUTE_TYPE_PTR typeArray,
2287   CK_ULONG ulCount
2288 );
2289
2290 /*
2291  * nssCKFWObject_GetAttributeSize
2292  *
2293  */
2294 NSS_EXTERN CK_ULONG
2295 nssCKFWObject_GetAttributeSize
2296 (
2297   NSSCKFWObject *fwObject,
2298   CK_ATTRIBUTE_TYPE attribute,
2299   CK_RV *pError
2300 );
2301
2302 /*
2303  * nssCKFWObject_GetAttribute
2304  *
2305  * Usual NSS allocation rules:
2306  * If itemOpt is not NULL, it will be returned; otherwise an NSSItem
2307  * will be allocated.  If itemOpt is not NULL but itemOpt->data is,
2308  * the buffer will be allocated; otherwise, the buffer will be used.
2309  * Any allocations will come from the optional arena, if one is
2310  * specified.
2311  */
2312 NSS_EXTERN NSSItem *
2313 nssCKFWObject_GetAttribute
2314 (
2315   NSSCKFWObject *fwObject,
2316   CK_ATTRIBUTE_TYPE attribute,
2317   NSSItem *itemOpt,
2318   NSSArena *arenaOpt,
2319   CK_RV *pError
2320 );
2321
2322 /*
2323  * nssCKFWObject_SetAttribute
2324  *
2325  */
2326 NSS_EXTERN CK_RV
2327 nssCKFWObject_SetAttribute
2328 (
2329   NSSCKFWObject *fwObject,
2330   NSSCKFWSession *fwSession,
2331   CK_ATTRIBUTE_TYPE attribute,
2332   NSSItem *value
2333 );
2334
2335 /*
2336  * nssCKFWObject_GetObjectSize
2337  *
2338  */
2339 NSS_EXTERN CK_ULONG
2340 nssCKFWObject_GetObjectSize
2341 (
2342   NSSCKFWObject *fwObject,
2343   CK_RV *pError
2344 );
2345
2346 /*
2347  * NSSCKFWFindObjects
2348  *
2349  *  -- create/destroy --
2350  *  nssCKFWFindObjects_Create
2351  *  nssCKFWFindObjects_Destroy
2352  *
2353  *  -- implement public accessors --
2354  *  nssCKFWFindObjects_GetMDFindObjects
2355  *
2356  *  -- private accessors --
2357  *
2358  *  -- module fronts --
2359  *  nssCKFWFindObjects_Next
2360  */
2361
2362 /*
2363  * nssCKFWFindObjects_Create
2364  *
2365  */
2366 NSS_EXTERN NSSCKFWFindObjects *
2367 nssCKFWFindObjects_Create
2368 (
2369   NSSCKFWSession *fwSession,
2370   NSSCKFWToken *fwToken,
2371   NSSCKFWInstance *fwInstance,
2372   NSSCKMDFindObjects *mdFindObjects1,
2373   NSSCKMDFindObjects *mdFindObjects2,
2374   CK_RV *pError
2375 );
2376
2377 /*
2378  * nssCKFWFindObjects_Destroy
2379  *
2380  */
2381 NSS_EXTERN void
2382 nssCKFWFindObjects_Destroy
2383 (
2384   NSSCKFWFindObjects *fwFindObjects
2385 );
2386
2387 /*
2388  * nssCKFWFindObjects_GetMDFindObjects
2389  *
2390  */
2391 NSS_EXTERN NSSCKMDFindObjects *
2392 nssCKFWFindObjects_GetMDFindObjects
2393 (
2394   NSSCKFWFindObjects *fwFindObjects
2395 );
2396
2397 /*
2398  * nssCKFWFindObjects_Next
2399  *
2400  */
2401 NSS_EXTERN NSSCKFWObject *
2402 nssCKFWFindObjects_Next
2403 (
2404   NSSCKFWFindObjects *fwFindObjects,
2405   NSSArena *arenaOpt,
2406   CK_RV *pError
2407 );
2408
2409 /*
2410  * NSSCKFWMutex
2411  *
2412  *  nssCKFWMutex_Create
2413  *  nssCKFWMutex_Destroy
2414  *  nssCKFWMutex_Lock
2415  *  nssCKFWMutex_Unlock
2416  *
2417  */
2418
2419 /*
2420  * nssCKFWMutex_Create
2421  *
2422  */
2423 NSS_EXTERN NSSCKFWMutex *
2424 nssCKFWMutex_Create
2425 (
2426   CK_C_INITIALIZE_ARGS_PTR pInitArgs,
2427   CryptokiLockingState LockingState,
2428   NSSArena *arena,
2429   CK_RV *pError
2430 );
2431
2432 /*
2433  * nssCKFWMutex_Destroy
2434  *
2435  */
2436 NSS_EXTERN CK_RV
2437 nssCKFWMutex_Destroy
2438 (
2439   NSSCKFWMutex *mutex
2440 );
2441
2442 /*
2443  * nssCKFWMutex_Lock
2444  *
2445  */
2446 NSS_EXTERN CK_RV
2447 nssCKFWMutex_Lock
2448 (
2449   NSSCKFWMutex *mutex
2450 );
2451
2452 /*
2453  * nssCKFWMutex_Unlock
2454  *
2455  */
2456 NSS_EXTERN CK_RV
2457 nssCKFWMutex_Unlock
2458 (
2459   NSSCKFWMutex *mutex
2460 );
2461
2462 #endif /* CKFW_H */