comparison nss/lib/util/pkcs11f.h @ 0:1e5118fa0cb1

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