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