![]() | 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; 00084 typedef NULL CK_PTR NULL_PTR; 00085 00086 00087 00088 00116 typedef struct CK_VERSION { 00118 CK_BYTE major; 00120 CK_BYTE minor; 00121 } CK_VERSION; 00122 00123 00124 00125 00201 typedef struct CK_INFO { 00203 CK_VERSION cryptokiVersion; 00205 CK_CHAR manufacturerID[32]; 00207 CK_FLAGS flags; 00209 CK_CHAR libraryDescription[32]; 00211 CK_VERSION libraryVersion; 00212 } CK_INFO; 00213 00214 00220 typedef CK_ULONG CK_NOTIFICATION; 00221 00222 00228 typedef CK_ULONG CK_SLOT_ID; 00229 00230 00231 00232 00287 typedef struct CK_SLOT_INFO { 00289 CK_CHAR slotDescription[64]; 00291 CK_CHAR manufacturerID[32]; 00293 CK_FLAGS flags; 00295 CK_VERSION hardwareVersion; 00297 CK_VERSION firmwareVersion; 00298 } CK_SLOT_INFO; 00299 00300 00302 #define CKF_TOKEN_PRESENT 0x00000001 00303 00305 #define CKF_REMOVABLE_DEVICE 0x00000002 00306 00308 #define CKF_HW_SLOT 0x00000004 00309 00310 00311 00482 typedef struct CK_TOKEN_INFO { 00484 CK_CHAR label[32]; 00486 CK_CHAR manufacturerID[32]; 00488 CK_CHAR model[16]; 00490 CK_CHAR serialNumber[16]; 00492 CK_FLAGS flags; 00494 CK_ULONG ulMaxSessionCount; 00496 CK_ULONG ulSessionCount; 00498 CK_ULONG ulMaxRwSessionCount; 00500 CK_ULONG ulRwSessionCount; 00502 CK_ULONG ulMaxPinLen; 00504 CK_ULONG ulMinPinLen; 00506 CK_ULONG ulTotalPublicMemory; 00508 CK_ULONG ulFreePublicMemory; 00510 CK_ULONG ulTotalPrivateMemory; 00512 CK_ULONG ulFreePrivateMemory; 00514 CK_VERSION hardwareVersion; 00516 CK_VERSION firmwareVersion; 00518 CK_CHAR utcTime[16]; 00519 } CK_TOKEN_INFO; 00520 00521 00523 #define CKF_RNG 0x00000001 00524 00526 #define CKF_WRITE_PROTECTED 0x00000002 00527 00529 #define CKF_LOGIN_REQUIRED 0x00000004 00530 00532 #define CKF_USER_PIN_INITIALIZED 0x00000008 00533 00535 #define CKF_EXCLUSIVE_EXISTS 0x00000010 00536 00538 #define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020 00539 00541 #define CKF_CLOCK_ON_TOKEN 0x00000040 00542 00544 #define CKF_SUPPORTS_PARALLEL 0x00000080 00545 00547 #define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100 00548 00550 #define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200 00551 00552 00553 00559 typedef CK_ULONG CK_SESSION_HANDLE; 00560 00561 00567 typedef CK_ULONG CK_USER_TYPE; 00568 00569 00575 typedef CK_ULONG CK_STATE; 00576 00577 00578 00579 00738 typedef struct CK_SESSION_INFO { 00740 CK_SLOT_ID slotID; 00742 CK_STATE state; 00744 CK_FLAGS flags; 00746 CK_ULONG ulDeviceError; 00747 } CK_SESSION_INFO; 00748 00749 00751 #define CKF_EXCLUSIVE_SESSION 0x00000001 00752 00754 #define CKF_RW_SESSION 0x00000002 00755 00757 #define CKF_SERIAL_SESSION 0x00000004 00758 00760 #define CKF_INSERTION_CALLBACK 0x00000008 00761 00767 typedef CK_ULONG CK_OBJECT_HANDLE; 00768 00769 00775 typedef CK_ULONG CK_OBJECT_CLASS; 00776 00777 00783 typedef CK_ULONG CK_KEY_TYPE; 00784 00785 00791 typedef CK_ULONG CK_CERTIFICATE_TYPE; 00792 00793 00799 typedef CK_ULONG CK_ATTRIBUTE_TYPE; 00800 00801 00802 00803 00834 typedef struct CK_ATTRIBUTE { 00836 CK_ATTRIBUTE_TYPE type; 00838 CK_VOID_PTR pValue; 00840 CK_ULONG ulValueLen; 00841 } CK_ATTRIBUTE; 00842 00843 00844 00845 00892 typedef struct CK_DATE { 00894 CK_CHAR year[4]; 00896 CK_CHAR month[2]; 00898 CK_CHAR day[2]; 00899 } CK_DATE; 00900 00901 00907 typedef CK_ULONG CK_MECHANISM_TYPE; 00908 00909 00910 00911 00939 typedef struct CK_MECHANISM { 00941 CK_MECHANISM_TYPE mechanism; 00943 CK_VOID_PTR pParameter; 00944 CK_ULONG ulParameterLen; 00945 } CK_MECHANISM; 00946 00947 00948 00949 01119 typedef struct CK_MECHANISM_INFO { 01121 CK_ULONG ulMinKeySize; 01123 CK_ULONG ulMaxKeySize; 01125 CK_FLAGS flags; 01126 } CK_MECHANISM_INFO; 01127 01128 01130 #define CKF_HW 0x00000001 01131 01133 #define CKF_ENCRYPT 0x00000100 01134 01136 #define CKF_DECRYPT 0x00000200 01137 01139 #define CKF_DIGEST 0x00000400 01140 01142 #define CKF_SIGN 0x00000800 01143 01145 #define CKF_SIGN_RECOVER 0x00001000 01146 01148 #define CKF_VERIFY 0x00002000 01149 01151 #define CKF_VERIFY_RECOVER 0x00004000 01152 01154 #define CKF_GENERATE 0x00008000 01155 01157 #define CKF_GENERATE_KEY_PAIR 0x00010000 01158 01160 #define CKF_WRAP 0x00020000 01161 01163 #define CKF_UNWRAP 0x00040000 01164 01166 #define CKF_DERIVE 0x00080000 01167 01169 #define CKF_EXTENSION 0x80000000 01170 01176 typedef CK_ULONG CK_RV; 01177 01178 01186 typedef CK_RV (CK_ENTRY * CK_NOTIFY)( 01187 CK_SESSION_HANDLE hSession, 01188 CK_NOTIFICATION event, 01189 CK_VOID_PTR pApplication 01190 ); 01191 01192 01193 01194 01209 typedef struct CK_FUNCTION_LIST { 01210 CK_VERSION version; 01211 CK_C_Initialize C_Initialize; 01212 CK_C_Finalize C_Finalize; 01213 CK_C_GetInfo C_GetInfo; 01214 CK_C_GetFunctionList C_GetFunctionList; 01215 CK_C_GetSlotList C_GetSlotList; 01216 CK_C_GetSlotInfo C_GetSlotInfo; 01217 CK_C_GetTokenInfo C_GetTokenInfo; 01218 CK_C_GetMechanismList C_GetMechanismList; 01219 CK_C_GetMechanismInfo C_GetMechanismInfo; 01220 CK_C_InitToken C_InitToken; 01221 CK_C_InitPIN C_InitPIN; 01222 CK_C_SetPIN C_SetPIN; 01223 CK_C_OpenSession C_OpenSession; 01224 CK_C_CloseSession C_CloseSession; 01225 CK_C_CloseAllSessions C_CloseAllSessions; 01226 CK_C_GetSessionInfo C_GetSessionInfo; 01227 CK_C_GetOperationState C_GetOperationState; 01228 CK_C_SetOperationState C_SetOperationState; 01229 CK_C_Login C_Login; 01230 CK_C_Logout C_Logout; 01231 CK_C_CreateObject C_CreateObject; 01232 CK_C_CopyObject C_CopyObject; 01233 CK_C_DestroyObject C_DestroyObject; 01234 CK_C_GetObjectSize C_GetObjectSize; 01235 CK_C_GetAttributeValue C_GetAttributeValue; 01236 CK_C_SetAttributeValue C_SetAttributeValue; 01237 CK_C_FindObjectsInit C_FindObjectsInit; 01238 CK_C_FindObjects C_FindObjects; 01239 CK_C_FindObjectsFinal C_FindObjectsFinal; 01240 CK_C_EncryptInit C_EncryptInit; 01241 CK_C_Encrypt C_Encrypt; 01242 CK_C_EncryptUpdate C_EncryptUpdate; 01243 CK_C_EncryptFinal C_EncryptFinal; 01244 CK_C_DecryptInit C_DecryptInit; 01245 CK_C_Decrypt C_Decrypt; 01246 CK_C_DecryptUpdate C_DecryptUpdate; 01247 CK_C_DecryptFinal C_DecryptFinal; 01248 CK_C_DigestInit C_DigestInit; 01249 CK_C_Digest C_Digest; 01250 CK_C_DigestUpdate C_DigestUpdate; 01251 CK_C_DigestKey C_DigestKey; 01252 CK_C_DigestFinal C_DigestFinal; 01253 CK_C_SignInit C_SignInit; 01254 CK_C_Sign C_Sign; 01255 CK_C_SignUpdate C_SignUpdate; 01256 CK_C_SignFinal C_SignFinal; 01257 CK_C_SignRecoverInit C_SignRecoverInit; 01258 CK_C_SignRecover C_SignRecover; 01259 CK_C_VerifyInit C_VerifyInit; 01260 CK_C_Verify C_Verify; 01261 CK_C_VerifyUpdate C_VerifyUpdate; 01262 CK_C_VerifyFinal C_VerifyFinal; 01263 CK_C_VerifyRecoverInit C_VerifyRecoverInit; 01264 CK_C_VerifyRecover C_VerifyRecover; 01265 CK_C_DigestEncryptUpdate C_DigestEncryptUpdate; 01266 CK_C_DecryptDigestUpdate C_DecryptDigestUpdate; 01267 CK_C_SignEncryptUpdate C_SignEncryptUpdate; 01268 CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate; 01269 CK_C_GenerateKey C_GenerateKey; 01270 CK_C_GenerateKeyPair C_GenerateKeyPair; 01271 CK_C_WrapKey C_WrapKey; 01272 CK_C_UnwrapKey C_UnwrapKey; 01273 CK_C_DeriveKey C_DeriveKey; 01274 CK_C_SeedRandom C_SeedRandom; 01275 CK_C_GenerateRandom C_GenerateRandom; 01276 CK_C_GetFunctionStatus C_GetFunctionStatus; 01277 CK_C_CancelFunction C_CancelFunction; 01278 } CK_FUNCTION_LIST; 01279 01280 01282 #define CKA_CLASS 01283 01285 #define CKA_TOKEN 01286 01288 #define CKA_PRIVATE 01289 01291 #define CKA_MODIFIABLE 01292 01294 #define CKA_LABEL 01295 01297 #define CKA_APPLICATION 01298 01300 #define CKA_VALUE 01301 01302 01303 01305 #define CKA_CERTIFICATE_TYPE 01306 01308 #define CKA_SUBJECT 01309 01311 #define CKA_ID 01312 01314 #define CKA_ISSUER 01315 01317 #define CKA_SERIAL_NUMBER 01318 01320 #define CKA_VALUE 01321 01322 01323 01325 #define CKA_KEY_TYPE 01326 01328 #define CKA_ID 01329 01331 #define CKA_START_DATE 01332 01334 #define CKA_END_DATE 01335 01337 #define CKA_DERIVE 01338 01340 #define CKA_LOCAL 01341 01343 #define CKA_SUBJECT 01344 01346 #define CKA_ENCRYPT 01347 01349 #define CKA_VERIFY 01350 01352 #define CKA_VERIFY_RECOVER 01353 01355 #define CKA_WRAP 01356 01358 #define CKA_MODULUS 01359 01361 #define CKA_MODULUS_BITS 01362 01364 #define CKA_PUBLIC_EXPONENT 01365 01366 01367 01369 #define CKA_PRIME 01370 01372 #define CKA_SUBPRIME 01373 01375 #define CKA_BASE 01376 01378 #define CKA_VALUE 01379 01380 01381 01383 #define CKA_PRIME 01384 01386 #define CKA_SUBPRIME 01387 01389 #define CKA_BASE 01390 01392 #define CKA_VALUE 01393 01394 01395 01397 #define CKA_PRIME 01398 01400 #define CKA_BASE 01401 01403 #define CKA_VALUE 01404 01405 01406 01408 #define CKA_PRIME 01409 01411 #define CKA_SUBPRIME 01412 01414 #define CKA_BASE 01415 01417 #define CKA_VALUE 01418 01419 01420 01422 #define CKA_PRIME 01423 01425 #define CKA_SUBPRIME 01426 01428 #define CKA_BASE 01429 01431 #define CKA_VALUE 01432 01433 01434 01436 #define CKA_SUBJECT 01437 01439 #define CKA_SENSITIVE 01440 01442 #define CKA_DECRYPT 01443 01445 #define CKA_SIGN 01446 01448 #define CKA_SIGN_RECOVER 01449 01451 #define CKA_UNWRAP 01452 01454 #define CKA_EXTRACTABLE 01455 01457 #define CKA_ALWAYS_SENSITIVE 01458 01460 #define CKA_NEVER_EXTRACTABLE 01461 01463 #define CKA_MODULUS 01464 01466 #define CKA_PUBLIC_EXPONENT 01467 01469 #define CKA_PRIVATE_EXPONENT 01470 01472 #define CKA_PRIME_1 01473 01475 #define CKA_PRIME_2 01476 01478 #define CKA_EXPONENT_1 01479 01481 #define CKA_EXPONENT_2 01482 01484 #define CKA_COEFFICIENT 01485 01486 01487 01489 #define CKA_PRIME 01490 01492 #define CKA_SUBPRIME 01493 01495 #define CKA_BASE 01496 01498 #define CKA_VALUE 01499 01500 01501 01503 #define CKA_PRIME 01504 01506 #define CKA_SUBPRIME 01507 01509 #define CKA_BASE 01510 01512 #define CKA_VALUE 01513 01514 01515 01517 #define CKA_PRIME 01518 01520 #define CKA_BASE 01521 01523 #define CKA_VALUE 01524 01526 #define CKA_VALUE_BITS 01527 01528 01529 01531 #define CKA_PRIME 01532 01534 #define CKA_SUBPRIME 01535 01537 #define CKA_BASE 01538 01540 #define CKA_VALUE 01541 01542 01543 01545 #define CKA_PRIME 01546 01548 #define CKA_SUBPRIME 01549 01551 #define CKA_BASE 01552 01554 #define CKA_VALUE 01555 01556 01557 01559 #define CKA_SENSITIVE 01560 01562 #define CKA_ENCRYPT 01563 01565 #define CKA_DECRYPT 01566 01568 #define CKA_SIGN 01569 01571 #define CKA_VERIFY 01572 01574 #define CKA_WRAP 01575 01577 #define CKA_UNWRAP 01578 01580 #define CKA_EXTRACTABLE 01581 01583 #define CKA_ALWAYS_SENSITIVE 01584 01586 #define CKA_NEVER_EXTRACTABLE 01587 01589 #define CKA_VALUE 01590 01592 #define CKA_VALUE_LEN 01593 01594 01595 01597 #define CKA_VALUE 01598 01600 #define CKA_VALUE_LEN 01601 01602 01603 01605 #define CKA_VALUE 01606 01608 #define CKA_VALUE_LEN 01609 01610 01611 01613 #define CKA_VALUE 01614 01616 #define CKA_VALUE_LEN 01617 01618 01619 01621 #define CKA_VALUE 01622 01623 01624 01626 #define CKA_VALUE 01627 01628 01629 01631 #define CKA_VALUE 01632 01633 01634 01636 #define CKA_VALUE 01637 01639 #define CKA_VALUE_LEN 01640 01641 01642 01644 #define CKA_VALUE 01645 01647 #define CKA_VALUE_LEN 01648 01649 01650 01652 #define CKA_VALUE 01653 01655 #define CKA_VALUE_LEN 01656 01657 01658 01660 #define CKA_VALUE 01661 01662 01663 01665 #define CKA_VALUE 01666 01667 01668 01670 #define CKA_VALUE 01671 01672 01673 01675 #define CKA_VALUE 01676 01677 01678 01680 #define CKA_VALUE 01681 01682 01683 01685 #define CKR_GENERAL_ERROR 01686 01688 #define CKR_HOST_MEMORY 01689 01691 #define CKR_FUNCTION_FAILED 01692 01694 #define CKR_OK 01695 01697 #define CKR_SESSION_HANDLE_INVALID 01698 01700 #define CKR_DEVICE_REMOVED 01701 01703 #define CKR_SESSION_CLOSED 01704 01706 #define CKR_DEVICE_MEMORY 01707 01709 #define CKR_DEVICE_ERROR 01710 01712 #define CKR_TOKEN_NOT_PRESENT 01713 01715 #define CKR_DEVICE_REMOVED 01716 01718 #define CKR_ATTRIBUTE_READ_ONLY 01719 01721 #define CKR_ATTRIBUTE_SENSITIVE 01722 01724 #define CKR_ATTRIBUTE_TYPE_INVALID 01725 01727 #define CKR_ATTRIBUTE_VALUE_INVALID 01728 01730 #define CKR_BUFFER_TOO_SMALL 01731 01733 #define CKR_CANCEL 01734 01736 #define CKR_DATA_INVALID 01737 01739 #define CKR_DATA_LEN_RANGE 01740 01742 #define CKR_ENCRYPTED_DATA_INVALID 01743 01745 #define CKR_ENCRYPTED_DATA_LEN_RANGE 01746 01748 #define CKR_FUNCTION_CANCELED 01749 01751 #define CKR_FUNCTION_NOT_PARALLEL 01752 01754 #define CKR_FUNCTION_NOT_SUPPORTED 01755 01757 #define CKR_FUNCTION_PARALLEL 01758 01760 #define CKR_INFORMATION_SENSITIVE 01761 01763 #define CKR_INSERTION_CALLBACK_NOT_SUPPORTED 01764 01766 #define CKR_KEY_CHANGED 01767 01769 #define CKR_KEY_FUNCTION_NOT_PERMITTED 01770 01772 #define CKR_KEY_HANDLE_INVALID 01773 01775 #define CKR_KEY_INDIGESTIBLE 01776 01778 #define CKR_KEY_NEEDED 01779 01781 #define CKR_KEY_NOT_NEEDED 01782 01784 #define CKR_KEY_NOT_WRAPPABLE 01785 01787 #define CKR_KEY_SIZE_RANGE 01788 01790 #define CKR_KEY_TYPE_INCONSISTENT 01791 01793 #define CKR_KEY_UNEXTRACTABLE 01794 01796 #define CKR_MECHANISM_INVALID 01797 01799 #define CKR_MECHANISM_PARAM_INVALID 01800 01802 #define CKR_OBJECT_HANDLE_INVALID 01803 01805 #define CKR_OPERATION_ACTIVE 01806 01808 #define CKR_OPERATION_NOT_INITIALIZED 01809 01811 #define CKR_PIN_INCORRECT 01812 01814 #define CKR_PIN_INVALID 01815 01817 #define CKR_PIN_LEN_RANGE 01818 01820 #define CKR_RANDOM_NO_RNG 01821 01823 #define CKR_RANDOM_SEED_NOT_SUPPORTED 01824 01826 #define CKR_SAVED_STATE_INVALID 01827 01829 #define CKR_SESSION_COUNT 01830 01832 #define CKR_SESSION_EXCLUSIVE_EXISTS 01833 01835 #define CKR_SESSION_EXISTS 01836 01838 #define CKR_SESSION_PARALLEL_NOT_SUPPORTED 01839 01841 #define CKR_SESSION_READ_ONLY 01842 01844 #define CKR_SESSION_READ_ONLY_EXISTS 01845 01847 #define CKR_SESSION_READ_WRITE_SO_EXISTS 01848 01850 #define CKR_SIGNATURE_LEN_RANGE 01851 01853 #define CKR_SIGNATURE_INVALID 01854 01856 #define CKR_SLOT_ID_INVALID 01857 01859 #define CKR_STATE_UNSAVEABLE 01860 01862 #define CKR_TEMPLATE_INCOMPLETE 01863 01865 #define CKR_TEMPLATE_INCONSISTENT 01866 01868 #define CKR_TOKEN_NOT_RECOGNIZED 01869 01871 #define CKR_TOKEN_WRITE_PROTECTED 01872 01874 #define CKR_UNWRAPPING_KEY_HANDLE_INVALID 01875 01877 #define CKR_UNWRAPPING_KEY_SIZE_RANGE 01878 01880 #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 01881 01883 #define CKR_USER_ALREADY_LOGGED_IN 01884 01886 #define CKR_USER_NOT_LOGGED_IN 01887 01889 #define CKR_USER_PIN_NOT_INITIALIZED 01890 01892 #define CKR_USER_TYPE_INVALID 01893 01895 #define CKR_WRAPPED_KEY_INVALID 01896 01898 #define CKR_WRAPPED_KEY_LEN_RANGE 01899 01901 #define CKR_WRAPPING_KEY_HANDLE_INVALID 01902 01904 #define CKR_WRAPPING_KEY_SIZE_RANGE 01905 01907 #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 01908 01927 CK_RV C_Initialize( 01928 CK_VOID_PTR pReserved 01929 ); 01930 01931 01949 CK_RV C_Finalize( 01950 CK_VOID_PTR pReserved 01951 ); 01952 01953 01966 CK_RV C_GetInfo( 01967 CK_INFO_PTR pInfo 01968 ); 01969 01970 01995 CK_RV C_GetFunctionList( 01996 CK_FUNCTION_LIST_PTR_PTR ppFunctionList 01997 ); 01998 01999 02036 CK_RV C_GetSlotList( 02037 CK_BBOOL tokenPresent, 02038 CK_SLOT_ID_PTR pSlotList, 02039 CK_ULONG_PTR pulCount 02040 ); 02041 02042 02054 CK_RV C_GetSlotInfo( 02055 CK_SLOT_ID slotID, 02056 CK_SLOT_INFO_PTR pInfo 02057 ); 02058 02059 02074 CK_RV C_GetTokenInfo( 02075 CK_SLOT_ID slotID, 02076 CK_TOKEN_INFO_PTR pInfo 02077 ); 02078 02079 02114 CK_RV C_GetMechanismList( 02115 CK_SLOT_ID slotID, 02116 CK_MECHANISM_TYPE_PTR pMechanismList, 02117 CK_ULONG_PTR pulCount 02118 ); 02119 02120 02137 CK_RV C_GetMechanismInfo( 02138 CK_SLOT_ID slotID, 02139 CK_MECHANISM_TYPE type, 02140 CK_MECHANISM_INFO_PTR pInfo 02141 ); 02142 02143 02191 CK_RV C_InitToken( 02192 CK_SLOT_ID slotID, 02193 CK_CHAR_PTR pPin, 02194 CK_ULONG ulPinLen, 02195 CK_CHAR_PTR pLabel 02196 ); 02197 02198 02234 CK_RV C_InitPIN( 02235 CK_SESSION_HANDLE hSession, 02236 CK_CHAR_PTR pPin, 02237 CK_ULONG ulPinLen 02238 ); 02239 02240 02311 CK_RV C_SetPIN( 02312 CK_SESSION_HANDLE hSession, 02313 CK_CHAR_PTR pOldPin, 02314 CK_ULONG ulOldLen, 02315 CK_CHAR_PTR pNewPin, 02316 CK_ULONG ulNewLen 02317 ); 02318 02319 02424 CK_RV C_OpenSession( 02425 CK_SLOT_ID slotID, 02426 CK_FLAGS flags, 02427 CK_VOID_PTR pApplication, 02428 CK_NOTIFY Notify, 02429 CK_SESSION_HANDLE_PTR phSession 02430 ); 02431 02432 02463 CK_RV C_CloseSession( 02464 CK_SESSION_HANDLE hSession 02465 ); 02466 02467 02491 CK_RV C_CloseAllSessions( 02492 CK_SLOT_ID slotID 02493 ); 02494 02495 02510 CK_RV C_GetSessionInfo( 02511 CK_SESSION_HANDLE hSession, 02512 CK_SESSION_INFO_PTR pInfo 02513 ); 02514 02515 02589 CK_RV C_GetOperationState( 02590 CK_SESSION_HANDLE hSession, 02591 CK_BYTE_PTR pOperationState, 02592 CK_ULONG_PTR pulOperationStateLen 02593 ); 02594 02595 02675 CK_RV C_SetOperationState( 02676 CK_SESSION_HANDLE hSession, 02677 CK_BYTE_PTR pOperationState, 02678 CK_ULONG ulOperationStateLen, 02679 CK_OBJECT_HANDLE hEncryptionKey, 02680 CK_OBJECT_HANDLE hAuthenticationKey 02681 ); 02682 02683 02727 CK_RV C_Login( 02728 CK_SESSION_HANDLE hSession, 02729 CK_USER_TYPE userType, 02730 CK_CHAR_PTR pPin, 02731 CK_ULONG ulPinLen 02732 ); 02733 02734 02769 CK_RV C_Logout( 02770 CK_SESSION_HANDLE hSession 02771 ); 02772 02773 02799 CK_RV C_CreateObject( 02800 CK_SESSION_HANDLE hSession, 02801 CK_ATTRIBUTE_PTR pTemplate, 02802 CK_ULONG ulCount, 02803 CK_OBJECT_HANDLE_PTR phObject 02804 ); 02805 02806 02845 CK_RV C_CopyObject( 02846 CK_SESSION_HANDLE hSession, 02847 CK_OBJECT_HANDLE hObject, 02848 CK_ATTRIBUTE_PTR pTemplate, 02849 CK_ULONG ulCount, 02850 CK_OBJECT_HANDLE_PTR phNewObject 02851 ); 02852 02853 02870 CK_RV C_DestroyObject( 02871 CK_SESSION_HANDLE hSession, 02872 CK_OBJECT_HANDLE hObject 02873 ); 02874 02875 02898 CK_RV C_GetObjectSize( 02899 CK_SESSION_HANDLE hSession, 02900 CK_OBJECT_HANDLE hObject, 02901 CK_ULONG_PTR pulSize 02902 ); 02903 02904 02954 CK_RV C_GetAttributeValue( 02955 CK_SESSION_HANDLE hSession, 02956 CK_OBJECT_HANDLE hObject, 02957 CK_ATTRIBUTE_PTR pTemplate, 02958 CK_ULONG ulCount 02959 ); 02960 02961 02990 CK_RV C_SetAttributeValue( 02991 CK_SESSION_HANDLE hSession, 02992 CK_OBJECT_HANDLE hObject, 02993 CK_ATTRIBUTE_PTR pTemplate, 02994 CK_ULONG ulCount 02995 ); 02996 02997 03038 CK_RV C_FindObjectsInit( 03039 CK_SESSION_HANDLE hSession, 03040 CK_ATTRIBUTE_PTR pTemplate, 03041 CK_ULONG ulCount 03042 ); 03043 03044 03065 CK_RV C_FindObjects( 03066 CK_SESSION_HANDLE hSession, 03067 CK_OBJECT_HANDLE_PTR phObject,CK_ULONG ulMaxObjectCount, 03068 CK_ULONG_PTR pulObjectCount 03069 ); 03070 03071 03094 CK_RV C_FindObjectsFinal( 03095 CK_SESSION_HANDLE hSession 03096 ); 03097 03098 03128 CK_RV C_EncryptInit( 03129 CK_SESSION_HANDLE hSession, 03130 CK_MECHANISM_PTR pMechanism, 03131 CK_OBJECT_HANDLE hKey 03132 ); 03133 03134 03174 CK_RV C_Encrypt( 03175 CK_SESSION_HANDLE hSession, 03176 CK_BYTE_PTR pData, 03177 CK_ULONG ulDataLen, 03178 CK_BYTE_PTR pEncryptedData, 03179 CK_ULONG_PTR pulEncryptedDataLen 03180 ); 03181 03182 03218 CK_RV C_EncryptUpdate( 03219 CK_SESSION_HANDLE hSession, 03220 CK_BYTE_PTR pPart, 03221 CK_ULONG ulPartLen, 03222 CK_BYTE_PTR pEncryptedPart, 03223 CK_ULONG_PTR pulEncryptedPartLen 03224 ); 03225 03226 03266 CK_RV C_EncryptFinal( 03267 CK_SESSION_HANDLE hSession, 03268 CK_BYTE_PTR pLastEncryptedPart, 03269 CK_ULONG_PTR pulLastEncryptedPartLen 03270 ); 03271 03272 03302 CK_RV C_DecryptInit( 03303 CK_SESSION_HANDLE hSession, 03304 CK_MECHANISM_PTR pMechanism, 03305 CK_OBJECT_HANDLE hKey 03306 ); 03307 03308 03346 CK_RV C_Decrypt( 03347 CK_SESSION_HANDLE hSession, 03348 CK_BYTE_PTR pEncryptedData, 03349 CK_ULONG ulEncryptedDataLen, 03350 CK_BYTE_PTR pData, 03351 CK_ULONG_PTR pulDataLen 03352 ); 03353 03354 03385 CK_RV C_DecryptUpdate( 03386 CK_SESSION_HANDLE hSession, 03387 CK_BYTE_PTR pEncryptedPart, 03388 CK_ULONG ulEncryptedPartLen, 03389 CK_BYTE_PTR pPart, 03390 CK_ULONG_PTR pulPartLen 03391 ); 03392 03393 03433 CK_RV C_DecryptFinal( 03434 CK_SESSION_HANDLE hSession, 03435 CK_BYTE_PTR pLastPart, 03436 CK_ULONG_PTR pulLastPartLen 03437 ); 03438 03439 03463 CK_RV C_DigestInit( 03464 CK_SESSION_HANDLE hSession, 03465 CK_MECHANISM_PTR pMechanism 03466 ); 03467 03468 03500 CK_RV C_Digest( 03501 CK_SESSION_HANDLE hSession, 03502 CK_BYTE_PTR pData, 03503 CK_ULONG ulDataLen, 03504 CK_BYTE_PTR pDigest, 03505 CK_ULONG_PTR pulDigestLen 03506 ); 03507 03508 03529 CK_RV C_DigestUpdate( 03530 CK_SESSION_HANDLE hSession, 03531 CK_BYTE_PTR pPart, 03532 CK_ULONG ulPartLen 03533 ); 03534 03535 03558 CK_RV C_DigestKey( 03559 CK_SESSION_HANDLE hSession, 03560 CK_OBJECT_HANDLE hKey 03561 ); 03562 03563 03599 CK_RV C_DigestFinal( 03600 CK_SESSION_HANDLE hSession, 03601 CK_BYTE_PTR pDigest, 03602 CK_ULONG_PTR pulDigestLen 03603 ); 03604 03605 03634 CK_RV C_SignInit( 03635 CK_SESSION_HANDLE hSession, 03636 CK_MECHANISM_PTR pMechanism, 03637 CK_OBJECT_HANDLE hKey 03638 ); 03639 03640 03671 CK_RV C_Sign( 03672 CK_SESSION_HANDLE hSession, 03673 CK_BYTE_PTR pData, 03674 CK_ULONG ulDataLen, 03675 CK_BYTE_PTR pSignature, 03676 CK_ULONG_PTR pulSignatureLen 03677 ); 03678 03679 03699 CK_RV C_SignUpdate( 03700 CK_SESSION_HANDLE hSession, 03701 CK_BYTE_PTR pPart, 03702 CK_ULONG ulPartLen 03703 ); 03704 03705 03732 CK_RV C_SignFinal( 03733 CK_SESSION_HANDLE hSession, 03734 CK_BYTE_PTR pSignature, 03735 CK_ULONG_PTR pulSignatureLen 03736 ); 03737 03738 03766 CK_RV C_SignRecoverInit( 03767 CK_SESSION_HANDLE hSession, 03768 CK_MECHANISM_PTR pMechanism, 03769 CK_OBJECT_HANDLE hKey 03770 ); 03771 03772 03811 CK_RV C_SignRecover( 03812 CK_SESSION_HANDLE hSession, 03813 CK_BYTE_PTR pData, 03814 CK_ULONG ulDataLen, 03815 CK_BYTE_PTR pSignature, 03816 CK_ULONG_PTR pulSignatureLen 03817 ); 03818 03819 03849 CK_RV C_VerifyInit( 03850 CK_SESSION_HANDLE hSession, 03851 CK_MECHANISM_PTR pMechanism, 03852 CK_OBJECT_HANDLE hKey 03853 ); 03854 03855 03887 CK_RV C_Verify( 03888 CK_SESSION_HANDLE hSession, 03889 CK_BYTE_PTR pData, 03890 CK_ULONG ulDataLen, 03891 CK_BYTE_PTR pSignature, 03892 CK_ULONG ulSignatureLen 03893 ); 03894 03895 03915 CK_RV C_VerifyUpdate( 03916 CK_SESSION_HANDLE hSession, 03917 CK_BYTE_PTR pPart, 03918 CK_ULONG ulPartLen 03919 ); 03920 03921 03950 CK_RV C_VerifyFinal( 03951 CK_SESSION_HANDLE hSession, 03952 CK_BYTE_PTR pSignature, 03953 CK_ULONG ulSignatureLen 03954 ); 03955 03956 03983 CK_RV C_VerifyRecoverInit( 03984 CK_SESSION_HANDLE hSession, 03985 CK_MECHANISM_PTR pMechanism, 03986 CK_OBJECT_HANDLE hKey 03987 ); 03988 03989 04040 CK_RV C_VerifyRecover( 04041 CK_SESSION_HANDLE hSession, 04042 CK_BYTE_PTR pSignature, 04043 CK_ULONG ulSignatureLen, 04044 CK_BYTE_PTR pData, 04045 CK_ULONG_PTR pulDataLen 04046 ); 04047 04048 04079 CK_RV C_DigestEncryptUpdate( 04080 CK_SESSION_HANDLE hSession, 04081 CK_BYTE_PTR pPart, 04082 CK_ULONG ulPartLen, 04083 CK_BYTE_PTR pEncryptedPart, 04084 CK_ULONG_PTR pulEncryptedPartLen 04085 ); 04086 04087 04161 CK_RV C_DecryptDigestUpdate( 04162 CK_SESSION_HANDLE hSession, 04163 CK_BYTE_PTR pEncryptedPart, 04164 CK_ULONG ulEncryptedPartLen, 04165 CK_BYTE_PTR pPart, 04166 CK_ULONG_PTR pulPartLen 04167 ); 04168 04169 04198 CK_RV C_SignEncryptUpdate( 04199 CK_SESSION_HANDLE hSession, 04200 CK_BYTE_PTR pPart, 04201 CK_ULONG ulPartLen, 04202 CK_BYTE_PTR pEncryptedPart, 04203 CK_ULONG_PTR pulEncryptedPartLen 04204 ); 04205 04206 04286 CK_RV C_DecryptVerifyUpdate( 04287 CK_SESSION_HANDLE hSession, 04288 CK_BYTE_PTR pEncryptedPart, 04289 CK_ULONG ulEncryptedPartLen, 04290 CK_BYTE_PTR pPart, 04291 CK_ULONG_PTR pulPartLen 04292 ); 04293 04294 04326 CK_RV C_GenerateKey( 04327 CK_SESSION_HANDLE hSession, 04328 CK_MECHANISM_PTR pMechanism, 04329 CK_ATTRIBUTE_PTR pTemplate, 04330 CK_ULONG ulCount, 04331 CK_OBJECT_HANDLE_PTR phKey 04332 ); 04333 04334 04369 CK_RV C_GenerateKeyPair( 04370 CK_SESSION_HANDLE hSession, 04371 CK_MECHANISM_PTR pMechanism, 04372 CK_ATTRIBUTE_PTR pPublicKeyTemplate, 04373 CK_ULONG ulPublicKeyAttributeCount, 04374 CK_ATTRIBUTE_PTR pPrivateKeyTemplate, 04375 CK_ULONG ulPrivateKeyAttributeCount, 04376 CK_OBJECT_HANDLE_PTR phPublicKey, 04377 CK_OBJECT_HANDLE_PTR phPrivateKey 04378 ); 04379 04380 04432 CK_RV C_WrapKey( 04433 CK_SESSION_HANDLE hSession, 04434 CK_MECHANISM_PTR pMechanism, 04435 CK_OBJECT_HANDLE hWrappingKey, 04436 CK_OBJECT_HANDLE hKey, 04437 CK_BYTE_PTR pWrappedKey, 04438 CK_ULONG_PTR pulWrappedKeyLen 04439 ); 04440 04441 04488 CK_RV C_UnwrapKey( 04489 CK_SESSION_HANDLE hSession, 04490 CK_MECHANISM_PTR pMechanism, 04491 CK_OBJECT_HANDLE hUnwrappingKey, 04492 CK_BYTE_PTR pWrappedKey, 04493 CK_ULONG ulWrappedKeyLen, 04494 CK_ATTRIBUTE_PTR pTemplate, 04495 CK_ULONG ulAttributeCount, 04496 CK_OBJECT_HANDLE_PTR phKey 04497 ); 04498 04499 04541 CK_RV C_DeriveKey( 04542 CK_SESSION_HANDLE hSession, 04543 CK_MECHANISM_PTR pMechanism, 04544 CK_OBJECT_HANDLE hBaseKey, 04545 CK_ATTRIBUTE_PTR pTemplate, 04546 CK_ULONG ulAttributeCount, 04547 CK_OBJECT_HANDLE_PTR phKey 04548 ); 04549 04550 04571 CK_RV C_SeedRandom( 04572 CK_SESSION_HANDLE hSession, 04573 CK_BYTE_PTR pSeed, 04574 CK_ULONG ulSeedLen 04575 ); 04576 04577 04600 CK_RV C_GenerateRandom( 04601 CK_SESSION_HANDLE hSession, 04602 CK_BYTE_PTR pRandomData, 04603 CK_ULONG ulRandomLen 04604 ); 04605 04606 04647 CK_RV C_GetFunctionStatus( 04648 CK_SESSION_HANDLE hSession 04649 ); 04650 04651 04728 CK_RV C_CancelFunction( 04729 CK_SESSION_HANDLE hSession 04730 ); 04731 04732 04733 04734 04825 typedef struct CK_KEA_DERIVE_PARAMS { 04827 CK_BBOOL isSender; 04829 CK_ULONG ulRandomLen; 04831 CK_BYTE_PTR pRandomA; 04833 CK_BYTE_PTR pRandomB; 04835 CK_ULONG ulPublicDataLen; 04837 CK_BYTE_PTR pPublicData; 04838 } CK_KEA_DERIVE; 04839 04840 04841 04842 05031 typedef struct CK_MAYFLY_DERIVE_PARAMS { 05033 CK_BBOOL isSender; 05035 CK_ULONG ulRandomLen; 05037 CK_BYTE_PTR pRandomA; 05039 CK_BYTE_PTR pRandomB; 05041 CK_ULONG ulPublicDataLen; 05043 CK_BYTE_PTR pPublicData; 05044 } CK_MAYFLY_DERIVE; 05045 05046 05047 05048 05075 typedef struct CK_RC2_CBC_PARAMS { 05077 CK_ULONG ulEffectiveBits; 05079 CK_BYTE iv[8]; 05080 } CK_RC2_CBC_PARAMS; 05081 05082 05083 05084 05530 typedef struct CK_RC2_MAC_GENERAL_PARAMS { 05532 CK_ULONG ulEffectiveBits; 05534 CK_ULONG ulMacLength; 05535 } CK_RC2_MAC_GENERAL_PARAMS; 05536 05537 05538 05539 05540 05541 05570 typedef struct CK_RC5_CBC_PARAMS { 05572 CK_ULONG ulWordsize; 05574 CK_ULONG ulRounds; 05576 CK_BYTE_PTR pIv; 05578 CK_ULONG ulIvLen; 05579 } CK_RC5_CBC_PARAMS; 05580 05581 05582 05583 06301 typedef struct CK_RC5_MAC_GENERAL_PARAMS { 06303 CK_ULONG ulWordsize; 06305 CK_ULONG ulRounds; 06307 CK_ULONG ulMacLength; 06308 } CK_RC5_MAC_GENERAL_PARAMS; 06309 06310 06318 typedef CK_ULONG CK_MAC_GENERAL_PARAMS; 06319 06320 06321 06322 06357 typedef struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS { 06359 CK_ULONG ulPasswordLen; 06361 CK_BYTE_PTR pPassword; 06363 CK_ULONG ulPublicDataLen; 06365 CK_BYTE_PTR pPublicData; 06367 CK_ULONG ulPandGLen; 06369 CK_ULONG ulQLen; 06371 CK_ULONG ulRandomLen; 06373 CK_BYTE_PTR pRandomA; 06375 CK_BYTE_PTR pPrimeP; 06377 CK_BYTE_PTR pBaseG; 06379 CK_BYTE_PTR pSubprimeQ; 06380 } CK_SKIPJACK_PRIVATE_WRAP_PARAMS; 06381 06382 06383 06384 07633 typedef struct CK_SKIPJACK_RELAYX_PARAMS { 07635 CK_ULONG ulOldWrappedXLen; 07637 CK_BYTE_PTR pOldWrappedX; 07639 CK_ULONG ulOldPasswordLen; 07641 CK_BYTE_PTR pOldPassword; 07643 CK_ULONG ulOldPublicDataLen; 07645 CK_BYTE_PTR pOldPublicData; 07647 CK_ULONG ulOldRandomLen; 07649 CK_BYTE_PTR pOldRandomA; 07651 CK_ULONG ulNewPasswordLen; 07653 CK_BYTE_PTR pNewPassword; 07655 CK_ULONG ulNewPublicDataLen; 07657 CK_BYTE_PTR pNewPublicData; 07659 CK_ULONG ulNewRandomLen; 07661 CK_BYTE_PTR pNewRandomA; 07662 } CK_SKIPJACK_RELAYX_PARAMS; 07663 07664 07665 07666 07770 typedef struct CK_PBE_PARAMS { 07772 CK_CHAR_PTR pInitVector; 07774 CK_CHAR_PTR pPassword; 07776 CK_ULONG ulPasswordLen; 07778 CK_CHAR_PTR pSalt; 07779 CK_ULONG ulSaltLen; 07780 CK_ULONG ulIteration; 07781 } CK_PBE_PARAMS; 07782 07783 07784 07785 07867 typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS { 07869 CK_BYTE bBC; 07871 CK_BYTE_PTR pX; 07873 CK_ULONG ulXLen; 07874 } CK_KEY_WRAP_SET_OAEP_PARAMS; 07875 07876 07877 07878 07902 typedef struct CK_SSL3_RANDOM_DATA { 07904 CK_BYTE_PTR pClientRandom; 07906 CK_ULONG ulClientRandomLen; 07908 CK_BYTE_PTR pServerRandom; 07910 CK_ULONG ulServerRandomLen; 07911 } CK_SSL3_RANDOM_DATA; 07912 07913 07914 07915 07947 typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS { 07949 CK_SSL3_RANDOM_DATA RandomInfo; 07951 CK_VERSION_PTR pVersion; 07952 } CK_SSL3_MASTER_KEY_DERIVE_PARAMS; 07953 07954 07955 07956 07985 typedef struct CK_SSL3_KEY_MAT_OUT { 07987 CK_OBJECT_HANDLE hClientMacSecret; 07989 CK_OBJECT_HANDLE hServerMacSecret; 07991 CK_OBJECT_HANDLE hClientKey; 07993 CK_OBJECT_HANDLE hServerKey; 07995 CK_BYTE_PTR pIVClient; 07997 CK_BYTE_PTR pIVServer; 07998 } CK_SSL3_KEY_MAT_OUT; 07999 08000 08001 08002 08251 typedef struct CK_SSL3_KEY_MAT_PARAMS { 08253 CK_ULONG ulMacSizeInBits; 08255 CK_ULONG ulKeySizeInBits; 08257 CK_ULONG ulIVSizeInBits; 08259 CK_BBOOL bIsExport; 08261 CK_SSL3_RANDOM_DATA RandomInfo; 08263 CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial; 08264 } CK_SSL3_KEY_MAT_PARAMS; 08265 08266 08267 08268 08563 typedef struct CK_KEY_DERIVATION_STRING_DATA { 08565 CK_BYTE_PTR pData; 08567 CK_ULONG ulLen; 08568 } CK_KEY_DERIVATION_STRING_DATA; 08569 08570 08579 typedef CK_ULONG CK_EXTRACT_PARAMS; 08580 08581