| # |
| # This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| |
| # This file is in part derived from a file "pkcs11f.h" made available |
| # by RSA Security at ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/pkcs11f.h |
| |
| # Fields |
| # FUNCTION introduces a Cryptoki function |
| # CK_type specifies and introduces an argument |
| # |
| |
| # General-purpose |
| |
| # C_Initialize initializes the Cryptoki library. |
| FUNCTION C_Initialize |
| CK_VOID_PTR pInitArgs # if this is not NULL_PTR, it gets |
| # cast to CK_C_INITIALIZE_ARGS_PTR |
| # and dereferenced |
| |
| # C_Finalize indicates that an application is done with the |
| # Cryptoki library. |
| FUNCTION C_Finalize |
| CK_VOID_PTR pReserved # reserved. Should be NULL_PTR |
| |
| # C_GetInfo returns general information about Cryptoki. |
| FUNCTION C_GetInfo |
| CK_INFO_PTR pInfo # location that receives information |
| |
| # C_GetFunctionList returns the function list. |
| FUNCTION C_GetFunctionList |
| CK_FUNCTION_LIST_PTR_PTR ppFunctionList # receives pointer to function |
| # list |
| |
| |
| # Slot and token management |
| |
| # C_GetSlotList obtains a list of slots in the system. |
| FUNCTION C_GetSlotList |
| CK_BBOOL tokenPresent # only slots with tokens? |
| CK_SLOT_ID_PTR pSlotList # receives array of slot IDs |
| CK_ULONG_PTR pulCount # receives number of slots |
| |
| # C_GetSlotInfo obtains information about a particular slot in the |
| # system. |
| FUNCTION C_GetSlotInfo |
| CK_SLOT_ID slotID # the ID of the slot |
| CK_SLOT_INFO_PTR pInfo # receives the slot information |
| |
| # C_GetTokenInfo obtains information about a particular token in the |
| # system. |
| FUNCTION C_GetTokenInfo |
| CK_SLOT_ID slotID # ID of the token's slot |
| CK_TOKEN_INFO_PTR pInfo # receives the token information |
| |
| # C_GetMechanismList obtains a list of mechanism types supported by a |
| # token. |
| FUNCTION C_GetMechanismList |
| CK_SLOT_ID slotID # ID of token's slot |
| CK_MECHANISM_TYPE_PTR pMechanismList # gets mech. array |
| CK_ULONG_PTR pulCount # gets # of mechs. |
| |
| # C_GetMechanismInfo obtains information about a particular mechanism |
| # possibly supported by a token. |
| FUNCTION C_GetMechanismInfo |
| CK_SLOT_ID slotID # ID of the token's slot |
| CK_MECHANISM_TYPE type # type of mechanism |
| CK_MECHANISM_INFO_PTR pInfo # receives mechanism info |
| |
| # C_InitToken initializes a token. |
| FUNCTION C_InitToken |
| CK_SLOT_ID slotID # ID of the token's slot |
| CK_CHAR_PTR pPin # the SO's initial PIN |
| CK_ULONG ulPinLen # length in bytes of the PIN |
| CK_CHAR_PTR pLabel # 32-byte token label (blank padded) |
| |
| # C_InitPIN initializes the normal user's PIN. |
| FUNCTION C_InitPIN |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_CHAR_PTR pPin # the normal user's PIN |
| CK_ULONG ulPinLen # length in bytes of the PIN |
| |
| # C_SetPIN modifies the PIN of the user who is logged in. |
| FUNCTION C_SetPIN |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_CHAR_PTR pOldPin # the old PIN |
| CK_ULONG ulOldLen # length of the old PIN |
| CK_CHAR_PTR pNewPin # the new PIN |
| CK_ULONG ulNewLen # length of the new PIN |
| |
| |
| # Session management |
| |
| # C_OpenSession opens a session between an application and a token. |
| FUNCTION C_OpenSession |
| CK_SLOT_ID slotID # the slot's ID |
| CK_FLAGS flags # from CK_SESSION_INFO |
| CK_VOID_PTR pApplication # passed to callback |
| CK_NOTIFY Notify # callback function |
| CK_SESSION_HANDLE_PTR phSession # gets session handle |
| |
| # C_CloseSession closes a session between an application and a token. |
| FUNCTION C_CloseSession |
| CK_SESSION_HANDLE hSession # the session's handle |
| |
| # C_CloseAllSessions closes all sessions with a token. |
| FUNCTION C_CloseAllSessions |
| CK_SLOT_ID slotID # the token's slot |
| |
| # C_GetSessionInfo obtains information about the session. |
| FUNCTION C_GetSessionInfo |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_SESSION_INFO_PTR pInfo # receives session info |
| |
| # C_GetOperationState obtains the state of the cryptographic |
| # operation in a session. |
| FUNCTION C_GetOperationState |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pOperationState # gets state |
| CK_ULONG_PTR pulOperationStateLen # gets state length |
| |
| # C_SetOperationState restores the state of the cryptographic |
| # operation in a session. |
| FUNCTION C_SetOperationState |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pOperationState # holds state |
| CK_ULONG ulOperationStateLen # holds state length |
| CK_OBJECT_HANDLE hEncryptionKey # en/decryption key |
| CK_OBJECT_HANDLE hAuthenticationKey # sign/verify key |
| |
| # C_Login logs a user into a token. |
| FUNCTION C_Login |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_USER_TYPE userType # the user type |
| CK_CHAR_PTR pPin # the user's PIN |
| CK_ULONG ulPinLen # the length of the PIN |
| |
| # C_Logout logs a user out from a token. |
| FUNCTION C_Logout |
| CK_SESSION_HANDLE hSession # the session's handle |
| |
| |
| # Object management |
| |
| # C_CreateObject creates a new object. |
| FUNCTION C_CreateObject |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_ATTRIBUTE_PTR pTemplate # the object's template |
| CK_ULONG ulCount # attributes in template |
| CK_OBJECT_HANDLE_PTR phObject # gets new object's handle. |
| |
| # C_CopyObject copies an object, creating a new object for the copy. |
| FUNCTION C_CopyObject |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_OBJECT_HANDLE hObject # the object's handle |
| CK_ATTRIBUTE_PTR pTemplate # template for new object |
| CK_ULONG ulCount # attributes in template |
| CK_OBJECT_HANDLE_PTR phNewObject # receives handle of copy |
| |
| # C_DestroyObject destroys an object. |
| FUNCTION C_DestroyObject |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_OBJECT_HANDLE hObject # the object's handle |
| |
| # C_GetObjectSize gets the size of an object in bytes. |
| FUNCTION C_GetObjectSize |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_OBJECT_HANDLE hObject # the object's handle |
| CK_ULONG_PTR pulSize # receives size of object |
| |
| # C_GetAttributeValue obtains the value of one or more object |
| # attributes. |
| FUNCTION C_GetAttributeValue |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_OBJECT_HANDLE hObject # the object's handle |
| CK_ATTRIBUTE_PTR pTemplate # specifies attrs; gets vals |
| CK_ULONG ulCount # attributes in template |
| |
| # C_SetAttributeValue modifies the value of one or more object |
| # attributes |
| FUNCTION C_SetAttributeValue |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_OBJECT_HANDLE hObject # the object's handle |
| CK_ATTRIBUTE_PTR pTemplate # specifies attrs and values |
| CK_ULONG ulCount # attributes in template |
| |
| # C_FindObjectsInit initializes a search for token and session |
| # objects that match a template. |
| FUNCTION C_FindObjectsInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_ATTRIBUTE_PTR pTemplate # attribute values to match |
| CK_ULONG ulCount # attrs in search template |
| |
| # C_FindObjects continues a search for token and session objects that |
| # match a template, obtaining additional object handles. |
| FUNCTION C_FindObjects |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_OBJECT_HANDLE_PTR phObject # gets obj. handles |
| CK_ULONG ulMaxObjectCount # max handles to get |
| CK_ULONG_PTR pulObjectCount # actual # returned |
| |
| # C_FindObjectsFinal finishes a search for token and session objects. |
| FUNCTION C_FindObjectsFinal |
| CK_SESSION_HANDLE hSession # the session's handle |
| |
| |
| # Encryption and decryption |
| |
| # C_EncryptInit initializes an encryption operation. |
| FUNCTION C_EncryptInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the encryption mechanism |
| CK_OBJECT_HANDLE hKey # handle of encryption key |
| |
| # C_Encrypt encrypts single-part data. |
| FUNCTION C_Encrypt |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pData # the plaintext data |
| CK_ULONG ulDataLen # bytes of plaintext |
| CK_BYTE_PTR pEncryptedData # gets ciphertext |
| CK_ULONG_PTR pulEncryptedDataLen # gets c-text size |
| |
| # C_EncryptUpdate continues a multiple-part encryption operation. |
| FUNCTION C_EncryptUpdate |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pPart # the plaintext data |
| CK_ULONG ulPartLen # plaintext data len |
| CK_BYTE_PTR pEncryptedPart # gets ciphertext |
| CK_ULONG_PTR pulEncryptedPartLen # gets c-text size |
| |
| # C_EncryptFinal finishes a multiple-part encryption operation. |
| FUNCTION C_EncryptFinal |
| CK_SESSION_HANDLE hSession # session handle |
| CK_BYTE_PTR pLastEncryptedPart # last c-text |
| CK_ULONG_PTR pulLastEncryptedPartLen # gets last size |
| |
| # C_DecryptInit initializes a decryption operation. |
| FUNCTION C_DecryptInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the decryption mechanism |
| CK_OBJECT_HANDLE hKey # handle of decryption key |
| |
| # C_Decrypt decrypts encrypted data in a single part. |
| FUNCTION C_Decrypt |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pEncryptedData # ciphertext |
| CK_ULONG ulEncryptedDataLen # ciphertext length |
| CK_BYTE_PTR pData # gets plaintext |
| CK_ULONG_PTR pulDataLen # gets p-text size |
| |
| # C_DecryptUpdate continues a multiple-part decryption operation. |
| FUNCTION C_DecryptUpdate |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pEncryptedPart # encrypted data |
| CK_ULONG ulEncryptedPartLen # input length |
| CK_BYTE_PTR pPart # gets plaintext |
| CK_ULONG_PTR pulPartLen # p-text size |
| |
| # C_DecryptFinal finishes a multiple-part decryption operation. |
| FUNCTION C_DecryptFinal |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pLastPart # gets plaintext |
| CK_ULONG_PTR pulLastPartLen # p-text size |
| |
| |
| # Message digesting |
| |
| # C_DigestInit initializes a message-digesting operation. |
| FUNCTION C_DigestInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the digesting mechanism |
| |
| # C_Digest digests data in a single part. |
| FUNCTION C_Digest |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pData # data to be digested |
| CK_ULONG ulDataLen # bytes of data to digest |
| CK_BYTE_PTR pDigest # gets the message digest |
| CK_ULONG_PTR pulDigestLen # gets digest length |
| |
| # C_DigestUpdate continues a multiple-part message-digesting operation. |
| FUNCTION C_DigestUpdate |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pPart # data to be digested |
| CK_ULONG ulPartLen # bytes of data to be digested |
| |
| # C_DigestKey continues a multi-part message-digesting operation, by |
| # digesting the value of a secret key as part of the data already |
| # digested. |
| FUNCTION C_DigestKey |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_OBJECT_HANDLE hKey # secret key to digest |
| |
| # C_DigestFinal finishes a multiple-part message-digesting operation. |
| FUNCTION C_DigestFinal |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pDigest # gets the message digest |
| CK_ULONG_PTR pulDigestLen # gets byte count of digest |
| |
| |
| # Signing and MACing |
| |
| # C_SignInit initializes a signature (private key encryption) |
| # operation, where the signature is (will be) an appendix to the |
| # data, and plaintext cannot be recovered from the signature. |
| FUNCTION C_SignInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the signature mechanism |
| CK_OBJECT_HANDLE hKey # handle of signature key |
| |
| # C_Sign signs (encrypts with private key) data in a single part, |
| # where the signature is (will be) an appendix to the data, and |
| # plaintext cannot be recovered from the signature. |
| FUNCTION C_Sign |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pData # the data to sign |
| CK_ULONG ulDataLen # count of bytes to sign |
| CK_BYTE_PTR pSignature # gets the signature |
| CK_ULONG_PTR pulSignatureLen # gets signature length |
| |
| # C_SignUpdate continues a multiple-part signature operation, where |
| # the signature is (will be) an appendix to the data, and plaintext |
| # cannot be recovered from the signature. |
| FUNCTION C_SignUpdate |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pPart # the data to sign |
| CK_ULONG ulPartLen # count of bytes to sign |
| |
| # C_SignFinal finishes a multiple-part signature operation, returning |
| # the signature. |
| FUNCTION C_SignFinal |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pSignature # gets the signature |
| CK_ULONG_PTR pulSignatureLen # gets signature length |
| |
| # C_SignRecoverInit initializes a signature operation, where the data |
| # can be recovered from the signature. |
| FUNCTION C_SignRecoverInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the signature mechanism |
| CK_OBJECT_HANDLE hKey # handle of the signature key |
| |
| # C_SignRecover signs data in a single operation, where the data can |
| # be recovered from the signature. |
| FUNCTION C_SignRecover |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pData # the data to sign |
| CK_ULONG ulDataLen # count of bytes to sign |
| CK_BYTE_PTR pSignature # gets the signature |
| CK_ULONG_PTR pulSignatureLen # gets signature length |
| |
| |
| # Verifying signatures and MACs |
| |
| # C_VerifyInit initializes a verification operation, where the |
| # signature is an appendix to the data, and plaintext cannot cannot |
| # be recovered from the signature (e.g. DSA). |
| FUNCTION C_VerifyInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the verification mechanism |
| CK_OBJECT_HANDLE hKey # verification key |
| |
| # C_Verify verifies a signature in a single-part operation, where the |
| # signature is an appendix to the data, and plaintext cannot be |
| # recovered from the signature. |
| FUNCTION C_Verify |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pData # signed data |
| CK_ULONG ulDataLen # length of signed data |
| CK_BYTE_PTR pSignature # signature |
| CK_ULONG ulSignatureLen # signature length |
| |
| # C_VerifyUpdate continues a multiple-part verification operation, |
| # where the signature is an appendix to the data, and plaintext cannot be |
| # recovered from the signature. |
| FUNCTION C_VerifyUpdate |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pPart # signed data |
| CK_ULONG ulPartLen # length of signed data |
| |
| # C_VerifyFinal finishes a multiple-part verification operation, |
| # checking the signature. |
| FUNCTION C_VerifyFinal |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pSignature # signature to verify |
| CK_ULONG ulSignatureLen # signature length |
| |
| # C_VerifyRecoverInit initializes a signature verification operation, |
| # where the data is recovered from the signature. |
| FUNCTION C_VerifyRecoverInit |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the verification mechanism |
| CK_OBJECT_HANDLE hKey # verification key |
| |
| # C_VerifyRecover verifies a signature in a single-part operation, |
| # where the data is recovered from the signature. |
| FUNCTION C_VerifyRecover |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pSignature # signature to verify |
| CK_ULONG ulSignatureLen # signature length |
| CK_BYTE_PTR pData # gets signed data |
| CK_ULONG_PTR pulDataLen # gets signed data len |
| |
| |
| # Dual-function cryptographic operations |
| |
| # C_DigestEncryptUpdate continues a multiple-part digesting and |
| # encryption operation. |
| FUNCTION C_DigestEncryptUpdate |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pPart # the plaintext data |
| CK_ULONG ulPartLen # plaintext length |
| CK_BYTE_PTR pEncryptedPart # gets ciphertext |
| CK_ULONG_PTR pulEncryptedPartLen # gets c-text length |
| |
| # C_DecryptDigestUpdate continues a multiple-part decryption and |
| # digesting operation. |
| FUNCTION C_DecryptDigestUpdate |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pEncryptedPart # ciphertext |
| CK_ULONG ulEncryptedPartLen # ciphertext length |
| CK_BYTE_PTR pPart # gets plaintext |
| CK_ULONG_PTR pulPartLen # gets plaintext len |
| |
| # C_SignEncryptUpdate continues a multiple-part signing and |
| # encryption operation. |
| FUNCTION C_SignEncryptUpdate |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pPart # the plaintext data |
| CK_ULONG ulPartLen # plaintext length |
| CK_BYTE_PTR pEncryptedPart # gets ciphertext |
| CK_ULONG_PTR pulEncryptedPartLen # gets c-text length |
| |
| # C_DecryptVerifyUpdate continues a multiple-part decryption and |
| # verify operation. |
| FUNCTION C_DecryptVerifyUpdate |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_BYTE_PTR pEncryptedPart # ciphertext |
| CK_ULONG ulEncryptedPartLen # ciphertext length |
| CK_BYTE_PTR pPart # gets plaintext |
| CK_ULONG_PTR pulPartLen # gets p-text length |
| |
| |
| # Key management |
| |
| # C_GenerateKey generates a secret key, creating a new key object. |
| FUNCTION C_GenerateKey |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # key generation mech. |
| CK_ATTRIBUTE_PTR pTemplate # template for new key |
| CK_ULONG ulCount # # of attrs in template |
| CK_OBJECT_HANDLE_PTR phKey # gets handle of new key |
| |
| # C_GenerateKeyPair generates a public-key/private-key pair, creating |
| # new key objects. |
| FUNCTION C_GenerateKeyPair |
| CK_SESSION_HANDLE hSession # session handle |
| CK_MECHANISM_PTR pMechanism # key-gen mech. |
| CK_ATTRIBUTE_PTR pPublicKeyTemplate # template for pub. key |
| CK_ULONG ulPublicKeyAttributeCount # # pub. attrs. |
| CK_ATTRIBUTE_PTR pPrivateKeyTemplate # template for priv. key |
| CK_ULONG ulPrivateKeyAttributeCount # # priv. attrs. |
| CK_OBJECT_HANDLE_PTR phPublicKey # gets pub. key handle |
| CK_OBJECT_HANDLE_PTR phPrivateKey # gets priv. key handle |
| |
| # C_WrapKey wraps (i.e., encrypts) a key. |
| FUNCTION C_WrapKey |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_MECHANISM_PTR pMechanism # the wrapping mechanism |
| CK_OBJECT_HANDLE hWrappingKey # wrapping key |
| CK_OBJECT_HANDLE hKey # key to be wrapped |
| CK_BYTE_PTR pWrappedKey # gets wrapped key |
| CK_ULONG_PTR pulWrappedKeyLen # gets wrapped key size |
| |
| # C_UnwrapKey unwraps (decrypts) a wrapped key, creating a new key |
| # object. |
| FUNCTION C_UnwrapKey |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_MECHANISM_PTR pMechanism # unwrapping mech. |
| CK_OBJECT_HANDLE hUnwrappingKey # unwrapping key |
| CK_BYTE_PTR pWrappedKey # the wrapped key |
| CK_ULONG ulWrappedKeyLen # wrapped key len |
| CK_ATTRIBUTE_PTR pTemplate # new key template |
| CK_ULONG ulAttributeCount # template length |
| CK_OBJECT_HANDLE_PTR phKey # gets new handle |
| |
| # C_DeriveKey derives a key from a base key, creating a new key object. |
| FUNCTION C_DeriveKey |
| CK_SESSION_HANDLE hSession # session's handle |
| CK_MECHANISM_PTR pMechanism # key deriv. mech. |
| CK_OBJECT_HANDLE hBaseKey # base key |
| CK_ATTRIBUTE_PTR pTemplate # new key template |
| CK_ULONG ulAttributeCount # template length |
| CK_OBJECT_HANDLE_PTR phKey # gets new handle |
| |
| |
| # Random number generation |
| |
| # C_SeedRandom mixes additional seed material into the token's random |
| # number generator. |
| FUNCTION C_SeedRandom |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR pSeed # the seed material |
| CK_ULONG ulSeedLen # length of seed material |
| |
| # C_GenerateRandom generates random data. |
| FUNCTION C_GenerateRandom |
| CK_SESSION_HANDLE hSession # the session's handle |
| CK_BYTE_PTR RandomData # receives the random data |
| CK_ULONG ulRandomLen # # of bytes to generate |
| |
| |
| # Parallel function management |
| |
| # C_GetFunctionStatus is a legacy function; it obtains an updated |
| # status of a function running in parallel with an application. |
| FUNCTION C_GetFunctionStatus |
| CK_SESSION_HANDLE hSession # the session's handle |
| |
| # C_CancelFunction is a legacy function; it cancels a function running |
| # in parallel. |
| FUNCTION C_CancelFunction |
| CK_SESSION_HANDLE hSession # the session's handle |
| |
| |
| # Functions added in for Cryptoki Version 2.01 or later |
| |
| # C_WaitForSlotEvent waits for a slot event (token insertion, removal, |
| # etc.) to occur. |
| FUNCTION C_WaitForSlotEvent |
| CK_FLAGS flags # blocking/nonblocking flag |
| CK_SLOT_ID_PTR pSlot # location that receives the slot ID |
| CK_VOID_PTR pRserved # reserved. Should be NULL_PTR |
| |
| ## C_ConfigureSlot passes an installation-specified bytestring to a |
| ## slot. |
| #FUNCTION C_ConfigureSlot |
| #CK_SLOT_ID slotID # the slot to configure |
| #CK_BYTE_PTR pConfig # the configuration string |
| #CK_ULONG ulConfigLen # length of the config string |