1*36e94dc5SPeter Avalos /* $OpenBSD: pkcs11.h,v 1.3 2013/11/26 19:15:09 deraadt Exp $ */ 2856ea928SPeter Avalos /* pkcs11.h 3856ea928SPeter Avalos Copyright 2006, 2007 g10 Code GmbH 4856ea928SPeter Avalos Copyright 2006 Andreas Jellinghaus 5856ea928SPeter Avalos 6856ea928SPeter Avalos This file is free software; as a special exception the author gives 7856ea928SPeter Avalos unlimited permission to copy and/or distribute it, with or without 8856ea928SPeter Avalos modifications, as long as this notice is preserved. 9856ea928SPeter Avalos 10856ea928SPeter Avalos This file is distributed in the hope that it will be useful, but 11856ea928SPeter Avalos WITHOUT ANY WARRANTY, to the extent permitted by law; without even 12856ea928SPeter Avalos the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 13856ea928SPeter Avalos PURPOSE. */ 14856ea928SPeter Avalos 15856ea928SPeter Avalos /* Please submit changes back to the Scute project at 16856ea928SPeter Avalos http://www.scute.org/ (or send them to marcus@g10code.com), so that 17856ea928SPeter Avalos they can be picked up by other projects from there as well. */ 18856ea928SPeter Avalos 19856ea928SPeter Avalos /* This file is a modified implementation of the PKCS #11 standard by 20856ea928SPeter Avalos RSA Security Inc. It is mostly a drop-in replacement, with the 21856ea928SPeter Avalos following change: 22856ea928SPeter Avalos 23856ea928SPeter Avalos This header file does not require any macro definitions by the user 24856ea928SPeter Avalos (like CK_DEFINE_FUNCTION etc). In fact, it defines those macros 25856ea928SPeter Avalos for you (if useful, some are missing, let me know if you need 26856ea928SPeter Avalos more). 27856ea928SPeter Avalos 28856ea928SPeter Avalos There is an additional API available that does comply better to the 29856ea928SPeter Avalos GNU coding standard. It can be switched on by defining 30856ea928SPeter Avalos CRYPTOKI_GNU before including this header file. For this, the 31856ea928SPeter Avalos following changes are made to the specification: 32856ea928SPeter Avalos 33856ea928SPeter Avalos All structure types are changed to a "struct ck_foo" where CK_FOO 34856ea928SPeter Avalos is the type name in PKCS #11. 35856ea928SPeter Avalos 36856ea928SPeter Avalos All non-structure types are changed to ck_foo_t where CK_FOO is the 37856ea928SPeter Avalos lowercase version of the type name in PKCS #11. The basic types 38856ea928SPeter Avalos (CK_ULONG et al.) are removed without substitute. 39856ea928SPeter Avalos 40856ea928SPeter Avalos All members of structures are modified in the following way: Type 41856ea928SPeter Avalos indication prefixes are removed, and underscore characters are 42856ea928SPeter Avalos inserted before words. Then the result is lowercased. 43856ea928SPeter Avalos 44856ea928SPeter Avalos Note that function names are still in the original case, as they 45856ea928SPeter Avalos need for ABI compatibility. 46856ea928SPeter Avalos 47856ea928SPeter Avalos CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute. Use 48856ea928SPeter Avalos <stdbool.h>. 49856ea928SPeter Avalos 50856ea928SPeter Avalos If CRYPTOKI_COMPAT is defined before including this header file, 51856ea928SPeter Avalos then none of the API changes above take place, and the API is the 52856ea928SPeter Avalos one defined by the PKCS #11 standard. */ 53856ea928SPeter Avalos 54856ea928SPeter Avalos #ifndef PKCS11_H 55856ea928SPeter Avalos #define PKCS11_H 1 56856ea928SPeter Avalos 57856ea928SPeter Avalos #if defined(__cplusplus) 58856ea928SPeter Avalos extern "C" { 59856ea928SPeter Avalos #endif 60856ea928SPeter Avalos 61856ea928SPeter Avalos 62856ea928SPeter Avalos /* The version of cryptoki we implement. The revision is changed with 63856ea928SPeter Avalos each modification of this file. If you do not use the "official" 64856ea928SPeter Avalos version of this file, please consider deleting the revision macro 65856ea928SPeter Avalos (you may use a macro with a different name to keep track of your 66856ea928SPeter Avalos versions). */ 67856ea928SPeter Avalos #define CRYPTOKI_VERSION_MAJOR 2 68856ea928SPeter Avalos #define CRYPTOKI_VERSION_MINOR 20 69856ea928SPeter Avalos #define CRYPTOKI_VERSION_REVISION 6 70856ea928SPeter Avalos 71856ea928SPeter Avalos 72856ea928SPeter Avalos /* Compatibility interface is default, unless CRYPTOKI_GNU is 73856ea928SPeter Avalos given. */ 74856ea928SPeter Avalos #ifndef CRYPTOKI_GNU 75856ea928SPeter Avalos #ifndef CRYPTOKI_COMPAT 76856ea928SPeter Avalos #define CRYPTOKI_COMPAT 1 77856ea928SPeter Avalos #endif 78856ea928SPeter Avalos #endif 79856ea928SPeter Avalos 80856ea928SPeter Avalos /* System dependencies. */ 81856ea928SPeter Avalos 82856ea928SPeter Avalos #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32) 83856ea928SPeter Avalos 84856ea928SPeter Avalos /* There is a matching pop below. */ 85856ea928SPeter Avalos #pragma pack(push, cryptoki, 1) 86856ea928SPeter Avalos 87856ea928SPeter Avalos #ifdef CRYPTOKI_EXPORTS 88856ea928SPeter Avalos #define CK_SPEC __declspec(dllexport) 89856ea928SPeter Avalos #else 90856ea928SPeter Avalos #define CK_SPEC __declspec(dllimport) 91856ea928SPeter Avalos #endif 92856ea928SPeter Avalos 93856ea928SPeter Avalos #else 94856ea928SPeter Avalos 95856ea928SPeter Avalos #define CK_SPEC 96856ea928SPeter Avalos 97856ea928SPeter Avalos #endif 98856ea928SPeter Avalos 99856ea928SPeter Avalos 100856ea928SPeter Avalos #ifdef CRYPTOKI_COMPAT 101856ea928SPeter Avalos /* If we are in compatibility mode, switch all exposed names to the 102856ea928SPeter Avalos PKCS #11 variant. There are corresponding #undefs below. */ 103856ea928SPeter Avalos 104856ea928SPeter Avalos #define ck_flags_t CK_FLAGS 105856ea928SPeter Avalos #define ck_version _CK_VERSION 106856ea928SPeter Avalos 107856ea928SPeter Avalos #define ck_info _CK_INFO 108856ea928SPeter Avalos #define cryptoki_version cryptokiVersion 109856ea928SPeter Avalos #define manufacturer_id manufacturerID 110856ea928SPeter Avalos #define library_description libraryDescription 111856ea928SPeter Avalos #define library_version libraryVersion 112856ea928SPeter Avalos 113856ea928SPeter Avalos #define ck_notification_t CK_NOTIFICATION 114856ea928SPeter Avalos #define ck_slot_id_t CK_SLOT_ID 115856ea928SPeter Avalos 116856ea928SPeter Avalos #define ck_slot_info _CK_SLOT_INFO 117856ea928SPeter Avalos #define slot_description slotDescription 118856ea928SPeter Avalos #define hardware_version hardwareVersion 119856ea928SPeter Avalos #define firmware_version firmwareVersion 120856ea928SPeter Avalos 121856ea928SPeter Avalos #define ck_token_info _CK_TOKEN_INFO 122856ea928SPeter Avalos #define serial_number serialNumber 123856ea928SPeter Avalos #define max_session_count ulMaxSessionCount 124856ea928SPeter Avalos #define session_count ulSessionCount 125856ea928SPeter Avalos #define max_rw_session_count ulMaxRwSessionCount 126856ea928SPeter Avalos #define rw_session_count ulRwSessionCount 127856ea928SPeter Avalos #define max_pin_len ulMaxPinLen 128856ea928SPeter Avalos #define min_pin_len ulMinPinLen 129856ea928SPeter Avalos #define total_public_memory ulTotalPublicMemory 130856ea928SPeter Avalos #define free_public_memory ulFreePublicMemory 131856ea928SPeter Avalos #define total_private_memory ulTotalPrivateMemory 132856ea928SPeter Avalos #define free_private_memory ulFreePrivateMemory 133856ea928SPeter Avalos #define utc_time utcTime 134856ea928SPeter Avalos 135856ea928SPeter Avalos #define ck_session_handle_t CK_SESSION_HANDLE 136856ea928SPeter Avalos #define ck_user_type_t CK_USER_TYPE 137856ea928SPeter Avalos #define ck_state_t CK_STATE 138856ea928SPeter Avalos 139856ea928SPeter Avalos #define ck_session_info _CK_SESSION_INFO 140856ea928SPeter Avalos #define slot_id slotID 141856ea928SPeter Avalos #define device_error ulDeviceError 142856ea928SPeter Avalos 143856ea928SPeter Avalos #define ck_object_handle_t CK_OBJECT_HANDLE 144856ea928SPeter Avalos #define ck_object_class_t CK_OBJECT_CLASS 145856ea928SPeter Avalos #define ck_hw_feature_type_t CK_HW_FEATURE_TYPE 146856ea928SPeter Avalos #define ck_key_type_t CK_KEY_TYPE 147856ea928SPeter Avalos #define ck_certificate_type_t CK_CERTIFICATE_TYPE 148856ea928SPeter Avalos #define ck_attribute_type_t CK_ATTRIBUTE_TYPE 149856ea928SPeter Avalos 150856ea928SPeter Avalos #define ck_attribute _CK_ATTRIBUTE 151856ea928SPeter Avalos #define value pValue 152856ea928SPeter Avalos #define value_len ulValueLen 153856ea928SPeter Avalos 154856ea928SPeter Avalos #define ck_date _CK_DATE 155856ea928SPeter Avalos 156856ea928SPeter Avalos #define ck_mechanism_type_t CK_MECHANISM_TYPE 157856ea928SPeter Avalos 158856ea928SPeter Avalos #define ck_mechanism _CK_MECHANISM 159856ea928SPeter Avalos #define parameter pParameter 160856ea928SPeter Avalos #define parameter_len ulParameterLen 161856ea928SPeter Avalos 162856ea928SPeter Avalos #define ck_mechanism_info _CK_MECHANISM_INFO 163856ea928SPeter Avalos #define min_key_size ulMinKeySize 164856ea928SPeter Avalos #define max_key_size ulMaxKeySize 165856ea928SPeter Avalos 166856ea928SPeter Avalos #define ck_rv_t CK_RV 167856ea928SPeter Avalos #define ck_notify_t CK_NOTIFY 168856ea928SPeter Avalos 169856ea928SPeter Avalos #define ck_function_list _CK_FUNCTION_LIST 170856ea928SPeter Avalos 171856ea928SPeter Avalos #define ck_createmutex_t CK_CREATEMUTEX 172856ea928SPeter Avalos #define ck_destroymutex_t CK_DESTROYMUTEX 173856ea928SPeter Avalos #define ck_lockmutex_t CK_LOCKMUTEX 174856ea928SPeter Avalos #define ck_unlockmutex_t CK_UNLOCKMUTEX 175856ea928SPeter Avalos 176856ea928SPeter Avalos #define ck_c_initialize_args _CK_C_INITIALIZE_ARGS 177856ea928SPeter Avalos #define create_mutex CreateMutex 178856ea928SPeter Avalos #define destroy_mutex DestroyMutex 179856ea928SPeter Avalos #define lock_mutex LockMutex 180856ea928SPeter Avalos #define unlock_mutex UnlockMutex 181856ea928SPeter Avalos #define reserved pReserved 182856ea928SPeter Avalos 183856ea928SPeter Avalos #endif /* CRYPTOKI_COMPAT */ 184856ea928SPeter Avalos 185856ea928SPeter Avalos 186856ea928SPeter Avalos 187856ea928SPeter Avalos typedef unsigned long ck_flags_t; 188856ea928SPeter Avalos 189856ea928SPeter Avalos struct ck_version 190856ea928SPeter Avalos { 191856ea928SPeter Avalos unsigned char major; 192856ea928SPeter Avalos unsigned char minor; 193856ea928SPeter Avalos }; 194856ea928SPeter Avalos 195856ea928SPeter Avalos 196856ea928SPeter Avalos struct ck_info 197856ea928SPeter Avalos { 198856ea928SPeter Avalos struct ck_version cryptoki_version; 199856ea928SPeter Avalos unsigned char manufacturer_id[32]; 200856ea928SPeter Avalos ck_flags_t flags; 201856ea928SPeter Avalos unsigned char library_description[32]; 202856ea928SPeter Avalos struct ck_version library_version; 203856ea928SPeter Avalos }; 204856ea928SPeter Avalos 205856ea928SPeter Avalos 206856ea928SPeter Avalos typedef unsigned long ck_notification_t; 207856ea928SPeter Avalos 208856ea928SPeter Avalos #define CKN_SURRENDER (0) 209856ea928SPeter Avalos 210856ea928SPeter Avalos 211856ea928SPeter Avalos typedef unsigned long ck_slot_id_t; 212856ea928SPeter Avalos 213856ea928SPeter Avalos 214856ea928SPeter Avalos struct ck_slot_info 215856ea928SPeter Avalos { 216856ea928SPeter Avalos unsigned char slot_description[64]; 217856ea928SPeter Avalos unsigned char manufacturer_id[32]; 218856ea928SPeter Avalos ck_flags_t flags; 219856ea928SPeter Avalos struct ck_version hardware_version; 220856ea928SPeter Avalos struct ck_version firmware_version; 221856ea928SPeter Avalos }; 222856ea928SPeter Avalos 223856ea928SPeter Avalos 224856ea928SPeter Avalos #define CKF_TOKEN_PRESENT (1 << 0) 225856ea928SPeter Avalos #define CKF_REMOVABLE_DEVICE (1 << 1) 226856ea928SPeter Avalos #define CKF_HW_SLOT (1 << 2) 227856ea928SPeter Avalos #define CKF_ARRAY_ATTRIBUTE (1 << 30) 228856ea928SPeter Avalos 229856ea928SPeter Avalos 230856ea928SPeter Avalos struct ck_token_info 231856ea928SPeter Avalos { 232856ea928SPeter Avalos unsigned char label[32]; 233856ea928SPeter Avalos unsigned char manufacturer_id[32]; 234856ea928SPeter Avalos unsigned char model[16]; 235856ea928SPeter Avalos unsigned char serial_number[16]; 236856ea928SPeter Avalos ck_flags_t flags; 237856ea928SPeter Avalos unsigned long max_session_count; 238856ea928SPeter Avalos unsigned long session_count; 239856ea928SPeter Avalos unsigned long max_rw_session_count; 240856ea928SPeter Avalos unsigned long rw_session_count; 241856ea928SPeter Avalos unsigned long max_pin_len; 242856ea928SPeter Avalos unsigned long min_pin_len; 243856ea928SPeter Avalos unsigned long total_public_memory; 244856ea928SPeter Avalos unsigned long free_public_memory; 245856ea928SPeter Avalos unsigned long total_private_memory; 246856ea928SPeter Avalos unsigned long free_private_memory; 247856ea928SPeter Avalos struct ck_version hardware_version; 248856ea928SPeter Avalos struct ck_version firmware_version; 249856ea928SPeter Avalos unsigned char utc_time[16]; 250856ea928SPeter Avalos }; 251856ea928SPeter Avalos 252856ea928SPeter Avalos 253856ea928SPeter Avalos #define CKF_RNG (1 << 0) 254856ea928SPeter Avalos #define CKF_WRITE_PROTECTED (1 << 1) 255856ea928SPeter Avalos #define CKF_LOGIN_REQUIRED (1 << 2) 256856ea928SPeter Avalos #define CKF_USER_PIN_INITIALIZED (1 << 3) 257856ea928SPeter Avalos #define CKF_RESTORE_KEY_NOT_NEEDED (1 << 5) 258856ea928SPeter Avalos #define CKF_CLOCK_ON_TOKEN (1 << 6) 259856ea928SPeter Avalos #define CKF_PROTECTED_AUTHENTICATION_PATH (1 << 8) 260856ea928SPeter Avalos #define CKF_DUAL_CRYPTO_OPERATIONS (1 << 9) 261856ea928SPeter Avalos #define CKF_TOKEN_INITIALIZED (1 << 10) 262856ea928SPeter Avalos #define CKF_SECONDARY_AUTHENTICATION (1 << 11) 263856ea928SPeter Avalos #define CKF_USER_PIN_COUNT_LOW (1 << 16) 264856ea928SPeter Avalos #define CKF_USER_PIN_FINAL_TRY (1 << 17) 265856ea928SPeter Avalos #define CKF_USER_PIN_LOCKED (1 << 18) 266856ea928SPeter Avalos #define CKF_USER_PIN_TO_BE_CHANGED (1 << 19) 267856ea928SPeter Avalos #define CKF_SO_PIN_COUNT_LOW (1 << 20) 268856ea928SPeter Avalos #define CKF_SO_PIN_FINAL_TRY (1 << 21) 269856ea928SPeter Avalos #define CKF_SO_PIN_LOCKED (1 << 22) 270856ea928SPeter Avalos #define CKF_SO_PIN_TO_BE_CHANGED (1 << 23) 271856ea928SPeter Avalos 272856ea928SPeter Avalos #define CK_UNAVAILABLE_INFORMATION ((unsigned long) -1) 273856ea928SPeter Avalos #define CK_EFFECTIVELY_INFINITE (0) 274856ea928SPeter Avalos 275856ea928SPeter Avalos 276856ea928SPeter Avalos typedef unsigned long ck_session_handle_t; 277856ea928SPeter Avalos 278856ea928SPeter Avalos #define CK_INVALID_HANDLE (0) 279856ea928SPeter Avalos 280856ea928SPeter Avalos 281856ea928SPeter Avalos typedef unsigned long ck_user_type_t; 282856ea928SPeter Avalos 283856ea928SPeter Avalos #define CKU_SO (0) 284856ea928SPeter Avalos #define CKU_USER (1) 285856ea928SPeter Avalos #define CKU_CONTEXT_SPECIFIC (2) 286856ea928SPeter Avalos 287856ea928SPeter Avalos 288856ea928SPeter Avalos typedef unsigned long ck_state_t; 289856ea928SPeter Avalos 290856ea928SPeter Avalos #define CKS_RO_PUBLIC_SESSION (0) 291856ea928SPeter Avalos #define CKS_RO_USER_FUNCTIONS (1) 292856ea928SPeter Avalos #define CKS_RW_PUBLIC_SESSION (2) 293856ea928SPeter Avalos #define CKS_RW_USER_FUNCTIONS (3) 294856ea928SPeter Avalos #define CKS_RW_SO_FUNCTIONS (4) 295856ea928SPeter Avalos 296856ea928SPeter Avalos 297856ea928SPeter Avalos struct ck_session_info 298856ea928SPeter Avalos { 299856ea928SPeter Avalos ck_slot_id_t slot_id; 300856ea928SPeter Avalos ck_state_t state; 301856ea928SPeter Avalos ck_flags_t flags; 302856ea928SPeter Avalos unsigned long device_error; 303856ea928SPeter Avalos }; 304856ea928SPeter Avalos 305856ea928SPeter Avalos #define CKF_RW_SESSION (1 << 1) 306856ea928SPeter Avalos #define CKF_SERIAL_SESSION (1 << 2) 307856ea928SPeter Avalos 308856ea928SPeter Avalos 309856ea928SPeter Avalos typedef unsigned long ck_object_handle_t; 310856ea928SPeter Avalos 311856ea928SPeter Avalos 312856ea928SPeter Avalos typedef unsigned long ck_object_class_t; 313856ea928SPeter Avalos 314856ea928SPeter Avalos #define CKO_DATA (0) 315856ea928SPeter Avalos #define CKO_CERTIFICATE (1) 316856ea928SPeter Avalos #define CKO_PUBLIC_KEY (2) 317856ea928SPeter Avalos #define CKO_PRIVATE_KEY (3) 318856ea928SPeter Avalos #define CKO_SECRET_KEY (4) 319856ea928SPeter Avalos #define CKO_HW_FEATURE (5) 320856ea928SPeter Avalos #define CKO_DOMAIN_PARAMETERS (6) 321856ea928SPeter Avalos #define CKO_MECHANISM (7) 322*36e94dc5SPeter Avalos #define CKO_VENDOR_DEFINED (1U << 31) 323856ea928SPeter Avalos 324856ea928SPeter Avalos 325856ea928SPeter Avalos typedef unsigned long ck_hw_feature_type_t; 326856ea928SPeter Avalos 327856ea928SPeter Avalos #define CKH_MONOTONIC_COUNTER (1) 328856ea928SPeter Avalos #define CKH_CLOCK (2) 329856ea928SPeter Avalos #define CKH_USER_INTERFACE (3) 330*36e94dc5SPeter Avalos #define CKH_VENDOR_DEFINED (1U << 31) 331856ea928SPeter Avalos 332856ea928SPeter Avalos 333856ea928SPeter Avalos typedef unsigned long ck_key_type_t; 334856ea928SPeter Avalos 335856ea928SPeter Avalos #define CKK_RSA (0) 336856ea928SPeter Avalos #define CKK_DSA (1) 337856ea928SPeter Avalos #define CKK_DH (2) 338856ea928SPeter Avalos #define CKK_ECDSA (3) 339856ea928SPeter Avalos #define CKK_EC (3) 340856ea928SPeter Avalos #define CKK_X9_42_DH (4) 341856ea928SPeter Avalos #define CKK_KEA (5) 342856ea928SPeter Avalos #define CKK_GENERIC_SECRET (0x10) 343856ea928SPeter Avalos #define CKK_RC2 (0x11) 344856ea928SPeter Avalos #define CKK_RC4 (0x12) 345856ea928SPeter Avalos #define CKK_DES (0x13) 346856ea928SPeter Avalos #define CKK_DES2 (0x14) 347856ea928SPeter Avalos #define CKK_DES3 (0x15) 348856ea928SPeter Avalos #define CKK_CAST (0x16) 349856ea928SPeter Avalos #define CKK_CAST3 (0x17) 350856ea928SPeter Avalos #define CKK_CAST128 (0x18) 351856ea928SPeter Avalos #define CKK_RC5 (0x19) 352856ea928SPeter Avalos #define CKK_IDEA (0x1a) 353856ea928SPeter Avalos #define CKK_SKIPJACK (0x1b) 354856ea928SPeter Avalos #define CKK_BATON (0x1c) 355856ea928SPeter Avalos #define CKK_JUNIPER (0x1d) 356856ea928SPeter Avalos #define CKK_CDMF (0x1e) 357856ea928SPeter Avalos #define CKK_AES (0x1f) 358856ea928SPeter Avalos #define CKK_BLOWFISH (0x20) 359856ea928SPeter Avalos #define CKK_TWOFISH (0x21) 360*36e94dc5SPeter Avalos #define CKK_VENDOR_DEFINED (1U << 31) 361856ea928SPeter Avalos 362856ea928SPeter Avalos typedef unsigned long ck_certificate_type_t; 363856ea928SPeter Avalos 364856ea928SPeter Avalos #define CKC_X_509 (0) 365856ea928SPeter Avalos #define CKC_X_509_ATTR_CERT (1) 366856ea928SPeter Avalos #define CKC_WTLS (2) 367*36e94dc5SPeter Avalos #define CKC_VENDOR_DEFINED (1U << 31) 368856ea928SPeter Avalos 369856ea928SPeter Avalos 370856ea928SPeter Avalos typedef unsigned long ck_attribute_type_t; 371856ea928SPeter Avalos 372856ea928SPeter Avalos #define CKA_CLASS (0) 373856ea928SPeter Avalos #define CKA_TOKEN (1) 374856ea928SPeter Avalos #define CKA_PRIVATE (2) 375856ea928SPeter Avalos #define CKA_LABEL (3) 376856ea928SPeter Avalos #define CKA_APPLICATION (0x10) 377856ea928SPeter Avalos #define CKA_VALUE (0x11) 378856ea928SPeter Avalos #define CKA_OBJECT_ID (0x12) 379856ea928SPeter Avalos #define CKA_CERTIFICATE_TYPE (0x80) 380856ea928SPeter Avalos #define CKA_ISSUER (0x81) 381856ea928SPeter Avalos #define CKA_SERIAL_NUMBER (0x82) 382856ea928SPeter Avalos #define CKA_AC_ISSUER (0x83) 383856ea928SPeter Avalos #define CKA_OWNER (0x84) 384856ea928SPeter Avalos #define CKA_ATTR_TYPES (0x85) 385856ea928SPeter Avalos #define CKA_TRUSTED (0x86) 386856ea928SPeter Avalos #define CKA_CERTIFICATE_CATEGORY (0x87) 387856ea928SPeter Avalos #define CKA_JAVA_MIDP_SECURITY_DOMAIN (0x88) 388856ea928SPeter Avalos #define CKA_URL (0x89) 389856ea928SPeter Avalos #define CKA_HASH_OF_SUBJECT_PUBLIC_KEY (0x8a) 390856ea928SPeter Avalos #define CKA_HASH_OF_ISSUER_PUBLIC_KEY (0x8b) 391856ea928SPeter Avalos #define CKA_CHECK_VALUE (0x90) 392856ea928SPeter Avalos #define CKA_KEY_TYPE (0x100) 393856ea928SPeter Avalos #define CKA_SUBJECT (0x101) 394856ea928SPeter Avalos #define CKA_ID (0x102) 395856ea928SPeter Avalos #define CKA_SENSITIVE (0x103) 396856ea928SPeter Avalos #define CKA_ENCRYPT (0x104) 397856ea928SPeter Avalos #define CKA_DECRYPT (0x105) 398856ea928SPeter Avalos #define CKA_WRAP (0x106) 399856ea928SPeter Avalos #define CKA_UNWRAP (0x107) 400856ea928SPeter Avalos #define CKA_SIGN (0x108) 401856ea928SPeter Avalos #define CKA_SIGN_RECOVER (0x109) 402856ea928SPeter Avalos #define CKA_VERIFY (0x10a) 403856ea928SPeter Avalos #define CKA_VERIFY_RECOVER (0x10b) 404856ea928SPeter Avalos #define CKA_DERIVE (0x10c) 405856ea928SPeter Avalos #define CKA_START_DATE (0x110) 406856ea928SPeter Avalos #define CKA_END_DATE (0x111) 407856ea928SPeter Avalos #define CKA_MODULUS (0x120) 408856ea928SPeter Avalos #define CKA_MODULUS_BITS (0x121) 409856ea928SPeter Avalos #define CKA_PUBLIC_EXPONENT (0x122) 410856ea928SPeter Avalos #define CKA_PRIVATE_EXPONENT (0x123) 411856ea928SPeter Avalos #define CKA_PRIME_1 (0x124) 412856ea928SPeter Avalos #define CKA_PRIME_2 (0x125) 413856ea928SPeter Avalos #define CKA_EXPONENT_1 (0x126) 414856ea928SPeter Avalos #define CKA_EXPONENT_2 (0x127) 415856ea928SPeter Avalos #define CKA_COEFFICIENT (0x128) 416856ea928SPeter Avalos #define CKA_PRIME (0x130) 417856ea928SPeter Avalos #define CKA_SUBPRIME (0x131) 418856ea928SPeter Avalos #define CKA_BASE (0x132) 419856ea928SPeter Avalos #define CKA_PRIME_BITS (0x133) 420856ea928SPeter Avalos #define CKA_SUB_PRIME_BITS (0x134) 421856ea928SPeter Avalos #define CKA_VALUE_BITS (0x160) 422856ea928SPeter Avalos #define CKA_VALUE_LEN (0x161) 423856ea928SPeter Avalos #define CKA_EXTRACTABLE (0x162) 424856ea928SPeter Avalos #define CKA_LOCAL (0x163) 425856ea928SPeter Avalos #define CKA_NEVER_EXTRACTABLE (0x164) 426856ea928SPeter Avalos #define CKA_ALWAYS_SENSITIVE (0x165) 427856ea928SPeter Avalos #define CKA_KEY_GEN_MECHANISM (0x166) 428856ea928SPeter Avalos #define CKA_MODIFIABLE (0x170) 429856ea928SPeter Avalos #define CKA_ECDSA_PARAMS (0x180) 430856ea928SPeter Avalos #define CKA_EC_PARAMS (0x180) 431856ea928SPeter Avalos #define CKA_EC_POINT (0x181) 432856ea928SPeter Avalos #define CKA_SECONDARY_AUTH (0x200) 433856ea928SPeter Avalos #define CKA_AUTH_PIN_FLAGS (0x201) 434856ea928SPeter Avalos #define CKA_ALWAYS_AUTHENTICATE (0x202) 435856ea928SPeter Avalos #define CKA_WRAP_WITH_TRUSTED (0x210) 436856ea928SPeter Avalos #define CKA_HW_FEATURE_TYPE (0x300) 437856ea928SPeter Avalos #define CKA_RESET_ON_INIT (0x301) 438856ea928SPeter Avalos #define CKA_HAS_RESET (0x302) 439856ea928SPeter Avalos #define CKA_PIXEL_X (0x400) 440856ea928SPeter Avalos #define CKA_PIXEL_Y (0x401) 441856ea928SPeter Avalos #define CKA_RESOLUTION (0x402) 442856ea928SPeter Avalos #define CKA_CHAR_ROWS (0x403) 443856ea928SPeter Avalos #define CKA_CHAR_COLUMNS (0x404) 444856ea928SPeter Avalos #define CKA_COLOR (0x405) 445856ea928SPeter Avalos #define CKA_BITS_PER_PIXEL (0x406) 446856ea928SPeter Avalos #define CKA_CHAR_SETS (0x480) 447856ea928SPeter Avalos #define CKA_ENCODING_METHODS (0x481) 448856ea928SPeter Avalos #define CKA_MIME_TYPES (0x482) 449856ea928SPeter Avalos #define CKA_MECHANISM_TYPE (0x500) 450856ea928SPeter Avalos #define CKA_REQUIRED_CMS_ATTRIBUTES (0x501) 451856ea928SPeter Avalos #define CKA_DEFAULT_CMS_ATTRIBUTES (0x502) 452856ea928SPeter Avalos #define CKA_SUPPORTED_CMS_ATTRIBUTES (0x503) 453856ea928SPeter Avalos #define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x211) 454856ea928SPeter Avalos #define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x212) 455856ea928SPeter Avalos #define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE | 0x600) 456*36e94dc5SPeter Avalos #define CKA_VENDOR_DEFINED (1U << 31) 457856ea928SPeter Avalos 458856ea928SPeter Avalos 459856ea928SPeter Avalos struct ck_attribute 460856ea928SPeter Avalos { 461856ea928SPeter Avalos ck_attribute_type_t type; 462856ea928SPeter Avalos void *value; 463856ea928SPeter Avalos unsigned long value_len; 464856ea928SPeter Avalos }; 465856ea928SPeter Avalos 466856ea928SPeter Avalos 467856ea928SPeter Avalos struct ck_date 468856ea928SPeter Avalos { 469856ea928SPeter Avalos unsigned char year[4]; 470856ea928SPeter Avalos unsigned char month[2]; 471856ea928SPeter Avalos unsigned char day[2]; 472856ea928SPeter Avalos }; 473856ea928SPeter Avalos 474856ea928SPeter Avalos 475856ea928SPeter Avalos typedef unsigned long ck_mechanism_type_t; 476856ea928SPeter Avalos 477856ea928SPeter Avalos #define CKM_RSA_PKCS_KEY_PAIR_GEN (0) 478856ea928SPeter Avalos #define CKM_RSA_PKCS (1) 479856ea928SPeter Avalos #define CKM_RSA_9796 (2) 480856ea928SPeter Avalos #define CKM_RSA_X_509 (3) 481856ea928SPeter Avalos #define CKM_MD2_RSA_PKCS (4) 482856ea928SPeter Avalos #define CKM_MD5_RSA_PKCS (5) 483856ea928SPeter Avalos #define CKM_SHA1_RSA_PKCS (6) 484856ea928SPeter Avalos #define CKM_RIPEMD128_RSA_PKCS (7) 485856ea928SPeter Avalos #define CKM_RIPEMD160_RSA_PKCS (8) 486856ea928SPeter Avalos #define CKM_RSA_PKCS_OAEP (9) 487856ea928SPeter Avalos #define CKM_RSA_X9_31_KEY_PAIR_GEN (0xa) 488856ea928SPeter Avalos #define CKM_RSA_X9_31 (0xb) 489856ea928SPeter Avalos #define CKM_SHA1_RSA_X9_31 (0xc) 490856ea928SPeter Avalos #define CKM_RSA_PKCS_PSS (0xd) 491856ea928SPeter Avalos #define CKM_SHA1_RSA_PKCS_PSS (0xe) 492856ea928SPeter Avalos #define CKM_DSA_KEY_PAIR_GEN (0x10) 493856ea928SPeter Avalos #define CKM_DSA (0x11) 494856ea928SPeter Avalos #define CKM_DSA_SHA1 (0x12) 495856ea928SPeter Avalos #define CKM_DH_PKCS_KEY_PAIR_GEN (0x20) 496856ea928SPeter Avalos #define CKM_DH_PKCS_DERIVE (0x21) 497856ea928SPeter Avalos #define CKM_X9_42_DH_KEY_PAIR_GEN (0x30) 498856ea928SPeter Avalos #define CKM_X9_42_DH_DERIVE (0x31) 499856ea928SPeter Avalos #define CKM_X9_42_DH_HYBRID_DERIVE (0x32) 500856ea928SPeter Avalos #define CKM_X9_42_MQV_DERIVE (0x33) 501856ea928SPeter Avalos #define CKM_SHA256_RSA_PKCS (0x40) 502856ea928SPeter Avalos #define CKM_SHA384_RSA_PKCS (0x41) 503856ea928SPeter Avalos #define CKM_SHA512_RSA_PKCS (0x42) 504856ea928SPeter Avalos #define CKM_SHA256_RSA_PKCS_PSS (0x43) 505856ea928SPeter Avalos #define CKM_SHA384_RSA_PKCS_PSS (0x44) 506856ea928SPeter Avalos #define CKM_SHA512_RSA_PKCS_PSS (0x45) 507856ea928SPeter Avalos #define CKM_RC2_KEY_GEN (0x100) 508856ea928SPeter Avalos #define CKM_RC2_ECB (0x101) 509856ea928SPeter Avalos #define CKM_RC2_CBC (0x102) 510856ea928SPeter Avalos #define CKM_RC2_MAC (0x103) 511856ea928SPeter Avalos #define CKM_RC2_MAC_GENERAL (0x104) 512856ea928SPeter Avalos #define CKM_RC2_CBC_PAD (0x105) 513856ea928SPeter Avalos #define CKM_RC4_KEY_GEN (0x110) 514856ea928SPeter Avalos #define CKM_RC4 (0x111) 515856ea928SPeter Avalos #define CKM_DES_KEY_GEN (0x120) 516856ea928SPeter Avalos #define CKM_DES_ECB (0x121) 517856ea928SPeter Avalos #define CKM_DES_CBC (0x122) 518856ea928SPeter Avalos #define CKM_DES_MAC (0x123) 519856ea928SPeter Avalos #define CKM_DES_MAC_GENERAL (0x124) 520856ea928SPeter Avalos #define CKM_DES_CBC_PAD (0x125) 521856ea928SPeter Avalos #define CKM_DES2_KEY_GEN (0x130) 522856ea928SPeter Avalos #define CKM_DES3_KEY_GEN (0x131) 523856ea928SPeter Avalos #define CKM_DES3_ECB (0x132) 524856ea928SPeter Avalos #define CKM_DES3_CBC (0x133) 525856ea928SPeter Avalos #define CKM_DES3_MAC (0x134) 526856ea928SPeter Avalos #define CKM_DES3_MAC_GENERAL (0x135) 527856ea928SPeter Avalos #define CKM_DES3_CBC_PAD (0x136) 528856ea928SPeter Avalos #define CKM_CDMF_KEY_GEN (0x140) 529856ea928SPeter Avalos #define CKM_CDMF_ECB (0x141) 530856ea928SPeter Avalos #define CKM_CDMF_CBC (0x142) 531856ea928SPeter Avalos #define CKM_CDMF_MAC (0x143) 532856ea928SPeter Avalos #define CKM_CDMF_MAC_GENERAL (0x144) 533856ea928SPeter Avalos #define CKM_CDMF_CBC_PAD (0x145) 534856ea928SPeter Avalos #define CKM_MD2 (0x200) 535856ea928SPeter Avalos #define CKM_MD2_HMAC (0x201) 536856ea928SPeter Avalos #define CKM_MD2_HMAC_GENERAL (0x202) 537856ea928SPeter Avalos #define CKM_MD5 (0x210) 538856ea928SPeter Avalos #define CKM_MD5_HMAC (0x211) 539856ea928SPeter Avalos #define CKM_MD5_HMAC_GENERAL (0x212) 540856ea928SPeter Avalos #define CKM_SHA_1 (0x220) 541856ea928SPeter Avalos #define CKM_SHA_1_HMAC (0x221) 542856ea928SPeter Avalos #define CKM_SHA_1_HMAC_GENERAL (0x222) 543856ea928SPeter Avalos #define CKM_RIPEMD128 (0x230) 544856ea928SPeter Avalos #define CKM_RIPEMD128_HMAC (0x231) 545856ea928SPeter Avalos #define CKM_RIPEMD128_HMAC_GENERAL (0x232) 546856ea928SPeter Avalos #define CKM_RIPEMD160 (0x240) 547856ea928SPeter Avalos #define CKM_RIPEMD160_HMAC (0x241) 548856ea928SPeter Avalos #define CKM_RIPEMD160_HMAC_GENERAL (0x242) 549856ea928SPeter Avalos #define CKM_SHA256 (0x250) 550856ea928SPeter Avalos #define CKM_SHA256_HMAC (0x251) 551856ea928SPeter Avalos #define CKM_SHA256_HMAC_GENERAL (0x252) 552856ea928SPeter Avalos #define CKM_SHA384 (0x260) 553856ea928SPeter Avalos #define CKM_SHA384_HMAC (0x261) 554856ea928SPeter Avalos #define CKM_SHA384_HMAC_GENERAL (0x262) 555856ea928SPeter Avalos #define CKM_SHA512 (0x270) 556856ea928SPeter Avalos #define CKM_SHA512_HMAC (0x271) 557856ea928SPeter Avalos #define CKM_SHA512_HMAC_GENERAL (0x272) 558856ea928SPeter Avalos #define CKM_CAST_KEY_GEN (0x300) 559856ea928SPeter Avalos #define CKM_CAST_ECB (0x301) 560856ea928SPeter Avalos #define CKM_CAST_CBC (0x302) 561856ea928SPeter Avalos #define CKM_CAST_MAC (0x303) 562856ea928SPeter Avalos #define CKM_CAST_MAC_GENERAL (0x304) 563856ea928SPeter Avalos #define CKM_CAST_CBC_PAD (0x305) 564856ea928SPeter Avalos #define CKM_CAST3_KEY_GEN (0x310) 565856ea928SPeter Avalos #define CKM_CAST3_ECB (0x311) 566856ea928SPeter Avalos #define CKM_CAST3_CBC (0x312) 567856ea928SPeter Avalos #define CKM_CAST3_MAC (0x313) 568856ea928SPeter Avalos #define CKM_CAST3_MAC_GENERAL (0x314) 569856ea928SPeter Avalos #define CKM_CAST3_CBC_PAD (0x315) 570856ea928SPeter Avalos #define CKM_CAST5_KEY_GEN (0x320) 571856ea928SPeter Avalos #define CKM_CAST128_KEY_GEN (0x320) 572856ea928SPeter Avalos #define CKM_CAST5_ECB (0x321) 573856ea928SPeter Avalos #define CKM_CAST128_ECB (0x321) 574856ea928SPeter Avalos #define CKM_CAST5_CBC (0x322) 575856ea928SPeter Avalos #define CKM_CAST128_CBC (0x322) 576856ea928SPeter Avalos #define CKM_CAST5_MAC (0x323) 577856ea928SPeter Avalos #define CKM_CAST128_MAC (0x323) 578856ea928SPeter Avalos #define CKM_CAST5_MAC_GENERAL (0x324) 579856ea928SPeter Avalos #define CKM_CAST128_MAC_GENERAL (0x324) 580856ea928SPeter Avalos #define CKM_CAST5_CBC_PAD (0x325) 581856ea928SPeter Avalos #define CKM_CAST128_CBC_PAD (0x325) 582856ea928SPeter Avalos #define CKM_RC5_KEY_GEN (0x330) 583856ea928SPeter Avalos #define CKM_RC5_ECB (0x331) 584856ea928SPeter Avalos #define CKM_RC5_CBC (0x332) 585856ea928SPeter Avalos #define CKM_RC5_MAC (0x333) 586856ea928SPeter Avalos #define CKM_RC5_MAC_GENERAL (0x334) 587856ea928SPeter Avalos #define CKM_RC5_CBC_PAD (0x335) 588856ea928SPeter Avalos #define CKM_IDEA_KEY_GEN (0x340) 589856ea928SPeter Avalos #define CKM_IDEA_ECB (0x341) 590856ea928SPeter Avalos #define CKM_IDEA_CBC (0x342) 591856ea928SPeter Avalos #define CKM_IDEA_MAC (0x343) 592856ea928SPeter Avalos #define CKM_IDEA_MAC_GENERAL (0x344) 593856ea928SPeter Avalos #define CKM_IDEA_CBC_PAD (0x345) 594856ea928SPeter Avalos #define CKM_GENERIC_SECRET_KEY_GEN (0x350) 595856ea928SPeter Avalos #define CKM_CONCATENATE_BASE_AND_KEY (0x360) 596856ea928SPeter Avalos #define CKM_CONCATENATE_BASE_AND_DATA (0x362) 597856ea928SPeter Avalos #define CKM_CONCATENATE_DATA_AND_BASE (0x363) 598856ea928SPeter Avalos #define CKM_XOR_BASE_AND_DATA (0x364) 599856ea928SPeter Avalos #define CKM_EXTRACT_KEY_FROM_KEY (0x365) 600856ea928SPeter Avalos #define CKM_SSL3_PRE_MASTER_KEY_GEN (0x370) 601856ea928SPeter Avalos #define CKM_SSL3_MASTER_KEY_DERIVE (0x371) 602856ea928SPeter Avalos #define CKM_SSL3_KEY_AND_MAC_DERIVE (0x372) 603856ea928SPeter Avalos #define CKM_SSL3_MASTER_KEY_DERIVE_DH (0x373) 604856ea928SPeter Avalos #define CKM_TLS_PRE_MASTER_KEY_GEN (0x374) 605856ea928SPeter Avalos #define CKM_TLS_MASTER_KEY_DERIVE (0x375) 606856ea928SPeter Avalos #define CKM_TLS_KEY_AND_MAC_DERIVE (0x376) 607856ea928SPeter Avalos #define CKM_TLS_MASTER_KEY_DERIVE_DH (0x377) 608856ea928SPeter Avalos #define CKM_SSL3_MD5_MAC (0x380) 609856ea928SPeter Avalos #define CKM_SSL3_SHA1_MAC (0x381) 610856ea928SPeter Avalos #define CKM_MD5_KEY_DERIVATION (0x390) 611856ea928SPeter Avalos #define CKM_MD2_KEY_DERIVATION (0x391) 612856ea928SPeter Avalos #define CKM_SHA1_KEY_DERIVATION (0x392) 613856ea928SPeter Avalos #define CKM_PBE_MD2_DES_CBC (0x3a0) 614856ea928SPeter Avalos #define CKM_PBE_MD5_DES_CBC (0x3a1) 615856ea928SPeter Avalos #define CKM_PBE_MD5_CAST_CBC (0x3a2) 616856ea928SPeter Avalos #define CKM_PBE_MD5_CAST3_CBC (0x3a3) 617856ea928SPeter Avalos #define CKM_PBE_MD5_CAST5_CBC (0x3a4) 618856ea928SPeter Avalos #define CKM_PBE_MD5_CAST128_CBC (0x3a4) 619856ea928SPeter Avalos #define CKM_PBE_SHA1_CAST5_CBC (0x3a5) 620856ea928SPeter Avalos #define CKM_PBE_SHA1_CAST128_CBC (0x3a5) 621856ea928SPeter Avalos #define CKM_PBE_SHA1_RC4_128 (0x3a6) 622856ea928SPeter Avalos #define CKM_PBE_SHA1_RC4_40 (0x3a7) 623856ea928SPeter Avalos #define CKM_PBE_SHA1_DES3_EDE_CBC (0x3a8) 624856ea928SPeter Avalos #define CKM_PBE_SHA1_DES2_EDE_CBC (0x3a9) 625856ea928SPeter Avalos #define CKM_PBE_SHA1_RC2_128_CBC (0x3aa) 626856ea928SPeter Avalos #define CKM_PBE_SHA1_RC2_40_CBC (0x3ab) 627856ea928SPeter Avalos #define CKM_PKCS5_PBKD2 (0x3b0) 628856ea928SPeter Avalos #define CKM_PBA_SHA1_WITH_SHA1_HMAC (0x3c0) 629856ea928SPeter Avalos #define CKM_KEY_WRAP_LYNKS (0x400) 630856ea928SPeter Avalos #define CKM_KEY_WRAP_SET_OAEP (0x401) 631856ea928SPeter Avalos #define CKM_SKIPJACK_KEY_GEN (0x1000) 632856ea928SPeter Avalos #define CKM_SKIPJACK_ECB64 (0x1001) 633856ea928SPeter Avalos #define CKM_SKIPJACK_CBC64 (0x1002) 634856ea928SPeter Avalos #define CKM_SKIPJACK_OFB64 (0x1003) 635856ea928SPeter Avalos #define CKM_SKIPJACK_CFB64 (0x1004) 636856ea928SPeter Avalos #define CKM_SKIPJACK_CFB32 (0x1005) 637856ea928SPeter Avalos #define CKM_SKIPJACK_CFB16 (0x1006) 638856ea928SPeter Avalos #define CKM_SKIPJACK_CFB8 (0x1007) 639856ea928SPeter Avalos #define CKM_SKIPJACK_WRAP (0x1008) 640856ea928SPeter Avalos #define CKM_SKIPJACK_PRIVATE_WRAP (0x1009) 641856ea928SPeter Avalos #define CKM_SKIPJACK_RELAYX (0x100a) 642856ea928SPeter Avalos #define CKM_KEA_KEY_PAIR_GEN (0x1010) 643856ea928SPeter Avalos #define CKM_KEA_KEY_DERIVE (0x1011) 644856ea928SPeter Avalos #define CKM_FORTEZZA_TIMESTAMP (0x1020) 645856ea928SPeter Avalos #define CKM_BATON_KEY_GEN (0x1030) 646856ea928SPeter Avalos #define CKM_BATON_ECB128 (0x1031) 647856ea928SPeter Avalos #define CKM_BATON_ECB96 (0x1032) 648856ea928SPeter Avalos #define CKM_BATON_CBC128 (0x1033) 649856ea928SPeter Avalos #define CKM_BATON_COUNTER (0x1034) 650856ea928SPeter Avalos #define CKM_BATON_SHUFFLE (0x1035) 651856ea928SPeter Avalos #define CKM_BATON_WRAP (0x1036) 652856ea928SPeter Avalos #define CKM_ECDSA_KEY_PAIR_GEN (0x1040) 653856ea928SPeter Avalos #define CKM_EC_KEY_PAIR_GEN (0x1040) 654856ea928SPeter Avalos #define CKM_ECDSA (0x1041) 655856ea928SPeter Avalos #define CKM_ECDSA_SHA1 (0x1042) 656856ea928SPeter Avalos #define CKM_ECDH1_DERIVE (0x1050) 657856ea928SPeter Avalos #define CKM_ECDH1_COFACTOR_DERIVE (0x1051) 658856ea928SPeter Avalos #define CKM_ECMQV_DERIVE (0x1052) 659856ea928SPeter Avalos #define CKM_JUNIPER_KEY_GEN (0x1060) 660856ea928SPeter Avalos #define CKM_JUNIPER_ECB128 (0x1061) 661856ea928SPeter Avalos #define CKM_JUNIPER_CBC128 (0x1062) 662856ea928SPeter Avalos #define CKM_JUNIPER_COUNTER (0x1063) 663856ea928SPeter Avalos #define CKM_JUNIPER_SHUFFLE (0x1064) 664856ea928SPeter Avalos #define CKM_JUNIPER_WRAP (0x1065) 665856ea928SPeter Avalos #define CKM_FASTHASH (0x1070) 666856ea928SPeter Avalos #define CKM_AES_KEY_GEN (0x1080) 667856ea928SPeter Avalos #define CKM_AES_ECB (0x1081) 668856ea928SPeter Avalos #define CKM_AES_CBC (0x1082) 669856ea928SPeter Avalos #define CKM_AES_MAC (0x1083) 670856ea928SPeter Avalos #define CKM_AES_MAC_GENERAL (0x1084) 671856ea928SPeter Avalos #define CKM_AES_CBC_PAD (0x1085) 672856ea928SPeter Avalos #define CKM_DSA_PARAMETER_GEN (0x2000) 673856ea928SPeter Avalos #define CKM_DH_PKCS_PARAMETER_GEN (0x2001) 674856ea928SPeter Avalos #define CKM_X9_42_DH_PARAMETER_GEN (0x2002) 675*36e94dc5SPeter Avalos #define CKM_VENDOR_DEFINED (1U << 31) 676856ea928SPeter Avalos 677856ea928SPeter Avalos 678856ea928SPeter Avalos struct ck_mechanism 679856ea928SPeter Avalos { 680856ea928SPeter Avalos ck_mechanism_type_t mechanism; 681856ea928SPeter Avalos void *parameter; 682856ea928SPeter Avalos unsigned long parameter_len; 683856ea928SPeter Avalos }; 684856ea928SPeter Avalos 685856ea928SPeter Avalos 686856ea928SPeter Avalos struct ck_mechanism_info 687856ea928SPeter Avalos { 688856ea928SPeter Avalos unsigned long min_key_size; 689856ea928SPeter Avalos unsigned long max_key_size; 690856ea928SPeter Avalos ck_flags_t flags; 691856ea928SPeter Avalos }; 692856ea928SPeter Avalos 693856ea928SPeter Avalos #define CKF_HW (1 << 0) 694856ea928SPeter Avalos #define CKF_ENCRYPT (1 << 8) 695856ea928SPeter Avalos #define CKF_DECRYPT (1 << 9) 696856ea928SPeter Avalos #define CKF_DIGEST (1 << 10) 697856ea928SPeter Avalos #define CKF_SIGN (1 << 11) 698856ea928SPeter Avalos #define CKF_SIGN_RECOVER (1 << 12) 699856ea928SPeter Avalos #define CKF_VERIFY (1 << 13) 700856ea928SPeter Avalos #define CKF_VERIFY_RECOVER (1 << 14) 701856ea928SPeter Avalos #define CKF_GENERATE (1 << 15) 702856ea928SPeter Avalos #define CKF_GENERATE_KEY_PAIR (1 << 16) 703856ea928SPeter Avalos #define CKF_WRAP (1 << 17) 704856ea928SPeter Avalos #define CKF_UNWRAP (1 << 18) 705856ea928SPeter Avalos #define CKF_DERIVE (1 << 19) 706*36e94dc5SPeter Avalos #define CKF_EXTENSION (1U << 31) 707856ea928SPeter Avalos 708856ea928SPeter Avalos 709856ea928SPeter Avalos /* Flags for C_WaitForSlotEvent. */ 710856ea928SPeter Avalos #define CKF_DONT_BLOCK (1) 711856ea928SPeter Avalos 712856ea928SPeter Avalos 713856ea928SPeter Avalos typedef unsigned long ck_rv_t; 714856ea928SPeter Avalos 715856ea928SPeter Avalos 716856ea928SPeter Avalos typedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session, 717856ea928SPeter Avalos ck_notification_t event, void *application); 718856ea928SPeter Avalos 719856ea928SPeter Avalos /* Forward reference. */ 720856ea928SPeter Avalos struct ck_function_list; 721856ea928SPeter Avalos 722856ea928SPeter Avalos #define _CK_DECLARE_FUNCTION(name, args) \ 723856ea928SPeter Avalos typedef ck_rv_t (*CK_ ## name) args; \ 724856ea928SPeter Avalos ck_rv_t CK_SPEC name args 725856ea928SPeter Avalos 726856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Initialize, (void *init_args)); 727856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Finalize, (void *reserved)); 728856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info)); 729856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetFunctionList, 730856ea928SPeter Avalos (struct ck_function_list **function_list)); 731856ea928SPeter Avalos 732856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetSlotList, 733856ea928SPeter Avalos (unsigned char token_present, ck_slot_id_t *slot_list, 734856ea928SPeter Avalos unsigned long *count)); 735856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetSlotInfo, 736856ea928SPeter Avalos (ck_slot_id_t slot_id, struct ck_slot_info *info)); 737856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetTokenInfo, 738856ea928SPeter Avalos (ck_slot_id_t slot_id, struct ck_token_info *info)); 739856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_WaitForSlotEvent, 740856ea928SPeter Avalos (ck_flags_t flags, ck_slot_id_t *slot, void *reserved)); 741856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetMechanismList, 742856ea928SPeter Avalos (ck_slot_id_t slot_id, 743856ea928SPeter Avalos ck_mechanism_type_t *mechanism_list, 744856ea928SPeter Avalos unsigned long *count)); 745856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetMechanismInfo, 746856ea928SPeter Avalos (ck_slot_id_t slot_id, ck_mechanism_type_t type, 747856ea928SPeter Avalos struct ck_mechanism_info *info)); 748856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_InitToken, 749856ea928SPeter Avalos (ck_slot_id_t slot_id, unsigned char *pin, 750856ea928SPeter Avalos unsigned long pin_len, unsigned char *label)); 751856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_InitPIN, 752856ea928SPeter Avalos (ck_session_handle_t session, unsigned char *pin, 753856ea928SPeter Avalos unsigned long pin_len)); 754856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SetPIN, 755856ea928SPeter Avalos (ck_session_handle_t session, unsigned char *old_pin, 756856ea928SPeter Avalos unsigned long old_len, unsigned char *new_pin, 757856ea928SPeter Avalos unsigned long new_len)); 758856ea928SPeter Avalos 759856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_OpenSession, 760856ea928SPeter Avalos (ck_slot_id_t slot_id, ck_flags_t flags, 761856ea928SPeter Avalos void *application, ck_notify_t notify, 762856ea928SPeter Avalos ck_session_handle_t *session)); 763856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session)); 764856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id)); 765856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetSessionInfo, 766856ea928SPeter Avalos (ck_session_handle_t session, 767856ea928SPeter Avalos struct ck_session_info *info)); 768856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetOperationState, 769856ea928SPeter Avalos (ck_session_handle_t session, 770856ea928SPeter Avalos unsigned char *operation_state, 771856ea928SPeter Avalos unsigned long *operation_state_len)); 772856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SetOperationState, 773856ea928SPeter Avalos (ck_session_handle_t session, 774856ea928SPeter Avalos unsigned char *operation_state, 775856ea928SPeter Avalos unsigned long operation_state_len, 776856ea928SPeter Avalos ck_object_handle_t encryption_key, 777856ea928SPeter Avalos ck_object_handle_t authentiation_key)); 778856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Login, 779856ea928SPeter Avalos (ck_session_handle_t session, ck_user_type_t user_type, 780856ea928SPeter Avalos unsigned char *pin, unsigned long pin_len)); 781856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session)); 782856ea928SPeter Avalos 783856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CreateObject, 784856ea928SPeter Avalos (ck_session_handle_t session, 785856ea928SPeter Avalos struct ck_attribute *templ, 786856ea928SPeter Avalos unsigned long count, ck_object_handle_t *object)); 787856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CopyObject, 788856ea928SPeter Avalos (ck_session_handle_t session, ck_object_handle_t object, 789856ea928SPeter Avalos struct ck_attribute *templ, unsigned long count, 790856ea928SPeter Avalos ck_object_handle_t *new_object)); 791856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DestroyObject, 792856ea928SPeter Avalos (ck_session_handle_t session, 793856ea928SPeter Avalos ck_object_handle_t object)); 794856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetObjectSize, 795856ea928SPeter Avalos (ck_session_handle_t session, 796856ea928SPeter Avalos ck_object_handle_t object, 797856ea928SPeter Avalos unsigned long *size)); 798856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetAttributeValue, 799856ea928SPeter Avalos (ck_session_handle_t session, 800856ea928SPeter Avalos ck_object_handle_t object, 801856ea928SPeter Avalos struct ck_attribute *templ, 802856ea928SPeter Avalos unsigned long count)); 803856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SetAttributeValue, 804856ea928SPeter Avalos (ck_session_handle_t session, 805856ea928SPeter Avalos ck_object_handle_t object, 806856ea928SPeter Avalos struct ck_attribute *templ, 807856ea928SPeter Avalos unsigned long count)); 808856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_FindObjectsInit, 809856ea928SPeter Avalos (ck_session_handle_t session, 810856ea928SPeter Avalos struct ck_attribute *templ, 811856ea928SPeter Avalos unsigned long count)); 812856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_FindObjects, 813856ea928SPeter Avalos (ck_session_handle_t session, 814856ea928SPeter Avalos ck_object_handle_t *object, 815856ea928SPeter Avalos unsigned long max_object_count, 816856ea928SPeter Avalos unsigned long *object_count)); 817856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_FindObjectsFinal, 818856ea928SPeter Avalos (ck_session_handle_t session)); 819856ea928SPeter Avalos 820856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_EncryptInit, 821856ea928SPeter Avalos (ck_session_handle_t session, 822856ea928SPeter Avalos struct ck_mechanism *mechanism, 823856ea928SPeter Avalos ck_object_handle_t key)); 824856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Encrypt, 825856ea928SPeter Avalos (ck_session_handle_t session, 826856ea928SPeter Avalos unsigned char *data, unsigned long data_len, 827856ea928SPeter Avalos unsigned char *encrypted_data, 828856ea928SPeter Avalos unsigned long *encrypted_data_len)); 829856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_EncryptUpdate, 830856ea928SPeter Avalos (ck_session_handle_t session, 831856ea928SPeter Avalos unsigned char *part, unsigned long part_len, 832856ea928SPeter Avalos unsigned char *encrypted_part, 833856ea928SPeter Avalos unsigned long *encrypted_part_len)); 834856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_EncryptFinal, 835856ea928SPeter Avalos (ck_session_handle_t session, 836856ea928SPeter Avalos unsigned char *last_encrypted_part, 837856ea928SPeter Avalos unsigned long *last_encrypted_part_len)); 838856ea928SPeter Avalos 839856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptInit, 840856ea928SPeter Avalos (ck_session_handle_t session, 841856ea928SPeter Avalos struct ck_mechanism *mechanism, 842856ea928SPeter Avalos ck_object_handle_t key)); 843856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Decrypt, 844856ea928SPeter Avalos (ck_session_handle_t session, 845856ea928SPeter Avalos unsigned char *encrypted_data, 846856ea928SPeter Avalos unsigned long encrypted_data_len, 847856ea928SPeter Avalos unsigned char *data, unsigned long *data_len)); 848856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptUpdate, 849856ea928SPeter Avalos (ck_session_handle_t session, 850856ea928SPeter Avalos unsigned char *encrypted_part, 851856ea928SPeter Avalos unsigned long encrypted_part_len, 852856ea928SPeter Avalos unsigned char *part, unsigned long *part_len)); 853856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptFinal, 854856ea928SPeter Avalos (ck_session_handle_t session, 855856ea928SPeter Avalos unsigned char *last_part, 856856ea928SPeter Avalos unsigned long *last_part_len)); 857856ea928SPeter Avalos 858856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestInit, 859856ea928SPeter Avalos (ck_session_handle_t session, 860856ea928SPeter Avalos struct ck_mechanism *mechanism)); 861856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Digest, 862856ea928SPeter Avalos (ck_session_handle_t session, 863856ea928SPeter Avalos unsigned char *data, unsigned long data_len, 864856ea928SPeter Avalos unsigned char *digest, 865856ea928SPeter Avalos unsigned long *digest_len)); 866856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestUpdate, 867856ea928SPeter Avalos (ck_session_handle_t session, 868856ea928SPeter Avalos unsigned char *part, unsigned long part_len)); 869856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestKey, 870856ea928SPeter Avalos (ck_session_handle_t session, ck_object_handle_t key)); 871856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestFinal, 872856ea928SPeter Avalos (ck_session_handle_t session, 873856ea928SPeter Avalos unsigned char *digest, 874856ea928SPeter Avalos unsigned long *digest_len)); 875856ea928SPeter Avalos 876856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignInit, 877856ea928SPeter Avalos (ck_session_handle_t session, 878856ea928SPeter Avalos struct ck_mechanism *mechanism, 879856ea928SPeter Avalos ck_object_handle_t key)); 880856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Sign, 881856ea928SPeter Avalos (ck_session_handle_t session, 882856ea928SPeter Avalos unsigned char *data, unsigned long data_len, 883856ea928SPeter Avalos unsigned char *signature, 884856ea928SPeter Avalos unsigned long *signature_len)); 885856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignUpdate, 886856ea928SPeter Avalos (ck_session_handle_t session, 887856ea928SPeter Avalos unsigned char *part, unsigned long part_len)); 888856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignFinal, 889856ea928SPeter Avalos (ck_session_handle_t session, 890856ea928SPeter Avalos unsigned char *signature, 891856ea928SPeter Avalos unsigned long *signature_len)); 892856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignRecoverInit, 893856ea928SPeter Avalos (ck_session_handle_t session, 894856ea928SPeter Avalos struct ck_mechanism *mechanism, 895856ea928SPeter Avalos ck_object_handle_t key)); 896856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignRecover, 897856ea928SPeter Avalos (ck_session_handle_t session, 898856ea928SPeter Avalos unsigned char *data, unsigned long data_len, 899856ea928SPeter Avalos unsigned char *signature, 900856ea928SPeter Avalos unsigned long *signature_len)); 901856ea928SPeter Avalos 902856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyInit, 903856ea928SPeter Avalos (ck_session_handle_t session, 904856ea928SPeter Avalos struct ck_mechanism *mechanism, 905856ea928SPeter Avalos ck_object_handle_t key)); 906856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Verify, 907856ea928SPeter Avalos (ck_session_handle_t session, 908856ea928SPeter Avalos unsigned char *data, unsigned long data_len, 909856ea928SPeter Avalos unsigned char *signature, 910856ea928SPeter Avalos unsigned long signature_len)); 911856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyUpdate, 912856ea928SPeter Avalos (ck_session_handle_t session, 913856ea928SPeter Avalos unsigned char *part, unsigned long part_len)); 914856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyFinal, 915856ea928SPeter Avalos (ck_session_handle_t session, 916856ea928SPeter Avalos unsigned char *signature, 917856ea928SPeter Avalos unsigned long signature_len)); 918856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyRecoverInit, 919856ea928SPeter Avalos (ck_session_handle_t session, 920856ea928SPeter Avalos struct ck_mechanism *mechanism, 921856ea928SPeter Avalos ck_object_handle_t key)); 922856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyRecover, 923856ea928SPeter Avalos (ck_session_handle_t session, 924856ea928SPeter Avalos unsigned char *signature, 925856ea928SPeter Avalos unsigned long signature_len, 926856ea928SPeter Avalos unsigned char *data, 927856ea928SPeter Avalos unsigned long *data_len)); 928856ea928SPeter Avalos 929856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestEncryptUpdate, 930856ea928SPeter Avalos (ck_session_handle_t session, 931856ea928SPeter Avalos unsigned char *part, unsigned long part_len, 932856ea928SPeter Avalos unsigned char *encrypted_part, 933856ea928SPeter Avalos unsigned long *encrypted_part_len)); 934856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptDigestUpdate, 935856ea928SPeter Avalos (ck_session_handle_t session, 936856ea928SPeter Avalos unsigned char *encrypted_part, 937856ea928SPeter Avalos unsigned long encrypted_part_len, 938856ea928SPeter Avalos unsigned char *part, 939856ea928SPeter Avalos unsigned long *part_len)); 940856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignEncryptUpdate, 941856ea928SPeter Avalos (ck_session_handle_t session, 942856ea928SPeter Avalos unsigned char *part, unsigned long part_len, 943856ea928SPeter Avalos unsigned char *encrypted_part, 944856ea928SPeter Avalos unsigned long *encrypted_part_len)); 945856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate, 946856ea928SPeter Avalos (ck_session_handle_t session, 947856ea928SPeter Avalos unsigned char *encrypted_part, 948856ea928SPeter Avalos unsigned long encrypted_part_len, 949856ea928SPeter Avalos unsigned char *part, 950856ea928SPeter Avalos unsigned long *part_len)); 951856ea928SPeter Avalos 952856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GenerateKey, 953856ea928SPeter Avalos (ck_session_handle_t session, 954856ea928SPeter Avalos struct ck_mechanism *mechanism, 955856ea928SPeter Avalos struct ck_attribute *templ, 956856ea928SPeter Avalos unsigned long count, 957856ea928SPeter Avalos ck_object_handle_t *key)); 958856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GenerateKeyPair, 959856ea928SPeter Avalos (ck_session_handle_t session, 960856ea928SPeter Avalos struct ck_mechanism *mechanism, 961856ea928SPeter Avalos struct ck_attribute *public_key_template, 962856ea928SPeter Avalos unsigned long public_key_attribute_count, 963856ea928SPeter Avalos struct ck_attribute *private_key_template, 964856ea928SPeter Avalos unsigned long private_key_attribute_count, 965856ea928SPeter Avalos ck_object_handle_t *public_key, 966856ea928SPeter Avalos ck_object_handle_t *private_key)); 967856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_WrapKey, 968856ea928SPeter Avalos (ck_session_handle_t session, 969856ea928SPeter Avalos struct ck_mechanism *mechanism, 970856ea928SPeter Avalos ck_object_handle_t wrapping_key, 971856ea928SPeter Avalos ck_object_handle_t key, 972856ea928SPeter Avalos unsigned char *wrapped_key, 973856ea928SPeter Avalos unsigned long *wrapped_key_len)); 974856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_UnwrapKey, 975856ea928SPeter Avalos (ck_session_handle_t session, 976856ea928SPeter Avalos struct ck_mechanism *mechanism, 977856ea928SPeter Avalos ck_object_handle_t unwrapping_key, 978856ea928SPeter Avalos unsigned char *wrapped_key, 979856ea928SPeter Avalos unsigned long wrapped_key_len, 980856ea928SPeter Avalos struct ck_attribute *templ, 981856ea928SPeter Avalos unsigned long attribute_count, 982856ea928SPeter Avalos ck_object_handle_t *key)); 983856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DeriveKey, 984856ea928SPeter Avalos (ck_session_handle_t session, 985856ea928SPeter Avalos struct ck_mechanism *mechanism, 986856ea928SPeter Avalos ck_object_handle_t base_key, 987856ea928SPeter Avalos struct ck_attribute *templ, 988856ea928SPeter Avalos unsigned long attribute_count, 989856ea928SPeter Avalos ck_object_handle_t *key)); 990856ea928SPeter Avalos 991856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SeedRandom, 992856ea928SPeter Avalos (ck_session_handle_t session, unsigned char *seed, 993856ea928SPeter Avalos unsigned long seed_len)); 994856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GenerateRandom, 995856ea928SPeter Avalos (ck_session_handle_t session, 996856ea928SPeter Avalos unsigned char *random_data, 997856ea928SPeter Avalos unsigned long random_len)); 998856ea928SPeter Avalos 999856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session)); 1000856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session)); 1001856ea928SPeter Avalos 1002856ea928SPeter Avalos 1003856ea928SPeter Avalos struct ck_function_list 1004856ea928SPeter Avalos { 1005856ea928SPeter Avalos struct ck_version version; 1006856ea928SPeter Avalos CK_C_Initialize C_Initialize; 1007856ea928SPeter Avalos CK_C_Finalize C_Finalize; 1008856ea928SPeter Avalos CK_C_GetInfo C_GetInfo; 1009856ea928SPeter Avalos CK_C_GetFunctionList C_GetFunctionList; 1010856ea928SPeter Avalos CK_C_GetSlotList C_GetSlotList; 1011856ea928SPeter Avalos CK_C_GetSlotInfo C_GetSlotInfo; 1012856ea928SPeter Avalos CK_C_GetTokenInfo C_GetTokenInfo; 1013856ea928SPeter Avalos CK_C_GetMechanismList C_GetMechanismList; 1014856ea928SPeter Avalos CK_C_GetMechanismInfo C_GetMechanismInfo; 1015856ea928SPeter Avalos CK_C_InitToken C_InitToken; 1016856ea928SPeter Avalos CK_C_InitPIN C_InitPIN; 1017856ea928SPeter Avalos CK_C_SetPIN C_SetPIN; 1018856ea928SPeter Avalos CK_C_OpenSession C_OpenSession; 1019856ea928SPeter Avalos CK_C_CloseSession C_CloseSession; 1020856ea928SPeter Avalos CK_C_CloseAllSessions C_CloseAllSessions; 1021856ea928SPeter Avalos CK_C_GetSessionInfo C_GetSessionInfo; 1022856ea928SPeter Avalos CK_C_GetOperationState C_GetOperationState; 1023856ea928SPeter Avalos CK_C_SetOperationState C_SetOperationState; 1024856ea928SPeter Avalos CK_C_Login C_Login; 1025856ea928SPeter Avalos CK_C_Logout C_Logout; 1026856ea928SPeter Avalos CK_C_CreateObject C_CreateObject; 1027856ea928SPeter Avalos CK_C_CopyObject C_CopyObject; 1028856ea928SPeter Avalos CK_C_DestroyObject C_DestroyObject; 1029856ea928SPeter Avalos CK_C_GetObjectSize C_GetObjectSize; 1030856ea928SPeter Avalos CK_C_GetAttributeValue C_GetAttributeValue; 1031856ea928SPeter Avalos CK_C_SetAttributeValue C_SetAttributeValue; 1032856ea928SPeter Avalos CK_C_FindObjectsInit C_FindObjectsInit; 1033856ea928SPeter Avalos CK_C_FindObjects C_FindObjects; 1034856ea928SPeter Avalos CK_C_FindObjectsFinal C_FindObjectsFinal; 1035856ea928SPeter Avalos CK_C_EncryptInit C_EncryptInit; 1036856ea928SPeter Avalos CK_C_Encrypt C_Encrypt; 1037856ea928SPeter Avalos CK_C_EncryptUpdate C_EncryptUpdate; 1038856ea928SPeter Avalos CK_C_EncryptFinal C_EncryptFinal; 1039856ea928SPeter Avalos CK_C_DecryptInit C_DecryptInit; 1040856ea928SPeter Avalos CK_C_Decrypt C_Decrypt; 1041856ea928SPeter Avalos CK_C_DecryptUpdate C_DecryptUpdate; 1042856ea928SPeter Avalos CK_C_DecryptFinal C_DecryptFinal; 1043856ea928SPeter Avalos CK_C_DigestInit C_DigestInit; 1044856ea928SPeter Avalos CK_C_Digest C_Digest; 1045856ea928SPeter Avalos CK_C_DigestUpdate C_DigestUpdate; 1046856ea928SPeter Avalos CK_C_DigestKey C_DigestKey; 1047856ea928SPeter Avalos CK_C_DigestFinal C_DigestFinal; 1048856ea928SPeter Avalos CK_C_SignInit C_SignInit; 1049856ea928SPeter Avalos CK_C_Sign C_Sign; 1050856ea928SPeter Avalos CK_C_SignUpdate C_SignUpdate; 1051856ea928SPeter Avalos CK_C_SignFinal C_SignFinal; 1052856ea928SPeter Avalos CK_C_SignRecoverInit C_SignRecoverInit; 1053856ea928SPeter Avalos CK_C_SignRecover C_SignRecover; 1054856ea928SPeter Avalos CK_C_VerifyInit C_VerifyInit; 1055856ea928SPeter Avalos CK_C_Verify C_Verify; 1056856ea928SPeter Avalos CK_C_VerifyUpdate C_VerifyUpdate; 1057856ea928SPeter Avalos CK_C_VerifyFinal C_VerifyFinal; 1058856ea928SPeter Avalos CK_C_VerifyRecoverInit C_VerifyRecoverInit; 1059856ea928SPeter Avalos CK_C_VerifyRecover C_VerifyRecover; 1060856ea928SPeter Avalos CK_C_DigestEncryptUpdate C_DigestEncryptUpdate; 1061856ea928SPeter Avalos CK_C_DecryptDigestUpdate C_DecryptDigestUpdate; 1062856ea928SPeter Avalos CK_C_SignEncryptUpdate C_SignEncryptUpdate; 1063856ea928SPeter Avalos CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate; 1064856ea928SPeter Avalos CK_C_GenerateKey C_GenerateKey; 1065856ea928SPeter Avalos CK_C_GenerateKeyPair C_GenerateKeyPair; 1066856ea928SPeter Avalos CK_C_WrapKey C_WrapKey; 1067856ea928SPeter Avalos CK_C_UnwrapKey C_UnwrapKey; 1068856ea928SPeter Avalos CK_C_DeriveKey C_DeriveKey; 1069856ea928SPeter Avalos CK_C_SeedRandom C_SeedRandom; 1070856ea928SPeter Avalos CK_C_GenerateRandom C_GenerateRandom; 1071856ea928SPeter Avalos CK_C_GetFunctionStatus C_GetFunctionStatus; 1072856ea928SPeter Avalos CK_C_CancelFunction C_CancelFunction; 1073856ea928SPeter Avalos CK_C_WaitForSlotEvent C_WaitForSlotEvent; 1074856ea928SPeter Avalos }; 1075856ea928SPeter Avalos 1076856ea928SPeter Avalos 1077856ea928SPeter Avalos typedef ck_rv_t (*ck_createmutex_t) (void **mutex); 1078856ea928SPeter Avalos typedef ck_rv_t (*ck_destroymutex_t) (void *mutex); 1079856ea928SPeter Avalos typedef ck_rv_t (*ck_lockmutex_t) (void *mutex); 1080856ea928SPeter Avalos typedef ck_rv_t (*ck_unlockmutex_t) (void *mutex); 1081856ea928SPeter Avalos 1082856ea928SPeter Avalos 1083856ea928SPeter Avalos struct ck_c_initialize_args 1084856ea928SPeter Avalos { 1085856ea928SPeter Avalos ck_createmutex_t create_mutex; 1086856ea928SPeter Avalos ck_destroymutex_t destroy_mutex; 1087856ea928SPeter Avalos ck_lockmutex_t lock_mutex; 1088856ea928SPeter Avalos ck_unlockmutex_t unlock_mutex; 1089856ea928SPeter Avalos ck_flags_t flags; 1090856ea928SPeter Avalos void *reserved; 1091856ea928SPeter Avalos }; 1092856ea928SPeter Avalos 1093856ea928SPeter Avalos 1094856ea928SPeter Avalos #define CKF_LIBRARY_CANT_CREATE_OS_THREADS (1 << 0) 1095856ea928SPeter Avalos #define CKF_OS_LOCKING_OK (1 << 1) 1096856ea928SPeter Avalos 1097856ea928SPeter Avalos #define CKR_OK (0) 1098856ea928SPeter Avalos #define CKR_CANCEL (1) 1099856ea928SPeter Avalos #define CKR_HOST_MEMORY (2) 1100856ea928SPeter Avalos #define CKR_SLOT_ID_INVALID (3) 1101856ea928SPeter Avalos #define CKR_GENERAL_ERROR (5) 1102856ea928SPeter Avalos #define CKR_FUNCTION_FAILED (6) 1103856ea928SPeter Avalos #define CKR_ARGUMENTS_BAD (7) 1104856ea928SPeter Avalos #define CKR_NO_EVENT (8) 1105856ea928SPeter Avalos #define CKR_NEED_TO_CREATE_THREADS (9) 1106856ea928SPeter Avalos #define CKR_CANT_LOCK (0xa) 1107856ea928SPeter Avalos #define CKR_ATTRIBUTE_READ_ONLY (0x10) 1108856ea928SPeter Avalos #define CKR_ATTRIBUTE_SENSITIVE (0x11) 1109856ea928SPeter Avalos #define CKR_ATTRIBUTE_TYPE_INVALID (0x12) 1110856ea928SPeter Avalos #define CKR_ATTRIBUTE_VALUE_INVALID (0x13) 1111856ea928SPeter Avalos #define CKR_DATA_INVALID (0x20) 1112856ea928SPeter Avalos #define CKR_DATA_LEN_RANGE (0x21) 1113856ea928SPeter Avalos #define CKR_DEVICE_ERROR (0x30) 1114856ea928SPeter Avalos #define CKR_DEVICE_MEMORY (0x31) 1115856ea928SPeter Avalos #define CKR_DEVICE_REMOVED (0x32) 1116856ea928SPeter Avalos #define CKR_ENCRYPTED_DATA_INVALID (0x40) 1117856ea928SPeter Avalos #define CKR_ENCRYPTED_DATA_LEN_RANGE (0x41) 1118856ea928SPeter Avalos #define CKR_FUNCTION_CANCELED (0x50) 1119856ea928SPeter Avalos #define CKR_FUNCTION_NOT_PARALLEL (0x51) 1120856ea928SPeter Avalos #define CKR_FUNCTION_NOT_SUPPORTED (0x54) 1121856ea928SPeter Avalos #define CKR_KEY_HANDLE_INVALID (0x60) 1122856ea928SPeter Avalos #define CKR_KEY_SIZE_RANGE (0x62) 1123856ea928SPeter Avalos #define CKR_KEY_TYPE_INCONSISTENT (0x63) 1124856ea928SPeter Avalos #define CKR_KEY_NOT_NEEDED (0x64) 1125856ea928SPeter Avalos #define CKR_KEY_CHANGED (0x65) 1126856ea928SPeter Avalos #define CKR_KEY_NEEDED (0x66) 1127856ea928SPeter Avalos #define CKR_KEY_INDIGESTIBLE (0x67) 1128856ea928SPeter Avalos #define CKR_KEY_FUNCTION_NOT_PERMITTED (0x68) 1129856ea928SPeter Avalos #define CKR_KEY_NOT_WRAPPABLE (0x69) 1130856ea928SPeter Avalos #define CKR_KEY_UNEXTRACTABLE (0x6a) 1131856ea928SPeter Avalos #define CKR_MECHANISM_INVALID (0x70) 1132856ea928SPeter Avalos #define CKR_MECHANISM_PARAM_INVALID (0x71) 1133856ea928SPeter Avalos #define CKR_OBJECT_HANDLE_INVALID (0x82) 1134856ea928SPeter Avalos #define CKR_OPERATION_ACTIVE (0x90) 1135856ea928SPeter Avalos #define CKR_OPERATION_NOT_INITIALIZED (0x91) 1136856ea928SPeter Avalos #define CKR_PIN_INCORRECT (0xa0) 1137856ea928SPeter Avalos #define CKR_PIN_INVALID (0xa1) 1138856ea928SPeter Avalos #define CKR_PIN_LEN_RANGE (0xa2) 1139856ea928SPeter Avalos #define CKR_PIN_EXPIRED (0xa3) 1140856ea928SPeter Avalos #define CKR_PIN_LOCKED (0xa4) 1141856ea928SPeter Avalos #define CKR_SESSION_CLOSED (0xb0) 1142856ea928SPeter Avalos #define CKR_SESSION_COUNT (0xb1) 1143856ea928SPeter Avalos #define CKR_SESSION_HANDLE_INVALID (0xb3) 1144856ea928SPeter Avalos #define CKR_SESSION_PARALLEL_NOT_SUPPORTED (0xb4) 1145856ea928SPeter Avalos #define CKR_SESSION_READ_ONLY (0xb5) 1146856ea928SPeter Avalos #define CKR_SESSION_EXISTS (0xb6) 1147856ea928SPeter Avalos #define CKR_SESSION_READ_ONLY_EXISTS (0xb7) 1148856ea928SPeter Avalos #define CKR_SESSION_READ_WRITE_SO_EXISTS (0xb8) 1149856ea928SPeter Avalos #define CKR_SIGNATURE_INVALID (0xc0) 1150856ea928SPeter Avalos #define CKR_SIGNATURE_LEN_RANGE (0xc1) 1151856ea928SPeter Avalos #define CKR_TEMPLATE_INCOMPLETE (0xd0) 1152856ea928SPeter Avalos #define CKR_TEMPLATE_INCONSISTENT (0xd1) 1153856ea928SPeter Avalos #define CKR_TOKEN_NOT_PRESENT (0xe0) 1154856ea928SPeter Avalos #define CKR_TOKEN_NOT_RECOGNIZED (0xe1) 1155856ea928SPeter Avalos #define CKR_TOKEN_WRITE_PROTECTED (0xe2) 1156856ea928SPeter Avalos #define CKR_UNWRAPPING_KEY_HANDLE_INVALID (0xf0) 1157856ea928SPeter Avalos #define CKR_UNWRAPPING_KEY_SIZE_RANGE (0xf1) 1158856ea928SPeter Avalos #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT (0xf2) 1159856ea928SPeter Avalos #define CKR_USER_ALREADY_LOGGED_IN (0x100) 1160856ea928SPeter Avalos #define CKR_USER_NOT_LOGGED_IN (0x101) 1161856ea928SPeter Avalos #define CKR_USER_PIN_NOT_INITIALIZED (0x102) 1162856ea928SPeter Avalos #define CKR_USER_TYPE_INVALID (0x103) 1163856ea928SPeter Avalos #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN (0x104) 1164856ea928SPeter Avalos #define CKR_USER_TOO_MANY_TYPES (0x105) 1165856ea928SPeter Avalos #define CKR_WRAPPED_KEY_INVALID (0x110) 1166856ea928SPeter Avalos #define CKR_WRAPPED_KEY_LEN_RANGE (0x112) 1167856ea928SPeter Avalos #define CKR_WRAPPING_KEY_HANDLE_INVALID (0x113) 1168856ea928SPeter Avalos #define CKR_WRAPPING_KEY_SIZE_RANGE (0x114) 1169856ea928SPeter Avalos #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT (0x115) 1170856ea928SPeter Avalos #define CKR_RANDOM_SEED_NOT_SUPPORTED (0x120) 1171856ea928SPeter Avalos #define CKR_RANDOM_NO_RNG (0x121) 1172856ea928SPeter Avalos #define CKR_DOMAIN_PARAMS_INVALID (0x130) 1173856ea928SPeter Avalos #define CKR_BUFFER_TOO_SMALL (0x150) 1174856ea928SPeter Avalos #define CKR_SAVED_STATE_INVALID (0x160) 1175856ea928SPeter Avalos #define CKR_INFORMATION_SENSITIVE (0x170) 1176856ea928SPeter Avalos #define CKR_STATE_UNSAVEABLE (0x180) 1177856ea928SPeter Avalos #define CKR_CRYPTOKI_NOT_INITIALIZED (0x190) 1178856ea928SPeter Avalos #define CKR_CRYPTOKI_ALREADY_INITIALIZED (0x191) 1179856ea928SPeter Avalos #define CKR_MUTEX_BAD (0x1a0) 1180856ea928SPeter Avalos #define CKR_MUTEX_NOT_LOCKED (0x1a1) 1181856ea928SPeter Avalos #define CKR_FUNCTION_REJECTED (0x200) 1182*36e94dc5SPeter Avalos #define CKR_VENDOR_DEFINED (1U << 31) 1183856ea928SPeter Avalos 1184856ea928SPeter Avalos 1185856ea928SPeter Avalos 1186856ea928SPeter Avalos /* Compatibility layer. */ 1187856ea928SPeter Avalos 1188856ea928SPeter Avalos #ifdef CRYPTOKI_COMPAT 1189856ea928SPeter Avalos 1190856ea928SPeter Avalos #undef CK_DEFINE_FUNCTION 1191856ea928SPeter Avalos #define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name 1192856ea928SPeter Avalos 1193856ea928SPeter Avalos /* For NULL. */ 1194856ea928SPeter Avalos #include <stddef.h> 1195856ea928SPeter Avalos 1196856ea928SPeter Avalos typedef unsigned char CK_BYTE; 1197856ea928SPeter Avalos typedef unsigned char CK_CHAR; 1198856ea928SPeter Avalos typedef unsigned char CK_UTF8CHAR; 1199856ea928SPeter Avalos typedef unsigned char CK_BBOOL; 1200856ea928SPeter Avalos typedef unsigned long int CK_ULONG; 1201856ea928SPeter Avalos typedef long int CK_LONG; 1202856ea928SPeter Avalos typedef CK_BYTE *CK_BYTE_PTR; 1203856ea928SPeter Avalos typedef CK_CHAR *CK_CHAR_PTR; 1204856ea928SPeter Avalos typedef CK_UTF8CHAR *CK_UTF8CHAR_PTR; 1205856ea928SPeter Avalos typedef CK_ULONG *CK_ULONG_PTR; 1206856ea928SPeter Avalos typedef void *CK_VOID_PTR; 1207856ea928SPeter Avalos typedef void **CK_VOID_PTR_PTR; 1208856ea928SPeter Avalos #define CK_FALSE 0 1209856ea928SPeter Avalos #define CK_TRUE 1 1210856ea928SPeter Avalos #ifndef CK_DISABLE_TRUE_FALSE 1211856ea928SPeter Avalos #ifndef FALSE 1212856ea928SPeter Avalos #define FALSE 0 1213856ea928SPeter Avalos #endif 1214856ea928SPeter Avalos #ifndef TRUE 1215856ea928SPeter Avalos #define TRUE 1 1216856ea928SPeter Avalos #endif 1217856ea928SPeter Avalos #endif 1218856ea928SPeter Avalos 1219856ea928SPeter Avalos typedef struct ck_version CK_VERSION; 1220856ea928SPeter Avalos typedef struct ck_version *CK_VERSION_PTR; 1221856ea928SPeter Avalos 1222856ea928SPeter Avalos typedef struct ck_info CK_INFO; 1223856ea928SPeter Avalos typedef struct ck_info *CK_INFO_PTR; 1224856ea928SPeter Avalos 1225856ea928SPeter Avalos typedef ck_slot_id_t *CK_SLOT_ID_PTR; 1226856ea928SPeter Avalos 1227856ea928SPeter Avalos typedef struct ck_slot_info CK_SLOT_INFO; 1228856ea928SPeter Avalos typedef struct ck_slot_info *CK_SLOT_INFO_PTR; 1229856ea928SPeter Avalos 1230856ea928SPeter Avalos typedef struct ck_token_info CK_TOKEN_INFO; 1231856ea928SPeter Avalos typedef struct ck_token_info *CK_TOKEN_INFO_PTR; 1232856ea928SPeter Avalos 1233856ea928SPeter Avalos typedef ck_session_handle_t *CK_SESSION_HANDLE_PTR; 1234856ea928SPeter Avalos 1235856ea928SPeter Avalos typedef struct ck_session_info CK_SESSION_INFO; 1236856ea928SPeter Avalos typedef struct ck_session_info *CK_SESSION_INFO_PTR; 1237856ea928SPeter Avalos 1238856ea928SPeter Avalos typedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR; 1239856ea928SPeter Avalos 1240856ea928SPeter Avalos typedef ck_object_class_t *CK_OBJECT_CLASS_PTR; 1241856ea928SPeter Avalos 1242856ea928SPeter Avalos typedef struct ck_attribute CK_ATTRIBUTE; 1243856ea928SPeter Avalos typedef struct ck_attribute *CK_ATTRIBUTE_PTR; 1244856ea928SPeter Avalos 1245856ea928SPeter Avalos typedef struct ck_date CK_DATE; 1246856ea928SPeter Avalos typedef struct ck_date *CK_DATE_PTR; 1247856ea928SPeter Avalos 1248856ea928SPeter Avalos typedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR; 1249856ea928SPeter Avalos 1250856ea928SPeter Avalos typedef struct ck_mechanism CK_MECHANISM; 1251856ea928SPeter Avalos typedef struct ck_mechanism *CK_MECHANISM_PTR; 1252856ea928SPeter Avalos 1253856ea928SPeter Avalos typedef struct ck_mechanism_info CK_MECHANISM_INFO; 1254856ea928SPeter Avalos typedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR; 1255856ea928SPeter Avalos 1256856ea928SPeter Avalos typedef struct ck_function_list CK_FUNCTION_LIST; 1257856ea928SPeter Avalos typedef struct ck_function_list *CK_FUNCTION_LIST_PTR; 1258856ea928SPeter Avalos typedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR; 1259856ea928SPeter Avalos 1260856ea928SPeter Avalos typedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS; 1261856ea928SPeter Avalos typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR; 1262856ea928SPeter Avalos 1263856ea928SPeter Avalos #define NULL_PTR NULL 1264856ea928SPeter Avalos 1265856ea928SPeter Avalos /* Delete the helper macros defined at the top of the file. */ 1266856ea928SPeter Avalos #undef ck_flags_t 1267856ea928SPeter Avalos #undef ck_version 1268856ea928SPeter Avalos 1269856ea928SPeter Avalos #undef ck_info 1270856ea928SPeter Avalos #undef cryptoki_version 1271856ea928SPeter Avalos #undef manufacturer_id 1272856ea928SPeter Avalos #undef library_description 1273856ea928SPeter Avalos #undef library_version 1274856ea928SPeter Avalos 1275856ea928SPeter Avalos #undef ck_notification_t 1276856ea928SPeter Avalos #undef ck_slot_id_t 1277856ea928SPeter Avalos 1278856ea928SPeter Avalos #undef ck_slot_info 1279856ea928SPeter Avalos #undef slot_description 1280856ea928SPeter Avalos #undef hardware_version 1281856ea928SPeter Avalos #undef firmware_version 1282856ea928SPeter Avalos 1283856ea928SPeter Avalos #undef ck_token_info 1284856ea928SPeter Avalos #undef serial_number 1285856ea928SPeter Avalos #undef max_session_count 1286856ea928SPeter Avalos #undef session_count 1287856ea928SPeter Avalos #undef max_rw_session_count 1288856ea928SPeter Avalos #undef rw_session_count 1289856ea928SPeter Avalos #undef max_pin_len 1290856ea928SPeter Avalos #undef min_pin_len 1291856ea928SPeter Avalos #undef total_public_memory 1292856ea928SPeter Avalos #undef free_public_memory 1293856ea928SPeter Avalos #undef total_private_memory 1294856ea928SPeter Avalos #undef free_private_memory 1295856ea928SPeter Avalos #undef utc_time 1296856ea928SPeter Avalos 1297856ea928SPeter Avalos #undef ck_session_handle_t 1298856ea928SPeter Avalos #undef ck_user_type_t 1299856ea928SPeter Avalos #undef ck_state_t 1300856ea928SPeter Avalos 1301856ea928SPeter Avalos #undef ck_session_info 1302856ea928SPeter Avalos #undef slot_id 1303856ea928SPeter Avalos #undef device_error 1304856ea928SPeter Avalos 1305856ea928SPeter Avalos #undef ck_object_handle_t 1306856ea928SPeter Avalos #undef ck_object_class_t 1307856ea928SPeter Avalos #undef ck_hw_feature_type_t 1308856ea928SPeter Avalos #undef ck_key_type_t 1309856ea928SPeter Avalos #undef ck_certificate_type_t 1310856ea928SPeter Avalos #undef ck_attribute_type_t 1311856ea928SPeter Avalos 1312856ea928SPeter Avalos #undef ck_attribute 1313856ea928SPeter Avalos #undef value 1314856ea928SPeter Avalos #undef value_len 1315856ea928SPeter Avalos 1316856ea928SPeter Avalos #undef ck_date 1317856ea928SPeter Avalos 1318856ea928SPeter Avalos #undef ck_mechanism_type_t 1319856ea928SPeter Avalos 1320856ea928SPeter Avalos #undef ck_mechanism 1321856ea928SPeter Avalos #undef parameter 1322856ea928SPeter Avalos #undef parameter_len 1323856ea928SPeter Avalos 1324856ea928SPeter Avalos #undef ck_mechanism_info 1325856ea928SPeter Avalos #undef min_key_size 1326856ea928SPeter Avalos #undef max_key_size 1327856ea928SPeter Avalos 1328856ea928SPeter Avalos #undef ck_rv_t 1329856ea928SPeter Avalos #undef ck_notify_t 1330856ea928SPeter Avalos 1331856ea928SPeter Avalos #undef ck_function_list 1332856ea928SPeter Avalos 1333856ea928SPeter Avalos #undef ck_createmutex_t 1334856ea928SPeter Avalos #undef ck_destroymutex_t 1335856ea928SPeter Avalos #undef ck_lockmutex_t 1336856ea928SPeter Avalos #undef ck_unlockmutex_t 1337856ea928SPeter Avalos 1338856ea928SPeter Avalos #undef ck_c_initialize_args 1339856ea928SPeter Avalos #undef create_mutex 1340856ea928SPeter Avalos #undef destroy_mutex 1341856ea928SPeter Avalos #undef lock_mutex 1342856ea928SPeter Avalos #undef unlock_mutex 1343856ea928SPeter Avalos #undef reserved 1344856ea928SPeter Avalos 1345856ea928SPeter Avalos #endif /* CRYPTOKI_COMPAT */ 1346856ea928SPeter Avalos 1347856ea928SPeter Avalos 1348856ea928SPeter Avalos /* System dependencies. */ 1349856ea928SPeter Avalos #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32) 1350856ea928SPeter Avalos #pragma pack(pop, cryptoki) 1351856ea928SPeter Avalos #endif 1352856ea928SPeter Avalos 1353856ea928SPeter Avalos #if defined(__cplusplus) 1354856ea928SPeter Avalos } 1355856ea928SPeter Avalos #endif 1356856ea928SPeter Avalos 1357856ea928SPeter Avalos #endif /* PKCS11_H */ 1358