![]() | Cryptographic Token Interface Standard |
PKCS#11 |
00001 /* rewritten */ 00006 #define CK_INVALID_HANDLE 00007 00008 #define CK_TRUE 1 00009 00010 #define CK_FALSE 0 00011 00013 #define CK_UNAVAILABLE_INFORMATION (~0UL) 00014 00015 #define CK_EFFECTIVELY_INFINITE 0 00016 00018 #define CKU_SO 0 00019 00020 #define CKU_USER 1 00021 00022 #define CKU_CONTEXT_SPECIFIC 2 00023 00025 #define CKS_RO_PUBLIC_SESSION 0 00026 00028 #define CKS_RO_USER_FUNCTIONS 1 00029 00031 #define CKS_RW_PUBLIC_SESSION 2 00032 00034 #define CKS_RW_USER_FUNCTIONS 3 00035 00037 #define CKS_RW_SO_FUNCTIONS 4 00038 00040 #define TRUE CK_TRUE 00041 00042 #define FALSE CK_FALSE 00043 /* an unsigned 8-bit value */ 00047 typedef unsigned char CK_BYTE; 00048 /* an unsigned 8-bit character */ 00052 typedef CK_BYTE CK_CHAR; 00053 /* a BYTE-sized Boolean flag */ 00057 typedef CK_BYTE CK_BBOOL; 00058 /* an unsigned value, at least 32 bits long */ 00062 typedef unsigned long int CK_ULONG; 00063 /* a signed value, the same size as a CK_ULONG */ 00067 typedef long int CK_LONG; 00068 /* at least 32 bits; each bit is a Boolean flag */ 00072 typedef CK_ULONG CK_FLAGS; 00073 00074 00076 typedef CK_BYTE CK_PTR CK_BYTE_PTR; 00078 typedef CK_CHAR CK_PTR CK_CHAR_PTR; 00080 typedef CK_ULONG CK_PTR CK_ULONG_PTR; 00082 typedef void CK_PTR CK_VOID_PTR; 00083 00084 00086 typedef CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR; 00087 00088 00090 typedef NULL CK_PTR NULL_PTR; 00091 00092 00096 typedef CK_BYTE CK_PTR CK_BYTE_PTR; 00097 00098 00099 typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, myC_InitializeType)( 00100 CK_VOID_PTR pReserved 00101 ); 00102 myC_InitializeType myC_Initialize; 00103 00104 00117 typedef CK_CALLBACK_FUNCTION(CK_RV, myCallbackType)(args); 00118 myCallbackType myCallback; 00119 00120 00121 00122 00148 typedef struct CK_VERSION { 00150 CK_BYTE major; 00152 CK_BYTE minor; 00153 } CK_VERSION; 00154 00155 00157 typedef CK_VERSION CK_PTR CK_VERSION_PTR; 00158 00159 00200 typedef struct CK_INFO { 00202 CK_VERSION cryptokiVersion; 00204 CK_CHAR manufacturerID[32]; 00206 CK_FLAGS flags; 00208 CK_CHAR libraryDescription[32]; 00210 CK_VERSION libraryVersion; 00211 } CK_INFO; 00212 00213 00215 typedef CK_INFO CK_PTR CK_INFO_PTR; 00221 typedef CK_ULONG CK_NOTIFICATION; 00222 00223 00229 typedef CK_ULONG CK_SLOT_ID; 00230 00231 00233 typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR; 00234 00235 00294 typedef struct CK_SLOT_INFO { 00296 CK_CHAR slotDescription[64]; 00298 CK_CHAR manufacturerID[32]; 00300 CK_FLAGS flags; 00302 CK_VERSION hardwareVersion; 00304 CK_VERSION firmwareVersion; 00305 } CK_SLOT_INFO; 00306 00307 00309 #define CKF_TOKEN_PRESENT 0x00000001 00310 00312 #define CKF_REMOVABLE_DEVICE 0x00000002 00313 00315 #define CKF_HW_SLOT 0x00000004 00316 00318 typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR; 00319 00320 00452 typedef struct CK_TOKEN_INFO { 00454 CK_CHAR label[32]; 00456 CK_CHAR manufacturerID[32]; 00458 CK_CHAR model[16]; 00460 CK_CHAR serialNumber[16]; 00462 CK_FLAGS flags; 00464 CK_ULONG ulMaxSessionCount; 00466 CK_ULONG ulSessionCount; 00468 CK_ULONG ulMaxRwSessionCount; 00470 CK_ULONG ulRwSessionCount; 00472 CK_ULONG ulMaxPinLen; 00474 CK_ULONG ulMinPinLen; 00476 CK_ULONG ulTotalPublicMemory; 00478 CK_ULONG ulFreePublicMemory; 00480 CK_ULONG ulTotalPrivateMemory; 00482 CK_ULONG ulFreePrivateMemory; 00484 CK_VERSION hardwareVersion; 00486 CK_VERSION firmwareVersion; 00488 CK_CHAR utcTime[16]; 00489 } CK_TOKEN_INFO; 00490 00491 00493 #define CKF_RNG 0x00000001 00494 00496 #define CKF_WRITE_PROTECTED 0x00000002 00497 00499 #define CKF_LOGIN_REQUIRED 0x00000004 00500 00502 #define CKF_USER_PIN_INITIALIZED 0x00000008 00503 00505 #define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020 00506 00508 #define CKF_CLOCK_ON_TOKEN 0x00000040 00509 00511 #define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100 00512 00514 #define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200 00515 00516 00517 00519 typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR; 00525 typedef CK_ULONG CK_SESSION_HANDLE; 00526 00527 00529 typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR; 00535 typedef CK_ULONG CK_USER_TYPE; 00536 00537 00543 typedef CK_ULONG CK_STATE; 00544 00545 00546 00547 00587 typedef struct CK_SESSION_INFO { 00589 CK_SLOT_ID slotID; 00591 CK_STATE state; 00593 CK_FLAGS flags; 00595 CK_ULONG ulDeviceError; 00596 } CK_SESSION_INFO; 00597 00598 00600 #define CKF_RW_SESSION 0x00000002 00601 00603 #define CKF_SERIAL_SESSION 0x00000004 00604 00606 typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR; 00612 typedef CK_ULONG CK_OBJECT_HANDLE; 00613 00614 00616 typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR; 00622 typedef CK_ULONG CK_OBJECT_CLASS; 00623 00624 00626 typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR; 00632 typedef CK_ULONG CK_KEY_TYPE; 00633 00634 00640 typedef CK_ULONG CK_CERTIFICATE_TYPE; 00641 00642 00648 typedef CK_ULONG CK_ATTRIBUTE_TYPE; 00649 00650 00651 00652 00683 typedef struct CK_ATTRIBUTE { 00685 CK_ATTRIBUTE_TYPE type; 00687 CK_VOID_PTR pValue; 00689 CK_ULONG ulValueLen; 00690 } CK_ATTRIBUTE; 00691 00692 00694 typedef CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR; 00695 00696 00711 typedef struct CK_DATE { 00713 CK_CHAR year[4]; 00715 CK_CHAR month[2]; 00717 CK_CHAR day[2]; 00718 } CK_DATE; 00719 00720 00726 typedef CK_ULONG CK_MECHANISM_TYPE; 00727 00728 00730 typedef CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR; 00731 00732 00758 typedef struct CK_MECHANISM { 00760 CK_MECHANISM_TYPE mechanism; 00762 CK_VOID_PTR pParameter; 00764 CK_ULONG ulParameterLen; 00765 } CK_MECHANISM; 00766 00767 00769 typedef CK_MECHANISM CK_PTR CK_MECHANISM_PTR; 00770 00771 00873 typedef struct CK_MECHANISM_INFO { 00875 CK_ULONG ulMinKeySize; 00877 CK_ULONG ulMaxKeySize; 00879 CK_FLAGS flags; 00880 } CK_MECHANISM_INFO; 00881 00882 00884 #define CKF_HW 0x00000001 00885 00887 #define CKF_ENCRYPT 0x00000100 00888 00890 #define CKF_DECRYPT 0x00000200 00891 00893 #define CKF_DIGEST 0x00000400 00894 00896 #define CKF_SIGN 0x00000800 00897 00899 #define CKF_SIGN_RECOVER 0x00001000 00900 00902 #define CKF_VERIFY 0x00002000 00903 00905 #define CKF_VERIFY_RECOVER 0x00004000 00906 00908 #define CKF_GENERATE 0x00008000 00909 00911 #define CKF_GENERATE_KEY_PAIR 0x00010000 00912 00914 #define CKF_WRAP 0x00020000 00915 00917 #define CKF_UNWRAP 0x00040000 00918 00920 #define CKF_DERIVE 0x00080000 00921 00923 #define CKF_EXTENSION 0x80000000 00924 00926 typedef CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR; 00932 typedef CK_ULONG CK_RV; 00933 00934 00940 typedef CK_CALLBACK_FUNCTION(CK_RV, CK_NOTIFY)( 00941 CK_SESSION_HANDLE hSession, 00942 CK_NOTIFICATION event, 00943 CK_VOID_PTR pApplication 00944 ); 00945 00946 00947 00948 00964 typedef struct CK_FUNCTION_LIST { 00965 CK_VERSION version; 00966 CK_C_Initialize C_Initialize; 00967 CK_C_Finalize C_Finalize; 00968 CK_C_GetInfo C_GetInfo; 00969 CK_C_GetFunctionList C_GetFunctionList; 00970 CK_C_GetSlotList C_GetSlotList; 00971 CK_C_GetSlotInfo C_GetSlotInfo; 00972 CK_C_GetTokenInfo C_GetTokenInfo; 00973 CK_C_GetMechanismList C_GetMechanismList; 00974 CK_C_GetMechanismInfo C_GetMechanismInfo; 00975 CK_C_InitToken C_InitToken; 00976 CK_C_InitPIN C_InitPIN; 00977 CK_C_SetPIN C_SetPIN; 00978 CK_C_OpenSession C_OpenSession; 00979 CK_C_CloseSession C_CloseSession; 00980 CK_C_CloseAllSessions C_CloseAllSessions; 00981 CK_C_GetSessionInfo C_GetSessionInfo; 00982 CK_C_GetOperationState C_GetOperationState; 00983 CK_C_SetOperationState C_SetOperationState; 00984 CK_C_Login C_Login; 00985 CK_C_Logout C_Logout; 00986 CK_C_CreateObject C_CreateObject; 00987 CK_C_CopyObject C_CopyObject; 00988 CK_C_DestroyObject C_DestroyObject; 00989 CK_C_GetObjectSize C_GetObjectSize; 00990 CK_C_GetAttributeValue C_GetAttributeValue; 00991 CK_C_SetAttributeValue C_SetAttributeValue; 00992 CK_C_FindObjectsInit C_FindObjectsInit; 00993 CK_C_FindObjects C_FindObjects; 00994 CK_C_FindObjectsFinal C_FindObjectsFinal; 00995 CK_C_EncryptInit C_EncryptInit; 00996 CK_C_Encrypt C_Encrypt; 00997 CK_C_EncryptUpdate C_EncryptUpdate; 00998 CK_C_EncryptFinal C_EncryptFinal; 00999 CK_C_DecryptInit C_DecryptInit; 01000 CK_C_Decrypt C_Decrypt; 01001 CK_C_DecryptUpdate C_DecryptUpdate; 01002 CK_C_DecryptFinal C_DecryptFinal; 01003 CK_C_DigestInit C_DigestInit; 01004 CK_C_Digest C_Digest; 01005 CK_C_DigestUpdate C_DigestUpdate; 01006 CK_C_DigestKey C_DigestKey; 01007 CK_C_DigestFinal C_DigestFinal; 01008 CK_C_SignInit C_SignInit; 01009 CK_C_Sign C_Sign; 01010 CK_C_SignUpdate C_SignUpdate; 01011 CK_C_SignFinal C_SignFinal; 01012 CK_C_SignRecoverInit C_SignRecoverInit; 01013 CK_C_SignRecover C_SignRecover; 01014 CK_C_VerifyInit C_VerifyInit; 01015 CK_C_Verify C_Verify; 01016 CK_C_VerifyUpdate C_VerifyUpdate; 01017 CK_C_VerifyFinal C_VerifyFinal; 01018 CK_C_VerifyRecoverInit C_VerifyRecoverInit; 01019 CK_C_VerifyRecover C_VerifyRecover; 01020 CK_C_DigestEncryptUpdate C_DigestEncryptUpdate; 01021 CK_C_DecryptDigestUpdate C_DecryptDigestUpdate; 01022 CK_C_SignEncryptUpdate C_SignEncryptUpdate; 01023 CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate; 01024 CK_C_GenerateKey C_GenerateKey; 01025 CK_C_GenerateKeyPair C_GenerateKeyPair; 01026 CK_C_WrapKey C_WrapKey; 01027 CK_C_UnwrapKey C_UnwrapKey; 01028 CK_C_DeriveKey C_DeriveKey; 01029 CK_C_SeedRandom C_SeedRandom; 01030 CK_C_GenerateRandom C_GenerateRandom; 01031 CK_C_GetFunctionStatus C_GetFunctionStatus; 01032 CK_C_CancelFunction C_CancelFunction; 01033 CK_C_WaitForSlotEvent C_WaitForSlotEvent; 01034 } CK_FUNCTION_LIST; 01035 01036 01038 typedef CK_FUNCTION_LIST CK_PTR CK_FUNCTION_LIST_PTR; 01040 typedef CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR; 01047 typedef CK_CALLBACK_FUNCTION(CK_RV, CK_CREATEMUTEX)( 01048 CK_VOID_PTR_PTR ppMutex 01049 ); 01050 01051 01057 typedef CK_CALLBACK_FUNCTION(CK_RV, CK_DESTROYMUTEX)( 01058 CK_VOID_PTR pMutex 01059 ); 01060 01061 01065 typedef CK_CALLBACK_FUNCTION(CK_RV, CK_LOCKMUTEX)( 01066 CK_VOID_PTR pMutex 01067 ); 01068 01069 01073 typedef CK_CALLBACK_FUNCTION(CK_RV, CK_UNLOCKMUTEX)( 01074 CK_VOID_PTR pMutex 01075 ); 01076 01077 01078 01079 01126 typedef struct CK_C_INITIALIZE_ARGS { 01128 CK_CREATEMUTEX CreateMutex; 01130 CK_DESTROYMUTEX DestroyMutex; 01132 CK_LOCKMUTEX LockMutex; 01134 CK_UNLOCKMUTEX UnlockMutex; 01136 CK_FLAGS flags; 01138 CK_VOID_PTR pReserved; 01139 } CK_C_INITIALIZE_ARGS; 01140 01141 01143 #define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001 01144 01146 #define CKF_OS_LOCKING_OK 0x00000002 01147 01149 typedef CK_C_INITIALIZE_ARGS CK_PTR CK_C_INITIALIZE_ARGS_PTR; 01151 #define CKA_CLASS 01152 01154 #define CKA_TOKEN 01155 01157 #define CKA_PRIVATE 01158 01160 #define CKA_MODIFIABLE 01161 01163 #define CKA_LABEL 01164 01166 #define CKA_APPLICATION 01167 01169 #define CKA_VALUE 01170 01171 01172 01174 #define CKA_CERTIFICATE_TYPE 01175 01177 #define CKA_SUBJECT 01178 01180 #define CKA_ID 01181 01183 #define CKA_ISSUER 01184 01186 #define CKA_SERIAL_NUMBER 01187 01189 #define CKA_VALUE 01190 01191 01192 01194 #define CKA_KEY_TYPE 01195 01197 #define CKA_ID 01198 01200 #define CKA_START_DATE 01201 01203 #define CKA_END_DATE 01204 01206 #define CKA_DERIVE 01207 01209 #define CKA_LOCAL 01210 01212 #define CKA_SUBJECT 01213 01215 #define CKA_ENCRYPT 01216 01218 #define CKA_VERIFY 01219 01221 #define CKA_VERIFY_RECOVER 01222 01224 #define CKA_WRAP 01225 01227 #define CKA_MODULUS 01228 01230 #define CKA_MODULUS_BITS 01231 01233 #define CKA_PUBLIC_EXPONENT 01234 01235 01236 01238 #define CKA_PRIME 01239 01241 #define CKA_SUBPRIME 01242 01244 #define CKA_BASE 01245 01247 #define CKA_VALUE 01248 01249 01250 01252 #define CKA_ECDSA_PARAMS 01253 01255 #define CKA_EC_POINT 01256 01257 01258 01260 #define CKA_PRIME 01261 01263 #define CKA_BASE 01264 01266 #define CKA_VALUE 01267 01268 01269 01271 #define CKA_PRIME 01272 01274 #define CKA_SUBPRIME 01275 01277 #define CKA_BASE 01278 01280 #define CKA_VALUE 01281 01282 01283 01285 #define CKA_SUBJECT 01286 01288 #define CKA_SENSITIVE 01289 01291 #define CKA_DECRYPT 01292 01294 #define CKA_SIGN 01295 01297 #define CKA_SIGN_RECOVER 01298 01300 #define CKA_UNWRAP 01301 01303 #define CKA_EXTRACTABLE 01304 01306 #define CKA_ALWAYS_SENSITIVE 01307 01309 #define CKA_NEVER_EXTRACTABLE 01310 01312 #define CKA_MODULUS 01313 01315 #define CKA_PUBLIC_EXPONENT 01316 01318 #define CKA_PRIVATE_EXPONENT 01319 01321 #define CKA_PRIME_1 01322 01324 #define CKA_PRIME_2 01325 01327 #define CKA_EXPONENT_1 01328 01330 #define CKA_EXPONENT_2 01331 01333 #define CKA_COEFFICIENT 01334 01335 01336 01338 #define CKA_PRIME 01339 01341 #define CKA_SUBPRIME 01342 01344 #define CKA_BASE 01345 01347 #define CKA_VALUE 01348 01349 01350 01352 #define CKA_ECDSA_PARAMS 01353 01355 #define CKA_VALUE 01356 01357 01358 01360 #define CKA_PRIME 01361 01363 #define CKA_BASE 01364 01366 #define CKA_VALUE 01367 01369 #define CKA_VALUE_BITS 01370 01371 01372 01374 #define CKA_PRIME 01375 01377 #define CKA_SUBPRIME 01378 01380 #define CKA_BASE 01381 01383 #define CKA_VALUE 01384 01385 01386 01388 #define CKA_SENSITIVE 01389 01391 #define CKA_ENCRYPT 01392 01394 #define CKA_DECRYPT 01395 01397 #define CKA_SIGN 01398 01400 #define CKA_VERIFY 01401 01403 #define CKA_WRAP 01404 01406 #define CKA_UNWRAP 01407 01409 #define CKA_EXTRACTABLE 01410 01412 #define CKA_ALWAYS_SENSITIVE 01413 01415 #define CKA_NEVER_EXTRACTABLE 01416 01418 #define CKA_VALUE 01419 01421 #define CKA_VALUE_LEN 01422 01423 01424 01426 #define CKA_VALUE 01427 01429 #define CKA_VALUE_LEN 01430 01431 01432 01434 #define CKA_VALUE 01435 01437 #define CKA_VALUE_LEN 01438 01439 01440 01442 #define CKA_VALUE 01443 01445 #define CKA_VALUE_LEN 01446 01447 01448 01450 #define CKA_VALUE 01451 01452 01453 01455 #define CKA_VALUE 01456 01457 01458 01460 #define CKA_VALUE 01461 01462 01463 01465 #define CKA_VALUE 01466 01468 #define CKA_VALUE_LEN 01469 01470 01471 01473 #define CKA_VALUE 01474 01476 #define CKA_VALUE_LEN 01477 01478 01479 01481 #define CKA_VALUE 01482 01484 #define CKA_VALUE_LEN 01485 01486 01487 01489 #define CKA_VALUE 01490 01491 01492 01494 #define CKA_VALUE 01495 01496 01497 01499 #define CKA_VALUE 01500 01501 01502 01504 #define CKA_VALUE 01505 01506 01507 01509 #define CKA_VALUE 01510 01511 01512 01514 #define CKR_GENERAL_ERROR 01515 01517 #define CKR_HOST_MEMORY 01518 01520 #define CKR_FUNCTION_FAILED 01521 01523 #define CKR_OK 01524 01526 #define CKR_SESSION_HANDLE_INVALID 01527 01529 #define CKR_DEVICE_REMOVED 01530 01532 #define CKR_SESSION_CLOSED 01533 01535 #define CKR_DEVICE_MEMORY 01536 01538 #define CKR_DEVICE_ERROR 01539 01541 #define CKR_TOKEN_NOT_PRESENT 01542 01544 #define CKR_DEVICE_REMOVED 01545 01547 #define CKR_CANCEL 01548 01550 #define CKR_MUTEX_BAD 01551 01553 #define CKR_MUTEX_NOT_LOCKED 01554 01556 #define CKR_ARGUMENTS_BAD 01557 01559 #define CKR_ATTRIBUTE_READ_ONLY 01560 01562 #define CKR_ATTRIBUTE_SENSITIVE 01563 01565 #define CKR_ATTRIBUTE_TYPE_INVALID 01566 01568 #define CKR_ATTRIBUTE_VALUE_INVALID 01569 01571 #define CKR_BUFFER_TOO_SMALL 01572 01574 #define CKR_CANT_LOCK 01575 01577 #define CKR_CRYPTOKI_ALREADY_INITIALIZED 01578 01580 #define CKR_CRYPTOKI_NOT_INITIALIZED 01581 01583 #define CKR_DATA_INVALID 01584 01586 #define CKR_DATA_LEN_RANGE 01587 01589 #define CKR_ENCRYPTED_DATA_INVALID 01590 01592 #define CKR_ENCRYPTED_DATA_LEN_RANGE 01593 01595 #define CKR_FUNCTION_CANCELED 01596 01598 #define CKR_FUNCTION_NOT_PARALLEL 01599 01601 #define CKR_FUNCTION_NOT_SUPPORTED 01602 01604 #define CKR_INFORMATION_SENSITIVE 01605 01607 #define CKR_KEY_CHANGED 01608 01610 #define CKR_KEY_FUNCTION_NOT_PERMITTED 01611 01613 #define CKR_KEY_HANDLE_INVALID 01614 01616 #define CKR_KEY_INDIGESTIBLE 01617 01619 #define CKR_KEY_NEEDED 01620 01622 #define CKR_KEY_NOT_NEEDED 01623 01625 #define CKR_KEY_NOT_WRAPPABLE 01626 01628 #define CKR_KEY_SIZE_RANGE 01629 01631 #define CKR_KEY_TYPE_INCONSISTENT 01632 01634 #define CKR_KEY_UNEXTRACTABLE 01635 01637 #define CKR_MECHANISM_INVALID 01638 01640 #define CKR_MECHANISM_PARAM_INVALID 01641 01643 #define CKR_NEED_TO_CREATE_THREADS 01644 01646 #define CKR_NO_EVENT 01647 01649 #define CKR_OBJECT_HANDLE_INVALID 01650 01652 #define CKR_OPERATION_ACTIVE 01653 01655 #define CKR_OPERATION_NOT_INITIALIZED 01656 01658 #define CKR_PIN_EXPIRED 01659 01661 #define CKR_PIN_INCORRECT 01662 01664 #define CKR_PIN_INVALID 01665 01667 #define CKR_PIN_LEN_RANGE 01668 01670 #define CKR_PIN_LOCKED 01671 01673 #define CKR_RANDOM_NO_RNG 01674 01676 #define CKR_RANDOM_SEED_NOT_SUPPORTED 01677 01679 #define CKR_SAVED_STATE_INVALID 01680 01682 #define CKR_SESSION_COUNT 01683 01685 #define CKR_SESSION_EXISTS 01686 01688 #define CKR_SESSION_PARALLEL_NOT_SUPPORTED 01689 01691 #define CKR_SESSION_READ_ONLY 01692 01694 #define CKR_SESSION_READ_ONLY_EXISTS 01695 01697 #define CKR_SESSION_READ_WRITE_SO_EXISTS 01698 01700 #define CKR_SIGNATURE_LEN_RANGE 01701 01703 #define CKR_SIGNATURE_INVALID 01704 01706 #define CKR_SLOT_ID_INVALID 01707 01709 #define CKR_STATE_UNSAVEABLE 01710 01712 #define CKR_TEMPLATE_INCOMPLETE 01713 01715 #define CKR_TEMPLATE_INCONSISTENT 01716 01718 #define CKR_TOKEN_NOT_RECOGNIZED 01719 01721 #define CKR_TOKEN_WRITE_PROTECTED 01722 01724 #define CKR_UNWRAPPING_KEY_HANDLE_INVALID 01725 01727 #define CKR_UNWRAPPING_KEY_SIZE_RANGE 01728 01730 #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 01731 01733 #define CKR_USER_ALREADY_LOGGED_IN 01734 01736 #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN 01737 01739 #define CKR_USER_NOT_LOGGED_IN 01740 01742 #define CKR_USER_PIN_NOT_INITIALIZED 01743 01745 #define CKR_USER_TOO_MANY_TYPES 01746 01748 #define CKR_USER_TYPE_INVALID 01749 01751 #define CKR_WRAPPED_KEY_INVALID 01752 01754 #define CKR_WRAPPED_KEY_LEN_RANGE 01755 01757 #define CKR_WRAPPING_KEY_HANDLE_INVALID 01758 01760 #define CKR_WRAPPING_KEY_SIZE_RANGE 01761 01763 #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 01764 01849 CK_RV C_Initialize( CK_VOID_PTR pInitArgs); 01850 01851 01882 CK_RV C_Finalize( CK_VOID_PTR pReserved); 01883 01884 01898 CK_RV C_GetInfo( CK_INFO_PTR pInfo); 01899 01900 01920 CK_RV C_GetFunctionList( CK_FUNCTION_LIST_PTR_PTR ppFunctionList); 01921 01922 01973 CK_RV C_GetSlotList( CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, CK_ULONG_PTR pulCount); 01974 01975 01989 CK_RV C_GetSlotInfo( CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo); 01990 01991 02008 CK_RV C_GetTokenInfo( CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo); 02009 02010 02067 CK_RV C_WaitForSlotEvent( CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, CK_VOID_PTR pReserved); 02068 02069 02105 CK_RV C_GetMechanismList( CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList, CK_ULONG_PTR pulCount); 02106 02107 02125 CK_RV C_GetMechanismInfo( CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, CK_MECHANISM_INFO_PTR pInfo); 02126 02127 02178 CK_RV C_InitToken( CK_SLOT_ID slotID, CK_CHAR_PTR pPin, CK_ULONG ulPinLen, CK_CHAR_PTR pLabel); 02179 02180 02217 CK_RV C_InitPIN( CK_SESSION_HANDLE hSession, CK_CHAR_PTR pPin, CK_ULONG ulPinLen); 02218 02219 02261 CK_RV C_SetPIN( CK_SESSION_HANDLE hSession, CK_CHAR_PTR pOldPin, CK_ULONG ulOldLen, CK_CHAR_PTR pNewPin, CK_ULONG ulNewLen); 02262 02263 02309 CK_RV C_OpenSession( CK_SLOT_ID slotID, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY Notify, CK_SESSION_HANDLE_PTR phSession); 02310 02311 02343 CK_RV C_CloseSession( CK_SESSION_HANDLE hSession); 02344 02345 02367 CK_RV C_CloseAllSessions( CK_SLOT_ID slotID); 02368 02369 02385 CK_RV C_GetSessionInfo( CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo); 02386 02387 02459 CK_RV C_GetOperationState( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG_PTR pulOperationStateLen); 02460 02461 02543 CK_RV C_SetOperationState( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG ulOperationStateLen, CK_OBJECT_HANDLE hEncryptionKey, CK_OBJECT_HANDLE hAuthenticationKey); 02544 02545 02593 CK_RV C_Login( CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, CK_CHAR_PTR pPin, CK_ULONG ulPinLen); 02594 02595 02627 CK_RV C_Logout( CK_SESSION_HANDLE hSession); 02628 02629 02660 CK_RV C_CreateObject( CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phObject); 02661 02662 02706 CK_RV C_CopyObject( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phNewObject); 02707 02708 02727 CK_RV C_DestroyObject( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject); 02728 02729 02753 CK_RV C_GetObjectSize( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize); 02754 02755 02816 CK_RV C_GetAttributeValue( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); 02817 02818 02849 CK_RV C_SetAttributeValue( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); 02850 02851 02894 CK_RV C_FindObjectsInit( CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); 02895 02896 02918 CK_RV C_FindObjects( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount); 02919 02920 02936 CK_RV C_FindObjectsFinal( CK_SESSION_HANDLE hSession); 02937 02938 02969 CK_RV C_EncryptInit( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); 02970 02971 03011 CK_RV C_Encrypt( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen); 03012 03013 03050 CK_RV C_EncryptUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen); 03051 03052 03085 CK_RV C_EncryptFinal( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastEncryptedPart, CK_ULONG_PTR pulLastEncryptedPartLen); 03086 03087 03118 CK_RV C_DecryptInit( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); 03119 03120 03159 CK_RV C_Decrypt( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen); 03160 03161 03193 CK_RV C_DecryptUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); 03194 03195 03228 CK_RV C_DecryptFinal( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, CK_ULONG_PTR pulLastPartLen); 03229 03230 03255 CK_RV C_DigestInit( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism); 03256 03257 03290 CK_RV C_Digest( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen); 03291 03292 03313 CK_RV C_DigestUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen); 03314 03315 03340 CK_RV C_DigestKey( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey); 03341 03342 03370 CK_RV C_DigestFinal( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen); 03371 03372 03402 CK_RV C_SignInit( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); 03403 03404 03435 CK_RV C_Sign( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen); 03436 03437 03458 CK_RV C_SignUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen); 03459 03460 03488 CK_RV C_SignFinal( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen); 03489 03490 03519 CK_RV C_SignRecoverInit( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); 03520 03521 03551 CK_RV C_SignRecover( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen); 03552 03553 03584 CK_RV C_VerifyInit( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); 03585 03586 03620 CK_RV C_Verify( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen); 03621 03622 03643 CK_RV C_VerifyUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen); 03644 03645 03675 CK_RV C_VerifyFinal( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen); 03676 03677 03705 CK_RV C_VerifyRecoverInit( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); 03706 03707 03749 CK_RV C_VerifyRecover( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen); 03750 03751 03787 CK_RV C_DigestEncryptUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen); 03788 03789 03868 CK_RV C_DecryptDigestUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); 03869 03870 03904 CK_RV C_SignEncryptUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen); 03905 03906 03983 CK_RV C_DecryptVerifyUpdate( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); 03984 03985 04022 CK_RV C_GenerateKey( CK_SESSION_HANDLE hSession CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey); 04023 04024 04074 CK_RV C_GenerateKeyPair( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pPublicKeyTemplate, CK_ULONG ulPublicKeyAttributeCount, CK_ATTRIBUTE_PTR pPrivateKeyTemplate, CK_ULONG ulPrivateKeyAttributeCount, CK_OBJECT_HANDLE_PTR phPublicKey, CK_OBJECT_HANDLE_PTR phPrivateKey); 04075 04076 04129 CK_RV C_WrapKey( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pulWrappedKeyLen); 04130 04131 04181 CK_RV C_UnwrapKey( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey); 04182 04183 04222 CK_RV C_DeriveKey( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey); 04223 04224 04241 CK_RV C_SeedRandom( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, CK_ULONG ulSeedLen); 04242 04243 04262 CK_RV C_GenerateRandom( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pRandomData, CK_ULONG ulRandomLen ); 04263 04264 04274 CK_RV C_GetFunctionStatus( CK_SESSION_HANDLE hSession); 04275 04276 04286 CK_RV C_CancelFunction( CK_SESSION_HANDLE hSession); 04287 04288 04289 04290 04321 typedef struct CK_KEA_DERIVE_PARAMS { 04323 CK_BBOOL isSender; 04325 CK_ULONG ulRandomLen; 04327 CK_BYTE_PTR pRandomA; 04329 CK_BYTE_PTR pRandomB; 04331 CK_ULONG ulPublicDataLen; 04333 CK_BYTE_PTR pPublicData; 04334 } CK_KEA_DERIVE_PARAMS; 04335 04336 04338 typedef CK_KEA_DERIVE_PARAMS CK_PTR CK_KEA_DERIVE_PARAMS_PTR; 04339 04340 04349 typedef CK_ULONG CK_RC2_PARAMS; 04350 04351 04353 typedef CK_RC2_PARAMS CK_PTR CK_RC2_PARAMS_PTR; 04354 04355 04380 typedef struct CK_RC2_CBC_PARAMS { 04382 CK_ULONG ulEffectiveBits; 04384 CK_BYTE iv[8]; 04385 } CK_RC2_CBC_PARAMS; 04386 04387 04389 typedef CK_RC2_CBC_PARAMS CK_PTR CK_RC2_CBC_PARAMS_PTR; 04390 04391 04407 typedef struct CK_RC2_MAC_GENERAL_PARAMS { 04409 CK_ULONG ulEffectiveBits; 04411 CK_ULONG ulMacLength; 04412 } CK_RC2_MAC_GENERAL_PARAMS; 04413 04414 04416 typedef CK_RC2_MAC_GENERAL_PARAMS CK_PTR CK_RC2_MAC_GENERAL_PARAMS_PTR; 04417 04418 04443 typedef struct CK_RC5_PARAMS { 04445 CK_ULONG ulWordsize; 04447 CK_ULONG ulRounds; 04448 } CK_RC5_PARAMS; 04449 04450 04452 typedef CK_RC5_PARAMS CK_PTR CK_RC5_PARAMS_PTR; 04453 04454 04481 typedef struct CK_RC5_CBC_PARAMS { 04483 CK_ULONG ulWordsize; 04485 CK_ULONG ulRounds; 04487 CK_BYTE_PTR pIv; 04489 CK_ULONG ulIvLen; 04490 } CK_RC5_CBC_PARAMS; 04491 04492 04494 typedef CK_RC5_CBC_PARAMS CK_PTR CK_RC5_CBC_PARAMS_PTR; 04495 04496 04513 typedef struct CK_RC5_MAC_GENERAL_PARAMS { 04515 CK_ULONG ulWordsize; 04517 CK_ULONG ulRounds; 04519 CK_ULONG ulMacLength; 04520 } CK_RC5_MAC_GENERAL_PARAMS; 04521 04522 04524 typedef CK_RC5_MAC_GENERAL_PARAMS CK_PTR CK_RC5_MAC_GENERAL_PARAMS_PTR; 04532 typedef CK_ULONG CK_MAC_GENERAL_PARAMS; 04533 04534 04536 typedef CK_MAC_GENERAL_PARAMS CK_PTR CK_MAC_GENERAL_PARAMS_PTR; 04537 04538 04572 typedef struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS { 04574 CK_ULONG ulPasswordLen; 04576 CK_BYTE_PTR pPassword; 04578 CK_ULONG ulPublicDataLen; 04580 CK_BYTE_PTR pPublicData; 04582 CK_ULONG ulPandGLen; 04584 CK_ULONG ulQLen; 04586 CK_ULONG ulRandomLen; 04588 CK_BYTE_PTR pRandomA; 04590 CK_BYTE_PTR pPrimeP; 04592 CK_BYTE_PTR pBaseG; 04594 CK_BYTE_PTR pSubprimeQ; 04595 } CK_SKIPJACK_PRIVATE_WRAP_PARAMS; 04596 04597 04599 typedef CK_PRIVATE_WRAP_PARAMS CK_PTR CK_SKIPJACK_PRIVATE_WRAP_PARAMS_PTR; 04600 04601 04629 typedef struct CK_SKIPJACK_RELAYX_PARAMS { 04631 CK_ULONG ulOldWrappedXLen; 04633 CK_BYTE_PTR pOldWrappedX; 04635 CK_ULONG ulOldPasswordLen; 04637 CK_BYTE_PTR pOldPassword; 04639 CK_ULONG ulOldPublicDataLen; 04641 CK_BYTE_PTR pOldPublicData; 04643 CK_ULONG ulOldRandomLen; 04645 CK_BYTE_PTR pOldRandomA; 04647 CK_ULONG ulNewPasswordLen; 04649 CK_BYTE_PTR pNewPassword; 04651 CK_ULONG ulNewPublicDataLen; 04653 CK_BYTE_PTR pNewPublicData; 04655 CK_ULONG ulNewRandomLen; 04657 CK_BYTE_PTR pNewRandomA; 04658 } CK_SKIPJACK_RELAYX_PARAMS; 04659 04660 04662 typedef CK_SKIPJACK_RELAYX_PARAMS CK_PTR CK_SKIPJACK_RELAYX_PARAMS_PTR; 04663 04664 04683 typedef struct CK_PBE_PARAMS { 04685 CK_CHAR_PTR pInitVector; 04687 CK_CHAR_PTR pPassword; 04689 CK_ULONG ulPasswordLen; 04691 CK_CHAR_PTR pSalt; 04693 CK_ULONG ulSaltLen; 04695 CK_ULONG ulIteration; 04696 } CK_PBE_PARAMS; 04697 04698 04700 typedef CK_PBE_PARAMS CK_PTR CK_PBE_PARAMS_PTR; 04701 04702 04719 typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS { 04721 CK_BYTE bBC; 04723 CK_BYTE_PTR pX; 04725 CK_ULONG ulXLen; 04726 } CK_KEY_WRAP_SET_OAEP_PARAMS; 04727 04728 04730 typedef CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR CK_KEY_WRAP_SET_OAEP_PARAMS_PTR; 04731 04732 04756 typedef struct CK_SSL3_RANDOM_DATA { 04758 CK_BYTE_PTR pClientRandom; 04760 CK_ULONG ulClientRandomLen; 04762 CK_BYTE_PTR pServerRandom; 04764 CK_ULONG ulServerRandomLen; 04765 } CK_SSL3_RANDOM_DATA; 04766 04767 04768 04769 04800 typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS { 04802 CK_SSL3_RANDOM_DATA RandomInfo; 04804 CK_VERSION_PTR pVersion; 04805 } CK_SSL3_MASTER_KEY_DERIVE_PARAMS; 04806 04807 04809 typedef CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR; 04810 04811 04840 typedef struct CK_SSL3_KEY_MAT_OUT { 04842 CK_OBJECT_HANDLE hClientMacSecret; 04844 CK_OBJECT_HANDLE hServerMacSecret; 04846 CK_OBJECT_HANDLE hClientKey; 04848 CK_OBJECT_HANDLE hServerKey; 04850 CK_BYTE_PTR pIVClient; 04852 CK_BYTE_PTR pIVServer; 04853 } CK_SSL3_KEY_MAT_OUT; 04854 04855 04857 typedef CK_SSL3_KEY_MAT_OUT CK_PTR CK_SSL3_KEY_MAT_OUT_PTR; 04858 04859 04879 typedef struct CK_SSL3_KEY_MAT_PARAMS { 04881 CK_ULONG ulMacSizeInBits; 04883 CK_ULONG ulKeySizeInBits; 04885 CK_ULONG ulIVSizeInBits; 04887 CK_BBOOL bIsExport; 04889 CK_SSL3_RANDOM_DATA RandomInfo; 04891 CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial; 04892 } CK_SSL3_KEY_MAT_PARAMS; 04893 04894 04896 typedef CK_SSL3_KEY_MAT_PARAMS CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR; 04897 04898 04921 typedef struct CK_KEY_DERIVATION_STRING_DATA { 04923 CK_BYTE_PTR pData; 04925 CK_ULONG ulLen; 04926 } CK_KEY_DERIVATION_STRING_DATA; 04927 04928 04937 typedef CK_ULONG CK_EXTRACT_PARAMS; 04938 04939 04941 typedef CK_EXTRACT_PARAMS CK_PTR CK_EXTRACT_PARAMS_PTR; 04942 04943