ck.api
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:23k
源码类别:

CA认证

开发平台:

WINDOWS

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