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 NSSCKFWC_H
6 #define NSSCKFWC_H
7 
8 /*
9  * nssckfwc.h
10  *
11  * This file prototypes all of the NSS Cryptoki Framework "wrapper"
12  * which implement the PKCS#11 API.  Technically, these are public
13  * routines (with capital "NSS" prefixes), since they are called
14  * from (generated) code within a Module using the Framework.
15  * However, they should not be called except from those generated
16  * calls.  Hence, the prototypes have been split out into this file.
17  */
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 #ifndef NSSCKMDT_H
28 #include "nssckmdt.h"
29 #endif /* NSSCKMDT_H */
30 
31 /*
32  * NSSCKFWC_Initialize
33  * NSSCKFWC_Finalize
34  * NSSCKFWC_GetInfo
35  * -- NSSCKFWC_GetFunctionList -- see the API insert file
36  * NSSCKFWC_GetSlotList
37  * NSSCKFWC_GetSlotInfo
38  * NSSCKFWC_GetTokenInfo
39  * NSSCKFWC_WaitForSlotEvent
40  * NSSCKFWC_GetMechanismList
41  * NSSCKFWC_GetMechanismInfo
42  * NSSCKFWC_InitToken
43  * NSSCKFWC_InitPIN
44  * NSSCKFWC_SetPIN
45  * NSSCKFWC_OpenSession
46  * NSSCKFWC_CloseSession
47  * NSSCKFWC_CloseAllSessions
48  * NSSCKFWC_GetSessionInfo
49  * NSSCKFWC_GetOperationState
50  * NSSCKFWC_SetOperationState
51  * NSSCKFWC_Login
52  * NSSCKFWC_Logout
53  * NSSCKFWC_CreateObject
54  * NSSCKFWC_CopyObject
55  * NSSCKFWC_DestroyObject
56  * NSSCKFWC_GetObjectSize
57  * NSSCKFWC_GetAttributeValue
58  * NSSCKFWC_SetAttributeValue
59  * NSSCKFWC_FindObjectsInit
60  * NSSCKFWC_FindObjects
61  * NSSCKFWC_FindObjectsFinal
62  * NSSCKFWC_EncryptInit
63  * NSSCKFWC_Encrypt
64  * NSSCKFWC_EncryptUpdate
65  * NSSCKFWC_EncryptFinal
66  * NSSCKFWC_DecryptInit
67  * NSSCKFWC_Decrypt
68  * NSSCKFWC_DecryptUpdate
69  * NSSCKFWC_DecryptFinal
70  * NSSCKFWC_DigestInit
71  * NSSCKFWC_Digest
72  * NSSCKFWC_DigestUpdate
73  * NSSCKFWC_DigestKey
74  * NSSCKFWC_DigestFinal
75  * NSSCKFWC_SignInit
76  * NSSCKFWC_Sign
77  * NSSCKFWC_SignUpdate
78  * NSSCKFWC_SignFinal
79  * NSSCKFWC_SignRecoverInit
80  * NSSCKFWC_SignRecover
81  * NSSCKFWC_VerifyInit
82  * NSSCKFWC_Verify
83  * NSSCKFWC_VerifyUpdate
84  * NSSCKFWC_VerifyFinal
85  * NSSCKFWC_VerifyRecoverInit
86  * NSSCKFWC_VerifyRecover
87  * NSSCKFWC_DigestEncryptUpdate
88  * NSSCKFWC_DecryptDigestUpdate
89  * NSSCKFWC_SignEncryptUpdate
90  * NSSCKFWC_DecryptVerifyUpdate
91  * NSSCKFWC_GenerateKey
92  * NSSCKFWC_GenerateKeyPair
93  * NSSCKFWC_WrapKey
94  * NSSCKFWC_UnwrapKey
95  * NSSCKFWC_DeriveKey
96  * NSSCKFWC_SeedRandom
97  * NSSCKFWC_GenerateRandom
98  * NSSCKFWC_GetFunctionStatus
99  * NSSCKFWC_CancelFunction
100  */
101 
102 /*
103  * NSSCKFWC_Initialize
104  *
105  */
106 NSS_EXTERN CK_RV
107 NSSCKFWC_Initialize(
108     NSSCKFWInstance **pFwInstance,
109     NSSCKMDInstance *mdInstance,
110     CK_VOID_PTR pInitArgs);
111 
112 /*
113  * NSSCKFWC_Finalize
114  *
115  */
116 NSS_EXTERN CK_RV
117 NSSCKFWC_Finalize(
118     NSSCKFWInstance **pFwInstance);
119 
120 /*
121  * NSSCKFWC_GetInfo
122  *
123  */
124 NSS_EXTERN CK_RV
125 NSSCKFWC_GetInfo(
126     NSSCKFWInstance *fwInstance,
127     CK_INFO_PTR pInfo);
128 
129 /*
130  * C_GetFunctionList is implemented entirely in the Module's file which
131  * includes the Framework API insert file.  It requires no "actual"
132  * NSSCKFW routine.
133  */
134 
135 /*
136  * NSSCKFWC_GetSlotList
137  *
138  */
139 NSS_EXTERN CK_RV
140 NSSCKFWC_GetSlotList(
141     NSSCKFWInstance *fwInstance,
142     CK_BBOOL tokenPresent,
143     CK_SLOT_ID_PTR pSlotList,
144     CK_ULONG_PTR pulCount);
145 
146 /*
147  * NSSCKFWC_GetSlotInfo
148  *
149  */
150 NSS_EXTERN CK_RV
151 NSSCKFWC_GetSlotInfo(
152     NSSCKFWInstance *fwInstance,
153     CK_SLOT_ID slotID,
154     CK_SLOT_INFO_PTR pInfo);
155 
156 /*
157  * NSSCKFWC_GetTokenInfo
158  *
159  */
160 NSS_EXTERN CK_RV
161 NSSCKFWC_GetTokenInfo(
162     NSSCKFWInstance *fwInstance,
163     CK_SLOT_ID slotID,
164     CK_TOKEN_INFO_PTR pInfo);
165 
166 /*
167  * NSSCKFWC_WaitForSlotEvent
168  *
169  */
170 NSS_EXTERN CK_RV
171 NSSCKFWC_WaitForSlotEvent(
172     NSSCKFWInstance *fwInstance,
173     CK_FLAGS flags,
174     CK_SLOT_ID_PTR pSlot,
175     CK_VOID_PTR pReserved);
176 
177 /*
178  * NSSCKFWC_GetMechanismList
179  *
180  */
181 NSS_EXTERN CK_RV
182 NSSCKFWC_GetMechanismList(
183     NSSCKFWInstance *fwInstance,
184     CK_SLOT_ID slotID,
185     CK_MECHANISM_TYPE_PTR pMechanismList,
186     CK_ULONG_PTR pulCount);
187 
188 /*
189  * NSSCKFWC_GetMechanismInfo
190  *
191  */
192 NSS_EXTERN CK_RV
193 NSSCKFWC_GetMechanismInfo(
194     NSSCKFWInstance *fwInstance,
195     CK_SLOT_ID slotID,
196     CK_MECHANISM_TYPE type,
197     CK_MECHANISM_INFO_PTR pInfo);
198 
199 /*
200  * NSSCKFWC_InitToken
201  *
202  */
203 NSS_EXTERN CK_RV
204 NSSCKFWC_InitToken(
205     NSSCKFWInstance *fwInstance,
206     CK_SLOT_ID slotID,
207     CK_CHAR_PTR pPin,
208     CK_ULONG ulPinLen,
209     CK_CHAR_PTR pLabel);
210 
211 /*
212  * NSSCKFWC_InitPIN
213  *
214  */
215 NSS_EXTERN CK_RV
216 NSSCKFWC_InitPIN(
217     NSSCKFWInstance *fwInstance,
218     CK_SESSION_HANDLE hSession,
219     CK_CHAR_PTR pPin,
220     CK_ULONG ulPinLen);
221 
222 /*
223  * NSSCKFWC_SetPIN
224  *
225  */
226 NSS_EXTERN CK_RV
227 NSSCKFWC_SetPIN(
228     NSSCKFWInstance *fwInstance,
229     CK_SESSION_HANDLE hSession,
230     CK_CHAR_PTR pOldPin,
231     CK_ULONG ulOldLen,
232     CK_CHAR_PTR pNewPin,
233     CK_ULONG ulNewLen);
234 
235 /*
236  * NSSCKFWC_OpenSession
237  *
238  */
239 NSS_EXTERN CK_RV
240 NSSCKFWC_OpenSession(
241     NSSCKFWInstance *fwInstance,
242     CK_SLOT_ID slotID,
243     CK_FLAGS flags,
244     CK_VOID_PTR pApplication,
245     CK_NOTIFY Notify,
246     CK_SESSION_HANDLE_PTR phSession);
247 
248 /*
249  * NSSCKFWC_CloseSession
250  *
251  */
252 NSS_EXTERN CK_RV
253 NSSCKFWC_CloseSession(
254     NSSCKFWInstance *fwInstance,
255     CK_SESSION_HANDLE hSession);
256 
257 /*
258  * NSSCKFWC_CloseAllSessions
259  *
260  */
261 NSS_EXTERN CK_RV
262 NSSCKFWC_CloseAllSessions(
263     NSSCKFWInstance *fwInstance,
264     CK_SLOT_ID slotID);
265 
266 /*
267  * NSSCKFWC_GetSessionInfo
268  *
269  */
270 NSS_EXTERN CK_RV
271 NSSCKFWC_GetSessionInfo(
272     NSSCKFWInstance *fwInstance,
273     CK_SESSION_HANDLE hSession,
274     CK_SESSION_INFO_PTR pInfo);
275 
276 /*
277  * NSSCKFWC_GetOperationState
278  *
279  */
280 NSS_EXTERN CK_RV
281 NSSCKFWC_GetOperationState(
282     NSSCKFWInstance *fwInstance,
283     CK_SESSION_HANDLE hSession,
284     CK_BYTE_PTR pOperationState,
285     CK_ULONG_PTR pulOperationStateLen);
286 
287 /*
288  * NSSCKFWC_SetOperationState
289  *
290  */
291 NSS_EXTERN CK_RV
292 NSSCKFWC_SetOperationState(
293     NSSCKFWInstance *fwInstance,
294     CK_SESSION_HANDLE hSession,
295     CK_BYTE_PTR pOperationState,
296     CK_ULONG ulOperationStateLen,
297     CK_OBJECT_HANDLE hEncryptionKey,
298     CK_OBJECT_HANDLE hAuthenticationKey);
299 
300 /*
301  * NSSCKFWC_Login
302  *
303  */
304 NSS_EXTERN CK_RV
305 NSSCKFWC_Login(
306     NSSCKFWInstance *fwInstance,
307     CK_SESSION_HANDLE hSession,
308     CK_USER_TYPE userType,
309     CK_CHAR_PTR pPin,
310     CK_ULONG ulPinLen);
311 
312 /*
313  * NSSCKFWC_Logout
314  *
315  */
316 NSS_EXTERN CK_RV
317 NSSCKFWC_Logout(
318     NSSCKFWInstance *fwInstance,
319     CK_SESSION_HANDLE hSession);
320 
321 /*
322  * NSSCKFWC_CreateObject
323  *
324  */
325 NSS_EXTERN CK_RV
326 NSSCKFWC_CreateObject(
327     NSSCKFWInstance *fwInstance,
328     CK_SESSION_HANDLE hSession,
329     CK_ATTRIBUTE_PTR pTemplate,
330     CK_ULONG ulCount,
331     CK_OBJECT_HANDLE_PTR phObject);
332 
333 /*
334  * NSSCKFWC_CopyObject
335  *
336  */
337 NSS_EXTERN CK_RV
338 NSSCKFWC_CopyObject(
339     NSSCKFWInstance *fwInstance,
340     CK_SESSION_HANDLE hSession,
341     CK_OBJECT_HANDLE hObject,
342     CK_ATTRIBUTE_PTR pTemplate,
343     CK_ULONG ulCount,
344     CK_OBJECT_HANDLE_PTR phNewObject);
345 
346 /*
347  * NSSCKFWC_DestroyObject
348  *
349  */
350 NSS_EXTERN CK_RV
351 NSSCKFWC_DestroyObject(
352     NSSCKFWInstance *fwInstance,
353     CK_SESSION_HANDLE hSession,
354     CK_OBJECT_HANDLE hObject);
355 
356 /*
357  * NSSCKFWC_GetObjectSize
358  *
359  */
360 NSS_EXTERN CK_RV
361 NSSCKFWC_GetObjectSize(
362     NSSCKFWInstance *fwInstance,
363     CK_SESSION_HANDLE hSession,
364     CK_OBJECT_HANDLE hObject,
365     CK_ULONG_PTR pulSize);
366 
367 /*
368  * NSSCKFWC_GetAttributeValue
369  *
370  */
371 NSS_EXTERN CK_RV
372 NSSCKFWC_GetAttributeValue(
373     NSSCKFWInstance *fwInstance,
374     CK_SESSION_HANDLE hSession,
375     CK_OBJECT_HANDLE hObject,
376     CK_ATTRIBUTE_PTR pTemplate,
377     CK_ULONG ulCount);
378 
379 /*
380  * NSSCKFWC_SetAttributeValue
381  *
382  */
383 NSS_EXTERN CK_RV
384 NSSCKFWC_SetAttributeValue(
385     NSSCKFWInstance *fwInstance,
386     CK_SESSION_HANDLE hSession,
387     CK_OBJECT_HANDLE hObject,
388     CK_ATTRIBUTE_PTR pTemplate,
389     CK_ULONG ulCount);
390 
391 /*
392  * NSSCKFWC_FindObjectsInit
393  *
394  */
395 NSS_EXTERN CK_RV
396 NSSCKFWC_FindObjectsInit(
397     NSSCKFWInstance *fwInstance,
398     CK_SESSION_HANDLE hSession,
399     CK_ATTRIBUTE_PTR pTemplate,
400     CK_ULONG ulCount);
401 
402 /*
403  * NSSCKFWC_FindObjects
404  *
405  */
406 NSS_EXTERN CK_RV
407 NSSCKFWC_FindObjects(
408     NSSCKFWInstance *fwInstance,
409     CK_SESSION_HANDLE hSession,
410     CK_OBJECT_HANDLE_PTR phObject,
411     CK_ULONG ulMaxObjectCount,
412     CK_ULONG_PTR pulObjectCount);
413 
414 /*
415  * NSSCKFWC_FindObjectsFinal
416  *
417  */
418 NSS_EXTERN CK_RV
419 NSSCKFWC_FindObjectsFinal(
420     NSSCKFWInstance *fwInstance,
421     CK_SESSION_HANDLE hSession);
422 
423 /*
424  * NSSCKFWC_EncryptInit
425  *
426  */
427 NSS_EXTERN CK_RV
428 NSSCKFWC_EncryptInit(
429     NSSCKFWInstance *fwInstance,
430     CK_SESSION_HANDLE hSession,
431     CK_MECHANISM_PTR pMechanism,
432     CK_OBJECT_HANDLE hKey);
433 
434 /*
435  * NSSCKFWC_Encrypt
436  *
437  */
438 NSS_EXTERN CK_RV
439 NSSCKFWC_Encrypt(
440     NSSCKFWInstance *fwInstance,
441     CK_SESSION_HANDLE hSession,
442     CK_BYTE_PTR pData,
443     CK_ULONG ulDataLen,
444     CK_BYTE_PTR pEncryptedData,
445     CK_ULONG_PTR pulEncryptedDataLen);
446 
447 /*
448  * NSSCKFWC_EncryptUpdate
449  *
450  */
451 NSS_EXTERN CK_RV
452 NSSCKFWC_EncryptUpdate(
453     NSSCKFWInstance *fwInstance,
454     CK_SESSION_HANDLE hSession,
455     CK_BYTE_PTR pPart,
456     CK_ULONG ulPartLen,
457     CK_BYTE_PTR pEncryptedPart,
458     CK_ULONG_PTR pulEncryptedPartLen);
459 
460 /*
461  * NSSCKFWC_EncryptFinal
462  *
463  */
464 NSS_EXTERN CK_RV
465 NSSCKFWC_EncryptFinal(
466     NSSCKFWInstance *fwInstance,
467     CK_SESSION_HANDLE hSession,
468     CK_BYTE_PTR pLastEncryptedPart,
469     CK_ULONG_PTR pulLastEncryptedPartLen);
470 
471 /*
472  * NSSCKFWC_DecryptInit
473  *
474  */
475 NSS_EXTERN CK_RV
476 NSSCKFWC_DecryptInit(
477     NSSCKFWInstance *fwInstance,
478     CK_SESSION_HANDLE hSession,
479     CK_MECHANISM_PTR pMechanism,
480     CK_OBJECT_HANDLE hKey);
481 
482 /*
483  * NSSCKFWC_Decrypt
484  *
485  */
486 NSS_EXTERN CK_RV
487 NSSCKFWC_Decrypt(
488     NSSCKFWInstance *fwInstance,
489     CK_SESSION_HANDLE hSession,
490     CK_BYTE_PTR pEncryptedData,
491     CK_ULONG ulEncryptedDataLen,
492     CK_BYTE_PTR pData,
493     CK_ULONG_PTR pulDataLen);
494 
495 /*
496  * NSSCKFWC_DecryptUpdate
497  *
498  */
499 NSS_EXTERN CK_RV
500 NSSCKFWC_DecryptUpdate(
501     NSSCKFWInstance *fwInstance,
502     CK_SESSION_HANDLE hSession,
503     CK_BYTE_PTR pEncryptedPart,
504     CK_ULONG ulEncryptedPartLen,
505     CK_BYTE_PTR pPart,
506     CK_ULONG_PTR pulPartLen);
507 
508 /*
509  * NSSCKFWC_DecryptFinal
510  *
511  */
512 NSS_EXTERN CK_RV
513 NSSCKFWC_DecryptFinal(
514     NSSCKFWInstance *fwInstance,
515     CK_SESSION_HANDLE hSession,
516     CK_BYTE_PTR pLastPart,
517     CK_ULONG_PTR pulLastPartLen);
518 
519 /*
520  * NSSCKFWC_DigestInit
521  *
522  */
523 NSS_EXTERN CK_RV
524 NSSCKFWC_DigestInit(
525     NSSCKFWInstance *fwInstance,
526     CK_SESSION_HANDLE hSession,
527     CK_MECHANISM_PTR pMechanism);
528 
529 /*
530  * NSSCKFWC_Digest
531  *
532  */
533 NSS_EXTERN CK_RV
534 NSSCKFWC_Digest(
535     NSSCKFWInstance *fwInstance,
536     CK_SESSION_HANDLE hSession,
537     CK_BYTE_PTR pData,
538     CK_ULONG ulDataLen,
539     CK_BYTE_PTR pDigest,
540     CK_ULONG_PTR pulDigestLen);
541 
542 /*
543  * NSSCKFWC_DigestUpdate
544  *
545  */
546 NSS_EXTERN CK_RV
547 NSSCKFWC_DigestUpdate(
548     NSSCKFWInstance *fwInstance,
549     CK_SESSION_HANDLE hSession,
550     CK_BYTE_PTR pData,
551     CK_ULONG ulDataLen);
552 
553 /*
554  * NSSCKFWC_DigestKey
555  *
556  */
557 NSS_EXTERN CK_RV
558 NSSCKFWC_DigestKey(
559     NSSCKFWInstance *fwInstance,
560     CK_SESSION_HANDLE hSession,
561     CK_OBJECT_HANDLE hKey);
562 
563 /*
564  * NSSCKFWC_DigestFinal
565  *
566  */
567 NSS_EXTERN CK_RV
568 NSSCKFWC_DigestFinal(
569     NSSCKFWInstance *fwInstance,
570     CK_SESSION_HANDLE hSession,
571     CK_BYTE_PTR pDigest,
572     CK_ULONG_PTR pulDigestLen);
573 
574 /*
575  * NSSCKFWC_SignInit
576  *
577  */
578 NSS_EXTERN CK_RV
579 NSSCKFWC_SignInit(
580     NSSCKFWInstance *fwInstance,
581     CK_SESSION_HANDLE hSession,
582     CK_MECHANISM_PTR pMechanism,
583     CK_OBJECT_HANDLE hKey);
584 
585 /*
586  * NSSCKFWC_Sign
587  *
588  */
589 NSS_EXTERN CK_RV
590 NSSCKFWC_Sign(
591     NSSCKFWInstance *fwInstance,
592     CK_SESSION_HANDLE hSession,
593     CK_BYTE_PTR pData,
594     CK_ULONG ulDataLen,
595     CK_BYTE_PTR pSignature,
596     CK_ULONG_PTR pulSignatureLen);
597 
598 /*
599  * NSSCKFWC_SignUpdate
600  *
601  */
602 NSS_EXTERN CK_RV
603 NSSCKFWC_SignUpdate(
604     NSSCKFWInstance *fwInstance,
605     CK_SESSION_HANDLE hSession,
606     CK_BYTE_PTR pPart,
607     CK_ULONG ulPartLen);
608 
609 /*
610  * NSSCKFWC_SignFinal
611  *
612  */
613 NSS_EXTERN CK_RV
614 NSSCKFWC_SignFinal(
615     NSSCKFWInstance *fwInstance,
616     CK_SESSION_HANDLE hSession,
617     CK_BYTE_PTR pSignature,
618     CK_ULONG_PTR pulSignatureLen);
619 
620 /*
621  * NSSCKFWC_SignRecoverInit
622  *
623  */
624 NSS_EXTERN CK_RV
625 NSSCKFWC_SignRecoverInit(
626     NSSCKFWInstance *fwInstance,
627     CK_SESSION_HANDLE hSession,
628     CK_MECHANISM_PTR pMechanism,
629     CK_OBJECT_HANDLE hKey);
630 
631 /*
632  * NSSCKFWC_SignRecover
633  *
634  */
635 NSS_EXTERN CK_RV
636 NSSCKFWC_SignRecover(
637     NSSCKFWInstance *fwInstance,
638     CK_SESSION_HANDLE hSession,
639     CK_BYTE_PTR pData,
640     CK_ULONG ulDataLen,
641     CK_BYTE_PTR pSignature,
642     CK_ULONG_PTR pulSignatureLen);
643 
644 /*
645  * NSSCKFWC_VerifyInit
646  *
647  */
648 NSS_EXTERN CK_RV
649 NSSCKFWC_VerifyInit(
650     NSSCKFWInstance *fwInstance,
651     CK_SESSION_HANDLE hSession,
652     CK_MECHANISM_PTR pMechanism,
653     CK_OBJECT_HANDLE hKey);
654 
655 /*
656  * NSSCKFWC_Verify
657  *
658  */
659 NSS_EXTERN CK_RV
660 NSSCKFWC_Verify(
661     NSSCKFWInstance *fwInstance,
662     CK_SESSION_HANDLE hSession,
663     CK_BYTE_PTR pData,
664     CK_ULONG ulDataLen,
665     CK_BYTE_PTR pSignature,
666     CK_ULONG ulSignatureLen);
667 
668 /*
669  * NSSCKFWC_VerifyUpdate
670  *
671  */
672 NSS_EXTERN CK_RV
673 NSSCKFWC_VerifyUpdate(
674     NSSCKFWInstance *fwInstance,
675     CK_SESSION_HANDLE hSession,
676     CK_BYTE_PTR pPart,
677     CK_ULONG ulPartLen);
678 
679 /*
680  * NSSCKFWC_VerifyFinal
681  *
682  */
683 NSS_EXTERN CK_RV
684 NSSCKFWC_VerifyFinal(
685     NSSCKFWInstance *fwInstance,
686     CK_SESSION_HANDLE hSession,
687     CK_BYTE_PTR pSignature,
688     CK_ULONG ulSignatureLen);
689 
690 /*
691  * NSSCKFWC_VerifyRecoverInit
692  *
693  */
694 NSS_EXTERN CK_RV
695 NSSCKFWC_VerifyRecoverInit(
696     NSSCKFWInstance *fwInstance,
697     CK_SESSION_HANDLE hSession,
698     CK_MECHANISM_PTR pMechanism,
699     CK_OBJECT_HANDLE hKey);
700 
701 /*
702  * NSSCKFWC_VerifyRecover
703  *
704  */
705 NSS_EXTERN CK_RV
706 NSSCKFWC_VerifyRecover(
707     NSSCKFWInstance *fwInstance,
708     CK_SESSION_HANDLE hSession,
709     CK_BYTE_PTR pSignature,
710     CK_ULONG ulSignatureLen,
711     CK_BYTE_PTR pData,
712     CK_ULONG_PTR pulDataLen);
713 
714 /*
715  * NSSCKFWC_DigestEncryptUpdate
716  *
717  */
718 NSS_EXTERN CK_RV
719 NSSCKFWC_DigestEncryptUpdate(
720     NSSCKFWInstance *fwInstance,
721     CK_SESSION_HANDLE hSession,
722     CK_BYTE_PTR pPart,
723     CK_ULONG ulPartLen,
724     CK_BYTE_PTR pEncryptedPart,
725     CK_ULONG_PTR pulEncryptedPartLen);
726 
727 /*
728  * NSSCKFWC_DecryptDigestUpdate
729  *
730  */
731 NSS_EXTERN CK_RV
732 NSSCKFWC_DecryptDigestUpdate(
733     NSSCKFWInstance *fwInstance,
734     CK_SESSION_HANDLE hSession,
735     CK_BYTE_PTR pEncryptedPart,
736     CK_ULONG ulEncryptedPartLen,
737     CK_BYTE_PTR pPart,
738     CK_ULONG_PTR pulPartLen);
739 
740 /*
741  * NSSCKFWC_SignEncryptUpdate
742  *
743  */
744 NSS_EXTERN CK_RV
745 NSSCKFWC_SignEncryptUpdate(
746     NSSCKFWInstance *fwInstance,
747     CK_SESSION_HANDLE hSession,
748     CK_BYTE_PTR pPart,
749     CK_ULONG ulPartLen,
750     CK_BYTE_PTR pEncryptedPart,
751     CK_ULONG_PTR pulEncryptedPartLen);
752 
753 /*
754  * NSSCKFWC_DecryptVerifyUpdate
755  *
756  */
757 NSS_EXTERN CK_RV
758 NSSCKFWC_DecryptVerifyUpdate(
759     NSSCKFWInstance *fwInstance,
760     CK_SESSION_HANDLE hSession,
761     CK_BYTE_PTR pEncryptedPart,
762     CK_ULONG ulEncryptedPartLen,
763     CK_BYTE_PTR pPart,
764     CK_ULONG_PTR pulPartLen);
765 
766 /*
767  * NSSCKFWC_GenerateKey
768  *
769  */
770 NSS_EXTERN CK_RV
771 NSSCKFWC_GenerateKey(
772     NSSCKFWInstance *fwInstance,
773     CK_SESSION_HANDLE hSession,
774     CK_MECHANISM_PTR pMechanism,
775     CK_ATTRIBUTE_PTR pTemplate,
776     CK_ULONG ulCount,
777     CK_OBJECT_HANDLE_PTR phKey);
778 
779 /*
780  * NSSCKFWC_GenerateKeyPair
781  *
782  */
783 NSS_EXTERN CK_RV
784 NSSCKFWC_GenerateKeyPair(
785     NSSCKFWInstance *fwInstance,
786     CK_SESSION_HANDLE hSession,
787     CK_MECHANISM_PTR pMechanism,
788     CK_ATTRIBUTE_PTR pPublicKeyTemplate,
789     CK_ULONG ulPublicKeyAttributeCount,
790     CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
791     CK_ULONG ulPrivateKeyAttributeCount,
792     CK_OBJECT_HANDLE_PTR phPublicKey,
793     CK_OBJECT_HANDLE_PTR phPrivateKey);
794 
795 /*
796  * NSSCKFWC_WrapKey
797  *
798  */
799 NSS_EXTERN CK_RV
800 NSSCKFWC_WrapKey(
801     NSSCKFWInstance *fwInstance,
802     CK_SESSION_HANDLE hSession,
803     CK_MECHANISM_PTR pMechanism,
804     CK_OBJECT_HANDLE hWrappingKey,
805     CK_OBJECT_HANDLE hKey,
806     CK_BYTE_PTR pWrappedKey,
807     CK_ULONG_PTR pulWrappedKeyLen);
808 
809 /*
810  * NSSCKFWC_UnwrapKey
811  *
812  */
813 NSS_EXTERN CK_RV
814 NSSCKFWC_UnwrapKey(
815     NSSCKFWInstance *fwInstance,
816     CK_SESSION_HANDLE hSession,
817     CK_MECHANISM_PTR pMechanism,
818     CK_OBJECT_HANDLE hUnwrappingKey,
819     CK_BYTE_PTR pWrappedKey,
820     CK_ULONG ulWrappedKeyLen,
821     CK_ATTRIBUTE_PTR pTemplate,
822     CK_ULONG ulAttributeCount,
823     CK_OBJECT_HANDLE_PTR phKey);
824 
825 /*
826  * NSSCKFWC_DeriveKey
827  *
828  */
829 NSS_EXTERN CK_RV
830 NSSCKFWC_DeriveKey(
831     NSSCKFWInstance *fwInstance,
832     CK_SESSION_HANDLE hSession,
833     CK_MECHANISM_PTR pMechanism,
834     CK_OBJECT_HANDLE hBaseKey,
835     CK_ATTRIBUTE_PTR pTemplate,
836     CK_ULONG ulAttributeCount,
837     CK_OBJECT_HANDLE_PTR phKey);
838 
839 /*
840  * NSSCKFWC_SeedRandom
841  *
842  */
843 NSS_EXTERN CK_RV
844 NSSCKFWC_SeedRandom(
845     NSSCKFWInstance *fwInstance,
846     CK_SESSION_HANDLE hSession,
847     CK_BYTE_PTR pSeed,
848     CK_ULONG ulSeedLen);
849 
850 /*
851  * NSSCKFWC_GenerateRandom
852  *
853  */
854 NSS_EXTERN CK_RV
855 NSSCKFWC_GenerateRandom(
856     NSSCKFWInstance *fwInstance,
857     CK_SESSION_HANDLE hSession,
858     CK_BYTE_PTR pRandomData,
859     CK_ULONG ulRandomLen);
860 
861 /*
862  * NSSCKFWC_GetFunctionStatus
863  *
864  */
865 NSS_EXTERN CK_RV
866 NSSCKFWC_GetFunctionStatus(
867     NSSCKFWInstance *fwInstance,
868     CK_SESSION_HANDLE hSession);
869 
870 /*
871  * NSSCKFWC_CancelFunction
872  *
873  */
874 NSS_EXTERN CK_RV
875 NSSCKFWC_CancelFunction(
876     NSSCKFWInstance *fwInstance,
877     CK_SESSION_HANDLE hSession);
878 
879 #endif /* NSSCKFWC_H */
880