1*f7167e0eSDag-Erling Smørgrav /* $OpenBSD: pkcs11.h,v 1.3 2013/11/26 19:15:09 deraadt Exp $ */ 2b15c8340SDag-Erling Smørgrav /* pkcs11.h 3b15c8340SDag-Erling Smørgrav Copyright 2006, 2007 g10 Code GmbH 4b15c8340SDag-Erling Smørgrav Copyright 2006 Andreas Jellinghaus 5b15c8340SDag-Erling Smørgrav 6b15c8340SDag-Erling Smørgrav This file is free software; as a special exception the author gives 7b15c8340SDag-Erling Smørgrav unlimited permission to copy and/or distribute it, with or without 8b15c8340SDag-Erling Smørgrav modifications, as long as this notice is preserved. 9b15c8340SDag-Erling Smørgrav 10b15c8340SDag-Erling Smørgrav This file is distributed in the hope that it will be useful, but 11b15c8340SDag-Erling Smørgrav WITHOUT ANY WARRANTY, to the extent permitted by law; without even 12b15c8340SDag-Erling Smørgrav the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 13b15c8340SDag-Erling Smørgrav PURPOSE. */ 14b15c8340SDag-Erling Smørgrav 15b15c8340SDag-Erling Smørgrav /* Please submit changes back to the Scute project at 16b15c8340SDag-Erling Smørgrav http://www.scute.org/ (or send them to marcus@g10code.com), so that 17b15c8340SDag-Erling Smørgrav they can be picked up by other projects from there as well. */ 18b15c8340SDag-Erling Smørgrav 19b15c8340SDag-Erling Smørgrav /* This file is a modified implementation of the PKCS #11 standard by 20b15c8340SDag-Erling Smørgrav RSA Security Inc. It is mostly a drop-in replacement, with the 21b15c8340SDag-Erling Smørgrav following change: 22b15c8340SDag-Erling Smørgrav 23b15c8340SDag-Erling Smørgrav This header file does not require any macro definitions by the user 24b15c8340SDag-Erling Smørgrav (like CK_DEFINE_FUNCTION etc). In fact, it defines those macros 25b15c8340SDag-Erling Smørgrav for you (if useful, some are missing, let me know if you need 26b15c8340SDag-Erling Smørgrav more). 27b15c8340SDag-Erling Smørgrav 28b15c8340SDag-Erling Smørgrav There is an additional API available that does comply better to the 29b15c8340SDag-Erling Smørgrav GNU coding standard. It can be switched on by defining 30b15c8340SDag-Erling Smørgrav CRYPTOKI_GNU before including this header file. For this, the 31b15c8340SDag-Erling Smørgrav following changes are made to the specification: 32b15c8340SDag-Erling Smørgrav 33b15c8340SDag-Erling Smørgrav All structure types are changed to a "struct ck_foo" where CK_FOO 34b15c8340SDag-Erling Smørgrav is the type name in PKCS #11. 35b15c8340SDag-Erling Smørgrav 36b15c8340SDag-Erling Smørgrav All non-structure types are changed to ck_foo_t where CK_FOO is the 37b15c8340SDag-Erling Smørgrav lowercase version of the type name in PKCS #11. The basic types 38b15c8340SDag-Erling Smørgrav (CK_ULONG et al.) are removed without substitute. 39b15c8340SDag-Erling Smørgrav 40b15c8340SDag-Erling Smørgrav All members of structures are modified in the following way: Type 41b15c8340SDag-Erling Smørgrav indication prefixes are removed, and underscore characters are 42b15c8340SDag-Erling Smørgrav inserted before words. Then the result is lowercased. 43b15c8340SDag-Erling Smørgrav 44b15c8340SDag-Erling Smørgrav Note that function names are still in the original case, as they 45b15c8340SDag-Erling Smørgrav need for ABI compatibility. 46b15c8340SDag-Erling Smørgrav 47b15c8340SDag-Erling Smørgrav CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute. Use 48b15c8340SDag-Erling Smørgrav <stdbool.h>. 49b15c8340SDag-Erling Smørgrav 50b15c8340SDag-Erling Smørgrav If CRYPTOKI_COMPAT is defined before including this header file, 51b15c8340SDag-Erling Smørgrav then none of the API changes above take place, and the API is the 52b15c8340SDag-Erling Smørgrav one defined by the PKCS #11 standard. */ 53b15c8340SDag-Erling Smørgrav 54b15c8340SDag-Erling Smørgrav #ifndef PKCS11_H 55b15c8340SDag-Erling Smørgrav #define PKCS11_H 1 56b15c8340SDag-Erling Smørgrav 57b15c8340SDag-Erling Smørgrav #if defined(__cplusplus) 58b15c8340SDag-Erling Smørgrav extern "C" { 59b15c8340SDag-Erling Smørgrav #endif 60b15c8340SDag-Erling Smørgrav 61b15c8340SDag-Erling Smørgrav 62b15c8340SDag-Erling Smørgrav /* The version of cryptoki we implement. The revision is changed with 63b15c8340SDag-Erling Smørgrav each modification of this file. If you do not use the "official" 64b15c8340SDag-Erling Smørgrav version of this file, please consider deleting the revision macro 65b15c8340SDag-Erling Smørgrav (you may use a macro with a different name to keep track of your 66b15c8340SDag-Erling Smørgrav versions). */ 67b15c8340SDag-Erling Smørgrav #define CRYPTOKI_VERSION_MAJOR 2 68b15c8340SDag-Erling Smørgrav #define CRYPTOKI_VERSION_MINOR 20 69b15c8340SDag-Erling Smørgrav #define CRYPTOKI_VERSION_REVISION 6 70b15c8340SDag-Erling Smørgrav 71b15c8340SDag-Erling Smørgrav 72b15c8340SDag-Erling Smørgrav /* Compatibility interface is default, unless CRYPTOKI_GNU is 73b15c8340SDag-Erling Smørgrav given. */ 74b15c8340SDag-Erling Smørgrav #ifndef CRYPTOKI_GNU 75b15c8340SDag-Erling Smørgrav #ifndef CRYPTOKI_COMPAT 76b15c8340SDag-Erling Smørgrav #define CRYPTOKI_COMPAT 1 77b15c8340SDag-Erling Smørgrav #endif 78b15c8340SDag-Erling Smørgrav #endif 79b15c8340SDag-Erling Smørgrav 80b15c8340SDag-Erling Smørgrav /* System dependencies. */ 81b15c8340SDag-Erling Smørgrav 82b15c8340SDag-Erling Smørgrav #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32) 83b15c8340SDag-Erling Smørgrav 84b15c8340SDag-Erling Smørgrav /* There is a matching pop below. */ 85b15c8340SDag-Erling Smørgrav #pragma pack(push, cryptoki, 1) 86b15c8340SDag-Erling Smørgrav 87b15c8340SDag-Erling Smørgrav #ifdef CRYPTOKI_EXPORTS 88b15c8340SDag-Erling Smørgrav #define CK_SPEC __declspec(dllexport) 89b15c8340SDag-Erling Smørgrav #else 90b15c8340SDag-Erling Smørgrav #define CK_SPEC __declspec(dllimport) 91b15c8340SDag-Erling Smørgrav #endif 92b15c8340SDag-Erling Smørgrav 93b15c8340SDag-Erling Smørgrav #else 94b15c8340SDag-Erling Smørgrav 95b15c8340SDag-Erling Smørgrav #define CK_SPEC 96b15c8340SDag-Erling Smørgrav 97b15c8340SDag-Erling Smørgrav #endif 98b15c8340SDag-Erling Smørgrav 99b15c8340SDag-Erling Smørgrav 100b15c8340SDag-Erling Smørgrav #ifdef CRYPTOKI_COMPAT 101b15c8340SDag-Erling Smørgrav /* If we are in compatibility mode, switch all exposed names to the 102b15c8340SDag-Erling Smørgrav PKCS #11 variant. There are corresponding #undefs below. */ 103b15c8340SDag-Erling Smørgrav 104b15c8340SDag-Erling Smørgrav #define ck_flags_t CK_FLAGS 105b15c8340SDag-Erling Smørgrav #define ck_version _CK_VERSION 106b15c8340SDag-Erling Smørgrav 107b15c8340SDag-Erling Smørgrav #define ck_info _CK_INFO 108b15c8340SDag-Erling Smørgrav #define cryptoki_version cryptokiVersion 109b15c8340SDag-Erling Smørgrav #define manufacturer_id manufacturerID 110b15c8340SDag-Erling Smørgrav #define library_description libraryDescription 111b15c8340SDag-Erling Smørgrav #define library_version libraryVersion 112b15c8340SDag-Erling Smørgrav 113b15c8340SDag-Erling Smørgrav #define ck_notification_t CK_NOTIFICATION 114b15c8340SDag-Erling Smørgrav #define ck_slot_id_t CK_SLOT_ID 115b15c8340SDag-Erling Smørgrav 116b15c8340SDag-Erling Smørgrav #define ck_slot_info _CK_SLOT_INFO 117b15c8340SDag-Erling Smørgrav #define slot_description slotDescription 118b15c8340SDag-Erling Smørgrav #define hardware_version hardwareVersion 119b15c8340SDag-Erling Smørgrav #define firmware_version firmwareVersion 120b15c8340SDag-Erling Smørgrav 121b15c8340SDag-Erling Smørgrav #define ck_token_info _CK_TOKEN_INFO 122b15c8340SDag-Erling Smørgrav #define serial_number serialNumber 123b15c8340SDag-Erling Smørgrav #define max_session_count ulMaxSessionCount 124b15c8340SDag-Erling Smørgrav #define session_count ulSessionCount 125b15c8340SDag-Erling Smørgrav #define max_rw_session_count ulMaxRwSessionCount 126b15c8340SDag-Erling Smørgrav #define rw_session_count ulRwSessionCount 127b15c8340SDag-Erling Smørgrav #define max_pin_len ulMaxPinLen 128b15c8340SDag-Erling Smørgrav #define min_pin_len ulMinPinLen 129b15c8340SDag-Erling Smørgrav #define total_public_memory ulTotalPublicMemory 130b15c8340SDag-Erling Smørgrav #define free_public_memory ulFreePublicMemory 131b15c8340SDag-Erling Smørgrav #define total_private_memory ulTotalPrivateMemory 132b15c8340SDag-Erling Smørgrav #define free_private_memory ulFreePrivateMemory 133b15c8340SDag-Erling Smørgrav #define utc_time utcTime 134b15c8340SDag-Erling Smørgrav 135b15c8340SDag-Erling Smørgrav #define ck_session_handle_t CK_SESSION_HANDLE 136b15c8340SDag-Erling Smørgrav #define ck_user_type_t CK_USER_TYPE 137b15c8340SDag-Erling Smørgrav #define ck_state_t CK_STATE 138b15c8340SDag-Erling Smørgrav 139b15c8340SDag-Erling Smørgrav #define ck_session_info _CK_SESSION_INFO 140b15c8340SDag-Erling Smørgrav #define slot_id slotID 141b15c8340SDag-Erling Smørgrav #define device_error ulDeviceError 142b15c8340SDag-Erling Smørgrav 143b15c8340SDag-Erling Smørgrav #define ck_object_handle_t CK_OBJECT_HANDLE 144b15c8340SDag-Erling Smørgrav #define ck_object_class_t CK_OBJECT_CLASS 145b15c8340SDag-Erling Smørgrav #define ck_hw_feature_type_t CK_HW_FEATURE_TYPE 146b15c8340SDag-Erling Smørgrav #define ck_key_type_t CK_KEY_TYPE 147b15c8340SDag-Erling Smørgrav #define ck_certificate_type_t CK_CERTIFICATE_TYPE 148b15c8340SDag-Erling Smørgrav #define ck_attribute_type_t CK_ATTRIBUTE_TYPE 149b15c8340SDag-Erling Smørgrav 150b15c8340SDag-Erling Smørgrav #define ck_attribute _CK_ATTRIBUTE 151b15c8340SDag-Erling Smørgrav #define value pValue 152b15c8340SDag-Erling Smørgrav #define value_len ulValueLen 153b15c8340SDag-Erling Smørgrav 154b15c8340SDag-Erling Smørgrav #define ck_date _CK_DATE 155b15c8340SDag-Erling Smørgrav 156b15c8340SDag-Erling Smørgrav #define ck_mechanism_type_t CK_MECHANISM_TYPE 157b15c8340SDag-Erling Smørgrav 158b15c8340SDag-Erling Smørgrav #define ck_mechanism _CK_MECHANISM 159b15c8340SDag-Erling Smørgrav #define parameter pParameter 160b15c8340SDag-Erling Smørgrav #define parameter_len ulParameterLen 161b15c8340SDag-Erling Smørgrav 162b15c8340SDag-Erling Smørgrav #define ck_mechanism_info _CK_MECHANISM_INFO 163b15c8340SDag-Erling Smørgrav #define min_key_size ulMinKeySize 164b15c8340SDag-Erling Smørgrav #define max_key_size ulMaxKeySize 165b15c8340SDag-Erling Smørgrav 166b15c8340SDag-Erling Smørgrav #define ck_rv_t CK_RV 167b15c8340SDag-Erling Smørgrav #define ck_notify_t CK_NOTIFY 168b15c8340SDag-Erling Smørgrav 169b15c8340SDag-Erling Smørgrav #define ck_function_list _CK_FUNCTION_LIST 170b15c8340SDag-Erling Smørgrav 171b15c8340SDag-Erling Smørgrav #define ck_createmutex_t CK_CREATEMUTEX 172b15c8340SDag-Erling Smørgrav #define ck_destroymutex_t CK_DESTROYMUTEX 173b15c8340SDag-Erling Smørgrav #define ck_lockmutex_t CK_LOCKMUTEX 174b15c8340SDag-Erling Smørgrav #define ck_unlockmutex_t CK_UNLOCKMUTEX 175b15c8340SDag-Erling Smørgrav 176b15c8340SDag-Erling Smørgrav #define ck_c_initialize_args _CK_C_INITIALIZE_ARGS 177b15c8340SDag-Erling Smørgrav #define create_mutex CreateMutex 178b15c8340SDag-Erling Smørgrav #define destroy_mutex DestroyMutex 179b15c8340SDag-Erling Smørgrav #define lock_mutex LockMutex 180b15c8340SDag-Erling Smørgrav #define unlock_mutex UnlockMutex 181b15c8340SDag-Erling Smørgrav #define reserved pReserved 182b15c8340SDag-Erling Smørgrav 183b15c8340SDag-Erling Smørgrav #endif /* CRYPTOKI_COMPAT */ 184b15c8340SDag-Erling Smørgrav 185b15c8340SDag-Erling Smørgrav 186b15c8340SDag-Erling Smørgrav 187b15c8340SDag-Erling Smørgrav typedef unsigned long ck_flags_t; 188b15c8340SDag-Erling Smørgrav 189b15c8340SDag-Erling Smørgrav struct ck_version 190b15c8340SDag-Erling Smørgrav { 191b15c8340SDag-Erling Smørgrav unsigned char major; 192b15c8340SDag-Erling Smørgrav unsigned char minor; 193b15c8340SDag-Erling Smørgrav }; 194b15c8340SDag-Erling Smørgrav 195b15c8340SDag-Erling Smørgrav 196b15c8340SDag-Erling Smørgrav struct ck_info 197b15c8340SDag-Erling Smørgrav { 198b15c8340SDag-Erling Smørgrav struct ck_version cryptoki_version; 199b15c8340SDag-Erling Smørgrav unsigned char manufacturer_id[32]; 200b15c8340SDag-Erling Smørgrav ck_flags_t flags; 201b15c8340SDag-Erling Smørgrav unsigned char library_description[32]; 202b15c8340SDag-Erling Smørgrav struct ck_version library_version; 203b15c8340SDag-Erling Smørgrav }; 204b15c8340SDag-Erling Smørgrav 205b15c8340SDag-Erling Smørgrav 206b15c8340SDag-Erling Smørgrav typedef unsigned long ck_notification_t; 207b15c8340SDag-Erling Smørgrav 208b15c8340SDag-Erling Smørgrav #define CKN_SURRENDER (0) 209b15c8340SDag-Erling Smørgrav 210b15c8340SDag-Erling Smørgrav 211b15c8340SDag-Erling Smørgrav typedef unsigned long ck_slot_id_t; 212b15c8340SDag-Erling Smørgrav 213b15c8340SDag-Erling Smørgrav 214b15c8340SDag-Erling Smørgrav struct ck_slot_info 215b15c8340SDag-Erling Smørgrav { 216b15c8340SDag-Erling Smørgrav unsigned char slot_description[64]; 217b15c8340SDag-Erling Smørgrav unsigned char manufacturer_id[32]; 218b15c8340SDag-Erling Smørgrav ck_flags_t flags; 219b15c8340SDag-Erling Smørgrav struct ck_version hardware_version; 220b15c8340SDag-Erling Smørgrav struct ck_version firmware_version; 221b15c8340SDag-Erling Smørgrav }; 222b15c8340SDag-Erling Smørgrav 223b15c8340SDag-Erling Smørgrav 224b15c8340SDag-Erling Smørgrav #define CKF_TOKEN_PRESENT (1 << 0) 225b15c8340SDag-Erling Smørgrav #define CKF_REMOVABLE_DEVICE (1 << 1) 226b15c8340SDag-Erling Smørgrav #define CKF_HW_SLOT (1 << 2) 227b15c8340SDag-Erling Smørgrav #define CKF_ARRAY_ATTRIBUTE (1 << 30) 228b15c8340SDag-Erling Smørgrav 229b15c8340SDag-Erling Smørgrav 230b15c8340SDag-Erling Smørgrav struct ck_token_info 231b15c8340SDag-Erling Smørgrav { 232b15c8340SDag-Erling Smørgrav unsigned char label[32]; 233b15c8340SDag-Erling Smørgrav unsigned char manufacturer_id[32]; 234b15c8340SDag-Erling Smørgrav unsigned char model[16]; 235b15c8340SDag-Erling Smørgrav unsigned char serial_number[16]; 236b15c8340SDag-Erling Smørgrav ck_flags_t flags; 237b15c8340SDag-Erling Smørgrav unsigned long max_session_count; 238b15c8340SDag-Erling Smørgrav unsigned long session_count; 239b15c8340SDag-Erling Smørgrav unsigned long max_rw_session_count; 240b15c8340SDag-Erling Smørgrav unsigned long rw_session_count; 241b15c8340SDag-Erling Smørgrav unsigned long max_pin_len; 242b15c8340SDag-Erling Smørgrav unsigned long min_pin_len; 243b15c8340SDag-Erling Smørgrav unsigned long total_public_memory; 244b15c8340SDag-Erling Smørgrav unsigned long free_public_memory; 245b15c8340SDag-Erling Smørgrav unsigned long total_private_memory; 246b15c8340SDag-Erling Smørgrav unsigned long free_private_memory; 247b15c8340SDag-Erling Smørgrav struct ck_version hardware_version; 248b15c8340SDag-Erling Smørgrav struct ck_version firmware_version; 249b15c8340SDag-Erling Smørgrav unsigned char utc_time[16]; 250b15c8340SDag-Erling Smørgrav }; 251b15c8340SDag-Erling Smørgrav 252b15c8340SDag-Erling Smørgrav 253b15c8340SDag-Erling Smørgrav #define CKF_RNG (1 << 0) 254b15c8340SDag-Erling Smørgrav #define CKF_WRITE_PROTECTED (1 << 1) 255b15c8340SDag-Erling Smørgrav #define CKF_LOGIN_REQUIRED (1 << 2) 256b15c8340SDag-Erling Smørgrav #define CKF_USER_PIN_INITIALIZED (1 << 3) 257b15c8340SDag-Erling Smørgrav #define CKF_RESTORE_KEY_NOT_NEEDED (1 << 5) 258b15c8340SDag-Erling Smørgrav #define CKF_CLOCK_ON_TOKEN (1 << 6) 259b15c8340SDag-Erling Smørgrav #define CKF_PROTECTED_AUTHENTICATION_PATH (1 << 8) 260b15c8340SDag-Erling Smørgrav #define CKF_DUAL_CRYPTO_OPERATIONS (1 << 9) 261b15c8340SDag-Erling Smørgrav #define CKF_TOKEN_INITIALIZED (1 << 10) 262b15c8340SDag-Erling Smørgrav #define CKF_SECONDARY_AUTHENTICATION (1 << 11) 263b15c8340SDag-Erling Smørgrav #define CKF_USER_PIN_COUNT_LOW (1 << 16) 264b15c8340SDag-Erling Smørgrav #define CKF_USER_PIN_FINAL_TRY (1 << 17) 265b15c8340SDag-Erling Smørgrav #define CKF_USER_PIN_LOCKED (1 << 18) 266b15c8340SDag-Erling Smørgrav #define CKF_USER_PIN_TO_BE_CHANGED (1 << 19) 267b15c8340SDag-Erling Smørgrav #define CKF_SO_PIN_COUNT_LOW (1 << 20) 268b15c8340SDag-Erling Smørgrav #define CKF_SO_PIN_FINAL_TRY (1 << 21) 269b15c8340SDag-Erling Smørgrav #define CKF_SO_PIN_LOCKED (1 << 22) 270b15c8340SDag-Erling Smørgrav #define CKF_SO_PIN_TO_BE_CHANGED (1 << 23) 271b15c8340SDag-Erling Smørgrav 272b15c8340SDag-Erling Smørgrav #define CK_UNAVAILABLE_INFORMATION ((unsigned long) -1) 273b15c8340SDag-Erling Smørgrav #define CK_EFFECTIVELY_INFINITE (0) 274b15c8340SDag-Erling Smørgrav 275b15c8340SDag-Erling Smørgrav 276b15c8340SDag-Erling Smørgrav typedef unsigned long ck_session_handle_t; 277b15c8340SDag-Erling Smørgrav 278b15c8340SDag-Erling Smørgrav #define CK_INVALID_HANDLE (0) 279b15c8340SDag-Erling Smørgrav 280b15c8340SDag-Erling Smørgrav 281b15c8340SDag-Erling Smørgrav typedef unsigned long ck_user_type_t; 282b15c8340SDag-Erling Smørgrav 283b15c8340SDag-Erling Smørgrav #define CKU_SO (0) 284b15c8340SDag-Erling Smørgrav #define CKU_USER (1) 285b15c8340SDag-Erling Smørgrav #define CKU_CONTEXT_SPECIFIC (2) 286b15c8340SDag-Erling Smørgrav 287b15c8340SDag-Erling Smørgrav 288b15c8340SDag-Erling Smørgrav typedef unsigned long ck_state_t; 289b15c8340SDag-Erling Smørgrav 290b15c8340SDag-Erling Smørgrav #define CKS_RO_PUBLIC_SESSION (0) 291b15c8340SDag-Erling Smørgrav #define CKS_RO_USER_FUNCTIONS (1) 292b15c8340SDag-Erling Smørgrav #define CKS_RW_PUBLIC_SESSION (2) 293b15c8340SDag-Erling Smørgrav #define CKS_RW_USER_FUNCTIONS (3) 294b15c8340SDag-Erling Smørgrav #define CKS_RW_SO_FUNCTIONS (4) 295b15c8340SDag-Erling Smørgrav 296b15c8340SDag-Erling Smørgrav 297b15c8340SDag-Erling Smørgrav struct ck_session_info 298b15c8340SDag-Erling Smørgrav { 299b15c8340SDag-Erling Smørgrav ck_slot_id_t slot_id; 300b15c8340SDag-Erling Smørgrav ck_state_t state; 301b15c8340SDag-Erling Smørgrav ck_flags_t flags; 302b15c8340SDag-Erling Smørgrav unsigned long device_error; 303b15c8340SDag-Erling Smørgrav }; 304b15c8340SDag-Erling Smørgrav 305b15c8340SDag-Erling Smørgrav #define CKF_RW_SESSION (1 << 1) 306b15c8340SDag-Erling Smørgrav #define CKF_SERIAL_SESSION (1 << 2) 307b15c8340SDag-Erling Smørgrav 308b15c8340SDag-Erling Smørgrav 309b15c8340SDag-Erling Smørgrav typedef unsigned long ck_object_handle_t; 310b15c8340SDag-Erling Smørgrav 311b15c8340SDag-Erling Smørgrav 312b15c8340SDag-Erling Smørgrav typedef unsigned long ck_object_class_t; 313b15c8340SDag-Erling Smørgrav 314b15c8340SDag-Erling Smørgrav #define CKO_DATA (0) 315b15c8340SDag-Erling Smørgrav #define CKO_CERTIFICATE (1) 316b15c8340SDag-Erling Smørgrav #define CKO_PUBLIC_KEY (2) 317b15c8340SDag-Erling Smørgrav #define CKO_PRIVATE_KEY (3) 318b15c8340SDag-Erling Smørgrav #define CKO_SECRET_KEY (4) 319b15c8340SDag-Erling Smørgrav #define CKO_HW_FEATURE (5) 320b15c8340SDag-Erling Smørgrav #define CKO_DOMAIN_PARAMETERS (6) 321b15c8340SDag-Erling Smørgrav #define CKO_MECHANISM (7) 322*f7167e0eSDag-Erling Smørgrav #define CKO_VENDOR_DEFINED (1U << 31) 323b15c8340SDag-Erling Smørgrav 324b15c8340SDag-Erling Smørgrav 325b15c8340SDag-Erling Smørgrav typedef unsigned long ck_hw_feature_type_t; 326b15c8340SDag-Erling Smørgrav 327b15c8340SDag-Erling Smørgrav #define CKH_MONOTONIC_COUNTER (1) 328b15c8340SDag-Erling Smørgrav #define CKH_CLOCK (2) 329b15c8340SDag-Erling Smørgrav #define CKH_USER_INTERFACE (3) 330*f7167e0eSDag-Erling Smørgrav #define CKH_VENDOR_DEFINED (1U << 31) 331b15c8340SDag-Erling Smørgrav 332b15c8340SDag-Erling Smørgrav 333b15c8340SDag-Erling Smørgrav typedef unsigned long ck_key_type_t; 334b15c8340SDag-Erling Smørgrav 335b15c8340SDag-Erling Smørgrav #define CKK_RSA (0) 336b15c8340SDag-Erling Smørgrav #define CKK_DSA (1) 337b15c8340SDag-Erling Smørgrav #define CKK_DH (2) 338b15c8340SDag-Erling Smørgrav #define CKK_ECDSA (3) 339b15c8340SDag-Erling Smørgrav #define CKK_EC (3) 340b15c8340SDag-Erling Smørgrav #define CKK_X9_42_DH (4) 341b15c8340SDag-Erling Smørgrav #define CKK_KEA (5) 342b15c8340SDag-Erling Smørgrav #define CKK_GENERIC_SECRET (0x10) 343b15c8340SDag-Erling Smørgrav #define CKK_RC2 (0x11) 344b15c8340SDag-Erling Smørgrav #define CKK_RC4 (0x12) 345b15c8340SDag-Erling Smørgrav #define CKK_DES (0x13) 346b15c8340SDag-Erling Smørgrav #define CKK_DES2 (0x14) 347b15c8340SDag-Erling Smørgrav #define CKK_DES3 (0x15) 348b15c8340SDag-Erling Smørgrav #define CKK_CAST (0x16) 349b15c8340SDag-Erling Smørgrav #define CKK_CAST3 (0x17) 350b15c8340SDag-Erling Smørgrav #define CKK_CAST128 (0x18) 351b15c8340SDag-Erling Smørgrav #define CKK_RC5 (0x19) 352b15c8340SDag-Erling Smørgrav #define CKK_IDEA (0x1a) 353b15c8340SDag-Erling Smørgrav #define CKK_SKIPJACK (0x1b) 354b15c8340SDag-Erling Smørgrav #define CKK_BATON (0x1c) 355b15c8340SDag-Erling Smørgrav #define CKK_JUNIPER (0x1d) 356b15c8340SDag-Erling Smørgrav #define CKK_CDMF (0x1e) 357b15c8340SDag-Erling Smørgrav #define CKK_AES (0x1f) 358b15c8340SDag-Erling Smørgrav #define CKK_BLOWFISH (0x20) 359b15c8340SDag-Erling Smørgrav #define CKK_TWOFISH (0x21) 360*f7167e0eSDag-Erling Smørgrav #define CKK_VENDOR_DEFINED (1U << 31) 361b15c8340SDag-Erling Smørgrav 362b15c8340SDag-Erling Smørgrav typedef unsigned long ck_certificate_type_t; 363b15c8340SDag-Erling Smørgrav 364b15c8340SDag-Erling Smørgrav #define CKC_X_509 (0) 365b15c8340SDag-Erling Smørgrav #define CKC_X_509_ATTR_CERT (1) 366b15c8340SDag-Erling Smørgrav #define CKC_WTLS (2) 367*f7167e0eSDag-Erling Smørgrav #define CKC_VENDOR_DEFINED (1U << 31) 368b15c8340SDag-Erling Smørgrav 369b15c8340SDag-Erling Smørgrav 370b15c8340SDag-Erling Smørgrav typedef unsigned long ck_attribute_type_t; 371b15c8340SDag-Erling Smørgrav 372b15c8340SDag-Erling Smørgrav #define CKA_CLASS (0) 373b15c8340SDag-Erling Smørgrav #define CKA_TOKEN (1) 374b15c8340SDag-Erling Smørgrav #define CKA_PRIVATE (2) 375b15c8340SDag-Erling Smørgrav #define CKA_LABEL (3) 376b15c8340SDag-Erling Smørgrav #define CKA_APPLICATION (0x10) 377b15c8340SDag-Erling Smørgrav #define CKA_VALUE (0x11) 378b15c8340SDag-Erling Smørgrav #define CKA_OBJECT_ID (0x12) 379b15c8340SDag-Erling Smørgrav #define CKA_CERTIFICATE_TYPE (0x80) 380b15c8340SDag-Erling Smørgrav #define CKA_ISSUER (0x81) 381b15c8340SDag-Erling Smørgrav #define CKA_SERIAL_NUMBER (0x82) 382b15c8340SDag-Erling Smørgrav #define CKA_AC_ISSUER (0x83) 383b15c8340SDag-Erling Smørgrav #define CKA_OWNER (0x84) 384b15c8340SDag-Erling Smørgrav #define CKA_ATTR_TYPES (0x85) 385b15c8340SDag-Erling Smørgrav #define CKA_TRUSTED (0x86) 386b15c8340SDag-Erling Smørgrav #define CKA_CERTIFICATE_CATEGORY (0x87) 387b15c8340SDag-Erling Smørgrav #define CKA_JAVA_MIDP_SECURITY_DOMAIN (0x88) 388b15c8340SDag-Erling Smørgrav #define CKA_URL (0x89) 389b15c8340SDag-Erling Smørgrav #define CKA_HASH_OF_SUBJECT_PUBLIC_KEY (0x8a) 390b15c8340SDag-Erling Smørgrav #define CKA_HASH_OF_ISSUER_PUBLIC_KEY (0x8b) 391b15c8340SDag-Erling Smørgrav #define CKA_CHECK_VALUE (0x90) 392b15c8340SDag-Erling Smørgrav #define CKA_KEY_TYPE (0x100) 393b15c8340SDag-Erling Smørgrav #define CKA_SUBJECT (0x101) 394b15c8340SDag-Erling Smørgrav #define CKA_ID (0x102) 395b15c8340SDag-Erling Smørgrav #define CKA_SENSITIVE (0x103) 396b15c8340SDag-Erling Smørgrav #define CKA_ENCRYPT (0x104) 397b15c8340SDag-Erling Smørgrav #define CKA_DECRYPT (0x105) 398b15c8340SDag-Erling Smørgrav #define CKA_WRAP (0x106) 399b15c8340SDag-Erling Smørgrav #define CKA_UNWRAP (0x107) 400b15c8340SDag-Erling Smørgrav #define CKA_SIGN (0x108) 401b15c8340SDag-Erling Smørgrav #define CKA_SIGN_RECOVER (0x109) 402b15c8340SDag-Erling Smørgrav #define CKA_VERIFY (0x10a) 403b15c8340SDag-Erling Smørgrav #define CKA_VERIFY_RECOVER (0x10b) 404b15c8340SDag-Erling Smørgrav #define CKA_DERIVE (0x10c) 405b15c8340SDag-Erling Smørgrav #define CKA_START_DATE (0x110) 406b15c8340SDag-Erling Smørgrav #define CKA_END_DATE (0x111) 407b15c8340SDag-Erling Smørgrav #define CKA_MODULUS (0x120) 408b15c8340SDag-Erling Smørgrav #define CKA_MODULUS_BITS (0x121) 409b15c8340SDag-Erling Smørgrav #define CKA_PUBLIC_EXPONENT (0x122) 410b15c8340SDag-Erling Smørgrav #define CKA_PRIVATE_EXPONENT (0x123) 411b15c8340SDag-Erling Smørgrav #define CKA_PRIME_1 (0x124) 412b15c8340SDag-Erling Smørgrav #define CKA_PRIME_2 (0x125) 413b15c8340SDag-Erling Smørgrav #define CKA_EXPONENT_1 (0x126) 414b15c8340SDag-Erling Smørgrav #define CKA_EXPONENT_2 (0x127) 415b15c8340SDag-Erling Smørgrav #define CKA_COEFFICIENT (0x128) 416b15c8340SDag-Erling Smørgrav #define CKA_PRIME (0x130) 417b15c8340SDag-Erling Smørgrav #define CKA_SUBPRIME (0x131) 418b15c8340SDag-Erling Smørgrav #define CKA_BASE (0x132) 419b15c8340SDag-Erling Smørgrav #define CKA_PRIME_BITS (0x133) 420b15c8340SDag-Erling Smørgrav #define CKA_SUB_PRIME_BITS (0x134) 421b15c8340SDag-Erling Smørgrav #define CKA_VALUE_BITS (0x160) 422b15c8340SDag-Erling Smørgrav #define CKA_VALUE_LEN (0x161) 423b15c8340SDag-Erling Smørgrav #define CKA_EXTRACTABLE (0x162) 424b15c8340SDag-Erling Smørgrav #define CKA_LOCAL (0x163) 425b15c8340SDag-Erling Smørgrav #define CKA_NEVER_EXTRACTABLE (0x164) 426b15c8340SDag-Erling Smørgrav #define CKA_ALWAYS_SENSITIVE (0x165) 427b15c8340SDag-Erling Smørgrav #define CKA_KEY_GEN_MECHANISM (0x166) 428b15c8340SDag-Erling Smørgrav #define CKA_MODIFIABLE (0x170) 429b15c8340SDag-Erling Smørgrav #define CKA_ECDSA_PARAMS (0x180) 430b15c8340SDag-Erling Smørgrav #define CKA_EC_PARAMS (0x180) 431b15c8340SDag-Erling Smørgrav #define CKA_EC_POINT (0x181) 432b15c8340SDag-Erling Smørgrav #define CKA_SECONDARY_AUTH (0x200) 433b15c8340SDag-Erling Smørgrav #define CKA_AUTH_PIN_FLAGS (0x201) 434b15c8340SDag-Erling Smørgrav #define CKA_ALWAYS_AUTHENTICATE (0x202) 435b15c8340SDag-Erling Smørgrav #define CKA_WRAP_WITH_TRUSTED (0x210) 436b15c8340SDag-Erling Smørgrav #define CKA_HW_FEATURE_TYPE (0x300) 437b15c8340SDag-Erling Smørgrav #define CKA_RESET_ON_INIT (0x301) 438b15c8340SDag-Erling Smørgrav #define CKA_HAS_RESET (0x302) 439b15c8340SDag-Erling Smørgrav #define CKA_PIXEL_X (0x400) 440b15c8340SDag-Erling Smørgrav #define CKA_PIXEL_Y (0x401) 441b15c8340SDag-Erling Smørgrav #define CKA_RESOLUTION (0x402) 442b15c8340SDag-Erling Smørgrav #define CKA_CHAR_ROWS (0x403) 443b15c8340SDag-Erling Smørgrav #define CKA_CHAR_COLUMNS (0x404) 444b15c8340SDag-Erling Smørgrav #define CKA_COLOR (0x405) 445b15c8340SDag-Erling Smørgrav #define CKA_BITS_PER_PIXEL (0x406) 446b15c8340SDag-Erling Smørgrav #define CKA_CHAR_SETS (0x480) 447b15c8340SDag-Erling Smørgrav #define CKA_ENCODING_METHODS (0x481) 448b15c8340SDag-Erling Smørgrav #define CKA_MIME_TYPES (0x482) 449b15c8340SDag-Erling Smørgrav #define CKA_MECHANISM_TYPE (0x500) 450b15c8340SDag-Erling Smørgrav #define CKA_REQUIRED_CMS_ATTRIBUTES (0x501) 451b15c8340SDag-Erling Smørgrav #define CKA_DEFAULT_CMS_ATTRIBUTES (0x502) 452b15c8340SDag-Erling Smørgrav #define CKA_SUPPORTED_CMS_ATTRIBUTES (0x503) 453b15c8340SDag-Erling Smørgrav #define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x211) 454b15c8340SDag-Erling Smørgrav #define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x212) 455b15c8340SDag-Erling Smørgrav #define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE | 0x600) 456*f7167e0eSDag-Erling Smørgrav #define CKA_VENDOR_DEFINED (1U << 31) 457b15c8340SDag-Erling Smørgrav 458b15c8340SDag-Erling Smørgrav 459b15c8340SDag-Erling Smørgrav struct ck_attribute 460b15c8340SDag-Erling Smørgrav { 461b15c8340SDag-Erling Smørgrav ck_attribute_type_t type; 462b15c8340SDag-Erling Smørgrav void *value; 463b15c8340SDag-Erling Smørgrav unsigned long value_len; 464b15c8340SDag-Erling Smørgrav }; 465b15c8340SDag-Erling Smørgrav 466b15c8340SDag-Erling Smørgrav 467b15c8340SDag-Erling Smørgrav struct ck_date 468b15c8340SDag-Erling Smørgrav { 469b15c8340SDag-Erling Smørgrav unsigned char year[4]; 470b15c8340SDag-Erling Smørgrav unsigned char month[2]; 471b15c8340SDag-Erling Smørgrav unsigned char day[2]; 472b15c8340SDag-Erling Smørgrav }; 473b15c8340SDag-Erling Smørgrav 474b15c8340SDag-Erling Smørgrav 475b15c8340SDag-Erling Smørgrav typedef unsigned long ck_mechanism_type_t; 476b15c8340SDag-Erling Smørgrav 477b15c8340SDag-Erling Smørgrav #define CKM_RSA_PKCS_KEY_PAIR_GEN (0) 478b15c8340SDag-Erling Smørgrav #define CKM_RSA_PKCS (1) 479b15c8340SDag-Erling Smørgrav #define CKM_RSA_9796 (2) 480b15c8340SDag-Erling Smørgrav #define CKM_RSA_X_509 (3) 481b15c8340SDag-Erling Smørgrav #define CKM_MD2_RSA_PKCS (4) 482b15c8340SDag-Erling Smørgrav #define CKM_MD5_RSA_PKCS (5) 483b15c8340SDag-Erling Smørgrav #define CKM_SHA1_RSA_PKCS (6) 484b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD128_RSA_PKCS (7) 485b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD160_RSA_PKCS (8) 486b15c8340SDag-Erling Smørgrav #define CKM_RSA_PKCS_OAEP (9) 487b15c8340SDag-Erling Smørgrav #define CKM_RSA_X9_31_KEY_PAIR_GEN (0xa) 488b15c8340SDag-Erling Smørgrav #define CKM_RSA_X9_31 (0xb) 489b15c8340SDag-Erling Smørgrav #define CKM_SHA1_RSA_X9_31 (0xc) 490b15c8340SDag-Erling Smørgrav #define CKM_RSA_PKCS_PSS (0xd) 491b15c8340SDag-Erling Smørgrav #define CKM_SHA1_RSA_PKCS_PSS (0xe) 492b15c8340SDag-Erling Smørgrav #define CKM_DSA_KEY_PAIR_GEN (0x10) 493b15c8340SDag-Erling Smørgrav #define CKM_DSA (0x11) 494b15c8340SDag-Erling Smørgrav #define CKM_DSA_SHA1 (0x12) 495b15c8340SDag-Erling Smørgrav #define CKM_DH_PKCS_KEY_PAIR_GEN (0x20) 496b15c8340SDag-Erling Smørgrav #define CKM_DH_PKCS_DERIVE (0x21) 497b15c8340SDag-Erling Smørgrav #define CKM_X9_42_DH_KEY_PAIR_GEN (0x30) 498b15c8340SDag-Erling Smørgrav #define CKM_X9_42_DH_DERIVE (0x31) 499b15c8340SDag-Erling Smørgrav #define CKM_X9_42_DH_HYBRID_DERIVE (0x32) 500b15c8340SDag-Erling Smørgrav #define CKM_X9_42_MQV_DERIVE (0x33) 501b15c8340SDag-Erling Smørgrav #define CKM_SHA256_RSA_PKCS (0x40) 502b15c8340SDag-Erling Smørgrav #define CKM_SHA384_RSA_PKCS (0x41) 503b15c8340SDag-Erling Smørgrav #define CKM_SHA512_RSA_PKCS (0x42) 504b15c8340SDag-Erling Smørgrav #define CKM_SHA256_RSA_PKCS_PSS (0x43) 505b15c8340SDag-Erling Smørgrav #define CKM_SHA384_RSA_PKCS_PSS (0x44) 506b15c8340SDag-Erling Smørgrav #define CKM_SHA512_RSA_PKCS_PSS (0x45) 507b15c8340SDag-Erling Smørgrav #define CKM_RC2_KEY_GEN (0x100) 508b15c8340SDag-Erling Smørgrav #define CKM_RC2_ECB (0x101) 509b15c8340SDag-Erling Smørgrav #define CKM_RC2_CBC (0x102) 510b15c8340SDag-Erling Smørgrav #define CKM_RC2_MAC (0x103) 511b15c8340SDag-Erling Smørgrav #define CKM_RC2_MAC_GENERAL (0x104) 512b15c8340SDag-Erling Smørgrav #define CKM_RC2_CBC_PAD (0x105) 513b15c8340SDag-Erling Smørgrav #define CKM_RC4_KEY_GEN (0x110) 514b15c8340SDag-Erling Smørgrav #define CKM_RC4 (0x111) 515b15c8340SDag-Erling Smørgrav #define CKM_DES_KEY_GEN (0x120) 516b15c8340SDag-Erling Smørgrav #define CKM_DES_ECB (0x121) 517b15c8340SDag-Erling Smørgrav #define CKM_DES_CBC (0x122) 518b15c8340SDag-Erling Smørgrav #define CKM_DES_MAC (0x123) 519b15c8340SDag-Erling Smørgrav #define CKM_DES_MAC_GENERAL (0x124) 520b15c8340SDag-Erling Smørgrav #define CKM_DES_CBC_PAD (0x125) 521b15c8340SDag-Erling Smørgrav #define CKM_DES2_KEY_GEN (0x130) 522b15c8340SDag-Erling Smørgrav #define CKM_DES3_KEY_GEN (0x131) 523b15c8340SDag-Erling Smørgrav #define CKM_DES3_ECB (0x132) 524b15c8340SDag-Erling Smørgrav #define CKM_DES3_CBC (0x133) 525b15c8340SDag-Erling Smørgrav #define CKM_DES3_MAC (0x134) 526b15c8340SDag-Erling Smørgrav #define CKM_DES3_MAC_GENERAL (0x135) 527b15c8340SDag-Erling Smørgrav #define CKM_DES3_CBC_PAD (0x136) 528b15c8340SDag-Erling Smørgrav #define CKM_CDMF_KEY_GEN (0x140) 529b15c8340SDag-Erling Smørgrav #define CKM_CDMF_ECB (0x141) 530b15c8340SDag-Erling Smørgrav #define CKM_CDMF_CBC (0x142) 531b15c8340SDag-Erling Smørgrav #define CKM_CDMF_MAC (0x143) 532b15c8340SDag-Erling Smørgrav #define CKM_CDMF_MAC_GENERAL (0x144) 533b15c8340SDag-Erling Smørgrav #define CKM_CDMF_CBC_PAD (0x145) 534b15c8340SDag-Erling Smørgrav #define CKM_MD2 (0x200) 535b15c8340SDag-Erling Smørgrav #define CKM_MD2_HMAC (0x201) 536b15c8340SDag-Erling Smørgrav #define CKM_MD2_HMAC_GENERAL (0x202) 537b15c8340SDag-Erling Smørgrav #define CKM_MD5 (0x210) 538b15c8340SDag-Erling Smørgrav #define CKM_MD5_HMAC (0x211) 539b15c8340SDag-Erling Smørgrav #define CKM_MD5_HMAC_GENERAL (0x212) 540b15c8340SDag-Erling Smørgrav #define CKM_SHA_1 (0x220) 541b15c8340SDag-Erling Smørgrav #define CKM_SHA_1_HMAC (0x221) 542b15c8340SDag-Erling Smørgrav #define CKM_SHA_1_HMAC_GENERAL (0x222) 543b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD128 (0x230) 544b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD128_HMAC (0x231) 545b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD128_HMAC_GENERAL (0x232) 546b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD160 (0x240) 547b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD160_HMAC (0x241) 548b15c8340SDag-Erling Smørgrav #define CKM_RIPEMD160_HMAC_GENERAL (0x242) 549b15c8340SDag-Erling Smørgrav #define CKM_SHA256 (0x250) 550b15c8340SDag-Erling Smørgrav #define CKM_SHA256_HMAC (0x251) 551b15c8340SDag-Erling Smørgrav #define CKM_SHA256_HMAC_GENERAL (0x252) 552b15c8340SDag-Erling Smørgrav #define CKM_SHA384 (0x260) 553b15c8340SDag-Erling Smørgrav #define CKM_SHA384_HMAC (0x261) 554b15c8340SDag-Erling Smørgrav #define CKM_SHA384_HMAC_GENERAL (0x262) 555b15c8340SDag-Erling Smørgrav #define CKM_SHA512 (0x270) 556b15c8340SDag-Erling Smørgrav #define CKM_SHA512_HMAC (0x271) 557b15c8340SDag-Erling Smørgrav #define CKM_SHA512_HMAC_GENERAL (0x272) 558b15c8340SDag-Erling Smørgrav #define CKM_CAST_KEY_GEN (0x300) 559b15c8340SDag-Erling Smørgrav #define CKM_CAST_ECB (0x301) 560b15c8340SDag-Erling Smørgrav #define CKM_CAST_CBC (0x302) 561b15c8340SDag-Erling Smørgrav #define CKM_CAST_MAC (0x303) 562b15c8340SDag-Erling Smørgrav #define CKM_CAST_MAC_GENERAL (0x304) 563b15c8340SDag-Erling Smørgrav #define CKM_CAST_CBC_PAD (0x305) 564b15c8340SDag-Erling Smørgrav #define CKM_CAST3_KEY_GEN (0x310) 565b15c8340SDag-Erling Smørgrav #define CKM_CAST3_ECB (0x311) 566b15c8340SDag-Erling Smørgrav #define CKM_CAST3_CBC (0x312) 567b15c8340SDag-Erling Smørgrav #define CKM_CAST3_MAC (0x313) 568b15c8340SDag-Erling Smørgrav #define CKM_CAST3_MAC_GENERAL (0x314) 569b15c8340SDag-Erling Smørgrav #define CKM_CAST3_CBC_PAD (0x315) 570b15c8340SDag-Erling Smørgrav #define CKM_CAST5_KEY_GEN (0x320) 571b15c8340SDag-Erling Smørgrav #define CKM_CAST128_KEY_GEN (0x320) 572b15c8340SDag-Erling Smørgrav #define CKM_CAST5_ECB (0x321) 573b15c8340SDag-Erling Smørgrav #define CKM_CAST128_ECB (0x321) 574b15c8340SDag-Erling Smørgrav #define CKM_CAST5_CBC (0x322) 575b15c8340SDag-Erling Smørgrav #define CKM_CAST128_CBC (0x322) 576b15c8340SDag-Erling Smørgrav #define CKM_CAST5_MAC (0x323) 577b15c8340SDag-Erling Smørgrav #define CKM_CAST128_MAC (0x323) 578b15c8340SDag-Erling Smørgrav #define CKM_CAST5_MAC_GENERAL (0x324) 579b15c8340SDag-Erling Smørgrav #define CKM_CAST128_MAC_GENERAL (0x324) 580b15c8340SDag-Erling Smørgrav #define CKM_CAST5_CBC_PAD (0x325) 581b15c8340SDag-Erling Smørgrav #define CKM_CAST128_CBC_PAD (0x325) 582b15c8340SDag-Erling Smørgrav #define CKM_RC5_KEY_GEN (0x330) 583b15c8340SDag-Erling Smørgrav #define CKM_RC5_ECB (0x331) 584b15c8340SDag-Erling Smørgrav #define CKM_RC5_CBC (0x332) 585b15c8340SDag-Erling Smørgrav #define CKM_RC5_MAC (0x333) 586b15c8340SDag-Erling Smørgrav #define CKM_RC5_MAC_GENERAL (0x334) 587b15c8340SDag-Erling Smørgrav #define CKM_RC5_CBC_PAD (0x335) 588b15c8340SDag-Erling Smørgrav #define CKM_IDEA_KEY_GEN (0x340) 589b15c8340SDag-Erling Smørgrav #define CKM_IDEA_ECB (0x341) 590b15c8340SDag-Erling Smørgrav #define CKM_IDEA_CBC (0x342) 591b15c8340SDag-Erling Smørgrav #define CKM_IDEA_MAC (0x343) 592b15c8340SDag-Erling Smørgrav #define CKM_IDEA_MAC_GENERAL (0x344) 593b15c8340SDag-Erling Smørgrav #define CKM_IDEA_CBC_PAD (0x345) 594b15c8340SDag-Erling Smørgrav #define CKM_GENERIC_SECRET_KEY_GEN (0x350) 595b15c8340SDag-Erling Smørgrav #define CKM_CONCATENATE_BASE_AND_KEY (0x360) 596b15c8340SDag-Erling Smørgrav #define CKM_CONCATENATE_BASE_AND_DATA (0x362) 597b15c8340SDag-Erling Smørgrav #define CKM_CONCATENATE_DATA_AND_BASE (0x363) 598b15c8340SDag-Erling Smørgrav #define CKM_XOR_BASE_AND_DATA (0x364) 599b15c8340SDag-Erling Smørgrav #define CKM_EXTRACT_KEY_FROM_KEY (0x365) 600b15c8340SDag-Erling Smørgrav #define CKM_SSL3_PRE_MASTER_KEY_GEN (0x370) 601b15c8340SDag-Erling Smørgrav #define CKM_SSL3_MASTER_KEY_DERIVE (0x371) 602b15c8340SDag-Erling Smørgrav #define CKM_SSL3_KEY_AND_MAC_DERIVE (0x372) 603b15c8340SDag-Erling Smørgrav #define CKM_SSL3_MASTER_KEY_DERIVE_DH (0x373) 604b15c8340SDag-Erling Smørgrav #define CKM_TLS_PRE_MASTER_KEY_GEN (0x374) 605b15c8340SDag-Erling Smørgrav #define CKM_TLS_MASTER_KEY_DERIVE (0x375) 606b15c8340SDag-Erling Smørgrav #define CKM_TLS_KEY_AND_MAC_DERIVE (0x376) 607b15c8340SDag-Erling Smørgrav #define CKM_TLS_MASTER_KEY_DERIVE_DH (0x377) 608b15c8340SDag-Erling Smørgrav #define CKM_SSL3_MD5_MAC (0x380) 609b15c8340SDag-Erling Smørgrav #define CKM_SSL3_SHA1_MAC (0x381) 610b15c8340SDag-Erling Smørgrav #define CKM_MD5_KEY_DERIVATION (0x390) 611b15c8340SDag-Erling Smørgrav #define CKM_MD2_KEY_DERIVATION (0x391) 612b15c8340SDag-Erling Smørgrav #define CKM_SHA1_KEY_DERIVATION (0x392) 613b15c8340SDag-Erling Smørgrav #define CKM_PBE_MD2_DES_CBC (0x3a0) 614b15c8340SDag-Erling Smørgrav #define CKM_PBE_MD5_DES_CBC (0x3a1) 615b15c8340SDag-Erling Smørgrav #define CKM_PBE_MD5_CAST_CBC (0x3a2) 616b15c8340SDag-Erling Smørgrav #define CKM_PBE_MD5_CAST3_CBC (0x3a3) 617b15c8340SDag-Erling Smørgrav #define CKM_PBE_MD5_CAST5_CBC (0x3a4) 618b15c8340SDag-Erling Smørgrav #define CKM_PBE_MD5_CAST128_CBC (0x3a4) 619b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_CAST5_CBC (0x3a5) 620b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_CAST128_CBC (0x3a5) 621b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_RC4_128 (0x3a6) 622b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_RC4_40 (0x3a7) 623b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_DES3_EDE_CBC (0x3a8) 624b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_DES2_EDE_CBC (0x3a9) 625b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_RC2_128_CBC (0x3aa) 626b15c8340SDag-Erling Smørgrav #define CKM_PBE_SHA1_RC2_40_CBC (0x3ab) 627b15c8340SDag-Erling Smørgrav #define CKM_PKCS5_PBKD2 (0x3b0) 628b15c8340SDag-Erling Smørgrav #define CKM_PBA_SHA1_WITH_SHA1_HMAC (0x3c0) 629b15c8340SDag-Erling Smørgrav #define CKM_KEY_WRAP_LYNKS (0x400) 630b15c8340SDag-Erling Smørgrav #define CKM_KEY_WRAP_SET_OAEP (0x401) 631b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_KEY_GEN (0x1000) 632b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_ECB64 (0x1001) 633b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_CBC64 (0x1002) 634b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_OFB64 (0x1003) 635b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_CFB64 (0x1004) 636b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_CFB32 (0x1005) 637b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_CFB16 (0x1006) 638b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_CFB8 (0x1007) 639b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_WRAP (0x1008) 640b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_PRIVATE_WRAP (0x1009) 641b15c8340SDag-Erling Smørgrav #define CKM_SKIPJACK_RELAYX (0x100a) 642b15c8340SDag-Erling Smørgrav #define CKM_KEA_KEY_PAIR_GEN (0x1010) 643b15c8340SDag-Erling Smørgrav #define CKM_KEA_KEY_DERIVE (0x1011) 644b15c8340SDag-Erling Smørgrav #define CKM_FORTEZZA_TIMESTAMP (0x1020) 645b15c8340SDag-Erling Smørgrav #define CKM_BATON_KEY_GEN (0x1030) 646b15c8340SDag-Erling Smørgrav #define CKM_BATON_ECB128 (0x1031) 647b15c8340SDag-Erling Smørgrav #define CKM_BATON_ECB96 (0x1032) 648b15c8340SDag-Erling Smørgrav #define CKM_BATON_CBC128 (0x1033) 649b15c8340SDag-Erling Smørgrav #define CKM_BATON_COUNTER (0x1034) 650b15c8340SDag-Erling Smørgrav #define CKM_BATON_SHUFFLE (0x1035) 651b15c8340SDag-Erling Smørgrav #define CKM_BATON_WRAP (0x1036) 652b15c8340SDag-Erling Smørgrav #define CKM_ECDSA_KEY_PAIR_GEN (0x1040) 653b15c8340SDag-Erling Smørgrav #define CKM_EC_KEY_PAIR_GEN (0x1040) 654b15c8340SDag-Erling Smørgrav #define CKM_ECDSA (0x1041) 655b15c8340SDag-Erling Smørgrav #define CKM_ECDSA_SHA1 (0x1042) 656b15c8340SDag-Erling Smørgrav #define CKM_ECDH1_DERIVE (0x1050) 657b15c8340SDag-Erling Smørgrav #define CKM_ECDH1_COFACTOR_DERIVE (0x1051) 658b15c8340SDag-Erling Smørgrav #define CKM_ECMQV_DERIVE (0x1052) 659b15c8340SDag-Erling Smørgrav #define CKM_JUNIPER_KEY_GEN (0x1060) 660b15c8340SDag-Erling Smørgrav #define CKM_JUNIPER_ECB128 (0x1061) 661b15c8340SDag-Erling Smørgrav #define CKM_JUNIPER_CBC128 (0x1062) 662b15c8340SDag-Erling Smørgrav #define CKM_JUNIPER_COUNTER (0x1063) 663b15c8340SDag-Erling Smørgrav #define CKM_JUNIPER_SHUFFLE (0x1064) 664b15c8340SDag-Erling Smørgrav #define CKM_JUNIPER_WRAP (0x1065) 665b15c8340SDag-Erling Smørgrav #define CKM_FASTHASH (0x1070) 666b15c8340SDag-Erling Smørgrav #define CKM_AES_KEY_GEN (0x1080) 667b15c8340SDag-Erling Smørgrav #define CKM_AES_ECB (0x1081) 668b15c8340SDag-Erling Smørgrav #define CKM_AES_CBC (0x1082) 669b15c8340SDag-Erling Smørgrav #define CKM_AES_MAC (0x1083) 670b15c8340SDag-Erling Smørgrav #define CKM_AES_MAC_GENERAL (0x1084) 671b15c8340SDag-Erling Smørgrav #define CKM_AES_CBC_PAD (0x1085) 672b15c8340SDag-Erling Smørgrav #define CKM_DSA_PARAMETER_GEN (0x2000) 673b15c8340SDag-Erling Smørgrav #define CKM_DH_PKCS_PARAMETER_GEN (0x2001) 674b15c8340SDag-Erling Smørgrav #define CKM_X9_42_DH_PARAMETER_GEN (0x2002) 675*f7167e0eSDag-Erling Smørgrav #define CKM_VENDOR_DEFINED (1U << 31) 676b15c8340SDag-Erling Smørgrav 677b15c8340SDag-Erling Smørgrav 678b15c8340SDag-Erling Smørgrav struct ck_mechanism 679b15c8340SDag-Erling Smørgrav { 680b15c8340SDag-Erling Smørgrav ck_mechanism_type_t mechanism; 681b15c8340SDag-Erling Smørgrav void *parameter; 682b15c8340SDag-Erling Smørgrav unsigned long parameter_len; 683b15c8340SDag-Erling Smørgrav }; 684b15c8340SDag-Erling Smørgrav 685b15c8340SDag-Erling Smørgrav 686b15c8340SDag-Erling Smørgrav struct ck_mechanism_info 687b15c8340SDag-Erling Smørgrav { 688b15c8340SDag-Erling Smørgrav unsigned long min_key_size; 689b15c8340SDag-Erling Smørgrav unsigned long max_key_size; 690b15c8340SDag-Erling Smørgrav ck_flags_t flags; 691b15c8340SDag-Erling Smørgrav }; 692b15c8340SDag-Erling Smørgrav 693b15c8340SDag-Erling Smørgrav #define CKF_HW (1 << 0) 694b15c8340SDag-Erling Smørgrav #define CKF_ENCRYPT (1 << 8) 695b15c8340SDag-Erling Smørgrav #define CKF_DECRYPT (1 << 9) 696b15c8340SDag-Erling Smørgrav #define CKF_DIGEST (1 << 10) 697b15c8340SDag-Erling Smørgrav #define CKF_SIGN (1 << 11) 698b15c8340SDag-Erling Smørgrav #define CKF_SIGN_RECOVER (1 << 12) 699b15c8340SDag-Erling Smørgrav #define CKF_VERIFY (1 << 13) 700b15c8340SDag-Erling Smørgrav #define CKF_VERIFY_RECOVER (1 << 14) 701b15c8340SDag-Erling Smørgrav #define CKF_GENERATE (1 << 15) 702b15c8340SDag-Erling Smørgrav #define CKF_GENERATE_KEY_PAIR (1 << 16) 703b15c8340SDag-Erling Smørgrav #define CKF_WRAP (1 << 17) 704b15c8340SDag-Erling Smørgrav #define CKF_UNWRAP (1 << 18) 705b15c8340SDag-Erling Smørgrav #define CKF_DERIVE (1 << 19) 706*f7167e0eSDag-Erling Smørgrav #define CKF_EXTENSION (1U << 31) 707b15c8340SDag-Erling Smørgrav 708b15c8340SDag-Erling Smørgrav 709b15c8340SDag-Erling Smørgrav /* Flags for C_WaitForSlotEvent. */ 710b15c8340SDag-Erling Smørgrav #define CKF_DONT_BLOCK (1) 711b15c8340SDag-Erling Smørgrav 712b15c8340SDag-Erling Smørgrav 713b15c8340SDag-Erling Smørgrav typedef unsigned long ck_rv_t; 714b15c8340SDag-Erling Smørgrav 715b15c8340SDag-Erling Smørgrav 716b15c8340SDag-Erling Smørgrav typedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session, 717b15c8340SDag-Erling Smørgrav ck_notification_t event, void *application); 718b15c8340SDag-Erling Smørgrav 719b15c8340SDag-Erling Smørgrav /* Forward reference. */ 720b15c8340SDag-Erling Smørgrav struct ck_function_list; 721b15c8340SDag-Erling Smørgrav 722b15c8340SDag-Erling Smørgrav #define _CK_DECLARE_FUNCTION(name, args) \ 723b15c8340SDag-Erling Smørgrav typedef ck_rv_t (*CK_ ## name) args; \ 724b15c8340SDag-Erling Smørgrav ck_rv_t CK_SPEC name args 725b15c8340SDag-Erling Smørgrav 726b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Initialize, (void *init_args)); 727b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Finalize, (void *reserved)); 728b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info)); 729b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetFunctionList, 730b15c8340SDag-Erling Smørgrav (struct ck_function_list **function_list)); 731b15c8340SDag-Erling Smørgrav 732b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetSlotList, 733b15c8340SDag-Erling Smørgrav (unsigned char token_present, ck_slot_id_t *slot_list, 734b15c8340SDag-Erling Smørgrav unsigned long *count)); 735b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetSlotInfo, 736b15c8340SDag-Erling Smørgrav (ck_slot_id_t slot_id, struct ck_slot_info *info)); 737b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetTokenInfo, 738b15c8340SDag-Erling Smørgrav (ck_slot_id_t slot_id, struct ck_token_info *info)); 739b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_WaitForSlotEvent, 740b15c8340SDag-Erling Smørgrav (ck_flags_t flags, ck_slot_id_t *slot, void *reserved)); 741b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetMechanismList, 742b15c8340SDag-Erling Smørgrav (ck_slot_id_t slot_id, 743b15c8340SDag-Erling Smørgrav ck_mechanism_type_t *mechanism_list, 744b15c8340SDag-Erling Smørgrav unsigned long *count)); 745b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetMechanismInfo, 746b15c8340SDag-Erling Smørgrav (ck_slot_id_t slot_id, ck_mechanism_type_t type, 747b15c8340SDag-Erling Smørgrav struct ck_mechanism_info *info)); 748b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_InitToken, 749b15c8340SDag-Erling Smørgrav (ck_slot_id_t slot_id, unsigned char *pin, 750b15c8340SDag-Erling Smørgrav unsigned long pin_len, unsigned char *label)); 751b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_InitPIN, 752b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, unsigned char *pin, 753b15c8340SDag-Erling Smørgrav unsigned long pin_len)); 754b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SetPIN, 755b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, unsigned char *old_pin, 756b15c8340SDag-Erling Smørgrav unsigned long old_len, unsigned char *new_pin, 757b15c8340SDag-Erling Smørgrav unsigned long new_len)); 758b15c8340SDag-Erling Smørgrav 759b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_OpenSession, 760b15c8340SDag-Erling Smørgrav (ck_slot_id_t slot_id, ck_flags_t flags, 761b15c8340SDag-Erling Smørgrav void *application, ck_notify_t notify, 762b15c8340SDag-Erling Smørgrav ck_session_handle_t *session)); 763b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session)); 764b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id)); 765b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetSessionInfo, 766b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 767b15c8340SDag-Erling Smørgrav struct ck_session_info *info)); 768b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetOperationState, 769b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 770b15c8340SDag-Erling Smørgrav unsigned char *operation_state, 771b15c8340SDag-Erling Smørgrav unsigned long *operation_state_len)); 772b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SetOperationState, 773b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 774b15c8340SDag-Erling Smørgrav unsigned char *operation_state, 775b15c8340SDag-Erling Smørgrav unsigned long operation_state_len, 776b15c8340SDag-Erling Smørgrav ck_object_handle_t encryption_key, 777b15c8340SDag-Erling Smørgrav ck_object_handle_t authentiation_key)); 778b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Login, 779b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, ck_user_type_t user_type, 780b15c8340SDag-Erling Smørgrav unsigned char *pin, unsigned long pin_len)); 781b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session)); 782b15c8340SDag-Erling Smørgrav 783b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_CreateObject, 784b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 785b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, 786b15c8340SDag-Erling Smørgrav unsigned long count, ck_object_handle_t *object)); 787b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_CopyObject, 788b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, ck_object_handle_t object, 789b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, unsigned long count, 790b15c8340SDag-Erling Smørgrav ck_object_handle_t *new_object)); 791b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DestroyObject, 792b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 793b15c8340SDag-Erling Smørgrav ck_object_handle_t object)); 794b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetObjectSize, 795b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 796b15c8340SDag-Erling Smørgrav ck_object_handle_t object, 797b15c8340SDag-Erling Smørgrav unsigned long *size)); 798b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetAttributeValue, 799b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 800b15c8340SDag-Erling Smørgrav ck_object_handle_t object, 801b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, 802b15c8340SDag-Erling Smørgrav unsigned long count)); 803b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SetAttributeValue, 804b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 805b15c8340SDag-Erling Smørgrav ck_object_handle_t object, 806b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, 807b15c8340SDag-Erling Smørgrav unsigned long count)); 808b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_FindObjectsInit, 809b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 810b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, 811b15c8340SDag-Erling Smørgrav unsigned long count)); 812b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_FindObjects, 813b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 814b15c8340SDag-Erling Smørgrav ck_object_handle_t *object, 815b15c8340SDag-Erling Smørgrav unsigned long max_object_count, 816b15c8340SDag-Erling Smørgrav unsigned long *object_count)); 817b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_FindObjectsFinal, 818b15c8340SDag-Erling Smørgrav (ck_session_handle_t session)); 819b15c8340SDag-Erling Smørgrav 820b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_EncryptInit, 821b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 822b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 823b15c8340SDag-Erling Smørgrav ck_object_handle_t key)); 824b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Encrypt, 825b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 826b15c8340SDag-Erling Smørgrav unsigned char *data, unsigned long data_len, 827b15c8340SDag-Erling Smørgrav unsigned char *encrypted_data, 828b15c8340SDag-Erling Smørgrav unsigned long *encrypted_data_len)); 829b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_EncryptUpdate, 830b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 831b15c8340SDag-Erling Smørgrav unsigned char *part, unsigned long part_len, 832b15c8340SDag-Erling Smørgrav unsigned char *encrypted_part, 833b15c8340SDag-Erling Smørgrav unsigned long *encrypted_part_len)); 834b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_EncryptFinal, 835b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 836b15c8340SDag-Erling Smørgrav unsigned char *last_encrypted_part, 837b15c8340SDag-Erling Smørgrav unsigned long *last_encrypted_part_len)); 838b15c8340SDag-Erling Smørgrav 839b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DecryptInit, 840b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 841b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 842b15c8340SDag-Erling Smørgrav ck_object_handle_t key)); 843b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Decrypt, 844b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 845b15c8340SDag-Erling Smørgrav unsigned char *encrypted_data, 846b15c8340SDag-Erling Smørgrav unsigned long encrypted_data_len, 847b15c8340SDag-Erling Smørgrav unsigned char *data, unsigned long *data_len)); 848b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DecryptUpdate, 849b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 850b15c8340SDag-Erling Smørgrav unsigned char *encrypted_part, 851b15c8340SDag-Erling Smørgrav unsigned long encrypted_part_len, 852b15c8340SDag-Erling Smørgrav unsigned char *part, unsigned long *part_len)); 853b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DecryptFinal, 854b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 855b15c8340SDag-Erling Smørgrav unsigned char *last_part, 856b15c8340SDag-Erling Smørgrav unsigned long *last_part_len)); 857b15c8340SDag-Erling Smørgrav 858b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DigestInit, 859b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 860b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism)); 861b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Digest, 862b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 863b15c8340SDag-Erling Smørgrav unsigned char *data, unsigned long data_len, 864b15c8340SDag-Erling Smørgrav unsigned char *digest, 865b15c8340SDag-Erling Smørgrav unsigned long *digest_len)); 866b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DigestUpdate, 867b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 868b15c8340SDag-Erling Smørgrav unsigned char *part, unsigned long part_len)); 869b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DigestKey, 870b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, ck_object_handle_t key)); 871b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DigestFinal, 872b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 873b15c8340SDag-Erling Smørgrav unsigned char *digest, 874b15c8340SDag-Erling Smørgrav unsigned long *digest_len)); 875b15c8340SDag-Erling Smørgrav 876b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SignInit, 877b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 878b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 879b15c8340SDag-Erling Smørgrav ck_object_handle_t key)); 880b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Sign, 881b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 882b15c8340SDag-Erling Smørgrav unsigned char *data, unsigned long data_len, 883b15c8340SDag-Erling Smørgrav unsigned char *signature, 884b15c8340SDag-Erling Smørgrav unsigned long *signature_len)); 885b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SignUpdate, 886b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 887b15c8340SDag-Erling Smørgrav unsigned char *part, unsigned long part_len)); 888b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SignFinal, 889b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 890b15c8340SDag-Erling Smørgrav unsigned char *signature, 891b15c8340SDag-Erling Smørgrav unsigned long *signature_len)); 892b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SignRecoverInit, 893b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 894b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 895b15c8340SDag-Erling Smørgrav ck_object_handle_t key)); 896b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SignRecover, 897b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 898b15c8340SDag-Erling Smørgrav unsigned char *data, unsigned long data_len, 899b15c8340SDag-Erling Smørgrav unsigned char *signature, 900b15c8340SDag-Erling Smørgrav unsigned long *signature_len)); 901b15c8340SDag-Erling Smørgrav 902b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_VerifyInit, 903b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 904b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 905b15c8340SDag-Erling Smørgrav ck_object_handle_t key)); 906b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_Verify, 907b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 908b15c8340SDag-Erling Smørgrav unsigned char *data, unsigned long data_len, 909b15c8340SDag-Erling Smørgrav unsigned char *signature, 910b15c8340SDag-Erling Smørgrav unsigned long signature_len)); 911b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_VerifyUpdate, 912b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 913b15c8340SDag-Erling Smørgrav unsigned char *part, unsigned long part_len)); 914b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_VerifyFinal, 915b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 916b15c8340SDag-Erling Smørgrav unsigned char *signature, 917b15c8340SDag-Erling Smørgrav unsigned long signature_len)); 918b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_VerifyRecoverInit, 919b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 920b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 921b15c8340SDag-Erling Smørgrav ck_object_handle_t key)); 922b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_VerifyRecover, 923b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 924b15c8340SDag-Erling Smørgrav unsigned char *signature, 925b15c8340SDag-Erling Smørgrav unsigned long signature_len, 926b15c8340SDag-Erling Smørgrav unsigned char *data, 927b15c8340SDag-Erling Smørgrav unsigned long *data_len)); 928b15c8340SDag-Erling Smørgrav 929b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DigestEncryptUpdate, 930b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 931b15c8340SDag-Erling Smørgrav unsigned char *part, unsigned long part_len, 932b15c8340SDag-Erling Smørgrav unsigned char *encrypted_part, 933b15c8340SDag-Erling Smørgrav unsigned long *encrypted_part_len)); 934b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DecryptDigestUpdate, 935b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 936b15c8340SDag-Erling Smørgrav unsigned char *encrypted_part, 937b15c8340SDag-Erling Smørgrav unsigned long encrypted_part_len, 938b15c8340SDag-Erling Smørgrav unsigned char *part, 939b15c8340SDag-Erling Smørgrav unsigned long *part_len)); 940b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SignEncryptUpdate, 941b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 942b15c8340SDag-Erling Smørgrav unsigned char *part, unsigned long part_len, 943b15c8340SDag-Erling Smørgrav unsigned char *encrypted_part, 944b15c8340SDag-Erling Smørgrav unsigned long *encrypted_part_len)); 945b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate, 946b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 947b15c8340SDag-Erling Smørgrav unsigned char *encrypted_part, 948b15c8340SDag-Erling Smørgrav unsigned long encrypted_part_len, 949b15c8340SDag-Erling Smørgrav unsigned char *part, 950b15c8340SDag-Erling Smørgrav unsigned long *part_len)); 951b15c8340SDag-Erling Smørgrav 952b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GenerateKey, 953b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 954b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 955b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, 956b15c8340SDag-Erling Smørgrav unsigned long count, 957b15c8340SDag-Erling Smørgrav ck_object_handle_t *key)); 958b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GenerateKeyPair, 959b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 960b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 961b15c8340SDag-Erling Smørgrav struct ck_attribute *public_key_template, 962b15c8340SDag-Erling Smørgrav unsigned long public_key_attribute_count, 963b15c8340SDag-Erling Smørgrav struct ck_attribute *private_key_template, 964b15c8340SDag-Erling Smørgrav unsigned long private_key_attribute_count, 965b15c8340SDag-Erling Smørgrav ck_object_handle_t *public_key, 966b15c8340SDag-Erling Smørgrav ck_object_handle_t *private_key)); 967b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_WrapKey, 968b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 969b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 970b15c8340SDag-Erling Smørgrav ck_object_handle_t wrapping_key, 971b15c8340SDag-Erling Smørgrav ck_object_handle_t key, 972b15c8340SDag-Erling Smørgrav unsigned char *wrapped_key, 973b15c8340SDag-Erling Smørgrav unsigned long *wrapped_key_len)); 974b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_UnwrapKey, 975b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 976b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 977b15c8340SDag-Erling Smørgrav ck_object_handle_t unwrapping_key, 978b15c8340SDag-Erling Smørgrav unsigned char *wrapped_key, 979b15c8340SDag-Erling Smørgrav unsigned long wrapped_key_len, 980b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, 981b15c8340SDag-Erling Smørgrav unsigned long attribute_count, 982b15c8340SDag-Erling Smørgrav ck_object_handle_t *key)); 983b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_DeriveKey, 984b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 985b15c8340SDag-Erling Smørgrav struct ck_mechanism *mechanism, 986b15c8340SDag-Erling Smørgrav ck_object_handle_t base_key, 987b15c8340SDag-Erling Smørgrav struct ck_attribute *templ, 988b15c8340SDag-Erling Smørgrav unsigned long attribute_count, 989b15c8340SDag-Erling Smørgrav ck_object_handle_t *key)); 990b15c8340SDag-Erling Smørgrav 991b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_SeedRandom, 992b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, unsigned char *seed, 993b15c8340SDag-Erling Smørgrav unsigned long seed_len)); 994b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GenerateRandom, 995b15c8340SDag-Erling Smørgrav (ck_session_handle_t session, 996b15c8340SDag-Erling Smørgrav unsigned char *random_data, 997b15c8340SDag-Erling Smørgrav unsigned long random_len)); 998b15c8340SDag-Erling Smørgrav 999b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session)); 1000b15c8340SDag-Erling Smørgrav _CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session)); 1001b15c8340SDag-Erling Smørgrav 1002b15c8340SDag-Erling Smørgrav 1003b15c8340SDag-Erling Smørgrav struct ck_function_list 1004b15c8340SDag-Erling Smørgrav { 1005b15c8340SDag-Erling Smørgrav struct ck_version version; 1006b15c8340SDag-Erling Smørgrav CK_C_Initialize C_Initialize; 1007b15c8340SDag-Erling Smørgrav CK_C_Finalize C_Finalize; 1008b15c8340SDag-Erling Smørgrav CK_C_GetInfo C_GetInfo; 1009b15c8340SDag-Erling Smørgrav CK_C_GetFunctionList C_GetFunctionList; 1010b15c8340SDag-Erling Smørgrav CK_C_GetSlotList C_GetSlotList; 1011b15c8340SDag-Erling Smørgrav CK_C_GetSlotInfo C_GetSlotInfo; 1012b15c8340SDag-Erling Smørgrav CK_C_GetTokenInfo C_GetTokenInfo; 1013b15c8340SDag-Erling Smørgrav CK_C_GetMechanismList C_GetMechanismList; 1014b15c8340SDag-Erling Smørgrav CK_C_GetMechanismInfo C_GetMechanismInfo; 1015b15c8340SDag-Erling Smørgrav CK_C_InitToken C_InitToken; 1016b15c8340SDag-Erling Smørgrav CK_C_InitPIN C_InitPIN; 1017b15c8340SDag-Erling Smørgrav CK_C_SetPIN C_SetPIN; 1018b15c8340SDag-Erling Smørgrav CK_C_OpenSession C_OpenSession; 1019b15c8340SDag-Erling Smørgrav CK_C_CloseSession C_CloseSession; 1020b15c8340SDag-Erling Smørgrav CK_C_CloseAllSessions C_CloseAllSessions; 1021b15c8340SDag-Erling Smørgrav CK_C_GetSessionInfo C_GetSessionInfo; 1022b15c8340SDag-Erling Smørgrav CK_C_GetOperationState C_GetOperationState; 1023b15c8340SDag-Erling Smørgrav CK_C_SetOperationState C_SetOperationState; 1024b15c8340SDag-Erling Smørgrav CK_C_Login C_Login; 1025b15c8340SDag-Erling Smørgrav CK_C_Logout C_Logout; 1026b15c8340SDag-Erling Smørgrav CK_C_CreateObject C_CreateObject; 1027b15c8340SDag-Erling Smørgrav CK_C_CopyObject C_CopyObject; 1028b15c8340SDag-Erling Smørgrav CK_C_DestroyObject C_DestroyObject; 1029b15c8340SDag-Erling Smørgrav CK_C_GetObjectSize C_GetObjectSize; 1030b15c8340SDag-Erling Smørgrav CK_C_GetAttributeValue C_GetAttributeValue; 1031b15c8340SDag-Erling Smørgrav CK_C_SetAttributeValue C_SetAttributeValue; 1032b15c8340SDag-Erling Smørgrav CK_C_FindObjectsInit C_FindObjectsInit; 1033b15c8340SDag-Erling Smørgrav CK_C_FindObjects C_FindObjects; 1034b15c8340SDag-Erling Smørgrav CK_C_FindObjectsFinal C_FindObjectsFinal; 1035b15c8340SDag-Erling Smørgrav CK_C_EncryptInit C_EncryptInit; 1036b15c8340SDag-Erling Smørgrav CK_C_Encrypt C_Encrypt; 1037b15c8340SDag-Erling Smørgrav CK_C_EncryptUpdate C_EncryptUpdate; 1038b15c8340SDag-Erling Smørgrav CK_C_EncryptFinal C_EncryptFinal; 1039b15c8340SDag-Erling Smørgrav CK_C_DecryptInit C_DecryptInit; 1040b15c8340SDag-Erling Smørgrav CK_C_Decrypt C_Decrypt; 1041b15c8340SDag-Erling Smørgrav CK_C_DecryptUpdate C_DecryptUpdate; 1042b15c8340SDag-Erling Smørgrav CK_C_DecryptFinal C_DecryptFinal; 1043b15c8340SDag-Erling Smørgrav CK_C_DigestInit C_DigestInit; 1044b15c8340SDag-Erling Smørgrav CK_C_Digest C_Digest; 1045b15c8340SDag-Erling Smørgrav CK_C_DigestUpdate C_DigestUpdate; 1046b15c8340SDag-Erling Smørgrav CK_C_DigestKey C_DigestKey; 1047b15c8340SDag-Erling Smørgrav CK_C_DigestFinal C_DigestFinal; 1048b15c8340SDag-Erling Smørgrav CK_C_SignInit C_SignInit; 1049b15c8340SDag-Erling Smørgrav CK_C_Sign C_Sign; 1050b15c8340SDag-Erling Smørgrav CK_C_SignUpdate C_SignUpdate; 1051b15c8340SDag-Erling Smørgrav CK_C_SignFinal C_SignFinal; 1052b15c8340SDag-Erling Smørgrav CK_C_SignRecoverInit C_SignRecoverInit; 1053b15c8340SDag-Erling Smørgrav CK_C_SignRecover C_SignRecover; 1054b15c8340SDag-Erling Smørgrav CK_C_VerifyInit C_VerifyInit; 1055b15c8340SDag-Erling Smørgrav CK_C_Verify C_Verify; 1056b15c8340SDag-Erling Smørgrav CK_C_VerifyUpdate C_VerifyUpdate; 1057b15c8340SDag-Erling Smørgrav CK_C_VerifyFinal C_VerifyFinal; 1058b15c8340SDag-Erling Smørgrav CK_C_VerifyRecoverInit C_VerifyRecoverInit; 1059b15c8340SDag-Erling Smørgrav CK_C_VerifyRecover C_VerifyRecover; 1060b15c8340SDag-Erling Smørgrav CK_C_DigestEncryptUpdate C_DigestEncryptUpdate; 1061b15c8340SDag-Erling Smørgrav CK_C_DecryptDigestUpdate C_DecryptDigestUpdate; 1062b15c8340SDag-Erling Smørgrav CK_C_SignEncryptUpdate C_SignEncryptUpdate; 1063b15c8340SDag-Erling Smørgrav CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate; 1064b15c8340SDag-Erling Smørgrav CK_C_GenerateKey C_GenerateKey; 1065b15c8340SDag-Erling Smørgrav CK_C_GenerateKeyPair C_GenerateKeyPair; 1066b15c8340SDag-Erling Smørgrav CK_C_WrapKey C_WrapKey; 1067b15c8340SDag-Erling Smørgrav CK_C_UnwrapKey C_UnwrapKey; 1068b15c8340SDag-Erling Smørgrav CK_C_DeriveKey C_DeriveKey; 1069b15c8340SDag-Erling Smørgrav CK_C_SeedRandom C_SeedRandom; 1070b15c8340SDag-Erling Smørgrav CK_C_GenerateRandom C_GenerateRandom; 1071b15c8340SDag-Erling Smørgrav CK_C_GetFunctionStatus C_GetFunctionStatus; 1072b15c8340SDag-Erling Smørgrav CK_C_CancelFunction C_CancelFunction; 1073b15c8340SDag-Erling Smørgrav CK_C_WaitForSlotEvent C_WaitForSlotEvent; 1074b15c8340SDag-Erling Smørgrav }; 1075b15c8340SDag-Erling Smørgrav 1076b15c8340SDag-Erling Smørgrav 1077b15c8340SDag-Erling Smørgrav typedef ck_rv_t (*ck_createmutex_t) (void **mutex); 1078b15c8340SDag-Erling Smørgrav typedef ck_rv_t (*ck_destroymutex_t) (void *mutex); 1079b15c8340SDag-Erling Smørgrav typedef ck_rv_t (*ck_lockmutex_t) (void *mutex); 1080b15c8340SDag-Erling Smørgrav typedef ck_rv_t (*ck_unlockmutex_t) (void *mutex); 1081b15c8340SDag-Erling Smørgrav 1082b15c8340SDag-Erling Smørgrav 1083b15c8340SDag-Erling Smørgrav struct ck_c_initialize_args 1084b15c8340SDag-Erling Smørgrav { 1085b15c8340SDag-Erling Smørgrav ck_createmutex_t create_mutex; 1086b15c8340SDag-Erling Smørgrav ck_destroymutex_t destroy_mutex; 1087b15c8340SDag-Erling Smørgrav ck_lockmutex_t lock_mutex; 1088b15c8340SDag-Erling Smørgrav ck_unlockmutex_t unlock_mutex; 1089b15c8340SDag-Erling Smørgrav ck_flags_t flags; 1090b15c8340SDag-Erling Smørgrav void *reserved; 1091b15c8340SDag-Erling Smørgrav }; 1092b15c8340SDag-Erling Smørgrav 1093b15c8340SDag-Erling Smørgrav 1094b15c8340SDag-Erling Smørgrav #define CKF_LIBRARY_CANT_CREATE_OS_THREADS (1 << 0) 1095b15c8340SDag-Erling Smørgrav #define CKF_OS_LOCKING_OK (1 << 1) 1096b15c8340SDag-Erling Smørgrav 1097b15c8340SDag-Erling Smørgrav #define CKR_OK (0) 1098b15c8340SDag-Erling Smørgrav #define CKR_CANCEL (1) 1099b15c8340SDag-Erling Smørgrav #define CKR_HOST_MEMORY (2) 1100b15c8340SDag-Erling Smørgrav #define CKR_SLOT_ID_INVALID (3) 1101b15c8340SDag-Erling Smørgrav #define CKR_GENERAL_ERROR (5) 1102b15c8340SDag-Erling Smørgrav #define CKR_FUNCTION_FAILED (6) 1103b15c8340SDag-Erling Smørgrav #define CKR_ARGUMENTS_BAD (7) 1104b15c8340SDag-Erling Smørgrav #define CKR_NO_EVENT (8) 1105b15c8340SDag-Erling Smørgrav #define CKR_NEED_TO_CREATE_THREADS (9) 1106b15c8340SDag-Erling Smørgrav #define CKR_CANT_LOCK (0xa) 1107b15c8340SDag-Erling Smørgrav #define CKR_ATTRIBUTE_READ_ONLY (0x10) 1108b15c8340SDag-Erling Smørgrav #define CKR_ATTRIBUTE_SENSITIVE (0x11) 1109b15c8340SDag-Erling Smørgrav #define CKR_ATTRIBUTE_TYPE_INVALID (0x12) 1110b15c8340SDag-Erling Smørgrav #define CKR_ATTRIBUTE_VALUE_INVALID (0x13) 1111b15c8340SDag-Erling Smørgrav #define CKR_DATA_INVALID (0x20) 1112b15c8340SDag-Erling Smørgrav #define CKR_DATA_LEN_RANGE (0x21) 1113b15c8340SDag-Erling Smørgrav #define CKR_DEVICE_ERROR (0x30) 1114b15c8340SDag-Erling Smørgrav #define CKR_DEVICE_MEMORY (0x31) 1115b15c8340SDag-Erling Smørgrav #define CKR_DEVICE_REMOVED (0x32) 1116b15c8340SDag-Erling Smørgrav #define CKR_ENCRYPTED_DATA_INVALID (0x40) 1117b15c8340SDag-Erling Smørgrav #define CKR_ENCRYPTED_DATA_LEN_RANGE (0x41) 1118b15c8340SDag-Erling Smørgrav #define CKR_FUNCTION_CANCELED (0x50) 1119b15c8340SDag-Erling Smørgrav #define CKR_FUNCTION_NOT_PARALLEL (0x51) 1120b15c8340SDag-Erling Smørgrav #define CKR_FUNCTION_NOT_SUPPORTED (0x54) 1121b15c8340SDag-Erling Smørgrav #define CKR_KEY_HANDLE_INVALID (0x60) 1122b15c8340SDag-Erling Smørgrav #define CKR_KEY_SIZE_RANGE (0x62) 1123b15c8340SDag-Erling Smørgrav #define CKR_KEY_TYPE_INCONSISTENT (0x63) 1124b15c8340SDag-Erling Smørgrav #define CKR_KEY_NOT_NEEDED (0x64) 1125b15c8340SDag-Erling Smørgrav #define CKR_KEY_CHANGED (0x65) 1126b15c8340SDag-Erling Smørgrav #define CKR_KEY_NEEDED (0x66) 1127b15c8340SDag-Erling Smørgrav #define CKR_KEY_INDIGESTIBLE (0x67) 1128b15c8340SDag-Erling Smørgrav #define CKR_KEY_FUNCTION_NOT_PERMITTED (0x68) 1129b15c8340SDag-Erling Smørgrav #define CKR_KEY_NOT_WRAPPABLE (0x69) 1130b15c8340SDag-Erling Smørgrav #define CKR_KEY_UNEXTRACTABLE (0x6a) 1131b15c8340SDag-Erling Smørgrav #define CKR_MECHANISM_INVALID (0x70) 1132b15c8340SDag-Erling Smørgrav #define CKR_MECHANISM_PARAM_INVALID (0x71) 1133b15c8340SDag-Erling Smørgrav #define CKR_OBJECT_HANDLE_INVALID (0x82) 1134b15c8340SDag-Erling Smørgrav #define CKR_OPERATION_ACTIVE (0x90) 1135b15c8340SDag-Erling Smørgrav #define CKR_OPERATION_NOT_INITIALIZED (0x91) 1136b15c8340SDag-Erling Smørgrav #define CKR_PIN_INCORRECT (0xa0) 1137b15c8340SDag-Erling Smørgrav #define CKR_PIN_INVALID (0xa1) 1138b15c8340SDag-Erling Smørgrav #define CKR_PIN_LEN_RANGE (0xa2) 1139b15c8340SDag-Erling Smørgrav #define CKR_PIN_EXPIRED (0xa3) 1140b15c8340SDag-Erling Smørgrav #define CKR_PIN_LOCKED (0xa4) 1141b15c8340SDag-Erling Smørgrav #define CKR_SESSION_CLOSED (0xb0) 1142b15c8340SDag-Erling Smørgrav #define CKR_SESSION_COUNT (0xb1) 1143b15c8340SDag-Erling Smørgrav #define CKR_SESSION_HANDLE_INVALID (0xb3) 1144b15c8340SDag-Erling Smørgrav #define CKR_SESSION_PARALLEL_NOT_SUPPORTED (0xb4) 1145b15c8340SDag-Erling Smørgrav #define CKR_SESSION_READ_ONLY (0xb5) 1146b15c8340SDag-Erling Smørgrav #define CKR_SESSION_EXISTS (0xb6) 1147b15c8340SDag-Erling Smørgrav #define CKR_SESSION_READ_ONLY_EXISTS (0xb7) 1148b15c8340SDag-Erling Smørgrav #define CKR_SESSION_READ_WRITE_SO_EXISTS (0xb8) 1149b15c8340SDag-Erling Smørgrav #define CKR_SIGNATURE_INVALID (0xc0) 1150b15c8340SDag-Erling Smørgrav #define CKR_SIGNATURE_LEN_RANGE (0xc1) 1151b15c8340SDag-Erling Smørgrav #define CKR_TEMPLATE_INCOMPLETE (0xd0) 1152b15c8340SDag-Erling Smørgrav #define CKR_TEMPLATE_INCONSISTENT (0xd1) 1153b15c8340SDag-Erling Smørgrav #define CKR_TOKEN_NOT_PRESENT (0xe0) 1154b15c8340SDag-Erling Smørgrav #define CKR_TOKEN_NOT_RECOGNIZED (0xe1) 1155b15c8340SDag-Erling Smørgrav #define CKR_TOKEN_WRITE_PROTECTED (0xe2) 1156b15c8340SDag-Erling Smørgrav #define CKR_UNWRAPPING_KEY_HANDLE_INVALID (0xf0) 1157b15c8340SDag-Erling Smørgrav #define CKR_UNWRAPPING_KEY_SIZE_RANGE (0xf1) 1158b15c8340SDag-Erling Smørgrav #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT (0xf2) 1159b15c8340SDag-Erling Smørgrav #define CKR_USER_ALREADY_LOGGED_IN (0x100) 1160b15c8340SDag-Erling Smørgrav #define CKR_USER_NOT_LOGGED_IN (0x101) 1161b15c8340SDag-Erling Smørgrav #define CKR_USER_PIN_NOT_INITIALIZED (0x102) 1162b15c8340SDag-Erling Smørgrav #define CKR_USER_TYPE_INVALID (0x103) 1163b15c8340SDag-Erling Smørgrav #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN (0x104) 1164b15c8340SDag-Erling Smørgrav #define CKR_USER_TOO_MANY_TYPES (0x105) 1165b15c8340SDag-Erling Smørgrav #define CKR_WRAPPED_KEY_INVALID (0x110) 1166b15c8340SDag-Erling Smørgrav #define CKR_WRAPPED_KEY_LEN_RANGE (0x112) 1167b15c8340SDag-Erling Smørgrav #define CKR_WRAPPING_KEY_HANDLE_INVALID (0x113) 1168b15c8340SDag-Erling Smørgrav #define CKR_WRAPPING_KEY_SIZE_RANGE (0x114) 1169b15c8340SDag-Erling Smørgrav #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT (0x115) 1170b15c8340SDag-Erling Smørgrav #define CKR_RANDOM_SEED_NOT_SUPPORTED (0x120) 1171b15c8340SDag-Erling Smørgrav #define CKR_RANDOM_NO_RNG (0x121) 1172b15c8340SDag-Erling Smørgrav #define CKR_DOMAIN_PARAMS_INVALID (0x130) 1173b15c8340SDag-Erling Smørgrav #define CKR_BUFFER_TOO_SMALL (0x150) 1174b15c8340SDag-Erling Smørgrav #define CKR_SAVED_STATE_INVALID (0x160) 1175b15c8340SDag-Erling Smørgrav #define CKR_INFORMATION_SENSITIVE (0x170) 1176b15c8340SDag-Erling Smørgrav #define CKR_STATE_UNSAVEABLE (0x180) 1177b15c8340SDag-Erling Smørgrav #define CKR_CRYPTOKI_NOT_INITIALIZED (0x190) 1178b15c8340SDag-Erling Smørgrav #define CKR_CRYPTOKI_ALREADY_INITIALIZED (0x191) 1179b15c8340SDag-Erling Smørgrav #define CKR_MUTEX_BAD (0x1a0) 1180b15c8340SDag-Erling Smørgrav #define CKR_MUTEX_NOT_LOCKED (0x1a1) 1181b15c8340SDag-Erling Smørgrav #define CKR_FUNCTION_REJECTED (0x200) 1182*f7167e0eSDag-Erling Smørgrav #define CKR_VENDOR_DEFINED (1U << 31) 1183b15c8340SDag-Erling Smørgrav 1184b15c8340SDag-Erling Smørgrav 1185b15c8340SDag-Erling Smørgrav 1186b15c8340SDag-Erling Smørgrav /* Compatibility layer. */ 1187b15c8340SDag-Erling Smørgrav 1188b15c8340SDag-Erling Smørgrav #ifdef CRYPTOKI_COMPAT 1189b15c8340SDag-Erling Smørgrav 1190b15c8340SDag-Erling Smørgrav #undef CK_DEFINE_FUNCTION 1191b15c8340SDag-Erling Smørgrav #define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name 1192b15c8340SDag-Erling Smørgrav 1193b15c8340SDag-Erling Smørgrav /* For NULL. */ 1194b15c8340SDag-Erling Smørgrav #include <stddef.h> 1195b15c8340SDag-Erling Smørgrav 1196b15c8340SDag-Erling Smørgrav typedef unsigned char CK_BYTE; 1197b15c8340SDag-Erling Smørgrav typedef unsigned char CK_CHAR; 1198b15c8340SDag-Erling Smørgrav typedef unsigned char CK_UTF8CHAR; 1199b15c8340SDag-Erling Smørgrav typedef unsigned char CK_BBOOL; 1200b15c8340SDag-Erling Smørgrav typedef unsigned long int CK_ULONG; 1201b15c8340SDag-Erling Smørgrav typedef long int CK_LONG; 1202b15c8340SDag-Erling Smørgrav typedef CK_BYTE *CK_BYTE_PTR; 1203b15c8340SDag-Erling Smørgrav typedef CK_CHAR *CK_CHAR_PTR; 1204b15c8340SDag-Erling Smørgrav typedef CK_UTF8CHAR *CK_UTF8CHAR_PTR; 1205b15c8340SDag-Erling Smørgrav typedef CK_ULONG *CK_ULONG_PTR; 1206b15c8340SDag-Erling Smørgrav typedef void *CK_VOID_PTR; 1207b15c8340SDag-Erling Smørgrav typedef void **CK_VOID_PTR_PTR; 1208b15c8340SDag-Erling Smørgrav #define CK_FALSE 0 1209b15c8340SDag-Erling Smørgrav #define CK_TRUE 1 1210b15c8340SDag-Erling Smørgrav #ifndef CK_DISABLE_TRUE_FALSE 1211b15c8340SDag-Erling Smørgrav #ifndef FALSE 1212b15c8340SDag-Erling Smørgrav #define FALSE 0 1213b15c8340SDag-Erling Smørgrav #endif 1214b15c8340SDag-Erling Smørgrav #ifndef TRUE 1215b15c8340SDag-Erling Smørgrav #define TRUE 1 1216b15c8340SDag-Erling Smørgrav #endif 1217b15c8340SDag-Erling Smørgrav #endif 1218b15c8340SDag-Erling Smørgrav 1219b15c8340SDag-Erling Smørgrav typedef struct ck_version CK_VERSION; 1220b15c8340SDag-Erling Smørgrav typedef struct ck_version *CK_VERSION_PTR; 1221b15c8340SDag-Erling Smørgrav 1222b15c8340SDag-Erling Smørgrav typedef struct ck_info CK_INFO; 1223b15c8340SDag-Erling Smørgrav typedef struct ck_info *CK_INFO_PTR; 1224b15c8340SDag-Erling Smørgrav 1225b15c8340SDag-Erling Smørgrav typedef ck_slot_id_t *CK_SLOT_ID_PTR; 1226b15c8340SDag-Erling Smørgrav 1227b15c8340SDag-Erling Smørgrav typedef struct ck_slot_info CK_SLOT_INFO; 1228b15c8340SDag-Erling Smørgrav typedef struct ck_slot_info *CK_SLOT_INFO_PTR; 1229b15c8340SDag-Erling Smørgrav 1230b15c8340SDag-Erling Smørgrav typedef struct ck_token_info CK_TOKEN_INFO; 1231b15c8340SDag-Erling Smørgrav typedef struct ck_token_info *CK_TOKEN_INFO_PTR; 1232b15c8340SDag-Erling Smørgrav 1233b15c8340SDag-Erling Smørgrav typedef ck_session_handle_t *CK_SESSION_HANDLE_PTR; 1234b15c8340SDag-Erling Smørgrav 1235b15c8340SDag-Erling Smørgrav typedef struct ck_session_info CK_SESSION_INFO; 1236b15c8340SDag-Erling Smørgrav typedef struct ck_session_info *CK_SESSION_INFO_PTR; 1237b15c8340SDag-Erling Smørgrav 1238b15c8340SDag-Erling Smørgrav typedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR; 1239b15c8340SDag-Erling Smørgrav 1240b15c8340SDag-Erling Smørgrav typedef ck_object_class_t *CK_OBJECT_CLASS_PTR; 1241b15c8340SDag-Erling Smørgrav 1242b15c8340SDag-Erling Smørgrav typedef struct ck_attribute CK_ATTRIBUTE; 1243b15c8340SDag-Erling Smørgrav typedef struct ck_attribute *CK_ATTRIBUTE_PTR; 1244b15c8340SDag-Erling Smørgrav 1245b15c8340SDag-Erling Smørgrav typedef struct ck_date CK_DATE; 1246b15c8340SDag-Erling Smørgrav typedef struct ck_date *CK_DATE_PTR; 1247b15c8340SDag-Erling Smørgrav 1248b15c8340SDag-Erling Smørgrav typedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR; 1249b15c8340SDag-Erling Smørgrav 1250b15c8340SDag-Erling Smørgrav typedef struct ck_mechanism CK_MECHANISM; 1251b15c8340SDag-Erling Smørgrav typedef struct ck_mechanism *CK_MECHANISM_PTR; 1252b15c8340SDag-Erling Smørgrav 1253b15c8340SDag-Erling Smørgrav typedef struct ck_mechanism_info CK_MECHANISM_INFO; 1254b15c8340SDag-Erling Smørgrav typedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR; 1255b15c8340SDag-Erling Smørgrav 1256b15c8340SDag-Erling Smørgrav typedef struct ck_function_list CK_FUNCTION_LIST; 1257b15c8340SDag-Erling Smørgrav typedef struct ck_function_list *CK_FUNCTION_LIST_PTR; 1258b15c8340SDag-Erling Smørgrav typedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR; 1259b15c8340SDag-Erling Smørgrav 1260b15c8340SDag-Erling Smørgrav typedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS; 1261b15c8340SDag-Erling Smørgrav typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR; 1262b15c8340SDag-Erling Smørgrav 1263b15c8340SDag-Erling Smørgrav #define NULL_PTR NULL 1264b15c8340SDag-Erling Smørgrav 1265b15c8340SDag-Erling Smørgrav /* Delete the helper macros defined at the top of the file. */ 1266b15c8340SDag-Erling Smørgrav #undef ck_flags_t 1267b15c8340SDag-Erling Smørgrav #undef ck_version 1268b15c8340SDag-Erling Smørgrav 1269b15c8340SDag-Erling Smørgrav #undef ck_info 1270b15c8340SDag-Erling Smørgrav #undef cryptoki_version 1271b15c8340SDag-Erling Smørgrav #undef manufacturer_id 1272b15c8340SDag-Erling Smørgrav #undef library_description 1273b15c8340SDag-Erling Smørgrav #undef library_version 1274b15c8340SDag-Erling Smørgrav 1275b15c8340SDag-Erling Smørgrav #undef ck_notification_t 1276b15c8340SDag-Erling Smørgrav #undef ck_slot_id_t 1277b15c8340SDag-Erling Smørgrav 1278b15c8340SDag-Erling Smørgrav #undef ck_slot_info 1279b15c8340SDag-Erling Smørgrav #undef slot_description 1280b15c8340SDag-Erling Smørgrav #undef hardware_version 1281b15c8340SDag-Erling Smørgrav #undef firmware_version 1282b15c8340SDag-Erling Smørgrav 1283b15c8340SDag-Erling Smørgrav #undef ck_token_info 1284b15c8340SDag-Erling Smørgrav #undef serial_number 1285b15c8340SDag-Erling Smørgrav #undef max_session_count 1286b15c8340SDag-Erling Smørgrav #undef session_count 1287b15c8340SDag-Erling Smørgrav #undef max_rw_session_count 1288b15c8340SDag-Erling Smørgrav #undef rw_session_count 1289b15c8340SDag-Erling Smørgrav #undef max_pin_len 1290b15c8340SDag-Erling Smørgrav #undef min_pin_len 1291b15c8340SDag-Erling Smørgrav #undef total_public_memory 1292b15c8340SDag-Erling Smørgrav #undef free_public_memory 1293b15c8340SDag-Erling Smørgrav #undef total_private_memory 1294b15c8340SDag-Erling Smørgrav #undef free_private_memory 1295b15c8340SDag-Erling Smørgrav #undef utc_time 1296b15c8340SDag-Erling Smørgrav 1297b15c8340SDag-Erling Smørgrav #undef ck_session_handle_t 1298b15c8340SDag-Erling Smørgrav #undef ck_user_type_t 1299b15c8340SDag-Erling Smørgrav #undef ck_state_t 1300b15c8340SDag-Erling Smørgrav 1301b15c8340SDag-Erling Smørgrav #undef ck_session_info 1302b15c8340SDag-Erling Smørgrav #undef slot_id 1303b15c8340SDag-Erling Smørgrav #undef device_error 1304b15c8340SDag-Erling Smørgrav 1305b15c8340SDag-Erling Smørgrav #undef ck_object_handle_t 1306b15c8340SDag-Erling Smørgrav #undef ck_object_class_t 1307b15c8340SDag-Erling Smørgrav #undef ck_hw_feature_type_t 1308b15c8340SDag-Erling Smørgrav #undef ck_key_type_t 1309b15c8340SDag-Erling Smørgrav #undef ck_certificate_type_t 1310b15c8340SDag-Erling Smørgrav #undef ck_attribute_type_t 1311b15c8340SDag-Erling Smørgrav 1312b15c8340SDag-Erling Smørgrav #undef ck_attribute 1313b15c8340SDag-Erling Smørgrav #undef value 1314b15c8340SDag-Erling Smørgrav #undef value_len 1315b15c8340SDag-Erling Smørgrav 1316b15c8340SDag-Erling Smørgrav #undef ck_date 1317b15c8340SDag-Erling Smørgrav 1318b15c8340SDag-Erling Smørgrav #undef ck_mechanism_type_t 1319b15c8340SDag-Erling Smørgrav 1320b15c8340SDag-Erling Smørgrav #undef ck_mechanism 1321b15c8340SDag-Erling Smørgrav #undef parameter 1322b15c8340SDag-Erling Smørgrav #undef parameter_len 1323b15c8340SDag-Erling Smørgrav 1324b15c8340SDag-Erling Smørgrav #undef ck_mechanism_info 1325b15c8340SDag-Erling Smørgrav #undef min_key_size 1326b15c8340SDag-Erling Smørgrav #undef max_key_size 1327b15c8340SDag-Erling Smørgrav 1328b15c8340SDag-Erling Smørgrav #undef ck_rv_t 1329b15c8340SDag-Erling Smørgrav #undef ck_notify_t 1330b15c8340SDag-Erling Smørgrav 1331b15c8340SDag-Erling Smørgrav #undef ck_function_list 1332b15c8340SDag-Erling Smørgrav 1333b15c8340SDag-Erling Smørgrav #undef ck_createmutex_t 1334b15c8340SDag-Erling Smørgrav #undef ck_destroymutex_t 1335b15c8340SDag-Erling Smørgrav #undef ck_lockmutex_t 1336b15c8340SDag-Erling Smørgrav #undef ck_unlockmutex_t 1337b15c8340SDag-Erling Smørgrav 1338b15c8340SDag-Erling Smørgrav #undef ck_c_initialize_args 1339b15c8340SDag-Erling Smørgrav #undef create_mutex 1340b15c8340SDag-Erling Smørgrav #undef destroy_mutex 1341b15c8340SDag-Erling Smørgrav #undef lock_mutex 1342b15c8340SDag-Erling Smørgrav #undef unlock_mutex 1343b15c8340SDag-Erling Smørgrav #undef reserved 1344b15c8340SDag-Erling Smørgrav 1345b15c8340SDag-Erling Smørgrav #endif /* CRYPTOKI_COMPAT */ 1346b15c8340SDag-Erling Smørgrav 1347b15c8340SDag-Erling Smørgrav 1348b15c8340SDag-Erling Smørgrav /* System dependencies. */ 1349b15c8340SDag-Erling Smørgrav #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32) 1350b15c8340SDag-Erling Smørgrav #pragma pack(pop, cryptoki) 1351b15c8340SDag-Erling Smørgrav #endif 1352b15c8340SDag-Erling Smørgrav 1353b15c8340SDag-Erling Smørgrav #if defined(__cplusplus) 1354b15c8340SDag-Erling Smørgrav } 1355b15c8340SDag-Erling Smørgrav #endif 1356b15c8340SDag-Erling Smørgrav 1357b15c8340SDag-Erling Smørgrav #endif /* PKCS11_H */ 1358