1262566Sdes/* $OpenBSD: pkcs11.h,v 1.3 2013/11/26 19:15:09 deraadt Exp $ */ 2204861Sdes/* pkcs11.h 3204861Sdes Copyright 2006, 2007 g10 Code GmbH 4204861Sdes Copyright 2006 Andreas Jellinghaus 5204861Sdes 6204861Sdes This file is free software; as a special exception the author gives 7204861Sdes unlimited permission to copy and/or distribute it, with or without 8204861Sdes modifications, as long as this notice is preserved. 9204861Sdes 10204861Sdes This file is distributed in the hope that it will be useful, but 11204861Sdes WITHOUT ANY WARRANTY, to the extent permitted by law; without even 12204861Sdes the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 13204861Sdes PURPOSE. */ 14204861Sdes 15204861Sdes/* Please submit changes back to the Scute project at 16204861Sdes http://www.scute.org/ (or send them to marcus@g10code.com), so that 17204861Sdes they can be picked up by other projects from there as well. */ 18204861Sdes 19204861Sdes/* This file is a modified implementation of the PKCS #11 standard by 20204861Sdes RSA Security Inc. It is mostly a drop-in replacement, with the 21204861Sdes following change: 22204861Sdes 23204861Sdes This header file does not require any macro definitions by the user 24204861Sdes (like CK_DEFINE_FUNCTION etc). In fact, it defines those macros 25204861Sdes for you (if useful, some are missing, let me know if you need 26204861Sdes more). 27204861Sdes 28204861Sdes There is an additional API available that does comply better to the 29204861Sdes GNU coding standard. It can be switched on by defining 30204861Sdes CRYPTOKI_GNU before including this header file. For this, the 31204861Sdes following changes are made to the specification: 32204861Sdes 33204861Sdes All structure types are changed to a "struct ck_foo" where CK_FOO 34204861Sdes is the type name in PKCS #11. 35204861Sdes 36204861Sdes All non-structure types are changed to ck_foo_t where CK_FOO is the 37204861Sdes lowercase version of the type name in PKCS #11. The basic types 38204861Sdes (CK_ULONG et al.) are removed without substitute. 39204861Sdes 40204861Sdes All members of structures are modified in the following way: Type 41204861Sdes indication prefixes are removed, and underscore characters are 42204861Sdes inserted before words. Then the result is lowercased. 43204861Sdes 44204861Sdes Note that function names are still in the original case, as they 45204861Sdes need for ABI compatibility. 46204861Sdes 47204861Sdes CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute. Use 48204861Sdes <stdbool.h>. 49204861Sdes 50204861Sdes If CRYPTOKI_COMPAT is defined before including this header file, 51204861Sdes then none of the API changes above take place, and the API is the 52204861Sdes one defined by the PKCS #11 standard. */ 53204861Sdes 54204861Sdes#ifndef PKCS11_H 55204861Sdes#define PKCS11_H 1 56204861Sdes 57204861Sdes#if defined(__cplusplus) 58204861Sdesextern "C" { 59204861Sdes#endif 60204861Sdes 61204861Sdes 62204861Sdes/* The version of cryptoki we implement. The revision is changed with 63204861Sdes each modification of this file. If you do not use the "official" 64204861Sdes version of this file, please consider deleting the revision macro 65204861Sdes (you may use a macro with a different name to keep track of your 66204861Sdes versions). */ 67204861Sdes#define CRYPTOKI_VERSION_MAJOR 2 68204861Sdes#define CRYPTOKI_VERSION_MINOR 20 69204861Sdes#define CRYPTOKI_VERSION_REVISION 6 70204861Sdes 71204861Sdes 72204861Sdes/* Compatibility interface is default, unless CRYPTOKI_GNU is 73204861Sdes given. */ 74204861Sdes#ifndef CRYPTOKI_GNU 75204861Sdes#ifndef CRYPTOKI_COMPAT 76204861Sdes#define CRYPTOKI_COMPAT 1 77204861Sdes#endif 78204861Sdes#endif 79204861Sdes 80204861Sdes/* System dependencies. */ 81204861Sdes 82204861Sdes#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32) 83204861Sdes 84204861Sdes/* There is a matching pop below. */ 85204861Sdes#pragma pack(push, cryptoki, 1) 86204861Sdes 87204861Sdes#ifdef CRYPTOKI_EXPORTS 88204861Sdes#define CK_SPEC __declspec(dllexport) 89204861Sdes#else 90204861Sdes#define CK_SPEC __declspec(dllimport) 91204861Sdes#endif 92204861Sdes 93204861Sdes#else 94204861Sdes 95204861Sdes#define CK_SPEC 96204861Sdes 97204861Sdes#endif 98204861Sdes 99204861Sdes 100204861Sdes#ifdef CRYPTOKI_COMPAT 101204861Sdes /* If we are in compatibility mode, switch all exposed names to the 102204861Sdes PKCS #11 variant. There are corresponding #undefs below. */ 103204861Sdes 104204861Sdes#define ck_flags_t CK_FLAGS 105204861Sdes#define ck_version _CK_VERSION 106204861Sdes 107204861Sdes#define ck_info _CK_INFO 108204861Sdes#define cryptoki_version cryptokiVersion 109204861Sdes#define manufacturer_id manufacturerID 110204861Sdes#define library_description libraryDescription 111204861Sdes#define library_version libraryVersion 112204861Sdes 113204861Sdes#define ck_notification_t CK_NOTIFICATION 114204861Sdes#define ck_slot_id_t CK_SLOT_ID 115204861Sdes 116204861Sdes#define ck_slot_info _CK_SLOT_INFO 117204861Sdes#define slot_description slotDescription 118204861Sdes#define hardware_version hardwareVersion 119204861Sdes#define firmware_version firmwareVersion 120204861Sdes 121204861Sdes#define ck_token_info _CK_TOKEN_INFO 122204861Sdes#define serial_number serialNumber 123204861Sdes#define max_session_count ulMaxSessionCount 124204861Sdes#define session_count ulSessionCount 125204861Sdes#define max_rw_session_count ulMaxRwSessionCount 126204861Sdes#define rw_session_count ulRwSessionCount 127204861Sdes#define max_pin_len ulMaxPinLen 128204861Sdes#define min_pin_len ulMinPinLen 129204861Sdes#define total_public_memory ulTotalPublicMemory 130204861Sdes#define free_public_memory ulFreePublicMemory 131204861Sdes#define total_private_memory ulTotalPrivateMemory 132204861Sdes#define free_private_memory ulFreePrivateMemory 133204861Sdes#define utc_time utcTime 134204861Sdes 135204861Sdes#define ck_session_handle_t CK_SESSION_HANDLE 136204861Sdes#define ck_user_type_t CK_USER_TYPE 137204861Sdes#define ck_state_t CK_STATE 138204861Sdes 139204861Sdes#define ck_session_info _CK_SESSION_INFO 140204861Sdes#define slot_id slotID 141204861Sdes#define device_error ulDeviceError 142204861Sdes 143204861Sdes#define ck_object_handle_t CK_OBJECT_HANDLE 144204861Sdes#define ck_object_class_t CK_OBJECT_CLASS 145204861Sdes#define ck_hw_feature_type_t CK_HW_FEATURE_TYPE 146204861Sdes#define ck_key_type_t CK_KEY_TYPE 147204861Sdes#define ck_certificate_type_t CK_CERTIFICATE_TYPE 148204861Sdes#define ck_attribute_type_t CK_ATTRIBUTE_TYPE 149204861Sdes 150204861Sdes#define ck_attribute _CK_ATTRIBUTE 151204861Sdes#define value pValue 152204861Sdes#define value_len ulValueLen 153204861Sdes 154204861Sdes#define ck_date _CK_DATE 155204861Sdes 156204861Sdes#define ck_mechanism_type_t CK_MECHANISM_TYPE 157204861Sdes 158204861Sdes#define ck_mechanism _CK_MECHANISM 159204861Sdes#define parameter pParameter 160204861Sdes#define parameter_len ulParameterLen 161204861Sdes 162204861Sdes#define ck_mechanism_info _CK_MECHANISM_INFO 163204861Sdes#define min_key_size ulMinKeySize 164204861Sdes#define max_key_size ulMaxKeySize 165204861Sdes 166204861Sdes#define ck_rv_t CK_RV 167204861Sdes#define ck_notify_t CK_NOTIFY 168204861Sdes 169204861Sdes#define ck_function_list _CK_FUNCTION_LIST 170204861Sdes 171204861Sdes#define ck_createmutex_t CK_CREATEMUTEX 172204861Sdes#define ck_destroymutex_t CK_DESTROYMUTEX 173204861Sdes#define ck_lockmutex_t CK_LOCKMUTEX 174204861Sdes#define ck_unlockmutex_t CK_UNLOCKMUTEX 175204861Sdes 176204861Sdes#define ck_c_initialize_args _CK_C_INITIALIZE_ARGS 177204861Sdes#define create_mutex CreateMutex 178204861Sdes#define destroy_mutex DestroyMutex 179204861Sdes#define lock_mutex LockMutex 180204861Sdes#define unlock_mutex UnlockMutex 181204861Sdes#define reserved pReserved 182204861Sdes 183204861Sdes#endif /* CRYPTOKI_COMPAT */ 184204861Sdes 185204861Sdes 186204861Sdes 187204861Sdestypedef unsigned long ck_flags_t; 188204861Sdes 189204861Sdesstruct ck_version 190204861Sdes{ 191204861Sdes unsigned char major; 192204861Sdes unsigned char minor; 193204861Sdes}; 194204861Sdes 195204861Sdes 196204861Sdesstruct ck_info 197204861Sdes{ 198204861Sdes struct ck_version cryptoki_version; 199204861Sdes unsigned char manufacturer_id[32]; 200204861Sdes ck_flags_t flags; 201204861Sdes unsigned char library_description[32]; 202204861Sdes struct ck_version library_version; 203204861Sdes}; 204204861Sdes 205204861Sdes 206204861Sdestypedef unsigned long ck_notification_t; 207204861Sdes 208204861Sdes#define CKN_SURRENDER (0) 209204861Sdes 210204861Sdes 211204861Sdestypedef unsigned long ck_slot_id_t; 212204861Sdes 213204861Sdes 214204861Sdesstruct ck_slot_info 215204861Sdes{ 216204861Sdes unsigned char slot_description[64]; 217204861Sdes unsigned char manufacturer_id[32]; 218204861Sdes ck_flags_t flags; 219204861Sdes struct ck_version hardware_version; 220204861Sdes struct ck_version firmware_version; 221204861Sdes}; 222204861Sdes 223204861Sdes 224204861Sdes#define CKF_TOKEN_PRESENT (1 << 0) 225204861Sdes#define CKF_REMOVABLE_DEVICE (1 << 1) 226204861Sdes#define CKF_HW_SLOT (1 << 2) 227204861Sdes#define CKF_ARRAY_ATTRIBUTE (1 << 30) 228204861Sdes 229204861Sdes 230204861Sdesstruct ck_token_info 231204861Sdes{ 232204861Sdes unsigned char label[32]; 233204861Sdes unsigned char manufacturer_id[32]; 234204861Sdes unsigned char model[16]; 235204861Sdes unsigned char serial_number[16]; 236204861Sdes ck_flags_t flags; 237204861Sdes unsigned long max_session_count; 238204861Sdes unsigned long session_count; 239204861Sdes unsigned long max_rw_session_count; 240204861Sdes unsigned long rw_session_count; 241204861Sdes unsigned long max_pin_len; 242204861Sdes unsigned long min_pin_len; 243204861Sdes unsigned long total_public_memory; 244204861Sdes unsigned long free_public_memory; 245204861Sdes unsigned long total_private_memory; 246204861Sdes unsigned long free_private_memory; 247204861Sdes struct ck_version hardware_version; 248204861Sdes struct ck_version firmware_version; 249204861Sdes unsigned char utc_time[16]; 250204861Sdes}; 251204861Sdes 252204861Sdes 253204861Sdes#define CKF_RNG (1 << 0) 254204861Sdes#define CKF_WRITE_PROTECTED (1 << 1) 255204861Sdes#define CKF_LOGIN_REQUIRED (1 << 2) 256204861Sdes#define CKF_USER_PIN_INITIALIZED (1 << 3) 257204861Sdes#define CKF_RESTORE_KEY_NOT_NEEDED (1 << 5) 258204861Sdes#define CKF_CLOCK_ON_TOKEN (1 << 6) 259204861Sdes#define CKF_PROTECTED_AUTHENTICATION_PATH (1 << 8) 260204861Sdes#define CKF_DUAL_CRYPTO_OPERATIONS (1 << 9) 261204861Sdes#define CKF_TOKEN_INITIALIZED (1 << 10) 262204861Sdes#define CKF_SECONDARY_AUTHENTICATION (1 << 11) 263204861Sdes#define CKF_USER_PIN_COUNT_LOW (1 << 16) 264204861Sdes#define CKF_USER_PIN_FINAL_TRY (1 << 17) 265204861Sdes#define CKF_USER_PIN_LOCKED (1 << 18) 266204861Sdes#define CKF_USER_PIN_TO_BE_CHANGED (1 << 19) 267204861Sdes#define CKF_SO_PIN_COUNT_LOW (1 << 20) 268204861Sdes#define CKF_SO_PIN_FINAL_TRY (1 << 21) 269204861Sdes#define CKF_SO_PIN_LOCKED (1 << 22) 270204861Sdes#define CKF_SO_PIN_TO_BE_CHANGED (1 << 23) 271204861Sdes 272204861Sdes#define CK_UNAVAILABLE_INFORMATION ((unsigned long) -1) 273204861Sdes#define CK_EFFECTIVELY_INFINITE (0) 274204861Sdes 275204861Sdes 276204861Sdestypedef unsigned long ck_session_handle_t; 277204861Sdes 278204861Sdes#define CK_INVALID_HANDLE (0) 279204861Sdes 280204861Sdes 281204861Sdestypedef unsigned long ck_user_type_t; 282204861Sdes 283204861Sdes#define CKU_SO (0) 284204861Sdes#define CKU_USER (1) 285204861Sdes#define CKU_CONTEXT_SPECIFIC (2) 286204861Sdes 287204861Sdes 288204861Sdestypedef unsigned long ck_state_t; 289204861Sdes 290204861Sdes#define CKS_RO_PUBLIC_SESSION (0) 291204861Sdes#define CKS_RO_USER_FUNCTIONS (1) 292204861Sdes#define CKS_RW_PUBLIC_SESSION (2) 293204861Sdes#define CKS_RW_USER_FUNCTIONS (3) 294204861Sdes#define CKS_RW_SO_FUNCTIONS (4) 295204861Sdes 296204861Sdes 297204861Sdesstruct ck_session_info 298204861Sdes{ 299204861Sdes ck_slot_id_t slot_id; 300204861Sdes ck_state_t state; 301204861Sdes ck_flags_t flags; 302204861Sdes unsigned long device_error; 303204861Sdes}; 304204861Sdes 305204861Sdes#define CKF_RW_SESSION (1 << 1) 306204861Sdes#define CKF_SERIAL_SESSION (1 << 2) 307204861Sdes 308204861Sdes 309204861Sdestypedef unsigned long ck_object_handle_t; 310204861Sdes 311204861Sdes 312204861Sdestypedef unsigned long ck_object_class_t; 313204861Sdes 314204861Sdes#define CKO_DATA (0) 315204861Sdes#define CKO_CERTIFICATE (1) 316204861Sdes#define CKO_PUBLIC_KEY (2) 317204861Sdes#define CKO_PRIVATE_KEY (3) 318204861Sdes#define CKO_SECRET_KEY (4) 319204861Sdes#define CKO_HW_FEATURE (5) 320204861Sdes#define CKO_DOMAIN_PARAMETERS (6) 321204861Sdes#define CKO_MECHANISM (7) 322262566Sdes#define CKO_VENDOR_DEFINED (1U << 31) 323204861Sdes 324204861Sdes 325204861Sdestypedef unsigned long ck_hw_feature_type_t; 326204861Sdes 327204861Sdes#define CKH_MONOTONIC_COUNTER (1) 328204861Sdes#define CKH_CLOCK (2) 329204861Sdes#define CKH_USER_INTERFACE (3) 330262566Sdes#define CKH_VENDOR_DEFINED (1U << 31) 331204861Sdes 332204861Sdes 333204861Sdestypedef unsigned long ck_key_type_t; 334204861Sdes 335204861Sdes#define CKK_RSA (0) 336204861Sdes#define CKK_DSA (1) 337204861Sdes#define CKK_DH (2) 338204861Sdes#define CKK_ECDSA (3) 339204861Sdes#define CKK_EC (3) 340204861Sdes#define CKK_X9_42_DH (4) 341204861Sdes#define CKK_KEA (5) 342204861Sdes#define CKK_GENERIC_SECRET (0x10) 343204861Sdes#define CKK_RC2 (0x11) 344204861Sdes#define CKK_RC4 (0x12) 345204861Sdes#define CKK_DES (0x13) 346204861Sdes#define CKK_DES2 (0x14) 347204861Sdes#define CKK_DES3 (0x15) 348204861Sdes#define CKK_CAST (0x16) 349204861Sdes#define CKK_CAST3 (0x17) 350204861Sdes#define CKK_CAST128 (0x18) 351204861Sdes#define CKK_RC5 (0x19) 352204861Sdes#define CKK_IDEA (0x1a) 353204861Sdes#define CKK_SKIPJACK (0x1b) 354204861Sdes#define CKK_BATON (0x1c) 355204861Sdes#define CKK_JUNIPER (0x1d) 356204861Sdes#define CKK_CDMF (0x1e) 357204861Sdes#define CKK_AES (0x1f) 358204861Sdes#define CKK_BLOWFISH (0x20) 359204861Sdes#define CKK_TWOFISH (0x21) 360262566Sdes#define CKK_VENDOR_DEFINED (1U << 31) 361204861Sdes 362204861Sdestypedef unsigned long ck_certificate_type_t; 363204861Sdes 364204861Sdes#define CKC_X_509 (0) 365204861Sdes#define CKC_X_509_ATTR_CERT (1) 366204861Sdes#define CKC_WTLS (2) 367262566Sdes#define CKC_VENDOR_DEFINED (1U << 31) 368204861Sdes 369204861Sdes 370204861Sdestypedef unsigned long ck_attribute_type_t; 371204861Sdes 372204861Sdes#define CKA_CLASS (0) 373204861Sdes#define CKA_TOKEN (1) 374204861Sdes#define CKA_PRIVATE (2) 375204861Sdes#define CKA_LABEL (3) 376204861Sdes#define CKA_APPLICATION (0x10) 377204861Sdes#define CKA_VALUE (0x11) 378204861Sdes#define CKA_OBJECT_ID (0x12) 379204861Sdes#define CKA_CERTIFICATE_TYPE (0x80) 380204861Sdes#define CKA_ISSUER (0x81) 381204861Sdes#define CKA_SERIAL_NUMBER (0x82) 382204861Sdes#define CKA_AC_ISSUER (0x83) 383204861Sdes#define CKA_OWNER (0x84) 384204861Sdes#define CKA_ATTR_TYPES (0x85) 385204861Sdes#define CKA_TRUSTED (0x86) 386204861Sdes#define CKA_CERTIFICATE_CATEGORY (0x87) 387204861Sdes#define CKA_JAVA_MIDP_SECURITY_DOMAIN (0x88) 388204861Sdes#define CKA_URL (0x89) 389204861Sdes#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY (0x8a) 390204861Sdes#define CKA_HASH_OF_ISSUER_PUBLIC_KEY (0x8b) 391204861Sdes#define CKA_CHECK_VALUE (0x90) 392204861Sdes#define CKA_KEY_TYPE (0x100) 393204861Sdes#define CKA_SUBJECT (0x101) 394204861Sdes#define CKA_ID (0x102) 395204861Sdes#define CKA_SENSITIVE (0x103) 396204861Sdes#define CKA_ENCRYPT (0x104) 397204861Sdes#define CKA_DECRYPT (0x105) 398204861Sdes#define CKA_WRAP (0x106) 399204861Sdes#define CKA_UNWRAP (0x107) 400204861Sdes#define CKA_SIGN (0x108) 401204861Sdes#define CKA_SIGN_RECOVER (0x109) 402204861Sdes#define CKA_VERIFY (0x10a) 403204861Sdes#define CKA_VERIFY_RECOVER (0x10b) 404204861Sdes#define CKA_DERIVE (0x10c) 405204861Sdes#define CKA_START_DATE (0x110) 406204861Sdes#define CKA_END_DATE (0x111) 407204861Sdes#define CKA_MODULUS (0x120) 408204861Sdes#define CKA_MODULUS_BITS (0x121) 409204861Sdes#define CKA_PUBLIC_EXPONENT (0x122) 410204861Sdes#define CKA_PRIVATE_EXPONENT (0x123) 411204861Sdes#define CKA_PRIME_1 (0x124) 412204861Sdes#define CKA_PRIME_2 (0x125) 413204861Sdes#define CKA_EXPONENT_1 (0x126) 414204861Sdes#define CKA_EXPONENT_2 (0x127) 415204861Sdes#define CKA_COEFFICIENT (0x128) 416204861Sdes#define CKA_PRIME (0x130) 417204861Sdes#define CKA_SUBPRIME (0x131) 418204861Sdes#define CKA_BASE (0x132) 419204861Sdes#define CKA_PRIME_BITS (0x133) 420204861Sdes#define CKA_SUB_PRIME_BITS (0x134) 421204861Sdes#define CKA_VALUE_BITS (0x160) 422204861Sdes#define CKA_VALUE_LEN (0x161) 423204861Sdes#define CKA_EXTRACTABLE (0x162) 424204861Sdes#define CKA_LOCAL (0x163) 425204861Sdes#define CKA_NEVER_EXTRACTABLE (0x164) 426204861Sdes#define CKA_ALWAYS_SENSITIVE (0x165) 427204861Sdes#define CKA_KEY_GEN_MECHANISM (0x166) 428204861Sdes#define CKA_MODIFIABLE (0x170) 429204861Sdes#define CKA_ECDSA_PARAMS (0x180) 430204861Sdes#define CKA_EC_PARAMS (0x180) 431204861Sdes#define CKA_EC_POINT (0x181) 432204861Sdes#define CKA_SECONDARY_AUTH (0x200) 433204861Sdes#define CKA_AUTH_PIN_FLAGS (0x201) 434204861Sdes#define CKA_ALWAYS_AUTHENTICATE (0x202) 435204861Sdes#define CKA_WRAP_WITH_TRUSTED (0x210) 436204861Sdes#define CKA_HW_FEATURE_TYPE (0x300) 437204861Sdes#define CKA_RESET_ON_INIT (0x301) 438204861Sdes#define CKA_HAS_RESET (0x302) 439204861Sdes#define CKA_PIXEL_X (0x400) 440204861Sdes#define CKA_PIXEL_Y (0x401) 441204861Sdes#define CKA_RESOLUTION (0x402) 442204861Sdes#define CKA_CHAR_ROWS (0x403) 443204861Sdes#define CKA_CHAR_COLUMNS (0x404) 444204861Sdes#define CKA_COLOR (0x405) 445204861Sdes#define CKA_BITS_PER_PIXEL (0x406) 446204861Sdes#define CKA_CHAR_SETS (0x480) 447204861Sdes#define CKA_ENCODING_METHODS (0x481) 448204861Sdes#define CKA_MIME_TYPES (0x482) 449204861Sdes#define CKA_MECHANISM_TYPE (0x500) 450204861Sdes#define CKA_REQUIRED_CMS_ATTRIBUTES (0x501) 451204861Sdes#define CKA_DEFAULT_CMS_ATTRIBUTES (0x502) 452204861Sdes#define CKA_SUPPORTED_CMS_ATTRIBUTES (0x503) 453204861Sdes#define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x211) 454204861Sdes#define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x212) 455204861Sdes#define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE | 0x600) 456262566Sdes#define CKA_VENDOR_DEFINED (1U << 31) 457204861Sdes 458204861Sdes 459204861Sdesstruct ck_attribute 460204861Sdes{ 461204861Sdes ck_attribute_type_t type; 462204861Sdes void *value; 463204861Sdes unsigned long value_len; 464204861Sdes}; 465204861Sdes 466204861Sdes 467204861Sdesstruct ck_date 468204861Sdes{ 469204861Sdes unsigned char year[4]; 470204861Sdes unsigned char month[2]; 471204861Sdes unsigned char day[2]; 472204861Sdes}; 473204861Sdes 474204861Sdes 475204861Sdestypedef unsigned long ck_mechanism_type_t; 476204861Sdes 477204861Sdes#define CKM_RSA_PKCS_KEY_PAIR_GEN (0) 478204861Sdes#define CKM_RSA_PKCS (1) 479204861Sdes#define CKM_RSA_9796 (2) 480204861Sdes#define CKM_RSA_X_509 (3) 481204861Sdes#define CKM_MD2_RSA_PKCS (4) 482204861Sdes#define CKM_MD5_RSA_PKCS (5) 483204861Sdes#define CKM_SHA1_RSA_PKCS (6) 484204861Sdes#define CKM_RIPEMD128_RSA_PKCS (7) 485204861Sdes#define CKM_RIPEMD160_RSA_PKCS (8) 486204861Sdes#define CKM_RSA_PKCS_OAEP (9) 487204861Sdes#define CKM_RSA_X9_31_KEY_PAIR_GEN (0xa) 488204861Sdes#define CKM_RSA_X9_31 (0xb) 489204861Sdes#define CKM_SHA1_RSA_X9_31 (0xc) 490204861Sdes#define CKM_RSA_PKCS_PSS (0xd) 491204861Sdes#define CKM_SHA1_RSA_PKCS_PSS (0xe) 492204861Sdes#define CKM_DSA_KEY_PAIR_GEN (0x10) 493204861Sdes#define CKM_DSA (0x11) 494204861Sdes#define CKM_DSA_SHA1 (0x12) 495204861Sdes#define CKM_DH_PKCS_KEY_PAIR_GEN (0x20) 496204861Sdes#define CKM_DH_PKCS_DERIVE (0x21) 497204861Sdes#define CKM_X9_42_DH_KEY_PAIR_GEN (0x30) 498204861Sdes#define CKM_X9_42_DH_DERIVE (0x31) 499204861Sdes#define CKM_X9_42_DH_HYBRID_DERIVE (0x32) 500204861Sdes#define CKM_X9_42_MQV_DERIVE (0x33) 501204861Sdes#define CKM_SHA256_RSA_PKCS (0x40) 502204861Sdes#define CKM_SHA384_RSA_PKCS (0x41) 503204861Sdes#define CKM_SHA512_RSA_PKCS (0x42) 504204861Sdes#define CKM_SHA256_RSA_PKCS_PSS (0x43) 505204861Sdes#define CKM_SHA384_RSA_PKCS_PSS (0x44) 506204861Sdes#define CKM_SHA512_RSA_PKCS_PSS (0x45) 507204861Sdes#define CKM_RC2_KEY_GEN (0x100) 508204861Sdes#define CKM_RC2_ECB (0x101) 509204861Sdes#define CKM_RC2_CBC (0x102) 510204861Sdes#define CKM_RC2_MAC (0x103) 511204861Sdes#define CKM_RC2_MAC_GENERAL (0x104) 512204861Sdes#define CKM_RC2_CBC_PAD (0x105) 513204861Sdes#define CKM_RC4_KEY_GEN (0x110) 514204861Sdes#define CKM_RC4 (0x111) 515204861Sdes#define CKM_DES_KEY_GEN (0x120) 516204861Sdes#define CKM_DES_ECB (0x121) 517204861Sdes#define CKM_DES_CBC (0x122) 518204861Sdes#define CKM_DES_MAC (0x123) 519204861Sdes#define CKM_DES_MAC_GENERAL (0x124) 520204861Sdes#define CKM_DES_CBC_PAD (0x125) 521204861Sdes#define CKM_DES2_KEY_GEN (0x130) 522204861Sdes#define CKM_DES3_KEY_GEN (0x131) 523204861Sdes#define CKM_DES3_ECB (0x132) 524204861Sdes#define CKM_DES3_CBC (0x133) 525204861Sdes#define CKM_DES3_MAC (0x134) 526204861Sdes#define CKM_DES3_MAC_GENERAL (0x135) 527204861Sdes#define CKM_DES3_CBC_PAD (0x136) 528204861Sdes#define CKM_CDMF_KEY_GEN (0x140) 529204861Sdes#define CKM_CDMF_ECB (0x141) 530204861Sdes#define CKM_CDMF_CBC (0x142) 531204861Sdes#define CKM_CDMF_MAC (0x143) 532204861Sdes#define CKM_CDMF_MAC_GENERAL (0x144) 533204861Sdes#define CKM_CDMF_CBC_PAD (0x145) 534204861Sdes#define CKM_MD2 (0x200) 535204861Sdes#define CKM_MD2_HMAC (0x201) 536204861Sdes#define CKM_MD2_HMAC_GENERAL (0x202) 537204861Sdes#define CKM_MD5 (0x210) 538204861Sdes#define CKM_MD5_HMAC (0x211) 539204861Sdes#define CKM_MD5_HMAC_GENERAL (0x212) 540204861Sdes#define CKM_SHA_1 (0x220) 541204861Sdes#define CKM_SHA_1_HMAC (0x221) 542204861Sdes#define CKM_SHA_1_HMAC_GENERAL (0x222) 543204861Sdes#define CKM_RIPEMD128 (0x230) 544204861Sdes#define CKM_RIPEMD128_HMAC (0x231) 545204861Sdes#define CKM_RIPEMD128_HMAC_GENERAL (0x232) 546204861Sdes#define CKM_RIPEMD160 (0x240) 547204861Sdes#define CKM_RIPEMD160_HMAC (0x241) 548204861Sdes#define CKM_RIPEMD160_HMAC_GENERAL (0x242) 549204861Sdes#define CKM_SHA256 (0x250) 550204861Sdes#define CKM_SHA256_HMAC (0x251) 551204861Sdes#define CKM_SHA256_HMAC_GENERAL (0x252) 552204861Sdes#define CKM_SHA384 (0x260) 553204861Sdes#define CKM_SHA384_HMAC (0x261) 554204861Sdes#define CKM_SHA384_HMAC_GENERAL (0x262) 555204861Sdes#define CKM_SHA512 (0x270) 556204861Sdes#define CKM_SHA512_HMAC (0x271) 557204861Sdes#define CKM_SHA512_HMAC_GENERAL (0x272) 558204861Sdes#define CKM_CAST_KEY_GEN (0x300) 559204861Sdes#define CKM_CAST_ECB (0x301) 560204861Sdes#define CKM_CAST_CBC (0x302) 561204861Sdes#define CKM_CAST_MAC (0x303) 562204861Sdes#define CKM_CAST_MAC_GENERAL (0x304) 563204861Sdes#define CKM_CAST_CBC_PAD (0x305) 564204861Sdes#define CKM_CAST3_KEY_GEN (0x310) 565204861Sdes#define CKM_CAST3_ECB (0x311) 566204861Sdes#define CKM_CAST3_CBC (0x312) 567204861Sdes#define CKM_CAST3_MAC (0x313) 568204861Sdes#define CKM_CAST3_MAC_GENERAL (0x314) 569204861Sdes#define CKM_CAST3_CBC_PAD (0x315) 570204861Sdes#define CKM_CAST5_KEY_GEN (0x320) 571204861Sdes#define CKM_CAST128_KEY_GEN (0x320) 572204861Sdes#define CKM_CAST5_ECB (0x321) 573204861Sdes#define CKM_CAST128_ECB (0x321) 574204861Sdes#define CKM_CAST5_CBC (0x322) 575204861Sdes#define CKM_CAST128_CBC (0x322) 576204861Sdes#define CKM_CAST5_MAC (0x323) 577204861Sdes#define CKM_CAST128_MAC (0x323) 578204861Sdes#define CKM_CAST5_MAC_GENERAL (0x324) 579204861Sdes#define CKM_CAST128_MAC_GENERAL (0x324) 580204861Sdes#define CKM_CAST5_CBC_PAD (0x325) 581204861Sdes#define CKM_CAST128_CBC_PAD (0x325) 582204861Sdes#define CKM_RC5_KEY_GEN (0x330) 583204861Sdes#define CKM_RC5_ECB (0x331) 584204861Sdes#define CKM_RC5_CBC (0x332) 585204861Sdes#define CKM_RC5_MAC (0x333) 586204861Sdes#define CKM_RC5_MAC_GENERAL (0x334) 587204861Sdes#define CKM_RC5_CBC_PAD (0x335) 588204861Sdes#define CKM_IDEA_KEY_GEN (0x340) 589204861Sdes#define CKM_IDEA_ECB (0x341) 590204861Sdes#define CKM_IDEA_CBC (0x342) 591204861Sdes#define CKM_IDEA_MAC (0x343) 592204861Sdes#define CKM_IDEA_MAC_GENERAL (0x344) 593204861Sdes#define CKM_IDEA_CBC_PAD (0x345) 594204861Sdes#define CKM_GENERIC_SECRET_KEY_GEN (0x350) 595204861Sdes#define CKM_CONCATENATE_BASE_AND_KEY (0x360) 596204861Sdes#define CKM_CONCATENATE_BASE_AND_DATA (0x362) 597204861Sdes#define CKM_CONCATENATE_DATA_AND_BASE (0x363) 598204861Sdes#define CKM_XOR_BASE_AND_DATA (0x364) 599204861Sdes#define CKM_EXTRACT_KEY_FROM_KEY (0x365) 600204861Sdes#define CKM_SSL3_PRE_MASTER_KEY_GEN (0x370) 601204861Sdes#define CKM_SSL3_MASTER_KEY_DERIVE (0x371) 602204861Sdes#define CKM_SSL3_KEY_AND_MAC_DERIVE (0x372) 603204861Sdes#define CKM_SSL3_MASTER_KEY_DERIVE_DH (0x373) 604204861Sdes#define CKM_TLS_PRE_MASTER_KEY_GEN (0x374) 605204861Sdes#define CKM_TLS_MASTER_KEY_DERIVE (0x375) 606204861Sdes#define CKM_TLS_KEY_AND_MAC_DERIVE (0x376) 607204861Sdes#define CKM_TLS_MASTER_KEY_DERIVE_DH (0x377) 608204861Sdes#define CKM_SSL3_MD5_MAC (0x380) 609204861Sdes#define CKM_SSL3_SHA1_MAC (0x381) 610204861Sdes#define CKM_MD5_KEY_DERIVATION (0x390) 611204861Sdes#define CKM_MD2_KEY_DERIVATION (0x391) 612204861Sdes#define CKM_SHA1_KEY_DERIVATION (0x392) 613204861Sdes#define CKM_PBE_MD2_DES_CBC (0x3a0) 614204861Sdes#define CKM_PBE_MD5_DES_CBC (0x3a1) 615204861Sdes#define CKM_PBE_MD5_CAST_CBC (0x3a2) 616204861Sdes#define CKM_PBE_MD5_CAST3_CBC (0x3a3) 617204861Sdes#define CKM_PBE_MD5_CAST5_CBC (0x3a4) 618204861Sdes#define CKM_PBE_MD5_CAST128_CBC (0x3a4) 619204861Sdes#define CKM_PBE_SHA1_CAST5_CBC (0x3a5) 620204861Sdes#define CKM_PBE_SHA1_CAST128_CBC (0x3a5) 621204861Sdes#define CKM_PBE_SHA1_RC4_128 (0x3a6) 622204861Sdes#define CKM_PBE_SHA1_RC4_40 (0x3a7) 623204861Sdes#define CKM_PBE_SHA1_DES3_EDE_CBC (0x3a8) 624204861Sdes#define CKM_PBE_SHA1_DES2_EDE_CBC (0x3a9) 625204861Sdes#define CKM_PBE_SHA1_RC2_128_CBC (0x3aa) 626204861Sdes#define CKM_PBE_SHA1_RC2_40_CBC (0x3ab) 627204861Sdes#define CKM_PKCS5_PBKD2 (0x3b0) 628204861Sdes#define CKM_PBA_SHA1_WITH_SHA1_HMAC (0x3c0) 629204861Sdes#define CKM_KEY_WRAP_LYNKS (0x400) 630204861Sdes#define CKM_KEY_WRAP_SET_OAEP (0x401) 631204861Sdes#define CKM_SKIPJACK_KEY_GEN (0x1000) 632204861Sdes#define CKM_SKIPJACK_ECB64 (0x1001) 633204861Sdes#define CKM_SKIPJACK_CBC64 (0x1002) 634204861Sdes#define CKM_SKIPJACK_OFB64 (0x1003) 635204861Sdes#define CKM_SKIPJACK_CFB64 (0x1004) 636204861Sdes#define CKM_SKIPJACK_CFB32 (0x1005) 637204861Sdes#define CKM_SKIPJACK_CFB16 (0x1006) 638204861Sdes#define CKM_SKIPJACK_CFB8 (0x1007) 639204861Sdes#define CKM_SKIPJACK_WRAP (0x1008) 640204861Sdes#define CKM_SKIPJACK_PRIVATE_WRAP (0x1009) 641204861Sdes#define CKM_SKIPJACK_RELAYX (0x100a) 642204861Sdes#define CKM_KEA_KEY_PAIR_GEN (0x1010) 643204861Sdes#define CKM_KEA_KEY_DERIVE (0x1011) 644204861Sdes#define CKM_FORTEZZA_TIMESTAMP (0x1020) 645204861Sdes#define CKM_BATON_KEY_GEN (0x1030) 646204861Sdes#define CKM_BATON_ECB128 (0x1031) 647204861Sdes#define CKM_BATON_ECB96 (0x1032) 648204861Sdes#define CKM_BATON_CBC128 (0x1033) 649204861Sdes#define CKM_BATON_COUNTER (0x1034) 650204861Sdes#define CKM_BATON_SHUFFLE (0x1035) 651204861Sdes#define CKM_BATON_WRAP (0x1036) 652204861Sdes#define CKM_ECDSA_KEY_PAIR_GEN (0x1040) 653204861Sdes#define CKM_EC_KEY_PAIR_GEN (0x1040) 654204861Sdes#define CKM_ECDSA (0x1041) 655204861Sdes#define CKM_ECDSA_SHA1 (0x1042) 656204861Sdes#define CKM_ECDH1_DERIVE (0x1050) 657204861Sdes#define CKM_ECDH1_COFACTOR_DERIVE (0x1051) 658204861Sdes#define CKM_ECMQV_DERIVE (0x1052) 659204861Sdes#define CKM_JUNIPER_KEY_GEN (0x1060) 660204861Sdes#define CKM_JUNIPER_ECB128 (0x1061) 661204861Sdes#define CKM_JUNIPER_CBC128 (0x1062) 662204861Sdes#define CKM_JUNIPER_COUNTER (0x1063) 663204861Sdes#define CKM_JUNIPER_SHUFFLE (0x1064) 664204861Sdes#define CKM_JUNIPER_WRAP (0x1065) 665204861Sdes#define CKM_FASTHASH (0x1070) 666204861Sdes#define CKM_AES_KEY_GEN (0x1080) 667204861Sdes#define CKM_AES_ECB (0x1081) 668204861Sdes#define CKM_AES_CBC (0x1082) 669204861Sdes#define CKM_AES_MAC (0x1083) 670204861Sdes#define CKM_AES_MAC_GENERAL (0x1084) 671204861Sdes#define CKM_AES_CBC_PAD (0x1085) 672204861Sdes#define CKM_DSA_PARAMETER_GEN (0x2000) 673204861Sdes#define CKM_DH_PKCS_PARAMETER_GEN (0x2001) 674204861Sdes#define CKM_X9_42_DH_PARAMETER_GEN (0x2002) 675262566Sdes#define CKM_VENDOR_DEFINED (1U << 31) 676204861Sdes 677204861Sdes 678204861Sdesstruct ck_mechanism 679204861Sdes{ 680204861Sdes ck_mechanism_type_t mechanism; 681204861Sdes void *parameter; 682204861Sdes unsigned long parameter_len; 683204861Sdes}; 684204861Sdes 685204861Sdes 686204861Sdesstruct ck_mechanism_info 687204861Sdes{ 688204861Sdes unsigned long min_key_size; 689204861Sdes unsigned long max_key_size; 690204861Sdes ck_flags_t flags; 691204861Sdes}; 692204861Sdes 693204861Sdes#define CKF_HW (1 << 0) 694204861Sdes#define CKF_ENCRYPT (1 << 8) 695204861Sdes#define CKF_DECRYPT (1 << 9) 696204861Sdes#define CKF_DIGEST (1 << 10) 697204861Sdes#define CKF_SIGN (1 << 11) 698204861Sdes#define CKF_SIGN_RECOVER (1 << 12) 699204861Sdes#define CKF_VERIFY (1 << 13) 700204861Sdes#define CKF_VERIFY_RECOVER (1 << 14) 701204861Sdes#define CKF_GENERATE (1 << 15) 702204861Sdes#define CKF_GENERATE_KEY_PAIR (1 << 16) 703204861Sdes#define CKF_WRAP (1 << 17) 704204861Sdes#define CKF_UNWRAP (1 << 18) 705204861Sdes#define CKF_DERIVE (1 << 19) 706262566Sdes#define CKF_EXTENSION (1U << 31) 707204861Sdes 708204861Sdes 709204861Sdes/* Flags for C_WaitForSlotEvent. */ 710204861Sdes#define CKF_DONT_BLOCK (1) 711204861Sdes 712204861Sdes 713204861Sdestypedef unsigned long ck_rv_t; 714204861Sdes 715204861Sdes 716204861Sdestypedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session, 717204861Sdes ck_notification_t event, void *application); 718204861Sdes 719204861Sdes/* Forward reference. */ 720204861Sdesstruct ck_function_list; 721204861Sdes 722204861Sdes#define _CK_DECLARE_FUNCTION(name, args) \ 723204861Sdestypedef ck_rv_t (*CK_ ## name) args; \ 724204861Sdesck_rv_t CK_SPEC name args 725204861Sdes 726204861Sdes_CK_DECLARE_FUNCTION (C_Initialize, (void *init_args)); 727204861Sdes_CK_DECLARE_FUNCTION (C_Finalize, (void *reserved)); 728204861Sdes_CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info)); 729204861Sdes_CK_DECLARE_FUNCTION (C_GetFunctionList, 730204861Sdes (struct ck_function_list **function_list)); 731204861Sdes 732204861Sdes_CK_DECLARE_FUNCTION (C_GetSlotList, 733204861Sdes (unsigned char token_present, ck_slot_id_t *slot_list, 734204861Sdes unsigned long *count)); 735204861Sdes_CK_DECLARE_FUNCTION (C_GetSlotInfo, 736204861Sdes (ck_slot_id_t slot_id, struct ck_slot_info *info)); 737204861Sdes_CK_DECLARE_FUNCTION (C_GetTokenInfo, 738204861Sdes (ck_slot_id_t slot_id, struct ck_token_info *info)); 739204861Sdes_CK_DECLARE_FUNCTION (C_WaitForSlotEvent, 740204861Sdes (ck_flags_t flags, ck_slot_id_t *slot, void *reserved)); 741204861Sdes_CK_DECLARE_FUNCTION (C_GetMechanismList, 742204861Sdes (ck_slot_id_t slot_id, 743204861Sdes ck_mechanism_type_t *mechanism_list, 744204861Sdes unsigned long *count)); 745204861Sdes_CK_DECLARE_FUNCTION (C_GetMechanismInfo, 746204861Sdes (ck_slot_id_t slot_id, ck_mechanism_type_t type, 747204861Sdes struct ck_mechanism_info *info)); 748204861Sdes_CK_DECLARE_FUNCTION (C_InitToken, 749204861Sdes (ck_slot_id_t slot_id, unsigned char *pin, 750204861Sdes unsigned long pin_len, unsigned char *label)); 751204861Sdes_CK_DECLARE_FUNCTION (C_InitPIN, 752204861Sdes (ck_session_handle_t session, unsigned char *pin, 753204861Sdes unsigned long pin_len)); 754204861Sdes_CK_DECLARE_FUNCTION (C_SetPIN, 755204861Sdes (ck_session_handle_t session, unsigned char *old_pin, 756204861Sdes unsigned long old_len, unsigned char *new_pin, 757204861Sdes unsigned long new_len)); 758204861Sdes 759204861Sdes_CK_DECLARE_FUNCTION (C_OpenSession, 760204861Sdes (ck_slot_id_t slot_id, ck_flags_t flags, 761204861Sdes void *application, ck_notify_t notify, 762204861Sdes ck_session_handle_t *session)); 763204861Sdes_CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session)); 764204861Sdes_CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id)); 765204861Sdes_CK_DECLARE_FUNCTION (C_GetSessionInfo, 766204861Sdes (ck_session_handle_t session, 767204861Sdes struct ck_session_info *info)); 768204861Sdes_CK_DECLARE_FUNCTION (C_GetOperationState, 769204861Sdes (ck_session_handle_t session, 770204861Sdes unsigned char *operation_state, 771204861Sdes unsigned long *operation_state_len)); 772204861Sdes_CK_DECLARE_FUNCTION (C_SetOperationState, 773204861Sdes (ck_session_handle_t session, 774204861Sdes unsigned char *operation_state, 775204861Sdes unsigned long operation_state_len, 776204861Sdes ck_object_handle_t encryption_key, 777204861Sdes ck_object_handle_t authentiation_key)); 778204861Sdes_CK_DECLARE_FUNCTION (C_Login, 779204861Sdes (ck_session_handle_t session, ck_user_type_t user_type, 780204861Sdes unsigned char *pin, unsigned long pin_len)); 781204861Sdes_CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session)); 782204861Sdes 783204861Sdes_CK_DECLARE_FUNCTION (C_CreateObject, 784204861Sdes (ck_session_handle_t session, 785204861Sdes struct ck_attribute *templ, 786204861Sdes unsigned long count, ck_object_handle_t *object)); 787204861Sdes_CK_DECLARE_FUNCTION (C_CopyObject, 788204861Sdes (ck_session_handle_t session, ck_object_handle_t object, 789204861Sdes struct ck_attribute *templ, unsigned long count, 790204861Sdes ck_object_handle_t *new_object)); 791204861Sdes_CK_DECLARE_FUNCTION (C_DestroyObject, 792204861Sdes (ck_session_handle_t session, 793204861Sdes ck_object_handle_t object)); 794204861Sdes_CK_DECLARE_FUNCTION (C_GetObjectSize, 795204861Sdes (ck_session_handle_t session, 796204861Sdes ck_object_handle_t object, 797204861Sdes unsigned long *size)); 798204861Sdes_CK_DECLARE_FUNCTION (C_GetAttributeValue, 799204861Sdes (ck_session_handle_t session, 800204861Sdes ck_object_handle_t object, 801204861Sdes struct ck_attribute *templ, 802204861Sdes unsigned long count)); 803204861Sdes_CK_DECLARE_FUNCTION (C_SetAttributeValue, 804204861Sdes (ck_session_handle_t session, 805204861Sdes ck_object_handle_t object, 806204861Sdes struct ck_attribute *templ, 807204861Sdes unsigned long count)); 808204861Sdes_CK_DECLARE_FUNCTION (C_FindObjectsInit, 809204861Sdes (ck_session_handle_t session, 810204861Sdes struct ck_attribute *templ, 811204861Sdes unsigned long count)); 812204861Sdes_CK_DECLARE_FUNCTION (C_FindObjects, 813204861Sdes (ck_session_handle_t session, 814204861Sdes ck_object_handle_t *object, 815204861Sdes unsigned long max_object_count, 816204861Sdes unsigned long *object_count)); 817204861Sdes_CK_DECLARE_FUNCTION (C_FindObjectsFinal, 818204861Sdes (ck_session_handle_t session)); 819204861Sdes 820204861Sdes_CK_DECLARE_FUNCTION (C_EncryptInit, 821204861Sdes (ck_session_handle_t session, 822204861Sdes struct ck_mechanism *mechanism, 823204861Sdes ck_object_handle_t key)); 824204861Sdes_CK_DECLARE_FUNCTION (C_Encrypt, 825204861Sdes (ck_session_handle_t session, 826204861Sdes unsigned char *data, unsigned long data_len, 827204861Sdes unsigned char *encrypted_data, 828204861Sdes unsigned long *encrypted_data_len)); 829204861Sdes_CK_DECLARE_FUNCTION (C_EncryptUpdate, 830204861Sdes (ck_session_handle_t session, 831204861Sdes unsigned char *part, unsigned long part_len, 832204861Sdes unsigned char *encrypted_part, 833204861Sdes unsigned long *encrypted_part_len)); 834204861Sdes_CK_DECLARE_FUNCTION (C_EncryptFinal, 835204861Sdes (ck_session_handle_t session, 836204861Sdes unsigned char *last_encrypted_part, 837204861Sdes unsigned long *last_encrypted_part_len)); 838204861Sdes 839204861Sdes_CK_DECLARE_FUNCTION (C_DecryptInit, 840204861Sdes (ck_session_handle_t session, 841204861Sdes struct ck_mechanism *mechanism, 842204861Sdes ck_object_handle_t key)); 843204861Sdes_CK_DECLARE_FUNCTION (C_Decrypt, 844204861Sdes (ck_session_handle_t session, 845204861Sdes unsigned char *encrypted_data, 846204861Sdes unsigned long encrypted_data_len, 847204861Sdes unsigned char *data, unsigned long *data_len)); 848204861Sdes_CK_DECLARE_FUNCTION (C_DecryptUpdate, 849204861Sdes (ck_session_handle_t session, 850204861Sdes unsigned char *encrypted_part, 851204861Sdes unsigned long encrypted_part_len, 852204861Sdes unsigned char *part, unsigned long *part_len)); 853204861Sdes_CK_DECLARE_FUNCTION (C_DecryptFinal, 854204861Sdes (ck_session_handle_t session, 855204861Sdes unsigned char *last_part, 856204861Sdes unsigned long *last_part_len)); 857204861Sdes 858204861Sdes_CK_DECLARE_FUNCTION (C_DigestInit, 859204861Sdes (ck_session_handle_t session, 860204861Sdes struct ck_mechanism *mechanism)); 861204861Sdes_CK_DECLARE_FUNCTION (C_Digest, 862204861Sdes (ck_session_handle_t session, 863204861Sdes unsigned char *data, unsigned long data_len, 864204861Sdes unsigned char *digest, 865204861Sdes unsigned long *digest_len)); 866204861Sdes_CK_DECLARE_FUNCTION (C_DigestUpdate, 867204861Sdes (ck_session_handle_t session, 868204861Sdes unsigned char *part, unsigned long part_len)); 869204861Sdes_CK_DECLARE_FUNCTION (C_DigestKey, 870204861Sdes (ck_session_handle_t session, ck_object_handle_t key)); 871204861Sdes_CK_DECLARE_FUNCTION (C_DigestFinal, 872204861Sdes (ck_session_handle_t session, 873204861Sdes unsigned char *digest, 874204861Sdes unsigned long *digest_len)); 875204861Sdes 876204861Sdes_CK_DECLARE_FUNCTION (C_SignInit, 877204861Sdes (ck_session_handle_t session, 878204861Sdes struct ck_mechanism *mechanism, 879204861Sdes ck_object_handle_t key)); 880204861Sdes_CK_DECLARE_FUNCTION (C_Sign, 881204861Sdes (ck_session_handle_t session, 882204861Sdes unsigned char *data, unsigned long data_len, 883204861Sdes unsigned char *signature, 884204861Sdes unsigned long *signature_len)); 885204861Sdes_CK_DECLARE_FUNCTION (C_SignUpdate, 886204861Sdes (ck_session_handle_t session, 887204861Sdes unsigned char *part, unsigned long part_len)); 888204861Sdes_CK_DECLARE_FUNCTION (C_SignFinal, 889204861Sdes (ck_session_handle_t session, 890204861Sdes unsigned char *signature, 891204861Sdes unsigned long *signature_len)); 892204861Sdes_CK_DECLARE_FUNCTION (C_SignRecoverInit, 893204861Sdes (ck_session_handle_t session, 894204861Sdes struct ck_mechanism *mechanism, 895204861Sdes ck_object_handle_t key)); 896204861Sdes_CK_DECLARE_FUNCTION (C_SignRecover, 897204861Sdes (ck_session_handle_t session, 898204861Sdes unsigned char *data, unsigned long data_len, 899204861Sdes unsigned char *signature, 900204861Sdes unsigned long *signature_len)); 901204861Sdes 902204861Sdes_CK_DECLARE_FUNCTION (C_VerifyInit, 903204861Sdes (ck_session_handle_t session, 904204861Sdes struct ck_mechanism *mechanism, 905204861Sdes ck_object_handle_t key)); 906204861Sdes_CK_DECLARE_FUNCTION (C_Verify, 907204861Sdes (ck_session_handle_t session, 908204861Sdes unsigned char *data, unsigned long data_len, 909204861Sdes unsigned char *signature, 910204861Sdes unsigned long signature_len)); 911204861Sdes_CK_DECLARE_FUNCTION (C_VerifyUpdate, 912204861Sdes (ck_session_handle_t session, 913204861Sdes unsigned char *part, unsigned long part_len)); 914204861Sdes_CK_DECLARE_FUNCTION (C_VerifyFinal, 915204861Sdes (ck_session_handle_t session, 916204861Sdes unsigned char *signature, 917204861Sdes unsigned long signature_len)); 918204861Sdes_CK_DECLARE_FUNCTION (C_VerifyRecoverInit, 919204861Sdes (ck_session_handle_t session, 920204861Sdes struct ck_mechanism *mechanism, 921204861Sdes ck_object_handle_t key)); 922204861Sdes_CK_DECLARE_FUNCTION (C_VerifyRecover, 923204861Sdes (ck_session_handle_t session, 924204861Sdes unsigned char *signature, 925204861Sdes unsigned long signature_len, 926204861Sdes unsigned char *data, 927204861Sdes unsigned long *data_len)); 928204861Sdes 929204861Sdes_CK_DECLARE_FUNCTION (C_DigestEncryptUpdate, 930204861Sdes (ck_session_handle_t session, 931204861Sdes unsigned char *part, unsigned long part_len, 932204861Sdes unsigned char *encrypted_part, 933204861Sdes unsigned long *encrypted_part_len)); 934204861Sdes_CK_DECLARE_FUNCTION (C_DecryptDigestUpdate, 935204861Sdes (ck_session_handle_t session, 936204861Sdes unsigned char *encrypted_part, 937204861Sdes unsigned long encrypted_part_len, 938204861Sdes unsigned char *part, 939204861Sdes unsigned long *part_len)); 940204861Sdes_CK_DECLARE_FUNCTION (C_SignEncryptUpdate, 941204861Sdes (ck_session_handle_t session, 942204861Sdes unsigned char *part, unsigned long part_len, 943204861Sdes unsigned char *encrypted_part, 944204861Sdes unsigned long *encrypted_part_len)); 945204861Sdes_CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate, 946204861Sdes (ck_session_handle_t session, 947204861Sdes unsigned char *encrypted_part, 948204861Sdes unsigned long encrypted_part_len, 949204861Sdes unsigned char *part, 950204861Sdes unsigned long *part_len)); 951204861Sdes 952204861Sdes_CK_DECLARE_FUNCTION (C_GenerateKey, 953204861Sdes (ck_session_handle_t session, 954204861Sdes struct ck_mechanism *mechanism, 955204861Sdes struct ck_attribute *templ, 956204861Sdes unsigned long count, 957204861Sdes ck_object_handle_t *key)); 958204861Sdes_CK_DECLARE_FUNCTION (C_GenerateKeyPair, 959204861Sdes (ck_session_handle_t session, 960204861Sdes struct ck_mechanism *mechanism, 961204861Sdes struct ck_attribute *public_key_template, 962204861Sdes unsigned long public_key_attribute_count, 963204861Sdes struct ck_attribute *private_key_template, 964204861Sdes unsigned long private_key_attribute_count, 965204861Sdes ck_object_handle_t *public_key, 966204861Sdes ck_object_handle_t *private_key)); 967204861Sdes_CK_DECLARE_FUNCTION (C_WrapKey, 968204861Sdes (ck_session_handle_t session, 969204861Sdes struct ck_mechanism *mechanism, 970204861Sdes ck_object_handle_t wrapping_key, 971204861Sdes ck_object_handle_t key, 972204861Sdes unsigned char *wrapped_key, 973204861Sdes unsigned long *wrapped_key_len)); 974204861Sdes_CK_DECLARE_FUNCTION (C_UnwrapKey, 975204861Sdes (ck_session_handle_t session, 976204861Sdes struct ck_mechanism *mechanism, 977204861Sdes ck_object_handle_t unwrapping_key, 978204861Sdes unsigned char *wrapped_key, 979204861Sdes unsigned long wrapped_key_len, 980204861Sdes struct ck_attribute *templ, 981204861Sdes unsigned long attribute_count, 982204861Sdes ck_object_handle_t *key)); 983204861Sdes_CK_DECLARE_FUNCTION (C_DeriveKey, 984204861Sdes (ck_session_handle_t session, 985204861Sdes struct ck_mechanism *mechanism, 986204861Sdes ck_object_handle_t base_key, 987204861Sdes struct ck_attribute *templ, 988204861Sdes unsigned long attribute_count, 989204861Sdes ck_object_handle_t *key)); 990204861Sdes 991204861Sdes_CK_DECLARE_FUNCTION (C_SeedRandom, 992204861Sdes (ck_session_handle_t session, unsigned char *seed, 993204861Sdes unsigned long seed_len)); 994204861Sdes_CK_DECLARE_FUNCTION (C_GenerateRandom, 995204861Sdes (ck_session_handle_t session, 996204861Sdes unsigned char *random_data, 997204861Sdes unsigned long random_len)); 998204861Sdes 999204861Sdes_CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session)); 1000204861Sdes_CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session)); 1001204861Sdes 1002204861Sdes 1003204861Sdesstruct ck_function_list 1004204861Sdes{ 1005204861Sdes struct ck_version version; 1006204861Sdes CK_C_Initialize C_Initialize; 1007204861Sdes CK_C_Finalize C_Finalize; 1008204861Sdes CK_C_GetInfo C_GetInfo; 1009204861Sdes CK_C_GetFunctionList C_GetFunctionList; 1010204861Sdes CK_C_GetSlotList C_GetSlotList; 1011204861Sdes CK_C_GetSlotInfo C_GetSlotInfo; 1012204861Sdes CK_C_GetTokenInfo C_GetTokenInfo; 1013204861Sdes CK_C_GetMechanismList C_GetMechanismList; 1014204861Sdes CK_C_GetMechanismInfo C_GetMechanismInfo; 1015204861Sdes CK_C_InitToken C_InitToken; 1016204861Sdes CK_C_InitPIN C_InitPIN; 1017204861Sdes CK_C_SetPIN C_SetPIN; 1018204861Sdes CK_C_OpenSession C_OpenSession; 1019204861Sdes CK_C_CloseSession C_CloseSession; 1020204861Sdes CK_C_CloseAllSessions C_CloseAllSessions; 1021204861Sdes CK_C_GetSessionInfo C_GetSessionInfo; 1022204861Sdes CK_C_GetOperationState C_GetOperationState; 1023204861Sdes CK_C_SetOperationState C_SetOperationState; 1024204861Sdes CK_C_Login C_Login; 1025204861Sdes CK_C_Logout C_Logout; 1026204861Sdes CK_C_CreateObject C_CreateObject; 1027204861Sdes CK_C_CopyObject C_CopyObject; 1028204861Sdes CK_C_DestroyObject C_DestroyObject; 1029204861Sdes CK_C_GetObjectSize C_GetObjectSize; 1030204861Sdes CK_C_GetAttributeValue C_GetAttributeValue; 1031204861Sdes CK_C_SetAttributeValue C_SetAttributeValue; 1032204861Sdes CK_C_FindObjectsInit C_FindObjectsInit; 1033204861Sdes CK_C_FindObjects C_FindObjects; 1034204861Sdes CK_C_FindObjectsFinal C_FindObjectsFinal; 1035204861Sdes CK_C_EncryptInit C_EncryptInit; 1036204861Sdes CK_C_Encrypt C_Encrypt; 1037204861Sdes CK_C_EncryptUpdate C_EncryptUpdate; 1038204861Sdes CK_C_EncryptFinal C_EncryptFinal; 1039204861Sdes CK_C_DecryptInit C_DecryptInit; 1040204861Sdes CK_C_Decrypt C_Decrypt; 1041204861Sdes CK_C_DecryptUpdate C_DecryptUpdate; 1042204861Sdes CK_C_DecryptFinal C_DecryptFinal; 1043204861Sdes CK_C_DigestInit C_DigestInit; 1044204861Sdes CK_C_Digest C_Digest; 1045204861Sdes CK_C_DigestUpdate C_DigestUpdate; 1046204861Sdes CK_C_DigestKey C_DigestKey; 1047204861Sdes CK_C_DigestFinal C_DigestFinal; 1048204861Sdes CK_C_SignInit C_SignInit; 1049204861Sdes CK_C_Sign C_Sign; 1050204861Sdes CK_C_SignUpdate C_SignUpdate; 1051204861Sdes CK_C_SignFinal C_SignFinal; 1052204861Sdes CK_C_SignRecoverInit C_SignRecoverInit; 1053204861Sdes CK_C_SignRecover C_SignRecover; 1054204861Sdes CK_C_VerifyInit C_VerifyInit; 1055204861Sdes CK_C_Verify C_Verify; 1056204861Sdes CK_C_VerifyUpdate C_VerifyUpdate; 1057204861Sdes CK_C_VerifyFinal C_VerifyFinal; 1058204861Sdes CK_C_VerifyRecoverInit C_VerifyRecoverInit; 1059204861Sdes CK_C_VerifyRecover C_VerifyRecover; 1060204861Sdes CK_C_DigestEncryptUpdate C_DigestEncryptUpdate; 1061204861Sdes CK_C_DecryptDigestUpdate C_DecryptDigestUpdate; 1062204861Sdes CK_C_SignEncryptUpdate C_SignEncryptUpdate; 1063204861Sdes CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate; 1064204861Sdes CK_C_GenerateKey C_GenerateKey; 1065204861Sdes CK_C_GenerateKeyPair C_GenerateKeyPair; 1066204861Sdes CK_C_WrapKey C_WrapKey; 1067204861Sdes CK_C_UnwrapKey C_UnwrapKey; 1068204861Sdes CK_C_DeriveKey C_DeriveKey; 1069204861Sdes CK_C_SeedRandom C_SeedRandom; 1070204861Sdes CK_C_GenerateRandom C_GenerateRandom; 1071204861Sdes CK_C_GetFunctionStatus C_GetFunctionStatus; 1072204861Sdes CK_C_CancelFunction C_CancelFunction; 1073204861Sdes CK_C_WaitForSlotEvent C_WaitForSlotEvent; 1074204861Sdes}; 1075204861Sdes 1076204861Sdes 1077204861Sdestypedef ck_rv_t (*ck_createmutex_t) (void **mutex); 1078204861Sdestypedef ck_rv_t (*ck_destroymutex_t) (void *mutex); 1079204861Sdestypedef ck_rv_t (*ck_lockmutex_t) (void *mutex); 1080204861Sdestypedef ck_rv_t (*ck_unlockmutex_t) (void *mutex); 1081204861Sdes 1082204861Sdes 1083204861Sdesstruct ck_c_initialize_args 1084204861Sdes{ 1085204861Sdes ck_createmutex_t create_mutex; 1086204861Sdes ck_destroymutex_t destroy_mutex; 1087204861Sdes ck_lockmutex_t lock_mutex; 1088204861Sdes ck_unlockmutex_t unlock_mutex; 1089204861Sdes ck_flags_t flags; 1090204861Sdes void *reserved; 1091204861Sdes}; 1092204861Sdes 1093204861Sdes 1094204861Sdes#define CKF_LIBRARY_CANT_CREATE_OS_THREADS (1 << 0) 1095204861Sdes#define CKF_OS_LOCKING_OK (1 << 1) 1096204861Sdes 1097204861Sdes#define CKR_OK (0) 1098204861Sdes#define CKR_CANCEL (1) 1099204861Sdes#define CKR_HOST_MEMORY (2) 1100204861Sdes#define CKR_SLOT_ID_INVALID (3) 1101204861Sdes#define CKR_GENERAL_ERROR (5) 1102204861Sdes#define CKR_FUNCTION_FAILED (6) 1103204861Sdes#define CKR_ARGUMENTS_BAD (7) 1104204861Sdes#define CKR_NO_EVENT (8) 1105204861Sdes#define CKR_NEED_TO_CREATE_THREADS (9) 1106204861Sdes#define CKR_CANT_LOCK (0xa) 1107204861Sdes#define CKR_ATTRIBUTE_READ_ONLY (0x10) 1108204861Sdes#define CKR_ATTRIBUTE_SENSITIVE (0x11) 1109204861Sdes#define CKR_ATTRIBUTE_TYPE_INVALID (0x12) 1110204861Sdes#define CKR_ATTRIBUTE_VALUE_INVALID (0x13) 1111204861Sdes#define CKR_DATA_INVALID (0x20) 1112204861Sdes#define CKR_DATA_LEN_RANGE (0x21) 1113204861Sdes#define CKR_DEVICE_ERROR (0x30) 1114204861Sdes#define CKR_DEVICE_MEMORY (0x31) 1115204861Sdes#define CKR_DEVICE_REMOVED (0x32) 1116204861Sdes#define CKR_ENCRYPTED_DATA_INVALID (0x40) 1117204861Sdes#define CKR_ENCRYPTED_DATA_LEN_RANGE (0x41) 1118204861Sdes#define CKR_FUNCTION_CANCELED (0x50) 1119204861Sdes#define CKR_FUNCTION_NOT_PARALLEL (0x51) 1120204861Sdes#define CKR_FUNCTION_NOT_SUPPORTED (0x54) 1121204861Sdes#define CKR_KEY_HANDLE_INVALID (0x60) 1122204861Sdes#define CKR_KEY_SIZE_RANGE (0x62) 1123204861Sdes#define CKR_KEY_TYPE_INCONSISTENT (0x63) 1124204861Sdes#define CKR_KEY_NOT_NEEDED (0x64) 1125204861Sdes#define CKR_KEY_CHANGED (0x65) 1126204861Sdes#define CKR_KEY_NEEDED (0x66) 1127204861Sdes#define CKR_KEY_INDIGESTIBLE (0x67) 1128204861Sdes#define CKR_KEY_FUNCTION_NOT_PERMITTED (0x68) 1129204861Sdes#define CKR_KEY_NOT_WRAPPABLE (0x69) 1130204861Sdes#define CKR_KEY_UNEXTRACTABLE (0x6a) 1131204861Sdes#define CKR_MECHANISM_INVALID (0x70) 1132204861Sdes#define CKR_MECHANISM_PARAM_INVALID (0x71) 1133204861Sdes#define CKR_OBJECT_HANDLE_INVALID (0x82) 1134204861Sdes#define CKR_OPERATION_ACTIVE (0x90) 1135204861Sdes#define CKR_OPERATION_NOT_INITIALIZED (0x91) 1136204861Sdes#define CKR_PIN_INCORRECT (0xa0) 1137204861Sdes#define CKR_PIN_INVALID (0xa1) 1138204861Sdes#define CKR_PIN_LEN_RANGE (0xa2) 1139204861Sdes#define CKR_PIN_EXPIRED (0xa3) 1140204861Sdes#define CKR_PIN_LOCKED (0xa4) 1141204861Sdes#define CKR_SESSION_CLOSED (0xb0) 1142204861Sdes#define CKR_SESSION_COUNT (0xb1) 1143204861Sdes#define CKR_SESSION_HANDLE_INVALID (0xb3) 1144204861Sdes#define CKR_SESSION_PARALLEL_NOT_SUPPORTED (0xb4) 1145204861Sdes#define CKR_SESSION_READ_ONLY (0xb5) 1146204861Sdes#define CKR_SESSION_EXISTS (0xb6) 1147204861Sdes#define CKR_SESSION_READ_ONLY_EXISTS (0xb7) 1148204861Sdes#define CKR_SESSION_READ_WRITE_SO_EXISTS (0xb8) 1149204861Sdes#define CKR_SIGNATURE_INVALID (0xc0) 1150204861Sdes#define CKR_SIGNATURE_LEN_RANGE (0xc1) 1151204861Sdes#define CKR_TEMPLATE_INCOMPLETE (0xd0) 1152204861Sdes#define CKR_TEMPLATE_INCONSISTENT (0xd1) 1153204861Sdes#define CKR_TOKEN_NOT_PRESENT (0xe0) 1154204861Sdes#define CKR_TOKEN_NOT_RECOGNIZED (0xe1) 1155204861Sdes#define CKR_TOKEN_WRITE_PROTECTED (0xe2) 1156204861Sdes#define CKR_UNWRAPPING_KEY_HANDLE_INVALID (0xf0) 1157204861Sdes#define CKR_UNWRAPPING_KEY_SIZE_RANGE (0xf1) 1158204861Sdes#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT (0xf2) 1159204861Sdes#define CKR_USER_ALREADY_LOGGED_IN (0x100) 1160204861Sdes#define CKR_USER_NOT_LOGGED_IN (0x101) 1161204861Sdes#define CKR_USER_PIN_NOT_INITIALIZED (0x102) 1162204861Sdes#define CKR_USER_TYPE_INVALID (0x103) 1163204861Sdes#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN (0x104) 1164204861Sdes#define CKR_USER_TOO_MANY_TYPES (0x105) 1165204861Sdes#define CKR_WRAPPED_KEY_INVALID (0x110) 1166204861Sdes#define CKR_WRAPPED_KEY_LEN_RANGE (0x112) 1167204861Sdes#define CKR_WRAPPING_KEY_HANDLE_INVALID (0x113) 1168204861Sdes#define CKR_WRAPPING_KEY_SIZE_RANGE (0x114) 1169204861Sdes#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT (0x115) 1170204861Sdes#define CKR_RANDOM_SEED_NOT_SUPPORTED (0x120) 1171204861Sdes#define CKR_RANDOM_NO_RNG (0x121) 1172204861Sdes#define CKR_DOMAIN_PARAMS_INVALID (0x130) 1173204861Sdes#define CKR_BUFFER_TOO_SMALL (0x150) 1174204861Sdes#define CKR_SAVED_STATE_INVALID (0x160) 1175204861Sdes#define CKR_INFORMATION_SENSITIVE (0x170) 1176204861Sdes#define CKR_STATE_UNSAVEABLE (0x180) 1177204861Sdes#define CKR_CRYPTOKI_NOT_INITIALIZED (0x190) 1178204861Sdes#define CKR_CRYPTOKI_ALREADY_INITIALIZED (0x191) 1179204861Sdes#define CKR_MUTEX_BAD (0x1a0) 1180204861Sdes#define CKR_MUTEX_NOT_LOCKED (0x1a1) 1181204861Sdes#define CKR_FUNCTION_REJECTED (0x200) 1182262566Sdes#define CKR_VENDOR_DEFINED (1U << 31) 1183204861Sdes 1184204861Sdes 1185204861Sdes 1186204861Sdes/* Compatibility layer. */ 1187204861Sdes 1188204861Sdes#ifdef CRYPTOKI_COMPAT 1189204861Sdes 1190204861Sdes#undef CK_DEFINE_FUNCTION 1191204861Sdes#define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name 1192204861Sdes 1193204861Sdes/* For NULL. */ 1194204861Sdes#include <stddef.h> 1195204861Sdes 1196204861Sdestypedef unsigned char CK_BYTE; 1197204861Sdestypedef unsigned char CK_CHAR; 1198204861Sdestypedef unsigned char CK_UTF8CHAR; 1199204861Sdestypedef unsigned char CK_BBOOL; 1200204861Sdestypedef unsigned long int CK_ULONG; 1201204861Sdestypedef long int CK_LONG; 1202204861Sdestypedef CK_BYTE *CK_BYTE_PTR; 1203204861Sdestypedef CK_CHAR *CK_CHAR_PTR; 1204204861Sdestypedef CK_UTF8CHAR *CK_UTF8CHAR_PTR; 1205204861Sdestypedef CK_ULONG *CK_ULONG_PTR; 1206204861Sdestypedef void *CK_VOID_PTR; 1207204861Sdestypedef void **CK_VOID_PTR_PTR; 1208204861Sdes#define CK_FALSE 0 1209204861Sdes#define CK_TRUE 1 1210204861Sdes#ifndef CK_DISABLE_TRUE_FALSE 1211204861Sdes#ifndef FALSE 1212204861Sdes#define FALSE 0 1213204861Sdes#endif 1214204861Sdes#ifndef TRUE 1215204861Sdes#define TRUE 1 1216204861Sdes#endif 1217204861Sdes#endif 1218204861Sdes 1219204861Sdestypedef struct ck_version CK_VERSION; 1220204861Sdestypedef struct ck_version *CK_VERSION_PTR; 1221204861Sdes 1222204861Sdestypedef struct ck_info CK_INFO; 1223204861Sdestypedef struct ck_info *CK_INFO_PTR; 1224204861Sdes 1225204861Sdestypedef ck_slot_id_t *CK_SLOT_ID_PTR; 1226204861Sdes 1227204861Sdestypedef struct ck_slot_info CK_SLOT_INFO; 1228204861Sdestypedef struct ck_slot_info *CK_SLOT_INFO_PTR; 1229204861Sdes 1230204861Sdestypedef struct ck_token_info CK_TOKEN_INFO; 1231204861Sdestypedef struct ck_token_info *CK_TOKEN_INFO_PTR; 1232204861Sdes 1233204861Sdestypedef ck_session_handle_t *CK_SESSION_HANDLE_PTR; 1234204861Sdes 1235204861Sdestypedef struct ck_session_info CK_SESSION_INFO; 1236204861Sdestypedef struct ck_session_info *CK_SESSION_INFO_PTR; 1237204861Sdes 1238204861Sdestypedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR; 1239204861Sdes 1240204861Sdestypedef ck_object_class_t *CK_OBJECT_CLASS_PTR; 1241204861Sdes 1242204861Sdestypedef struct ck_attribute CK_ATTRIBUTE; 1243204861Sdestypedef struct ck_attribute *CK_ATTRIBUTE_PTR; 1244204861Sdes 1245204861Sdestypedef struct ck_date CK_DATE; 1246204861Sdestypedef struct ck_date *CK_DATE_PTR; 1247204861Sdes 1248204861Sdestypedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR; 1249204861Sdes 1250204861Sdestypedef struct ck_mechanism CK_MECHANISM; 1251204861Sdestypedef struct ck_mechanism *CK_MECHANISM_PTR; 1252204861Sdes 1253204861Sdestypedef struct ck_mechanism_info CK_MECHANISM_INFO; 1254204861Sdestypedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR; 1255204861Sdes 1256204861Sdestypedef struct ck_function_list CK_FUNCTION_LIST; 1257204861Sdestypedef struct ck_function_list *CK_FUNCTION_LIST_PTR; 1258204861Sdestypedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR; 1259204861Sdes 1260204861Sdestypedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS; 1261204861Sdestypedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR; 1262204861Sdes 1263204861Sdes#define NULL_PTR NULL 1264204861Sdes 1265204861Sdes/* Delete the helper macros defined at the top of the file. */ 1266204861Sdes#undef ck_flags_t 1267204861Sdes#undef ck_version 1268204861Sdes 1269204861Sdes#undef ck_info 1270204861Sdes#undef cryptoki_version 1271204861Sdes#undef manufacturer_id 1272204861Sdes#undef library_description 1273204861Sdes#undef library_version 1274204861Sdes 1275204861Sdes#undef ck_notification_t 1276204861Sdes#undef ck_slot_id_t 1277204861Sdes 1278204861Sdes#undef ck_slot_info 1279204861Sdes#undef slot_description 1280204861Sdes#undef hardware_version 1281204861Sdes#undef firmware_version 1282204861Sdes 1283204861Sdes#undef ck_token_info 1284204861Sdes#undef serial_number 1285204861Sdes#undef max_session_count 1286204861Sdes#undef session_count 1287204861Sdes#undef max_rw_session_count 1288204861Sdes#undef rw_session_count 1289204861Sdes#undef max_pin_len 1290204861Sdes#undef min_pin_len 1291204861Sdes#undef total_public_memory 1292204861Sdes#undef free_public_memory 1293204861Sdes#undef total_private_memory 1294204861Sdes#undef free_private_memory 1295204861Sdes#undef utc_time 1296204861Sdes 1297204861Sdes#undef ck_session_handle_t 1298204861Sdes#undef ck_user_type_t 1299204861Sdes#undef ck_state_t 1300204861Sdes 1301204861Sdes#undef ck_session_info 1302204861Sdes#undef slot_id 1303204861Sdes#undef device_error 1304204861Sdes 1305204861Sdes#undef ck_object_handle_t 1306204861Sdes#undef ck_object_class_t 1307204861Sdes#undef ck_hw_feature_type_t 1308204861Sdes#undef ck_key_type_t 1309204861Sdes#undef ck_certificate_type_t 1310204861Sdes#undef ck_attribute_type_t 1311204861Sdes 1312204861Sdes#undef ck_attribute 1313204861Sdes#undef value 1314204861Sdes#undef value_len 1315204861Sdes 1316204861Sdes#undef ck_date 1317204861Sdes 1318204861Sdes#undef ck_mechanism_type_t 1319204861Sdes 1320204861Sdes#undef ck_mechanism 1321204861Sdes#undef parameter 1322204861Sdes#undef parameter_len 1323204861Sdes 1324204861Sdes#undef ck_mechanism_info 1325204861Sdes#undef min_key_size 1326204861Sdes#undef max_key_size 1327204861Sdes 1328204861Sdes#undef ck_rv_t 1329204861Sdes#undef ck_notify_t 1330204861Sdes 1331204861Sdes#undef ck_function_list 1332204861Sdes 1333204861Sdes#undef ck_createmutex_t 1334204861Sdes#undef ck_destroymutex_t 1335204861Sdes#undef ck_lockmutex_t 1336204861Sdes#undef ck_unlockmutex_t 1337204861Sdes 1338204861Sdes#undef ck_c_initialize_args 1339204861Sdes#undef create_mutex 1340204861Sdes#undef destroy_mutex 1341204861Sdes#undef lock_mutex 1342204861Sdes#undef unlock_mutex 1343204861Sdes#undef reserved 1344204861Sdes 1345204861Sdes#endif /* CRYPTOKI_COMPAT */ 1346204861Sdes 1347204861Sdes 1348204861Sdes/* System dependencies. */ 1349204861Sdes#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32) 1350204861Sdes#pragma pack(pop, cryptoki) 1351204861Sdes#endif 1352204861Sdes 1353204861Sdes#if defined(__cplusplus) 1354204861Sdes} 1355204861Sdes#endif 1356204861Sdes 1357204861Sdes#endif /* PKCS11_H */ 1358