|
1 # |
|
2 # This Source Code Form is subject to the terms of the Mozilla Public |
|
3 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
5 |
|
6 # This file is in part derived from a file "pkcs11f.h" made available |
|
7 # by RSA Security at ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/pkcs11f.h |
|
8 |
|
9 # Fields |
|
10 # FUNCTION introduces a Cryptoki function |
|
11 # CK_type specifies and introduces an argument |
|
12 # |
|
13 |
|
14 # General-purpose |
|
15 |
|
16 # C_Initialize initializes the Cryptoki library. |
|
17 FUNCTION C_Initialize |
|
18 CK_VOID_PTR pInitArgs # if this is not NULL_PTR, it gets |
|
19 # cast to CK_C_INITIALIZE_ARGS_PTR |
|
20 # and dereferenced |
|
21 |
|
22 # C_Finalize indicates that an application is done with the |
|
23 # Cryptoki library. |
|
24 FUNCTION C_Finalize |
|
25 CK_VOID_PTR pReserved # reserved. Should be NULL_PTR |
|
26 |
|
27 # C_GetInfo returns general information about Cryptoki. |
|
28 FUNCTION C_GetInfo |
|
29 CK_INFO_PTR pInfo # location that receives information |
|
30 |
|
31 # C_GetFunctionList returns the function list. |
|
32 FUNCTION C_GetFunctionList |
|
33 CK_FUNCTION_LIST_PTR_PTR ppFunctionList # receives pointer to function |
|
34 # list |
|
35 |
|
36 |
|
37 # Slot and token management |
|
38 |
|
39 # C_GetSlotList obtains a list of slots in the system. |
|
40 FUNCTION C_GetSlotList |
|
41 CK_BBOOL tokenPresent # only slots with tokens? |
|
42 CK_SLOT_ID_PTR pSlotList # receives array of slot IDs |
|
43 CK_ULONG_PTR pulCount # receives number of slots |
|
44 |
|
45 # C_GetSlotInfo obtains information about a particular slot in the |
|
46 # system. |
|
47 FUNCTION C_GetSlotInfo |
|
48 CK_SLOT_ID slotID # the ID of the slot |
|
49 CK_SLOT_INFO_PTR pInfo # receives the slot information |
|
50 |
|
51 # C_GetTokenInfo obtains information about a particular token in the |
|
52 # system. |
|
53 FUNCTION C_GetTokenInfo |
|
54 CK_SLOT_ID slotID # ID of the token's slot |
|
55 CK_TOKEN_INFO_PTR pInfo # receives the token information |
|
56 |
|
57 # C_GetMechanismList obtains a list of mechanism types supported by a |
|
58 # token. |
|
59 FUNCTION C_GetMechanismList |
|
60 CK_SLOT_ID slotID # ID of token's slot |
|
61 CK_MECHANISM_TYPE_PTR pMechanismList # gets mech. array |
|
62 CK_ULONG_PTR pulCount # gets # of mechs. |
|
63 |
|
64 # C_GetMechanismInfo obtains information about a particular mechanism |
|
65 # possibly supported by a token. |
|
66 FUNCTION C_GetMechanismInfo |
|
67 CK_SLOT_ID slotID # ID of the token's slot |
|
68 CK_MECHANISM_TYPE type # type of mechanism |
|
69 CK_MECHANISM_INFO_PTR pInfo # receives mechanism info |
|
70 |
|
71 # C_InitToken initializes a token. |
|
72 FUNCTION C_InitToken |
|
73 CK_SLOT_ID slotID # ID of the token's slot |
|
74 CK_CHAR_PTR pPin # the SO's initial PIN |
|
75 CK_ULONG ulPinLen # length in bytes of the PIN |
|
76 CK_CHAR_PTR pLabel # 32-byte token label (blank padded) |
|
77 |
|
78 # C_InitPIN initializes the normal user's PIN. |
|
79 FUNCTION C_InitPIN |
|
80 CK_SESSION_HANDLE hSession # the session's handle |
|
81 CK_CHAR_PTR pPin # the normal user's PIN |
|
82 CK_ULONG ulPinLen # length in bytes of the PIN |
|
83 |
|
84 # C_SetPIN modifies the PIN of the user who is logged in. |
|
85 FUNCTION C_SetPIN |
|
86 CK_SESSION_HANDLE hSession # the session's handle |
|
87 CK_CHAR_PTR pOldPin # the old PIN |
|
88 CK_ULONG ulOldLen # length of the old PIN |
|
89 CK_CHAR_PTR pNewPin # the new PIN |
|
90 CK_ULONG ulNewLen # length of the new PIN |
|
91 |
|
92 |
|
93 # Session management |
|
94 |
|
95 # C_OpenSession opens a session between an application and a token. |
|
96 FUNCTION C_OpenSession |
|
97 CK_SLOT_ID slotID # the slot's ID |
|
98 CK_FLAGS flags # from CK_SESSION_INFO |
|
99 CK_VOID_PTR pApplication # passed to callback |
|
100 CK_NOTIFY Notify # callback function |
|
101 CK_SESSION_HANDLE_PTR phSession # gets session handle |
|
102 |
|
103 # C_CloseSession closes a session between an application and a token. |
|
104 FUNCTION C_CloseSession |
|
105 CK_SESSION_HANDLE hSession # the session's handle |
|
106 |
|
107 # C_CloseAllSessions closes all sessions with a token. |
|
108 FUNCTION C_CloseAllSessions |
|
109 CK_SLOT_ID slotID # the token's slot |
|
110 |
|
111 # C_GetSessionInfo obtains information about the session. |
|
112 FUNCTION C_GetSessionInfo |
|
113 CK_SESSION_HANDLE hSession # the session's handle |
|
114 CK_SESSION_INFO_PTR pInfo # receives session info |
|
115 |
|
116 # C_GetOperationState obtains the state of the cryptographic |
|
117 # operation in a session. |
|
118 FUNCTION C_GetOperationState |
|
119 CK_SESSION_HANDLE hSession # session's handle |
|
120 CK_BYTE_PTR pOperationState # gets state |
|
121 CK_ULONG_PTR pulOperationStateLen # gets state length |
|
122 |
|
123 # C_SetOperationState restores the state of the cryptographic |
|
124 # operation in a session. |
|
125 FUNCTION C_SetOperationState |
|
126 CK_SESSION_HANDLE hSession # session's handle |
|
127 CK_BYTE_PTR pOperationState # holds state |
|
128 CK_ULONG ulOperationStateLen # holds state length |
|
129 CK_OBJECT_HANDLE hEncryptionKey # en/decryption key |
|
130 CK_OBJECT_HANDLE hAuthenticationKey # sign/verify key |
|
131 |
|
132 # C_Login logs a user into a token. |
|
133 FUNCTION C_Login |
|
134 CK_SESSION_HANDLE hSession # the session's handle |
|
135 CK_USER_TYPE userType # the user type |
|
136 CK_CHAR_PTR pPin # the user's PIN |
|
137 CK_ULONG ulPinLen # the length of the PIN |
|
138 |
|
139 # C_Logout logs a user out from a token. |
|
140 FUNCTION C_Logout |
|
141 CK_SESSION_HANDLE hSession # the session's handle |
|
142 |
|
143 |
|
144 # Object management |
|
145 |
|
146 # C_CreateObject creates a new object. |
|
147 FUNCTION C_CreateObject |
|
148 CK_SESSION_HANDLE hSession # the session's handle |
|
149 CK_ATTRIBUTE_PTR pTemplate # the object's template |
|
150 CK_ULONG ulCount # attributes in template |
|
151 CK_OBJECT_HANDLE_PTR phObject # gets new object's handle. |
|
152 |
|
153 # C_CopyObject copies an object, creating a new object for the copy. |
|
154 FUNCTION C_CopyObject |
|
155 CK_SESSION_HANDLE hSession # the session's handle |
|
156 CK_OBJECT_HANDLE hObject # the object's handle |
|
157 CK_ATTRIBUTE_PTR pTemplate # template for new object |
|
158 CK_ULONG ulCount # attributes in template |
|
159 CK_OBJECT_HANDLE_PTR phNewObject # receives handle of copy |
|
160 |
|
161 # C_DestroyObject destroys an object. |
|
162 FUNCTION C_DestroyObject |
|
163 CK_SESSION_HANDLE hSession # the session's handle |
|
164 CK_OBJECT_HANDLE hObject # the object's handle |
|
165 |
|
166 # C_GetObjectSize gets the size of an object in bytes. |
|
167 FUNCTION C_GetObjectSize |
|
168 CK_SESSION_HANDLE hSession # the session's handle |
|
169 CK_OBJECT_HANDLE hObject # the object's handle |
|
170 CK_ULONG_PTR pulSize # receives size of object |
|
171 |
|
172 # C_GetAttributeValue obtains the value of one or more object |
|
173 # attributes. |
|
174 FUNCTION C_GetAttributeValue |
|
175 CK_SESSION_HANDLE hSession # the session's handle |
|
176 CK_OBJECT_HANDLE hObject # the object's handle |
|
177 CK_ATTRIBUTE_PTR pTemplate # specifies attrs; gets vals |
|
178 CK_ULONG ulCount # attributes in template |
|
179 |
|
180 # C_SetAttributeValue modifies the value of one or more object |
|
181 # attributes |
|
182 FUNCTION C_SetAttributeValue |
|
183 CK_SESSION_HANDLE hSession # the session's handle |
|
184 CK_OBJECT_HANDLE hObject # the object's handle |
|
185 CK_ATTRIBUTE_PTR pTemplate # specifies attrs and values |
|
186 CK_ULONG ulCount # attributes in template |
|
187 |
|
188 # C_FindObjectsInit initializes a search for token and session |
|
189 # objects that match a template. |
|
190 FUNCTION C_FindObjectsInit |
|
191 CK_SESSION_HANDLE hSession # the session's handle |
|
192 CK_ATTRIBUTE_PTR pTemplate # attribute values to match |
|
193 CK_ULONG ulCount # attrs in search template |
|
194 |
|
195 # C_FindObjects continues a search for token and session objects that |
|
196 # match a template, obtaining additional object handles. |
|
197 FUNCTION C_FindObjects |
|
198 CK_SESSION_HANDLE hSession # session's handle |
|
199 CK_OBJECT_HANDLE_PTR phObject # gets obj. handles |
|
200 CK_ULONG ulMaxObjectCount # max handles to get |
|
201 CK_ULONG_PTR pulObjectCount # actual # returned |
|
202 |
|
203 # C_FindObjectsFinal finishes a search for token and session objects. |
|
204 FUNCTION C_FindObjectsFinal |
|
205 CK_SESSION_HANDLE hSession # the session's handle |
|
206 |
|
207 |
|
208 # Encryption and decryption |
|
209 |
|
210 # C_EncryptInit initializes an encryption operation. |
|
211 FUNCTION C_EncryptInit |
|
212 CK_SESSION_HANDLE hSession # the session's handle |
|
213 CK_MECHANISM_PTR pMechanism # the encryption mechanism |
|
214 CK_OBJECT_HANDLE hKey # handle of encryption key |
|
215 |
|
216 # C_Encrypt encrypts single-part data. |
|
217 FUNCTION C_Encrypt |
|
218 CK_SESSION_HANDLE hSession # session's handle |
|
219 CK_BYTE_PTR pData # the plaintext data |
|
220 CK_ULONG ulDataLen # bytes of plaintext |
|
221 CK_BYTE_PTR pEncryptedData # gets ciphertext |
|
222 CK_ULONG_PTR pulEncryptedDataLen # gets c-text size |
|
223 |
|
224 # C_EncryptUpdate continues a multiple-part encryption operation. |
|
225 FUNCTION C_EncryptUpdate |
|
226 CK_SESSION_HANDLE hSession # session's handle |
|
227 CK_BYTE_PTR pPart # the plaintext data |
|
228 CK_ULONG ulPartLen # plaintext data len |
|
229 CK_BYTE_PTR pEncryptedPart # gets ciphertext |
|
230 CK_ULONG_PTR pulEncryptedPartLen # gets c-text size |
|
231 |
|
232 # C_EncryptFinal finishes a multiple-part encryption operation. |
|
233 FUNCTION C_EncryptFinal |
|
234 CK_SESSION_HANDLE hSession # session handle |
|
235 CK_BYTE_PTR pLastEncryptedPart # last c-text |
|
236 CK_ULONG_PTR pulLastEncryptedPartLen # gets last size |
|
237 |
|
238 # C_DecryptInit initializes a decryption operation. |
|
239 FUNCTION C_DecryptInit |
|
240 CK_SESSION_HANDLE hSession # the session's handle |
|
241 CK_MECHANISM_PTR pMechanism # the decryption mechanism |
|
242 CK_OBJECT_HANDLE hKey # handle of decryption key |
|
243 |
|
244 # C_Decrypt decrypts encrypted data in a single part. |
|
245 FUNCTION C_Decrypt |
|
246 CK_SESSION_HANDLE hSession # session's handle |
|
247 CK_BYTE_PTR pEncryptedData # ciphertext |
|
248 CK_ULONG ulEncryptedDataLen # ciphertext length |
|
249 CK_BYTE_PTR pData # gets plaintext |
|
250 CK_ULONG_PTR pulDataLen # gets p-text size |
|
251 |
|
252 # C_DecryptUpdate continues a multiple-part decryption operation. |
|
253 FUNCTION C_DecryptUpdate |
|
254 CK_SESSION_HANDLE hSession # session's handle |
|
255 CK_BYTE_PTR pEncryptedPart # encrypted data |
|
256 CK_ULONG ulEncryptedPartLen # input length |
|
257 CK_BYTE_PTR pPart # gets plaintext |
|
258 CK_ULONG_PTR pulPartLen # p-text size |
|
259 |
|
260 # C_DecryptFinal finishes a multiple-part decryption operation. |
|
261 FUNCTION C_DecryptFinal |
|
262 CK_SESSION_HANDLE hSession # the session's handle |
|
263 CK_BYTE_PTR pLastPart # gets plaintext |
|
264 CK_ULONG_PTR pulLastPartLen # p-text size |
|
265 |
|
266 |
|
267 # Message digesting |
|
268 |
|
269 # C_DigestInit initializes a message-digesting operation. |
|
270 FUNCTION C_DigestInit |
|
271 CK_SESSION_HANDLE hSession # the session's handle |
|
272 CK_MECHANISM_PTR pMechanism # the digesting mechanism |
|
273 |
|
274 # C_Digest digests data in a single part. |
|
275 FUNCTION C_Digest |
|
276 CK_SESSION_HANDLE hSession # the session's handle |
|
277 CK_BYTE_PTR pData # data to be digested |
|
278 CK_ULONG ulDataLen # bytes of data to digest |
|
279 CK_BYTE_PTR pDigest # gets the message digest |
|
280 CK_ULONG_PTR pulDigestLen # gets digest length |
|
281 |
|
282 # C_DigestUpdate continues a multiple-part message-digesting operation. |
|
283 FUNCTION C_DigestUpdate |
|
284 CK_SESSION_HANDLE hSession # the session's handle |
|
285 CK_BYTE_PTR pPart # data to be digested |
|
286 CK_ULONG ulPartLen # bytes of data to be digested |
|
287 |
|
288 # C_DigestKey continues a multi-part message-digesting operation, by |
|
289 # digesting the value of a secret key as part of the data already |
|
290 # digested. |
|
291 FUNCTION C_DigestKey |
|
292 CK_SESSION_HANDLE hSession # the session's handle |
|
293 CK_OBJECT_HANDLE hKey # secret key to digest |
|
294 |
|
295 # C_DigestFinal finishes a multiple-part message-digesting operation. |
|
296 FUNCTION C_DigestFinal |
|
297 CK_SESSION_HANDLE hSession # the session's handle |
|
298 CK_BYTE_PTR pDigest # gets the message digest |
|
299 CK_ULONG_PTR pulDigestLen # gets byte count of digest |
|
300 |
|
301 |
|
302 # Signing and MACing |
|
303 |
|
304 # C_SignInit initializes a signature (private key encryption) |
|
305 # operation, where the signature is (will be) an appendix to the |
|
306 # data, and plaintext cannot be recovered from the signature. |
|
307 FUNCTION C_SignInit |
|
308 CK_SESSION_HANDLE hSession # the session's handle |
|
309 CK_MECHANISM_PTR pMechanism # the signature mechanism |
|
310 CK_OBJECT_HANDLE hKey # handle of signature key |
|
311 |
|
312 # C_Sign signs (encrypts with private key) data in a single part, |
|
313 # where the signature is (will be) an appendix to the data, and |
|
314 # plaintext cannot be recovered from the signature. |
|
315 FUNCTION C_Sign |
|
316 CK_SESSION_HANDLE hSession # the session's handle |
|
317 CK_BYTE_PTR pData # the data to sign |
|
318 CK_ULONG ulDataLen # count of bytes to sign |
|
319 CK_BYTE_PTR pSignature # gets the signature |
|
320 CK_ULONG_PTR pulSignatureLen # gets signature length |
|
321 |
|
322 # C_SignUpdate continues a multiple-part signature operation, where |
|
323 # the signature is (will be) an appendix to the data, and plaintext |
|
324 # cannot be recovered from the signature. |
|
325 FUNCTION C_SignUpdate |
|
326 CK_SESSION_HANDLE hSession # the session's handle |
|
327 CK_BYTE_PTR pPart # the data to sign |
|
328 CK_ULONG ulPartLen # count of bytes to sign |
|
329 |
|
330 # C_SignFinal finishes a multiple-part signature operation, returning |
|
331 # the signature. |
|
332 FUNCTION C_SignFinal |
|
333 CK_SESSION_HANDLE hSession # the session's handle |
|
334 CK_BYTE_PTR pSignature # gets the signature |
|
335 CK_ULONG_PTR pulSignatureLen # gets signature length |
|
336 |
|
337 # C_SignRecoverInit initializes a signature operation, where the data |
|
338 # can be recovered from the signature. |
|
339 FUNCTION C_SignRecoverInit |
|
340 CK_SESSION_HANDLE hSession # the session's handle |
|
341 CK_MECHANISM_PTR pMechanism # the signature mechanism |
|
342 CK_OBJECT_HANDLE hKey # handle of the signature key |
|
343 |
|
344 # C_SignRecover signs data in a single operation, where the data can |
|
345 # be recovered from the signature. |
|
346 FUNCTION C_SignRecover |
|
347 CK_SESSION_HANDLE hSession # the session's handle |
|
348 CK_BYTE_PTR pData # the data to sign |
|
349 CK_ULONG ulDataLen # count of bytes to sign |
|
350 CK_BYTE_PTR pSignature # gets the signature |
|
351 CK_ULONG_PTR pulSignatureLen # gets signature length |
|
352 |
|
353 |
|
354 # Verifying signatures and MACs |
|
355 |
|
356 # C_VerifyInit initializes a verification operation, where the |
|
357 # signature is an appendix to the data, and plaintext cannot cannot |
|
358 # be recovered from the signature (e.g. DSA). |
|
359 FUNCTION C_VerifyInit |
|
360 CK_SESSION_HANDLE hSession # the session's handle |
|
361 CK_MECHANISM_PTR pMechanism # the verification mechanism |
|
362 CK_OBJECT_HANDLE hKey # verification key |
|
363 |
|
364 # C_Verify verifies a signature in a single-part operation, where the |
|
365 # signature is an appendix to the data, and plaintext cannot be |
|
366 # recovered from the signature. |
|
367 FUNCTION C_Verify |
|
368 CK_SESSION_HANDLE hSession # the session's handle |
|
369 CK_BYTE_PTR pData # signed data |
|
370 CK_ULONG ulDataLen # length of signed data |
|
371 CK_BYTE_PTR pSignature # signature |
|
372 CK_ULONG ulSignatureLen # signature length |
|
373 |
|
374 # C_VerifyUpdate continues a multiple-part verification operation, |
|
375 # where the signature is an appendix to the data, and plaintext cannot be |
|
376 # recovered from the signature. |
|
377 FUNCTION C_VerifyUpdate |
|
378 CK_SESSION_HANDLE hSession # the session's handle |
|
379 CK_BYTE_PTR pPart # signed data |
|
380 CK_ULONG ulPartLen # length of signed data |
|
381 |
|
382 # C_VerifyFinal finishes a multiple-part verification operation, |
|
383 # checking the signature. |
|
384 FUNCTION C_VerifyFinal |
|
385 CK_SESSION_HANDLE hSession # the session's handle |
|
386 CK_BYTE_PTR pSignature # signature to verify |
|
387 CK_ULONG ulSignatureLen # signature length |
|
388 |
|
389 # C_VerifyRecoverInit initializes a signature verification operation, |
|
390 # where the data is recovered from the signature. |
|
391 FUNCTION C_VerifyRecoverInit |
|
392 CK_SESSION_HANDLE hSession # the session's handle |
|
393 CK_MECHANISM_PTR pMechanism # the verification mechanism |
|
394 CK_OBJECT_HANDLE hKey # verification key |
|
395 |
|
396 # C_VerifyRecover verifies a signature in a single-part operation, |
|
397 # where the data is recovered from the signature. |
|
398 FUNCTION C_VerifyRecover |
|
399 CK_SESSION_HANDLE hSession # the session's handle |
|
400 CK_BYTE_PTR pSignature # signature to verify |
|
401 CK_ULONG ulSignatureLen # signature length |
|
402 CK_BYTE_PTR pData # gets signed data |
|
403 CK_ULONG_PTR pulDataLen # gets signed data len |
|
404 |
|
405 |
|
406 # Dual-function cryptographic operations |
|
407 |
|
408 # C_DigestEncryptUpdate continues a multiple-part digesting and |
|
409 # encryption operation. |
|
410 FUNCTION C_DigestEncryptUpdate |
|
411 CK_SESSION_HANDLE hSession # session's handle |
|
412 CK_BYTE_PTR pPart # the plaintext data |
|
413 CK_ULONG ulPartLen # plaintext length |
|
414 CK_BYTE_PTR pEncryptedPart # gets ciphertext |
|
415 CK_ULONG_PTR pulEncryptedPartLen # gets c-text length |
|
416 |
|
417 # C_DecryptDigestUpdate continues a multiple-part decryption and |
|
418 # digesting operation. |
|
419 FUNCTION C_DecryptDigestUpdate |
|
420 CK_SESSION_HANDLE hSession # session's handle |
|
421 CK_BYTE_PTR pEncryptedPart # ciphertext |
|
422 CK_ULONG ulEncryptedPartLen # ciphertext length |
|
423 CK_BYTE_PTR pPart # gets plaintext |
|
424 CK_ULONG_PTR pulPartLen # gets plaintext len |
|
425 |
|
426 # C_SignEncryptUpdate continues a multiple-part signing and |
|
427 # encryption operation. |
|
428 FUNCTION C_SignEncryptUpdate |
|
429 CK_SESSION_HANDLE hSession # session's handle |
|
430 CK_BYTE_PTR pPart # the plaintext data |
|
431 CK_ULONG ulPartLen # plaintext length |
|
432 CK_BYTE_PTR pEncryptedPart # gets ciphertext |
|
433 CK_ULONG_PTR pulEncryptedPartLen # gets c-text length |
|
434 |
|
435 # C_DecryptVerifyUpdate continues a multiple-part decryption and |
|
436 # verify operation. |
|
437 FUNCTION C_DecryptVerifyUpdate |
|
438 CK_SESSION_HANDLE hSession # session's handle |
|
439 CK_BYTE_PTR pEncryptedPart # ciphertext |
|
440 CK_ULONG ulEncryptedPartLen # ciphertext length |
|
441 CK_BYTE_PTR pPart # gets plaintext |
|
442 CK_ULONG_PTR pulPartLen # gets p-text length |
|
443 |
|
444 |
|
445 # Key management |
|
446 |
|
447 # C_GenerateKey generates a secret key, creating a new key object. |
|
448 FUNCTION C_GenerateKey |
|
449 CK_SESSION_HANDLE hSession # the session's handle |
|
450 CK_MECHANISM_PTR pMechanism # key generation mech. |
|
451 CK_ATTRIBUTE_PTR pTemplate # template for new key |
|
452 CK_ULONG ulCount # # of attrs in template |
|
453 CK_OBJECT_HANDLE_PTR phKey # gets handle of new key |
|
454 |
|
455 # C_GenerateKeyPair generates a public-key/private-key pair, creating |
|
456 # new key objects. |
|
457 FUNCTION C_GenerateKeyPair |
|
458 CK_SESSION_HANDLE hSession # session handle |
|
459 CK_MECHANISM_PTR pMechanism # key-gen mech. |
|
460 CK_ATTRIBUTE_PTR pPublicKeyTemplate # template for pub. key |
|
461 CK_ULONG ulPublicKeyAttributeCount # # pub. attrs. |
|
462 CK_ATTRIBUTE_PTR pPrivateKeyTemplate # template for priv. key |
|
463 CK_ULONG ulPrivateKeyAttributeCount # # priv. attrs. |
|
464 CK_OBJECT_HANDLE_PTR phPublicKey # gets pub. key handle |
|
465 CK_OBJECT_HANDLE_PTR phPrivateKey # gets priv. key handle |
|
466 |
|
467 # C_WrapKey wraps (i.e., encrypts) a key. |
|
468 FUNCTION C_WrapKey |
|
469 CK_SESSION_HANDLE hSession # the session's handle |
|
470 CK_MECHANISM_PTR pMechanism # the wrapping mechanism |
|
471 CK_OBJECT_HANDLE hWrappingKey # wrapping key |
|
472 CK_OBJECT_HANDLE hKey # key to be wrapped |
|
473 CK_BYTE_PTR pWrappedKey # gets wrapped key |
|
474 CK_ULONG_PTR pulWrappedKeyLen # gets wrapped key size |
|
475 |
|
476 # C_UnwrapKey unwraps (decrypts) a wrapped key, creating a new key |
|
477 # object. |
|
478 FUNCTION C_UnwrapKey |
|
479 CK_SESSION_HANDLE hSession # session's handle |
|
480 CK_MECHANISM_PTR pMechanism # unwrapping mech. |
|
481 CK_OBJECT_HANDLE hUnwrappingKey # unwrapping key |
|
482 CK_BYTE_PTR pWrappedKey # the wrapped key |
|
483 CK_ULONG ulWrappedKeyLen # wrapped key len |
|
484 CK_ATTRIBUTE_PTR pTemplate # new key template |
|
485 CK_ULONG ulAttributeCount # template length |
|
486 CK_OBJECT_HANDLE_PTR phKey # gets new handle |
|
487 |
|
488 # C_DeriveKey derives a key from a base key, creating a new key object. |
|
489 FUNCTION C_DeriveKey |
|
490 CK_SESSION_HANDLE hSession # session's handle |
|
491 CK_MECHANISM_PTR pMechanism # key deriv. mech. |
|
492 CK_OBJECT_HANDLE hBaseKey # base key |
|
493 CK_ATTRIBUTE_PTR pTemplate # new key template |
|
494 CK_ULONG ulAttributeCount # template length |
|
495 CK_OBJECT_HANDLE_PTR phKey # gets new handle |
|
496 |
|
497 |
|
498 # Random number generation |
|
499 |
|
500 # C_SeedRandom mixes additional seed material into the token's random |
|
501 # number generator. |
|
502 FUNCTION C_SeedRandom |
|
503 CK_SESSION_HANDLE hSession # the session's handle |
|
504 CK_BYTE_PTR pSeed # the seed material |
|
505 CK_ULONG ulSeedLen # length of seed material |
|
506 |
|
507 # C_GenerateRandom generates random data. |
|
508 FUNCTION C_GenerateRandom |
|
509 CK_SESSION_HANDLE hSession # the session's handle |
|
510 CK_BYTE_PTR RandomData # receives the random data |
|
511 CK_ULONG ulRandomLen # # of bytes to generate |
|
512 |
|
513 |
|
514 # Parallel function management |
|
515 |
|
516 # C_GetFunctionStatus is a legacy function; it obtains an updated |
|
517 # status of a function running in parallel with an application. |
|
518 FUNCTION C_GetFunctionStatus |
|
519 CK_SESSION_HANDLE hSession # the session's handle |
|
520 |
|
521 # C_CancelFunction is a legacy function; it cancels a function running |
|
522 # in parallel. |
|
523 FUNCTION C_CancelFunction |
|
524 CK_SESSION_HANDLE hSession # the session's handle |
|
525 |
|
526 |
|
527 # Functions added in for Cryptoki Version 2.01 or later |
|
528 |
|
529 # C_WaitForSlotEvent waits for a slot event (token insertion, removal, |
|
530 # etc.) to occur. |
|
531 FUNCTION C_WaitForSlotEvent |
|
532 CK_FLAGS flags # blocking/nonblocking flag |
|
533 CK_SLOT_ID_PTR pSlot # location that receives the slot ID |
|
534 CK_VOID_PTR pRserved # reserved. Should be NULL_PTR |
|
535 |
|
536 ## C_ConfigureSlot passes an installation-specified bytestring to a |
|
537 ## slot. |
|
538 #FUNCTION C_ConfigureSlot |
|
539 #CK_SLOT_ID slotID # the slot to configure |
|
540 #CK_BYTE_PTR pConfig # the configuration string |
|
541 #CK_ULONG ulConfigLen # length of the config string |