Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11f.h
38918 views
1
/* Copyright (c) OASIS Open 2016. All Rights Reserved./
2
* /Distributed under the terms of the OASIS IPR Policy,
3
* [http://www.oasis-open.org/policies-guidelines/ipr], AS-IS, WITHOUT ANY
4
* IMPLIED OR EXPRESS WARRANTY; there is no warranty of MERCHANTABILITY, FITNESS FOR A
5
* PARTICULAR PURPOSE or NONINFRINGEMENT of the rights of others.
6
*/
7
8
/* Latest version of the specification:
9
* http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/pkcs11-base-v2.40.html
10
*/
11
12
/* This header file contains pretty much everything about all the
13
* Cryptoki function prototypes. Because this information is
14
* used for more than just declaring function prototypes, the
15
* order of the functions appearing herein is important, and
16
* should not be altered.
17
*/
18
19
/* General-purpose */
20
21
/* C_Initialize initializes the Cryptoki library. */
22
CK_PKCS11_FUNCTION_INFO(C_Initialize)
23
#ifdef CK_NEED_ARG_LIST
24
(
25
CK_VOID_PTR pInitArgs /* if this is not NULL_PTR, it gets
26
* cast to CK_C_INITIALIZE_ARGS_PTR
27
* and dereferenced
28
*/
29
);
30
#endif
31
32
33
/* C_Finalize indicates that an application is done with the
34
* Cryptoki library.
35
*/
36
CK_PKCS11_FUNCTION_INFO(C_Finalize)
37
#ifdef CK_NEED_ARG_LIST
38
(
39
CK_VOID_PTR pReserved /* reserved. Should be NULL_PTR */
40
);
41
#endif
42
43
44
/* C_GetInfo returns general information about Cryptoki. */
45
CK_PKCS11_FUNCTION_INFO(C_GetInfo)
46
#ifdef CK_NEED_ARG_LIST
47
(
48
CK_INFO_PTR pInfo /* location that receives information */
49
);
50
#endif
51
52
53
/* C_GetFunctionList returns the function list. */
54
CK_PKCS11_FUNCTION_INFO(C_GetFunctionList)
55
#ifdef CK_NEED_ARG_LIST
56
(
57
CK_FUNCTION_LIST_PTR_PTR ppFunctionList /* receives pointer to
58
* function list
59
*/
60
);
61
#endif
62
63
64
65
/* Slot and token management */
66
67
/* C_GetSlotList obtains a list of slots in the system. */
68
CK_PKCS11_FUNCTION_INFO(C_GetSlotList)
69
#ifdef CK_NEED_ARG_LIST
70
(
71
CK_BBOOL tokenPresent, /* only slots with tokens */
72
CK_SLOT_ID_PTR pSlotList, /* receives array of slot IDs */
73
CK_ULONG_PTR pulCount /* receives number of slots */
74
);
75
#endif
76
77
78
/* C_GetSlotInfo obtains information about a particular slot in
79
* the system.
80
*/
81
CK_PKCS11_FUNCTION_INFO(C_GetSlotInfo)
82
#ifdef CK_NEED_ARG_LIST
83
(
84
CK_SLOT_ID slotID, /* the ID of the slot */
85
CK_SLOT_INFO_PTR pInfo /* receives the slot information */
86
);
87
#endif
88
89
90
/* C_GetTokenInfo obtains information about a particular token
91
* in the system.
92
*/
93
CK_PKCS11_FUNCTION_INFO(C_GetTokenInfo)
94
#ifdef CK_NEED_ARG_LIST
95
(
96
CK_SLOT_ID slotID, /* ID of the token's slot */
97
CK_TOKEN_INFO_PTR pInfo /* receives the token information */
98
);
99
#endif
100
101
102
/* C_GetMechanismList obtains a list of mechanism types
103
* supported by a token.
104
*/
105
CK_PKCS11_FUNCTION_INFO(C_GetMechanismList)
106
#ifdef CK_NEED_ARG_LIST
107
(
108
CK_SLOT_ID slotID, /* ID of token's slot */
109
CK_MECHANISM_TYPE_PTR pMechanismList, /* gets mech. array */
110
CK_ULONG_PTR pulCount /* gets # of mechs. */
111
);
112
#endif
113
114
115
/* C_GetMechanismInfo obtains information about a particular
116
* mechanism possibly supported by a token.
117
*/
118
CK_PKCS11_FUNCTION_INFO(C_GetMechanismInfo)
119
#ifdef CK_NEED_ARG_LIST
120
(
121
CK_SLOT_ID slotID, /* ID of the token's slot */
122
CK_MECHANISM_TYPE type, /* type of mechanism */
123
CK_MECHANISM_INFO_PTR pInfo /* receives mechanism info */
124
);
125
#endif
126
127
128
/* C_InitToken initializes a token. */
129
CK_PKCS11_FUNCTION_INFO(C_InitToken)
130
#ifdef CK_NEED_ARG_LIST
131
(
132
CK_SLOT_ID slotID, /* ID of the token's slot */
133
CK_UTF8CHAR_PTR pPin, /* the SO's initial PIN */
134
CK_ULONG ulPinLen, /* length in bytes of the PIN */
135
CK_UTF8CHAR_PTR pLabel /* 32-byte token label (blank padded) */
136
);
137
#endif
138
139
140
/* C_InitPIN initializes the normal user's PIN. */
141
CK_PKCS11_FUNCTION_INFO(C_InitPIN)
142
#ifdef CK_NEED_ARG_LIST
143
(
144
CK_SESSION_HANDLE hSession, /* the session's handle */
145
CK_UTF8CHAR_PTR pPin, /* the normal user's PIN */
146
CK_ULONG ulPinLen /* length in bytes of the PIN */
147
);
148
#endif
149
150
151
/* C_SetPIN modifies the PIN of the user who is logged in. */
152
CK_PKCS11_FUNCTION_INFO(C_SetPIN)
153
#ifdef CK_NEED_ARG_LIST
154
(
155
CK_SESSION_HANDLE hSession, /* the session's handle */
156
CK_UTF8CHAR_PTR pOldPin, /* the old PIN */
157
CK_ULONG ulOldLen, /* length of the old PIN */
158
CK_UTF8CHAR_PTR pNewPin, /* the new PIN */
159
CK_ULONG ulNewLen /* length of the new PIN */
160
);
161
#endif
162
163
164
165
/* Session management */
166
167
/* C_OpenSession opens a session between an application and a
168
* token.
169
*/
170
CK_PKCS11_FUNCTION_INFO(C_OpenSession)
171
#ifdef CK_NEED_ARG_LIST
172
(
173
CK_SLOT_ID slotID, /* the slot's ID */
174
CK_FLAGS flags, /* from CK_SESSION_INFO */
175
CK_VOID_PTR pApplication, /* passed to callback */
176
CK_NOTIFY Notify, /* callback function */
177
CK_SESSION_HANDLE_PTR phSession /* gets session handle */
178
);
179
#endif
180
181
182
/* C_CloseSession closes a session between an application and a
183
* token.
184
*/
185
CK_PKCS11_FUNCTION_INFO(C_CloseSession)
186
#ifdef CK_NEED_ARG_LIST
187
(
188
CK_SESSION_HANDLE hSession /* the session's handle */
189
);
190
#endif
191
192
193
/* C_CloseAllSessions closes all sessions with a token. */
194
CK_PKCS11_FUNCTION_INFO(C_CloseAllSessions)
195
#ifdef CK_NEED_ARG_LIST
196
(
197
CK_SLOT_ID slotID /* the token's slot */
198
);
199
#endif
200
201
202
/* C_GetSessionInfo obtains information about the session. */
203
CK_PKCS11_FUNCTION_INFO(C_GetSessionInfo)
204
#ifdef CK_NEED_ARG_LIST
205
(
206
CK_SESSION_HANDLE hSession, /* the session's handle */
207
CK_SESSION_INFO_PTR pInfo /* receives session info */
208
);
209
#endif
210
211
212
/* C_GetOperationState obtains the state of the cryptographic operation
213
* in a session.
214
*/
215
CK_PKCS11_FUNCTION_INFO(C_GetOperationState)
216
#ifdef CK_NEED_ARG_LIST
217
(
218
CK_SESSION_HANDLE hSession, /* session's handle */
219
CK_BYTE_PTR pOperationState, /* gets state */
220
CK_ULONG_PTR pulOperationStateLen /* gets state length */
221
);
222
#endif
223
224
225
/* C_SetOperationState restores the state of the cryptographic
226
* operation in a session.
227
*/
228
CK_PKCS11_FUNCTION_INFO(C_SetOperationState)
229
#ifdef CK_NEED_ARG_LIST
230
(
231
CK_SESSION_HANDLE hSession, /* session's handle */
232
CK_BYTE_PTR pOperationState, /* holds state */
233
CK_ULONG ulOperationStateLen, /* holds state length */
234
CK_OBJECT_HANDLE hEncryptionKey, /* en/decryption key */
235
CK_OBJECT_HANDLE hAuthenticationKey /* sign/verify key */
236
);
237
#endif
238
239
240
/* C_Login logs a user into a token. */
241
CK_PKCS11_FUNCTION_INFO(C_Login)
242
#ifdef CK_NEED_ARG_LIST
243
(
244
CK_SESSION_HANDLE hSession, /* the session's handle */
245
CK_USER_TYPE userType, /* the user type */
246
CK_UTF8CHAR_PTR pPin, /* the user's PIN */
247
CK_ULONG ulPinLen /* the length of the PIN */
248
);
249
#endif
250
251
252
/* C_Logout logs a user out from a token. */
253
CK_PKCS11_FUNCTION_INFO(C_Logout)
254
#ifdef CK_NEED_ARG_LIST
255
(
256
CK_SESSION_HANDLE hSession /* the session's handle */
257
);
258
#endif
259
260
261
262
/* Object management */
263
264
/* C_CreateObject creates a new object. */
265
CK_PKCS11_FUNCTION_INFO(C_CreateObject)
266
#ifdef CK_NEED_ARG_LIST
267
(
268
CK_SESSION_HANDLE hSession, /* the session's handle */
269
CK_ATTRIBUTE_PTR pTemplate, /* the object's template */
270
CK_ULONG ulCount, /* attributes in template */
271
CK_OBJECT_HANDLE_PTR phObject /* gets new object's handle. */
272
);
273
#endif
274
275
276
/* C_CopyObject copies an object, creating a new object for the
277
* copy.
278
*/
279
CK_PKCS11_FUNCTION_INFO(C_CopyObject)
280
#ifdef CK_NEED_ARG_LIST
281
(
282
CK_SESSION_HANDLE hSession, /* the session's handle */
283
CK_OBJECT_HANDLE hObject, /* the object's handle */
284
CK_ATTRIBUTE_PTR pTemplate, /* template for new object */
285
CK_ULONG ulCount, /* attributes in template */
286
CK_OBJECT_HANDLE_PTR phNewObject /* receives handle of copy */
287
);
288
#endif
289
290
291
/* C_DestroyObject destroys an object. */
292
CK_PKCS11_FUNCTION_INFO(C_DestroyObject)
293
#ifdef CK_NEED_ARG_LIST
294
(
295
CK_SESSION_HANDLE hSession, /* the session's handle */
296
CK_OBJECT_HANDLE hObject /* the object's handle */
297
);
298
#endif
299
300
301
/* C_GetObjectSize gets the size of an object in bytes. */
302
CK_PKCS11_FUNCTION_INFO(C_GetObjectSize)
303
#ifdef CK_NEED_ARG_LIST
304
(
305
CK_SESSION_HANDLE hSession, /* the session's handle */
306
CK_OBJECT_HANDLE hObject, /* the object's handle */
307
CK_ULONG_PTR pulSize /* receives size of object */
308
);
309
#endif
310
311
312
/* C_GetAttributeValue obtains the value of one or more object
313
* attributes.
314
*/
315
CK_PKCS11_FUNCTION_INFO(C_GetAttributeValue)
316
#ifdef CK_NEED_ARG_LIST
317
(
318
CK_SESSION_HANDLE hSession, /* the session's handle */
319
CK_OBJECT_HANDLE hObject, /* the object's handle */
320
CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs; gets vals */
321
CK_ULONG ulCount /* attributes in template */
322
);
323
#endif
324
325
326
/* C_SetAttributeValue modifies the value of one or more object
327
* attributes.
328
*/
329
CK_PKCS11_FUNCTION_INFO(C_SetAttributeValue)
330
#ifdef CK_NEED_ARG_LIST
331
(
332
CK_SESSION_HANDLE hSession, /* the session's handle */
333
CK_OBJECT_HANDLE hObject, /* the object's handle */
334
CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs and values */
335
CK_ULONG ulCount /* attributes in template */
336
);
337
#endif
338
339
340
/* C_FindObjectsInit initializes a search for token and session
341
* objects that match a template.
342
*/
343
CK_PKCS11_FUNCTION_INFO(C_FindObjectsInit)
344
#ifdef CK_NEED_ARG_LIST
345
(
346
CK_SESSION_HANDLE hSession, /* the session's handle */
347
CK_ATTRIBUTE_PTR pTemplate, /* attribute values to match */
348
CK_ULONG ulCount /* attrs in search template */
349
);
350
#endif
351
352
353
/* C_FindObjects continues a search for token and session
354
* objects that match a template, obtaining additional object
355
* handles.
356
*/
357
CK_PKCS11_FUNCTION_INFO(C_FindObjects)
358
#ifdef CK_NEED_ARG_LIST
359
(
360
CK_SESSION_HANDLE hSession, /* session's handle */
361
CK_OBJECT_HANDLE_PTR phObject, /* gets obj. handles */
362
CK_ULONG ulMaxObjectCount, /* max handles to get */
363
CK_ULONG_PTR pulObjectCount /* actual # returned */
364
);
365
#endif
366
367
368
/* C_FindObjectsFinal finishes a search for token and session
369
* objects.
370
*/
371
CK_PKCS11_FUNCTION_INFO(C_FindObjectsFinal)
372
#ifdef CK_NEED_ARG_LIST
373
(
374
CK_SESSION_HANDLE hSession /* the session's handle */
375
);
376
#endif
377
378
379
380
/* Encryption and decryption */
381
382
/* C_EncryptInit initializes an encryption operation. */
383
CK_PKCS11_FUNCTION_INFO(C_EncryptInit)
384
#ifdef CK_NEED_ARG_LIST
385
(
386
CK_SESSION_HANDLE hSession, /* the session's handle */
387
CK_MECHANISM_PTR pMechanism, /* the encryption mechanism */
388
CK_OBJECT_HANDLE hKey /* handle of encryption key */
389
);
390
#endif
391
392
393
/* C_Encrypt encrypts single-part data. */
394
CK_PKCS11_FUNCTION_INFO(C_Encrypt)
395
#ifdef CK_NEED_ARG_LIST
396
(
397
CK_SESSION_HANDLE hSession, /* session's handle */
398
CK_BYTE_PTR pData, /* the plaintext data */
399
CK_ULONG ulDataLen, /* bytes of plaintext */
400
CK_BYTE_PTR pEncryptedData, /* gets ciphertext */
401
CK_ULONG_PTR pulEncryptedDataLen /* gets c-text size */
402
);
403
#endif
404
405
406
/* C_EncryptUpdate continues a multiple-part encryption
407
* operation.
408
*/
409
CK_PKCS11_FUNCTION_INFO(C_EncryptUpdate)
410
#ifdef CK_NEED_ARG_LIST
411
(
412
CK_SESSION_HANDLE hSession, /* session's handle */
413
CK_BYTE_PTR pPart, /* the plaintext data */
414
CK_ULONG ulPartLen, /* plaintext data len */
415
CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
416
CK_ULONG_PTR pulEncryptedPartLen /* gets c-text size */
417
);
418
#endif
419
420
421
/* C_EncryptFinal finishes a multiple-part encryption
422
* operation.
423
*/
424
CK_PKCS11_FUNCTION_INFO(C_EncryptFinal)
425
#ifdef CK_NEED_ARG_LIST
426
(
427
CK_SESSION_HANDLE hSession, /* session handle */
428
CK_BYTE_PTR pLastEncryptedPart, /* last c-text */
429
CK_ULONG_PTR pulLastEncryptedPartLen /* gets last size */
430
);
431
#endif
432
433
434
/* C_DecryptInit initializes a decryption operation. */
435
CK_PKCS11_FUNCTION_INFO(C_DecryptInit)
436
#ifdef CK_NEED_ARG_LIST
437
(
438
CK_SESSION_HANDLE hSession, /* the session's handle */
439
CK_MECHANISM_PTR pMechanism, /* the decryption mechanism */
440
CK_OBJECT_HANDLE hKey /* handle of decryption key */
441
);
442
#endif
443
444
445
/* C_Decrypt decrypts encrypted data in a single part. */
446
CK_PKCS11_FUNCTION_INFO(C_Decrypt)
447
#ifdef CK_NEED_ARG_LIST
448
(
449
CK_SESSION_HANDLE hSession, /* session's handle */
450
CK_BYTE_PTR pEncryptedData, /* ciphertext */
451
CK_ULONG ulEncryptedDataLen, /* ciphertext length */
452
CK_BYTE_PTR pData, /* gets plaintext */
453
CK_ULONG_PTR pulDataLen /* gets p-text size */
454
);
455
#endif
456
457
458
/* C_DecryptUpdate continues a multiple-part decryption
459
* operation.
460
*/
461
CK_PKCS11_FUNCTION_INFO(C_DecryptUpdate)
462
#ifdef CK_NEED_ARG_LIST
463
(
464
CK_SESSION_HANDLE hSession, /* session's handle */
465
CK_BYTE_PTR pEncryptedPart, /* encrypted data */
466
CK_ULONG ulEncryptedPartLen, /* input length */
467
CK_BYTE_PTR pPart, /* gets plaintext */
468
CK_ULONG_PTR pulPartLen /* p-text size */
469
);
470
#endif
471
472
473
/* C_DecryptFinal finishes a multiple-part decryption
474
* operation.
475
*/
476
CK_PKCS11_FUNCTION_INFO(C_DecryptFinal)
477
#ifdef CK_NEED_ARG_LIST
478
(
479
CK_SESSION_HANDLE hSession, /* the session's handle */
480
CK_BYTE_PTR pLastPart, /* gets plaintext */
481
CK_ULONG_PTR pulLastPartLen /* p-text size */
482
);
483
#endif
484
485
486
487
/* Message digesting */
488
489
/* C_DigestInit initializes a message-digesting operation. */
490
CK_PKCS11_FUNCTION_INFO(C_DigestInit)
491
#ifdef CK_NEED_ARG_LIST
492
(
493
CK_SESSION_HANDLE hSession, /* the session's handle */
494
CK_MECHANISM_PTR pMechanism /* the digesting mechanism */
495
);
496
#endif
497
498
499
/* C_Digest digests data in a single part. */
500
CK_PKCS11_FUNCTION_INFO(C_Digest)
501
#ifdef CK_NEED_ARG_LIST
502
(
503
CK_SESSION_HANDLE hSession, /* the session's handle */
504
CK_BYTE_PTR pData, /* data to be digested */
505
CK_ULONG ulDataLen, /* bytes of data to digest */
506
CK_BYTE_PTR pDigest, /* gets the message digest */
507
CK_ULONG_PTR pulDigestLen /* gets digest length */
508
);
509
#endif
510
511
512
/* C_DigestUpdate continues a multiple-part message-digesting
513
* operation.
514
*/
515
CK_PKCS11_FUNCTION_INFO(C_DigestUpdate)
516
#ifdef CK_NEED_ARG_LIST
517
(
518
CK_SESSION_HANDLE hSession, /* the session's handle */
519
CK_BYTE_PTR pPart, /* data to be digested */
520
CK_ULONG ulPartLen /* bytes of data to be digested */
521
);
522
#endif
523
524
525
/* C_DigestKey continues a multi-part message-digesting
526
* operation, by digesting the value of a secret key as part of
527
* the data already digested.
528
*/
529
CK_PKCS11_FUNCTION_INFO(C_DigestKey)
530
#ifdef CK_NEED_ARG_LIST
531
(
532
CK_SESSION_HANDLE hSession, /* the session's handle */
533
CK_OBJECT_HANDLE hKey /* secret key to digest */
534
);
535
#endif
536
537
538
/* C_DigestFinal finishes a multiple-part message-digesting
539
* operation.
540
*/
541
CK_PKCS11_FUNCTION_INFO(C_DigestFinal)
542
#ifdef CK_NEED_ARG_LIST
543
(
544
CK_SESSION_HANDLE hSession, /* the session's handle */
545
CK_BYTE_PTR pDigest, /* gets the message digest */
546
CK_ULONG_PTR pulDigestLen /* gets byte count of digest */
547
);
548
#endif
549
550
551
552
/* Signing and MACing */
553
554
/* C_SignInit initializes a signature (private key encryption)
555
* operation, where the signature is (will be) an appendix to
556
* the data, and plaintext cannot be recovered from the
557
* signature.
558
*/
559
CK_PKCS11_FUNCTION_INFO(C_SignInit)
560
#ifdef CK_NEED_ARG_LIST
561
(
562
CK_SESSION_HANDLE hSession, /* the session's handle */
563
CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
564
CK_OBJECT_HANDLE hKey /* handle of signature key */
565
);
566
#endif
567
568
569
/* C_Sign signs (encrypts with private key) data in a single
570
* part, where the signature is (will be) an appendix to the
571
* data, and plaintext cannot be recovered from the signature.
572
*/
573
CK_PKCS11_FUNCTION_INFO(C_Sign)
574
#ifdef CK_NEED_ARG_LIST
575
(
576
CK_SESSION_HANDLE hSession, /* the session's handle */
577
CK_BYTE_PTR pData, /* the data to sign */
578
CK_ULONG ulDataLen, /* count of bytes to sign */
579
CK_BYTE_PTR pSignature, /* gets the signature */
580
CK_ULONG_PTR pulSignatureLen /* gets signature length */
581
);
582
#endif
583
584
585
/* C_SignUpdate continues a multiple-part signature operation,
586
* where the signature is (will be) an appendix to the data,
587
* and plaintext cannot be recovered from the signature.
588
*/
589
CK_PKCS11_FUNCTION_INFO(C_SignUpdate)
590
#ifdef CK_NEED_ARG_LIST
591
(
592
CK_SESSION_HANDLE hSession, /* the session's handle */
593
CK_BYTE_PTR pPart, /* the data to sign */
594
CK_ULONG ulPartLen /* count of bytes to sign */
595
);
596
#endif
597
598
599
/* C_SignFinal finishes a multiple-part signature operation,
600
* returning the signature.
601
*/
602
CK_PKCS11_FUNCTION_INFO(C_SignFinal)
603
#ifdef CK_NEED_ARG_LIST
604
(
605
CK_SESSION_HANDLE hSession, /* the session's handle */
606
CK_BYTE_PTR pSignature, /* gets the signature */
607
CK_ULONG_PTR pulSignatureLen /* gets signature length */
608
);
609
#endif
610
611
612
/* C_SignRecoverInit initializes a signature operation, where
613
* the data can be recovered from the signature.
614
*/
615
CK_PKCS11_FUNCTION_INFO(C_SignRecoverInit)
616
#ifdef CK_NEED_ARG_LIST
617
(
618
CK_SESSION_HANDLE hSession, /* the session's handle */
619
CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
620
CK_OBJECT_HANDLE hKey /* handle of the signature key */
621
);
622
#endif
623
624
625
/* C_SignRecover signs data in a single operation, where the
626
* data can be recovered from the signature.
627
*/
628
CK_PKCS11_FUNCTION_INFO(C_SignRecover)
629
#ifdef CK_NEED_ARG_LIST
630
(
631
CK_SESSION_HANDLE hSession, /* the session's handle */
632
CK_BYTE_PTR pData, /* the data to sign */
633
CK_ULONG ulDataLen, /* count of bytes to sign */
634
CK_BYTE_PTR pSignature, /* gets the signature */
635
CK_ULONG_PTR pulSignatureLen /* gets signature length */
636
);
637
#endif
638
639
640
641
/* Verifying signatures and MACs */
642
643
/* C_VerifyInit initializes a verification operation, where the
644
* signature is an appendix to the data, and plaintext cannot
645
* cannot be recovered from the signature (e.g. DSA).
646
*/
647
CK_PKCS11_FUNCTION_INFO(C_VerifyInit)
648
#ifdef CK_NEED_ARG_LIST
649
(
650
CK_SESSION_HANDLE hSession, /* the session's handle */
651
CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
652
CK_OBJECT_HANDLE hKey /* verification key */
653
);
654
#endif
655
656
657
/* C_Verify verifies a signature in a single-part operation,
658
* where the signature is an appendix to the data, and plaintext
659
* cannot be recovered from the signature.
660
*/
661
CK_PKCS11_FUNCTION_INFO(C_Verify)
662
#ifdef CK_NEED_ARG_LIST
663
(
664
CK_SESSION_HANDLE hSession, /* the session's handle */
665
CK_BYTE_PTR pData, /* signed data */
666
CK_ULONG ulDataLen, /* length of signed data */
667
CK_BYTE_PTR pSignature, /* signature */
668
CK_ULONG ulSignatureLen /* signature length*/
669
);
670
#endif
671
672
673
/* C_VerifyUpdate continues a multiple-part verification
674
* operation, where the signature is an appendix to the data,
675
* and plaintext cannot be recovered from the signature.
676
*/
677
CK_PKCS11_FUNCTION_INFO(C_VerifyUpdate)
678
#ifdef CK_NEED_ARG_LIST
679
(
680
CK_SESSION_HANDLE hSession, /* the session's handle */
681
CK_BYTE_PTR pPart, /* signed data */
682
CK_ULONG ulPartLen /* length of signed data */
683
);
684
#endif
685
686
687
/* C_VerifyFinal finishes a multiple-part verification
688
* operation, checking the signature.
689
*/
690
CK_PKCS11_FUNCTION_INFO(C_VerifyFinal)
691
#ifdef CK_NEED_ARG_LIST
692
(
693
CK_SESSION_HANDLE hSession, /* the session's handle */
694
CK_BYTE_PTR pSignature, /* signature to verify */
695
CK_ULONG ulSignatureLen /* signature length */
696
);
697
#endif
698
699
700
/* C_VerifyRecoverInit initializes a signature verification
701
* operation, where the data is recovered from the signature.
702
*/
703
CK_PKCS11_FUNCTION_INFO(C_VerifyRecoverInit)
704
#ifdef CK_NEED_ARG_LIST
705
(
706
CK_SESSION_HANDLE hSession, /* the session's handle */
707
CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
708
CK_OBJECT_HANDLE hKey /* verification key */
709
);
710
#endif
711
712
713
/* C_VerifyRecover verifies a signature in a single-part
714
* operation, where the data is recovered from the signature.
715
*/
716
CK_PKCS11_FUNCTION_INFO(C_VerifyRecover)
717
#ifdef CK_NEED_ARG_LIST
718
(
719
CK_SESSION_HANDLE hSession, /* the session's handle */
720
CK_BYTE_PTR pSignature, /* signature to verify */
721
CK_ULONG ulSignatureLen, /* signature length */
722
CK_BYTE_PTR pData, /* gets signed data */
723
CK_ULONG_PTR pulDataLen /* gets signed data len */
724
);
725
#endif
726
727
728
729
/* Dual-function cryptographic operations */
730
731
/* C_DigestEncryptUpdate continues a multiple-part digesting
732
* and encryption operation.
733
*/
734
CK_PKCS11_FUNCTION_INFO(C_DigestEncryptUpdate)
735
#ifdef CK_NEED_ARG_LIST
736
(
737
CK_SESSION_HANDLE hSession, /* session's handle */
738
CK_BYTE_PTR pPart, /* the plaintext data */
739
CK_ULONG ulPartLen, /* plaintext length */
740
CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
741
CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
742
);
743
#endif
744
745
746
/* C_DecryptDigestUpdate continues a multiple-part decryption and
747
* digesting operation.
748
*/
749
CK_PKCS11_FUNCTION_INFO(C_DecryptDigestUpdate)
750
#ifdef CK_NEED_ARG_LIST
751
(
752
CK_SESSION_HANDLE hSession, /* session's handle */
753
CK_BYTE_PTR pEncryptedPart, /* ciphertext */
754
CK_ULONG ulEncryptedPartLen, /* ciphertext length */
755
CK_BYTE_PTR pPart, /* gets plaintext */
756
CK_ULONG_PTR pulPartLen /* gets plaintext len */
757
);
758
#endif
759
760
761
/* C_SignEncryptUpdate continues a multiple-part signing and
762
* encryption operation.
763
*/
764
CK_PKCS11_FUNCTION_INFO(C_SignEncryptUpdate)
765
#ifdef CK_NEED_ARG_LIST
766
(
767
CK_SESSION_HANDLE hSession, /* session's handle */
768
CK_BYTE_PTR pPart, /* the plaintext data */
769
CK_ULONG ulPartLen, /* plaintext length */
770
CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
771
CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
772
);
773
#endif
774
775
776
/* C_DecryptVerifyUpdate continues a multiple-part decryption and
777
* verify operation.
778
*/
779
CK_PKCS11_FUNCTION_INFO(C_DecryptVerifyUpdate)
780
#ifdef CK_NEED_ARG_LIST
781
(
782
CK_SESSION_HANDLE hSession, /* session's handle */
783
CK_BYTE_PTR pEncryptedPart, /* ciphertext */
784
CK_ULONG ulEncryptedPartLen, /* ciphertext length */
785
CK_BYTE_PTR pPart, /* gets plaintext */
786
CK_ULONG_PTR pulPartLen /* gets p-text length */
787
);
788
#endif
789
790
791
792
/* Key management */
793
794
/* C_GenerateKey generates a secret key, creating a new key
795
* object.
796
*/
797
CK_PKCS11_FUNCTION_INFO(C_GenerateKey)
798
#ifdef CK_NEED_ARG_LIST
799
(
800
CK_SESSION_HANDLE hSession, /* the session's handle */
801
CK_MECHANISM_PTR pMechanism, /* key generation mech. */
802
CK_ATTRIBUTE_PTR pTemplate, /* template for new key */
803
CK_ULONG ulCount, /* # of attrs in template */
804
CK_OBJECT_HANDLE_PTR phKey /* gets handle of new key */
805
);
806
#endif
807
808
809
/* C_GenerateKeyPair generates a public-key/private-key pair,
810
* creating new key objects.
811
*/
812
CK_PKCS11_FUNCTION_INFO(C_GenerateKeyPair)
813
#ifdef CK_NEED_ARG_LIST
814
(
815
CK_SESSION_HANDLE hSession, /* session handle */
816
CK_MECHANISM_PTR pMechanism, /* key-gen mech. */
817
CK_ATTRIBUTE_PTR pPublicKeyTemplate, /* template for pub. key */
818
CK_ULONG ulPublicKeyAttributeCount, /* # pub. attrs. */
819
CK_ATTRIBUTE_PTR pPrivateKeyTemplate, /* template for priv. key */
820
CK_ULONG ulPrivateKeyAttributeCount, /* # priv. attrs. */
821
CK_OBJECT_HANDLE_PTR phPublicKey, /* gets pub. key handle */
822
CK_OBJECT_HANDLE_PTR phPrivateKey /* gets priv. key handle */
823
);
824
#endif
825
826
827
/* C_WrapKey wraps (i.e., encrypts) a key. */
828
CK_PKCS11_FUNCTION_INFO(C_WrapKey)
829
#ifdef CK_NEED_ARG_LIST
830
(
831
CK_SESSION_HANDLE hSession, /* the session's handle */
832
CK_MECHANISM_PTR pMechanism, /* the wrapping mechanism */
833
CK_OBJECT_HANDLE hWrappingKey, /* wrapping key */
834
CK_OBJECT_HANDLE hKey, /* key to be wrapped */
835
CK_BYTE_PTR pWrappedKey, /* gets wrapped key */
836
CK_ULONG_PTR pulWrappedKeyLen /* gets wrapped key size */
837
);
838
#endif
839
840
841
/* C_UnwrapKey unwraps (decrypts) a wrapped key, creating a new
842
* key object.
843
*/
844
CK_PKCS11_FUNCTION_INFO(C_UnwrapKey)
845
#ifdef CK_NEED_ARG_LIST
846
(
847
CK_SESSION_HANDLE hSession, /* session's handle */
848
CK_MECHANISM_PTR pMechanism, /* unwrapping mech. */
849
CK_OBJECT_HANDLE hUnwrappingKey, /* unwrapping key */
850
CK_BYTE_PTR pWrappedKey, /* the wrapped key */
851
CK_ULONG ulWrappedKeyLen, /* wrapped key len */
852
CK_ATTRIBUTE_PTR pTemplate, /* new key template */
853
CK_ULONG ulAttributeCount, /* template length */
854
CK_OBJECT_HANDLE_PTR phKey /* gets new handle */
855
);
856
#endif
857
858
859
/* C_DeriveKey derives a key from a base key, creating a new key
860
* object.
861
*/
862
CK_PKCS11_FUNCTION_INFO(C_DeriveKey)
863
#ifdef CK_NEED_ARG_LIST
864
(
865
CK_SESSION_HANDLE hSession, /* session's handle */
866
CK_MECHANISM_PTR pMechanism, /* key deriv. mech. */
867
CK_OBJECT_HANDLE hBaseKey, /* base key */
868
CK_ATTRIBUTE_PTR pTemplate, /* new key template */
869
CK_ULONG ulAttributeCount, /* template length */
870
CK_OBJECT_HANDLE_PTR phKey /* gets new handle */
871
);
872
#endif
873
874
875
876
/* Random number generation */
877
878
/* C_SeedRandom mixes additional seed material into the token's
879
* random number generator.
880
*/
881
CK_PKCS11_FUNCTION_INFO(C_SeedRandom)
882
#ifdef CK_NEED_ARG_LIST
883
(
884
CK_SESSION_HANDLE hSession, /* the session's handle */
885
CK_BYTE_PTR pSeed, /* the seed material */
886
CK_ULONG ulSeedLen /* length of seed material */
887
);
888
#endif
889
890
891
/* C_GenerateRandom generates random data. */
892
CK_PKCS11_FUNCTION_INFO(C_GenerateRandom)
893
#ifdef CK_NEED_ARG_LIST
894
(
895
CK_SESSION_HANDLE hSession, /* the session's handle */
896
CK_BYTE_PTR RandomData, /* receives the random data */
897
CK_ULONG ulRandomLen /* # of bytes to generate */
898
);
899
#endif
900
901
902
903
/* Parallel function management */
904
905
/* C_GetFunctionStatus is a legacy function; it obtains an
906
* updated status of a function running in parallel with an
907
* application.
908
*/
909
CK_PKCS11_FUNCTION_INFO(C_GetFunctionStatus)
910
#ifdef CK_NEED_ARG_LIST
911
(
912
CK_SESSION_HANDLE hSession /* the session's handle */
913
);
914
#endif
915
916
917
/* C_CancelFunction is a legacy function; it cancels a function
918
* running in parallel.
919
*/
920
CK_PKCS11_FUNCTION_INFO(C_CancelFunction)
921
#ifdef CK_NEED_ARG_LIST
922
(
923
CK_SESSION_HANDLE hSession /* the session's handle */
924
);
925
#endif
926
927
928
/* C_WaitForSlotEvent waits for a slot event (token insertion,
929
* removal, etc.) to occur.
930
*/
931
CK_PKCS11_FUNCTION_INFO(C_WaitForSlotEvent)
932
#ifdef CK_NEED_ARG_LIST
933
(
934
CK_FLAGS flags, /* blocking/nonblocking flag */
935
CK_SLOT_ID_PTR pSlot, /* location that receives the slot ID */
936
CK_VOID_PTR pRserved /* reserved. Should be NULL_PTR */
937
);
938
#endif
939
940
941