1 /* Copyright (c) OASIS Open 2016. All Rights Reserved./ 2 * Copyright (C) 2017 for the binding: Carsten Blüggel <carblue@geekmail.de> 3 * /Distributed under the terms of the OASIS IPR Policy, 4 * [http://www.oasis-open.org/policies-guidelines/ipr], AS-IS, WITHOUT ANY 5 * IMPLIED OR EXPRESS WARRANTY; there is no warranty of MERCHANTABILITY, FITNESS FOR A 6 * PARTICULAR PURPOSE or NONINFRINGEMENT of the rights of others. 7 */ 8 9 /* Latest version of the specification: 10 * http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/pkcs11-base-v2.40.html 11 */ 12 13 /* See top of pkcs11.h for information about the macros that 14 * must be defined and the structure-packing conventions that 15 * must be set before including this file. 16 */ 17 18 /* 19 Written in the D programming language. 20 For git maintenance (ensure at least one congruent line with originating C header): 21 #define _PKCS11T_H_ 1 22 */ 23 24 module pkcs11.pkcs11t; 25 26 import core.stdc.config; // : c_ulong, c_long; 27 import pkcs11.pkcs11f; 28 29 extern(C) nothrow @nogc @system : 30 31 32 enum CRYPTOKI_VERSION_MAJOR = 2; 33 enum CRYPTOKI_VERSION_MINOR = 40; 34 enum CRYPTOKI_VERSION_AMENDMENT = 0; 35 36 enum ubyte CK_TRUE = 1; 37 enum ubyte CK_FALSE = 0; 38 enum void* NULL_PTR = null; 39 40 /* an unsigned 8-bit value */ 41 alias ubyte CK_BYTE; 42 43 /* an unsigned 8-bit character */ 44 alias CK_BYTE CK_CHAR; 45 46 /* an 8-bit UTF-8 character */ 47 alias CK_BYTE CK_UTF8CHAR; 48 49 /* a BYTE-sized Boolean flag */ 50 alias CK_BYTE CK_BBOOL; 51 52 /* an unsigned value, at least 32 bits long */ 53 alias c_ulong CK_ULONG; 54 55 /* a signed value, the same size as a CK_ULONG */ 56 alias c_long CK_LONG; 57 58 /* at least 32 bits; each bit is a Boolean flag */ 59 alias CK_ULONG CK_FLAGS; 60 61 62 /* some special values for certain CK_ULONG variables */ 63 enum CK_UNAVAILABLE_INFORMATION = (~0UL); 64 enum CK_EFFECTIVELY_INFINITE = 0UL; 65 66 67 alias CK_BYTE * CK_BYTE_PTR; 68 alias CK_CHAR * CK_CHAR_PTR; 69 alias CK_UTF8CHAR * CK_UTF8CHAR_PTR; 70 alias CK_ULONG * CK_ULONG_PTR; 71 alias void * CK_VOID_PTR; 72 73 /* Pointer to a CK_VOID_PTR-- i.e., pointer to pointer to void */ 74 alias CK_VOID_PTR * CK_VOID_PTR_PTR; 75 76 77 /* The following value is always invalid if used as a session 78 * handle or object handle 79 */ 80 enum CK_INVALID_HANDLE = 0UL; 81 82 83 struct CK_VERSION { 84 CK_BYTE major; /* integer portion of version number */ 85 CK_BYTE minor; /* 1/100ths portion of version number */ 86 } 87 88 alias CK_VERSION * CK_VERSION_PTR; 89 90 91 struct CK_INFO { 92 CK_VERSION cryptokiVersion; /* Cryptoki interface ver */ 93 CK_UTF8CHAR[32] manufacturerID; /* blank padded */ 94 CK_FLAGS flags; /* must be zero */ 95 CK_UTF8CHAR[32] libraryDescription; /* blank padded */ 96 CK_VERSION libraryVersion; /* version of library */ 97 } 98 99 alias CK_INFO * CK_INFO_PTR; 100 101 102 /* CK_NOTIFICATION enumerates the types of notifications that 103 * Cryptoki provides to an application 104 */ 105 alias CK_ULONG CK_NOTIFICATION; 106 enum CKN_SURRENDER = 0UL; 107 enum CKN_OTP_CHANGED = 1UL; 108 109 alias CK_ULONG CK_SLOT_ID; 110 111 alias CK_SLOT_ID * CK_SLOT_ID_PTR; 112 113 114 /* CK_SLOT_INFO provides information about a slot */ 115 struct CK_SLOT_INFO { 116 CK_UTF8CHAR[64] slotDescription; /* blank padded */ 117 CK_UTF8CHAR[32] manufacturerID; /* blank padded */ 118 CK_FLAGS flags; 119 120 CK_VERSION hardwareVersion; /* version of hardware */ 121 CK_VERSION firmwareVersion; /* version of firmware */ 122 } 123 124 /* flags: bit flags that provide capabilities of the slot 125 * Bit Flag Mask Meaning 126 */ 127 enum CKF_TOKEN_PRESENT = 0x00000001UL; /* a token is there */ 128 enum CKF_REMOVABLE_DEVICE = 0x00000002UL; /* removable devices*/ 129 enum CKF_HW_SLOT = 0x00000004UL; /* hardware slot */ 130 131 alias CK_SLOT_INFO * CK_SLOT_INFO_PTR; 132 133 134 /* CK_TOKEN_INFO provides information about a token */ 135 struct CK_TOKEN_INFO { 136 CK_UTF8CHAR[32] label; /* blank padded */ 137 CK_UTF8CHAR[32] manufacturerID; /* blank padded */ 138 CK_UTF8CHAR[16] model; /* blank padded */ 139 CK_CHAR[16] serialNumber; /* blank padded */ 140 CK_FLAGS flags; /* see below */ 141 142 CK_ULONG ulMaxSessionCount; /* max open sessions */ 143 CK_ULONG ulSessionCount; /* sess. now open */ 144 CK_ULONG ulMaxRwSessionCount; /* max R/W sessions */ 145 CK_ULONG ulRwSessionCount; /* R/W sess. now open */ 146 CK_ULONG ulMaxPinLen; /* in bytes */ 147 CK_ULONG ulMinPinLen; /* in bytes */ 148 CK_ULONG ulTotalPublicMemory; /* in bytes */ 149 CK_ULONG ulFreePublicMemory; /* in bytes */ 150 CK_ULONG ulTotalPrivateMemory; /* in bytes */ 151 CK_ULONG ulFreePrivateMemory; /* in bytes */ 152 CK_VERSION hardwareVersion; /* version of hardware */ 153 CK_VERSION firmwareVersion; /* version of firmware */ 154 CK_CHAR[16] utcTime; /* time */ 155 } 156 157 /* The flags parameter is defined as follows: 158 * Bit Flag Mask Meaning 159 */ 160 enum CKF_RNG = 0x00000001UL; /* has random # generator */ 161 enum CKF_WRITE_PROTECTED = 0x00000002UL; /* token is write-protected */ 162 enum CKF_LOGIN_REQUIRED = 0x00000004UL; /* user must login */ 163 enum CKF_USER_PIN_INITIALIZED = 0x00000008UL; /* normal user's PIN is set */ 164 165 /* CKF_RESTORE_KEY_NOT_NEEDED. If it is set, 166 * that means that *every* time the state of cryptographic 167 * operations of a session is successfully saved, all keys 168 * needed to continue those operations are stored in the state 169 */ 170 enum CKF_RESTORE_KEY_NOT_NEEDED = 0x00000020UL; 171 172 /* CKF_CLOCK_ON_TOKEN. If it is set, that means 173 * that the token has some sort of clock. The time on that 174 * clock is returned in the token info structure 175 */ 176 enum CKF_CLOCK_ON_TOKEN = 0x00000040UL; 177 178 /* CKF_PROTECTED_AUTHENTICATION_PATH. If it is 179 * set, that means that there is some way for the user to login 180 * without sending a PIN through the Cryptoki library itself 181 */ 182 enum CKF_PROTECTED_AUTHENTICATION_PATH = 0x00000100UL; 183 184 /* CKF_DUAL_CRYPTO_OPERATIONS. If it is true, 185 * that means that a single session with the token can perform 186 * dual simultaneous cryptographic operations (digest and 187 * encrypt; decrypt and digest; sign and encrypt; and decrypt 188 * and sign) 189 */ 190 enum CKF_DUAL_CRYPTO_OPERATIONS = 0x00000200UL; 191 192 /* CKF_TOKEN_INITIALIZED. If it is true, the 193 * token has been initialized using C_InitializeToken or an 194 * equivalent mechanism outside the scope of PKCS #11. 195 * Calling C_InitializeToken when this flag is set will cause 196 * the token to be reinitialized. 197 */ 198 enum CKF_TOKEN_INITIALIZED = 0x00000400UL; 199 200 /* CKF_SECONDARY_AUTHENTICATION. If it is 201 * true, the token supports secondary authentication for 202 * private key objects. 203 */ 204 enum CKF_SECONDARY_AUTHENTICATION = 0x00000800UL; 205 206 /* CKF_USER_PIN_COUNT_LOW. If it is true, an 207 * incorrect user login PIN has been entered at least once 208 * since the last successful authentication. 209 */ 210 enum CKF_USER_PIN_COUNT_LOW = 0x00010000UL; 211 212 /* CKF_USER_PIN_FINAL_TRY. If it is true, 213 * supplying an incorrect user PIN will it to become locked. 214 */ 215 enum CKF_USER_PIN_FINAL_TRY = 0x00020000UL; 216 217 /* CKF_USER_PIN_LOCKED. If it is true, the 218 * user PIN has been locked. User login to the token is not 219 * possible. 220 */ 221 enum CKF_USER_PIN_LOCKED = 0x00040000UL; 222 223 /* CKF_USER_PIN_TO_BE_CHANGED. If it is true, 224 * the user PIN value is the default value set by token 225 * initialization or manufacturing, or the PIN has been 226 * expired by the card. 227 */ 228 enum CKF_USER_PIN_TO_BE_CHANGED = 0x00080000UL; 229 230 /* CKF_SO_PIN_COUNT_LOW. If it is true, an 231 * incorrect SO login PIN has been entered at least once since 232 * the last successful authentication. 233 */ 234 enum CKF_SO_PIN_COUNT_LOW = 0x00100000UL; 235 236 /* CKF_SO_PIN_FINAL_TRY. If it is true, 237 * supplying an incorrect SO PIN will it to become locked. 238 */ 239 enum CKF_SO_PIN_FINAL_TRY = 0x00200000UL; 240 241 /* CKF_SO_PIN_LOCKED. If it is true, the SO 242 * PIN has been locked. SO login to the token is not possible. 243 */ 244 enum CKF_SO_PIN_LOCKED = 0x00400000UL; 245 246 /* CKF_SO_PIN_TO_BE_CHANGED. If it is true, 247 * the SO PIN value is the default value set by token 248 * initialization or manufacturing, or the PIN has been 249 * expired by the card. 250 */ 251 enum CKF_SO_PIN_TO_BE_CHANGED = 0x00800000UL; 252 253 enum CKF_ERROR_STATE = 0x01000000UL; 254 255 alias CK_TOKEN_INFO * CK_TOKEN_INFO_PTR; 256 257 258 /* CK_SESSION_HANDLE is a Cryptoki-assigned value that 259 * identifies a session 260 */ 261 alias CK_ULONG CK_SESSION_HANDLE; 262 263 alias CK_SESSION_HANDLE * CK_SESSION_HANDLE_PTR; 264 265 266 /* CK_USER_TYPE enumerates the types of Cryptoki users */ 267 alias CK_ULONG CK_USER_TYPE; 268 /* Security Officer */ 269 enum CKU_SO = 0UL; 270 /* Normal user */ 271 enum CKU_USER = 1UL; 272 /* Context specific */ 273 enum CKU_CONTEXT_SPECIFIC = 2UL; 274 275 /* CK_STATE enumerates the session states */ 276 alias CK_ULONG CK_STATE; 277 enum CKS_RO_PUBLIC_SESSION = 0UL; 278 enum CKS_RO_USER_FUNCTIONS = 1UL; 279 enum CKS_RW_PUBLIC_SESSION = 2UL; 280 enum CKS_RW_USER_FUNCTIONS = 3UL; 281 enum CKS_RW_SO_FUNCTIONS = 4UL; 282 283 /* CK_SESSION_INFO provides information about a session */ 284 struct CK_SESSION_INFO { 285 CK_SLOT_ID slotID; 286 CK_STATE state; 287 CK_FLAGS flags; /* see below */ 288 CK_ULONG ulDeviceError; /* device-dependent error code */ 289 } 290 291 /* The flags are defined in the following table: 292 * Bit Flag Mask Meaning 293 */ 294 enum CKF_RW_SESSION = 0x00000002UL; /* session is r/w */ 295 enum CKF_SERIAL_SESSION = 0x00000004UL; /* no parallel */ 296 297 alias CK_SESSION_INFO * CK_SESSION_INFO_PTR; 298 299 300 /* CK_OBJECT_HANDLE is a token-specific identifier for an 301 * object 302 */ 303 alias CK_ULONG CK_OBJECT_HANDLE; 304 305 alias CK_OBJECT_HANDLE * CK_OBJECT_HANDLE_PTR; 306 307 308 /* CK_OBJECT_CLASS is a value that identifies the classes (or 309 * types) of objects that Cryptoki recognizes. It is defined 310 * as follows: 311 */ 312 alias CK_ULONG CK_OBJECT_CLASS; 313 314 /* The following classes of objects are defined: */ 315 enum CKO_DATA = 0x00000000UL; 316 enum CKO_CERTIFICATE = 0x00000001UL; 317 enum CKO_PUBLIC_KEY = 0x00000002UL; 318 enum CKO_PRIVATE_KEY = 0x00000003UL; 319 enum CKO_SECRET_KEY = 0x00000004UL; 320 enum CKO_HW_FEATURE = 0x00000005UL; 321 enum CKO_DOMAIN_PARAMETERS = 0x00000006UL; 322 enum CKO_MECHANISM = 0x00000007UL; 323 enum CKO_OTP_KEY = 0x00000008UL; 324 325 enum CKO_VENDOR_DEFINED = 0x80000000UL; 326 327 alias CK_OBJECT_CLASS * CK_OBJECT_CLASS_PTR; 328 329 /* CK_HW_FEATURE_TYPE is a value that identifies the hardware feature type 330 * of an object with CK_OBJECT_CLASS equal to CKO_HW_FEATURE. 331 */ 332 alias CK_ULONG CK_HW_FEATURE_TYPE; 333 334 /* The following hardware feature types are defined */ 335 enum CKH_MONOTONIC_COUNTER = 0x00000001UL; 336 enum CKH_CLOCK = 0x00000002UL; 337 enum CKH_USER_INTERFACE = 0x00000003UL; 338 enum CKH_VENDOR_DEFINED = 0x80000000UL; 339 340 /* CK_KEY_TYPE is a value that identifies a key type */ 341 alias CK_ULONG CK_KEY_TYPE; 342 343 /* the following key types are defined: */ 344 enum CKK_RSA = 0x00000000UL; 345 enum CKK_DSA = 0x00000001UL; 346 enum CKK_DH = 0x00000002UL; 347 enum CKK_ECDSA = 0x00000003UL; /* Deprecated */ 348 enum CKK_EC = 0x00000003UL; 349 enum CKK_X9_42_DH = 0x00000004UL; 350 enum CKK_KEA = 0x00000005UL; 351 enum CKK_GENERIC_SECRET = 0x00000010UL; 352 enum CKK_RC2 = 0x00000011UL; 353 enum CKK_RC4 = 0x00000012UL; 354 enum CKK_DES = 0x00000013UL; 355 enum CKK_DES2 = 0x00000014UL; 356 enum CKK_DES3 = 0x00000015UL; 357 enum CKK_CAST = 0x00000016UL; 358 enum CKK_CAST3 = 0x00000017UL; 359 enum CKK_CAST5 = 0x00000018UL; /* Deprecated */ 360 enum CKK_CAST128 = 0x00000018UL; 361 enum CKK_RC5 = 0x00000019UL; 362 enum CKK_IDEA = 0x0000001AUL; 363 enum CKK_SKIPJACK = 0x0000001BUL; 364 enum CKK_BATON = 0x0000001CUL; 365 enum CKK_JUNIPER = 0x0000001DUL; 366 enum CKK_CDMF = 0x0000001EUL; 367 enum CKK_AES = 0x0000001FUL; 368 enum CKK_BLOWFISH = 0x00000020UL; 369 enum CKK_TWOFISH = 0x00000021UL; 370 enum CKK_SECURID = 0x00000022UL; 371 enum CKK_HOTP = 0x00000023UL; 372 enum CKK_ACTI = 0x00000024UL; 373 enum CKK_CAMELLIA = 0x00000025UL; 374 enum CKK_ARIA = 0x00000026UL; 375 376 enum CKK_MD5_HMAC = 0x00000027UL; 377 enum CKK_SHA_1_HMAC = 0x00000028UL; 378 enum CKK_RIPEMD128_HMAC = 0x00000029UL; 379 enum CKK_RIPEMD160_HMAC = 0x0000002AUL; 380 enum CKK_SHA256_HMAC = 0x0000002BUL; 381 enum CKK_SHA384_HMAC = 0x0000002CUL; 382 enum CKK_SHA512_HMAC = 0x0000002DUL; 383 enum CKK_SHA224_HMAC = 0x0000002EUL; 384 385 enum CKK_SEED = 0x0000002FUL; 386 enum CKK_GOSTR3410 = 0x00000030UL; 387 enum CKK_GOSTR3411 = 0x00000031UL; 388 enum CKK_GOST28147 = 0x00000032UL; 389 390 391 392 enum CKK_VENDOR_DEFINED = 0x80000000UL; 393 394 395 /* CK_CERTIFICATE_TYPE is a value that identifies a certificate 396 * type 397 */ 398 alias CK_ULONG CK_CERTIFICATE_TYPE; 399 400 enum CK_CERTIFICATE_CATEGORY_UNSPECIFIED = 0UL; 401 enum CK_CERTIFICATE_CATEGORY_TOKEN_USER = 1UL; 402 enum CK_CERTIFICATE_CATEGORY_AUTHORITY = 2UL; 403 enum CK_CERTIFICATE_CATEGORY_OTHER_ENTITY = 3UL; 404 405 enum CK_SECURITY_DOMAIN_UNSPECIFIED = 0UL; 406 enum CK_SECURITY_DOMAIN_MANUFACTURER = 1UL; 407 enum CK_SECURITY_DOMAIN_OPERATOR = 2UL; 408 enum CK_SECURITY_DOMAIN_THIRD_PARTY = 3UL; 409 410 411 /* The following certificate types are defined: */ 412 enum CKC_X_509 = 0x00000000UL; 413 enum CKC_X_509_ATTR_CERT = 0x00000001UL; 414 enum CKC_WTLS = 0x00000002UL; 415 enum CKC_VENDOR_DEFINED = 0x80000000UL; 416 417 418 /* CK_ATTRIBUTE_TYPE is a value that identifies an attribute 419 * type 420 */ 421 alias CK_ULONG CK_ATTRIBUTE_TYPE; 422 423 /* The CKF_ARRAY_ATTRIBUTE flag identifies an attribute which 424 * consists of an array of values. 425 */ 426 enum CKF_ARRAY_ATTRIBUTE = 0x40000000UL; 427 428 /* The following OTP-related defines relate to the CKA_OTP_FORMAT attribute */ 429 enum CK_OTP_FORMAT_DECIMAL = 0UL; 430 enum CK_OTP_FORMAT_HEXADECIMAL = 1UL; 431 enum CK_OTP_FORMAT_ALPHANUMERIC = 2UL; 432 enum CK_OTP_FORMAT_BINARY = 3UL; 433 434 /* The following OTP-related defines relate to the CKA_OTP_..._REQUIREMENT 435 * attributes 436 */ 437 enum CK_OTP_PARAM_IGNORED = 0UL; 438 enum CK_OTP_PARAM_OPTIONAL = 1UL; 439 enum CK_OTP_PARAM_MANDATORY = 2UL; 440 441 /* The following attribute types are defined: */ 442 enum CKA_CLASS = 0x00000000UL; 443 enum CKA_TOKEN = 0x00000001UL; 444 enum CKA_PRIVATE = 0x00000002UL; 445 enum CKA_LABEL = 0x00000003UL; 446 enum CKA_APPLICATION = 0x00000010UL; 447 enum CKA_VALUE = 0x00000011UL; 448 enum CKA_OBJECT_ID = 0x00000012UL; 449 enum CKA_CERTIFICATE_TYPE = 0x00000080UL; 450 enum CKA_ISSUER = 0x00000081UL; 451 enum CKA_SERIAL_NUMBER = 0x00000082UL; 452 enum CKA_AC_ISSUER = 0x00000083UL; 453 enum CKA_OWNER = 0x00000084UL; 454 enum CKA_ATTR_TYPES = 0x00000085UL; 455 enum CKA_TRUSTED = 0x00000086UL; 456 enum CKA_CERTIFICATE_CATEGORY = 0x00000087UL; 457 enum CKA_JAVA_MIDP_SECURITY_DOMAIN = 0x00000088UL; 458 enum CKA_URL = 0x00000089UL; 459 enum CKA_HASH_OF_SUBJECT_PUBLIC_KEY = 0x0000008AUL; 460 enum CKA_HASH_OF_ISSUER_PUBLIC_KEY = 0x0000008BUL; 461 enum CKA_NAME_HASH_ALGORITHM = 0x0000008CUL; 462 enum CKA_CHECK_VALUE = 0x00000090UL; 463 464 enum CKA_KEY_TYPE = 0x00000100UL; 465 enum CKA_SUBJECT = 0x00000101UL; 466 enum CKA_ID = 0x00000102UL; 467 enum CKA_SENSITIVE = 0x00000103UL; 468 enum CKA_ENCRYPT = 0x00000104UL; 469 enum CKA_DECRYPT = 0x00000105UL; 470 enum CKA_WRAP = 0x00000106UL; 471 enum CKA_UNWRAP = 0x00000107UL; 472 enum CKA_SIGN = 0x00000108UL; 473 enum CKA_SIGN_RECOVER = 0x00000109UL; 474 enum CKA_VERIFY = 0x0000010AUL; 475 enum CKA_VERIFY_RECOVER = 0x0000010BUL; 476 enum CKA_DERIVE = 0x0000010CUL; 477 enum CKA_START_DATE = 0x00000110UL; 478 enum CKA_END_DATE = 0x00000111UL; 479 enum CKA_MODULUS = 0x00000120UL; 480 enum CKA_MODULUS_BITS = 0x00000121UL; 481 enum CKA_PUBLIC_EXPONENT = 0x00000122UL; 482 enum CKA_PRIVATE_EXPONENT = 0x00000123UL; 483 enum CKA_PRIME_1 = 0x00000124UL; 484 enum CKA_PRIME_2 = 0x00000125UL; 485 enum CKA_EXPONENT_1 = 0x00000126UL; 486 enum CKA_EXPONENT_2 = 0x00000127UL; 487 enum CKA_COEFFICIENT = 0x00000128UL; 488 enum CKA_PUBLIC_KEY_INFO = 0x00000129UL; 489 enum CKA_PRIME = 0x00000130UL; 490 enum CKA_SUBPRIME = 0x00000131UL; 491 enum CKA_BASE = 0x00000132UL; 492 493 enum CKA_PRIME_BITS = 0x00000133UL; 494 enum CKA_SUBPRIME_BITS = 0x00000134UL; 495 enum CKA_SUB_PRIME_BITS = CKA_SUBPRIME_BITS; 496 497 enum CKA_VALUE_BITS = 0x00000160UL; 498 enum CKA_VALUE_LEN = 0x00000161UL; 499 enum CKA_EXTRACTABLE = 0x00000162UL; 500 enum CKA_LOCAL = 0x00000163UL; 501 enum CKA_NEVER_EXTRACTABLE = 0x00000164UL; 502 enum CKA_ALWAYS_SENSITIVE = 0x00000165UL; 503 enum CKA_KEY_GEN_MECHANISM = 0x00000166UL; 504 505 enum CKA_MODIFIABLE = 0x00000170UL; 506 enum CKA_COPYABLE = 0x00000171UL; 507 508 enum CKA_DESTROYABLE = 0x00000172UL; 509 510 enum CKA_ECDSA_PARAMS = 0x00000180UL; /* Deprecated */ 511 enum CKA_EC_PARAMS = 0x00000180UL; 512 513 enum CKA_EC_POINT = 0x00000181UL; 514 515 enum CKA_SECONDARY_AUTH = 0x00000200UL; /* Deprecated */ 516 enum CKA_AUTH_PIN_FLAGS = 0x00000201UL; /* Deprecated */ 517 518 enum CKA_ALWAYS_AUTHENTICATE = 0x00000202UL; 519 520 enum CKA_WRAP_WITH_TRUSTED = 0x00000210UL; 521 enum CKA_WRAP_TEMPLATE = (CKF_ARRAY_ATTRIBUTE|0x00000211UL); 522 enum CKA_UNWRAP_TEMPLATE = (CKF_ARRAY_ATTRIBUTE|0x00000212UL); 523 enum CKA_DERIVE_TEMPLATE = (CKF_ARRAY_ATTRIBUTE|0x00000213UL); 524 525 enum CKA_OTP_FORMAT = 0x00000220UL; 526 enum CKA_OTP_LENGTH = 0x00000221UL; 527 enum CKA_OTP_TIME_INTERVAL = 0x00000222UL; 528 enum CKA_OTP_USER_FRIENDLY_MODE = 0x00000223UL; 529 enum CKA_OTP_CHALLENGE_REQUIREMENT = 0x00000224UL; 530 enum CKA_OTP_TIME_REQUIREMENT = 0x00000225UL; 531 enum CKA_OTP_COUNTER_REQUIREMENT = 0x00000226UL; 532 enum CKA_OTP_PIN_REQUIREMENT = 0x00000227UL; 533 enum CKA_OTP_COUNTER = 0x0000022EUL; 534 enum CKA_OTP_TIME = 0x0000022FUL; 535 enum CKA_OTP_USER_IDENTIFIER = 0x0000022AUL; 536 enum CKA_OTP_SERVICE_IDENTIFIER = 0x0000022BUL; 537 enum CKA_OTP_SERVICE_LOGO = 0x0000022CUL; 538 enum CKA_OTP_SERVICE_LOGO_TYPE = 0x0000022DUL; 539 540 enum CKA_GOSTR3410_PARAMS = 0x00000250UL; 541 enum CKA_GOSTR3411_PARAMS = 0x00000251UL; 542 enum CKA_GOST28147_PARAMS = 0x00000252UL; 543 544 enum CKA_HW_FEATURE_TYPE = 0x00000300UL; 545 enum CKA_RESET_ON_INIT = 0x00000301UL; 546 enum CKA_HAS_RESET = 0x00000302UL; 547 548 enum CKA_PIXEL_X = 0x00000400UL; 549 enum CKA_PIXEL_Y = 0x00000401UL; 550 enum CKA_RESOLUTION = 0x00000402UL; 551 enum CKA_CHAR_ROWS = 0x00000403UL; 552 enum CKA_CHAR_COLUMNS = 0x00000404UL; 553 enum CKA_COLOR = 0x00000405UL; 554 enum CKA_BITS_PER_PIXEL = 0x00000406UL; 555 enum CKA_CHAR_SETS = 0x00000480UL; 556 enum CKA_ENCODING_METHODS = 0x00000481UL; 557 enum CKA_MIME_TYPES = 0x00000482UL; 558 enum CKA_MECHANISM_TYPE = 0x00000500UL; 559 enum CKA_REQUIRED_CMS_ATTRIBUTES = 0x00000501UL; 560 enum CKA_DEFAULT_CMS_ATTRIBUTES = 0x00000502UL; 561 enum CKA_SUPPORTED_CMS_ATTRIBUTES = 0x00000503UL; 562 enum CKA_ALLOWED_MECHANISMS = (CKF_ARRAY_ATTRIBUTE|0x00000600UL); 563 564 enum CKA_VENDOR_DEFINED = 0x80000000UL; 565 566 /* CK_ATTRIBUTE is a structure that includes the type, length 567 * and value of an attribute 568 */ 569 struct CK_ATTRIBUTE { 570 CK_ATTRIBUTE_TYPE type; 571 CK_VOID_PTR pValue; 572 CK_ULONG ulValueLen; /* in bytes */ 573 } 574 575 alias CK_ATTRIBUTE * CK_ATTRIBUTE_PTR; 576 577 /* CK_DATE is a structure that defines a date */ 578 struct CK_DATE{ 579 CK_CHAR[4] year; /* the year ("1900" - "9999") */ 580 CK_CHAR[2] month; /* the month ("01" - "12") */ 581 CK_CHAR[2] day; /* the day ("01" - "31") */ 582 } 583 584 585 /* CK_MECHANISM_TYPE is a value that identifies a mechanism 586 * type 587 */ 588 alias CK_ULONG CK_MECHANISM_TYPE; 589 590 /* the following mechanism types are defined: */ 591 enum CKM_RSA_PKCS_KEY_PAIR_GEN = 0x00000000UL; 592 enum CKM_RSA_PKCS = 0x00000001UL; 593 enum CKM_RSA_9796 = 0x00000002UL; 594 enum CKM_RSA_X_509 = 0x00000003UL; 595 596 enum CKM_MD2_RSA_PKCS = 0x00000004UL; 597 enum CKM_MD5_RSA_PKCS = 0x00000005UL; 598 enum CKM_SHA1_RSA_PKCS = 0x00000006UL; 599 600 enum CKM_RIPEMD128_RSA_PKCS = 0x00000007UL; 601 enum CKM_RIPEMD160_RSA_PKCS = 0x00000008UL; 602 enum CKM_RSA_PKCS_OAEP = 0x00000009UL; 603 604 enum CKM_RSA_X9_31_KEY_PAIR_GEN = 0x0000000AUL; 605 enum CKM_RSA_X9_31 = 0x0000000BUL; 606 enum CKM_SHA1_RSA_X9_31 = 0x0000000CUL; 607 enum CKM_RSA_PKCS_PSS = 0x0000000DUL; 608 enum CKM_SHA1_RSA_PKCS_PSS = 0x0000000EUL; 609 610 enum CKM_DSA_KEY_PAIR_GEN = 0x00000010UL; 611 enum CKM_DSA = 0x00000011UL; 612 enum CKM_DSA_SHA1 = 0x00000012UL; 613 enum CKM_DSA_SHA224 = 0x00000013UL; 614 enum CKM_DSA_SHA256 = 0x00000014UL; 615 enum CKM_DSA_SHA384 = 0x00000015UL; 616 enum CKM_DSA_SHA512 = 0x00000016UL; 617 618 enum CKM_DH_PKCS_KEY_PAIR_GEN = 0x00000020UL; 619 enum CKM_DH_PKCS_DERIVE = 0x00000021UL; 620 621 enum CKM_X9_42_DH_KEY_PAIR_GEN = 0x00000030UL; 622 enum CKM_X9_42_DH_DERIVE = 0x00000031UL; 623 enum CKM_X9_42_DH_HYBRID_DERIVE = 0x00000032UL; 624 enum CKM_X9_42_MQV_DERIVE = 0x00000033UL; 625 626 enum CKM_SHA256_RSA_PKCS = 0x00000040UL; 627 enum CKM_SHA384_RSA_PKCS = 0x00000041UL; 628 enum CKM_SHA512_RSA_PKCS = 0x00000042UL; 629 enum CKM_SHA256_RSA_PKCS_PSS = 0x00000043UL; 630 enum CKM_SHA384_RSA_PKCS_PSS = 0x00000044UL; 631 enum CKM_SHA512_RSA_PKCS_PSS = 0x00000045UL; 632 633 enum CKM_SHA224_RSA_PKCS = 0x00000046UL; 634 enum CKM_SHA224_RSA_PKCS_PSS = 0x00000047UL; 635 636 enum CKM_SHA512_224 = 0x00000048UL; 637 enum CKM_SHA512_224_HMAC = 0x00000049UL; 638 enum CKM_SHA512_224_HMAC_GENERAL = 0x0000004AUL; 639 enum CKM_SHA512_224_KEY_DERIVATION = 0x0000004BUL; 640 enum CKM_SHA512_256 = 0x0000004CUL; 641 enum CKM_SHA512_256_HMAC = 0x0000004DUL; 642 enum CKM_SHA512_256_HMAC_GENERAL = 0x0000004EUL; 643 enum CKM_SHA512_256_KEY_DERIVATION = 0x0000004FUL; 644 645 enum CKM_SHA512_T = 0x00000050UL; 646 enum CKM_SHA512_T_HMAC = 0x00000051UL; 647 enum CKM_SHA512_T_HMAC_GENERAL = 0x00000052UL; 648 enum CKM_SHA512_T_KEY_DERIVATION = 0x00000053UL; 649 650 enum CKM_RC2_KEY_GEN = 0x00000100UL; 651 enum CKM_RC2_ECB = 0x00000101UL; 652 enum CKM_RC2_CBC = 0x00000102UL; 653 enum CKM_RC2_MAC = 0x00000103UL; 654 655 enum CKM_RC2_MAC_GENERAL = 0x00000104UL; 656 enum CKM_RC2_CBC_PAD = 0x00000105UL; 657 658 enum CKM_RC4_KEY_GEN = 0x00000110UL; 659 enum CKM_RC4 = 0x00000111UL; 660 enum CKM_DES_KEY_GEN = 0x00000120UL; 661 enum CKM_DES_ECB = 0x00000121UL; 662 enum CKM_DES_CBC = 0x00000122UL; 663 enum CKM_DES_MAC = 0x00000123UL; 664 665 enum CKM_DES_MAC_GENERAL = 0x00000124UL; 666 enum CKM_DES_CBC_PAD = 0x00000125UL; 667 668 enum CKM_DES2_KEY_GEN = 0x00000130UL; 669 enum CKM_DES3_KEY_GEN = 0x00000131UL; 670 enum CKM_DES3_ECB = 0x00000132UL; 671 enum CKM_DES3_CBC = 0x00000133UL; 672 enum CKM_DES3_MAC = 0x00000134UL; 673 674 enum CKM_DES3_MAC_GENERAL = 0x00000135UL; 675 enum CKM_DES3_CBC_PAD = 0x00000136UL; 676 enum CKM_DES3_CMAC_GENERAL = 0x00000137UL; 677 enum CKM_DES3_CMAC = 0x00000138UL; 678 enum CKM_CDMF_KEY_GEN = 0x00000140UL; 679 enum CKM_CDMF_ECB = 0x00000141UL; 680 enum CKM_CDMF_CBC = 0x00000142UL; 681 enum CKM_CDMF_MAC = 0x00000143UL; 682 enum CKM_CDMF_MAC_GENERAL = 0x00000144UL; 683 enum CKM_CDMF_CBC_PAD = 0x00000145UL; 684 685 enum CKM_DES_OFB64 = 0x00000150UL; 686 enum CKM_DES_OFB8 = 0x00000151UL; 687 enum CKM_DES_CFB64 = 0x00000152UL; 688 enum CKM_DES_CFB8 = 0x00000153UL; 689 690 enum CKM_MD2 = 0x00000200UL; 691 692 enum CKM_MD2_HMAC = 0x00000201UL; 693 enum CKM_MD2_HMAC_GENERAL = 0x00000202UL; 694 695 enum CKM_MD5 = 0x00000210UL; 696 697 enum CKM_MD5_HMAC = 0x00000211UL; 698 enum CKM_MD5_HMAC_GENERAL = 0x00000212UL; 699 700 enum CKM_SHA_1 = 0x00000220UL; 701 702 enum CKM_SHA_1_HMAC = 0x00000221UL; 703 enum CKM_SHA_1_HMAC_GENERAL = 0x00000222UL; 704 705 enum CKM_RIPEMD128 = 0x00000230UL; 706 enum CKM_RIPEMD128_HMAC = 0x00000231UL; 707 enum CKM_RIPEMD128_HMAC_GENERAL = 0x00000232UL; 708 enum CKM_RIPEMD160 = 0x00000240UL; 709 enum CKM_RIPEMD160_HMAC = 0x00000241UL; 710 enum CKM_RIPEMD160_HMAC_GENERAL = 0x00000242UL; 711 712 enum CKM_SHA256 = 0x00000250UL; 713 enum CKM_SHA256_HMAC = 0x00000251UL; 714 enum CKM_SHA256_HMAC_GENERAL = 0x00000252UL; 715 enum CKM_SHA224 = 0x00000255UL; 716 enum CKM_SHA224_HMAC = 0x00000256UL; 717 enum CKM_SHA224_HMAC_GENERAL = 0x00000257UL; 718 enum CKM_SHA384 = 0x00000260UL; 719 enum CKM_SHA384_HMAC = 0x00000261UL; 720 enum CKM_SHA384_HMAC_GENERAL = 0x00000262UL; 721 enum CKM_SHA512 = 0x00000270UL; 722 enum CKM_SHA512_HMAC = 0x00000271UL; 723 enum CKM_SHA512_HMAC_GENERAL = 0x00000272UL; 724 enum CKM_SECURID_KEY_GEN = 0x00000280UL; 725 enum CKM_SECURID = 0x00000282UL; 726 enum CKM_HOTP_KEY_GEN = 0x00000290UL; 727 enum CKM_HOTP = 0x00000291UL; 728 enum CKM_ACTI = 0x000002A0UL; 729 enum CKM_ACTI_KEY_GEN = 0x000002A1UL; 730 731 enum CKM_CAST_KEY_GEN = 0x00000300UL; 732 enum CKM_CAST_ECB = 0x00000301UL; 733 enum CKM_CAST_CBC = 0x00000302UL; 734 enum CKM_CAST_MAC = 0x00000303UL; 735 enum CKM_CAST_MAC_GENERAL = 0x00000304UL; 736 enum CKM_CAST_CBC_PAD = 0x00000305UL; 737 enum CKM_CAST3_KEY_GEN = 0x00000310UL; 738 enum CKM_CAST3_ECB = 0x00000311UL; 739 enum CKM_CAST3_CBC = 0x00000312UL; 740 enum CKM_CAST3_MAC = 0x00000313UL; 741 enum CKM_CAST3_MAC_GENERAL = 0x00000314UL; 742 enum CKM_CAST3_CBC_PAD = 0x00000315UL; 743 /* Note that CAST128 and CAST5 are the same algorithm */ 744 enum CKM_CAST5_KEY_GEN = 0x00000320UL; 745 enum CKM_CAST128_KEY_GEN = 0x00000320UL; 746 enum CKM_CAST5_ECB = 0x00000321UL; 747 enum CKM_CAST128_ECB = 0x00000321UL; 748 enum CKM_CAST5_CBC = 0x00000322UL; /* Deprecated */ 749 enum CKM_CAST128_CBC = 0x00000322UL; 750 enum CKM_CAST5_MAC = 0x00000323UL; /* Deprecated */ 751 enum CKM_CAST128_MAC = 0x00000323UL; 752 enum CKM_CAST5_MAC_GENERAL = 0x00000324UL; /* Deprecated */ 753 enum CKM_CAST128_MAC_GENERAL = 0x00000324UL; 754 enum CKM_CAST5_CBC_PAD = 0x00000325UL; /* Deprecated */ 755 enum CKM_CAST128_CBC_PAD = 0x00000325UL; 756 enum CKM_RC5_KEY_GEN = 0x00000330UL; 757 enum CKM_RC5_ECB = 0x00000331UL; 758 enum CKM_RC5_CBC = 0x00000332UL; 759 enum CKM_RC5_MAC = 0x00000333UL; 760 enum CKM_RC5_MAC_GENERAL = 0x00000334UL; 761 enum CKM_RC5_CBC_PAD = 0x00000335UL; 762 enum CKM_IDEA_KEY_GEN = 0x00000340UL; 763 enum CKM_IDEA_ECB = 0x00000341UL; 764 enum CKM_IDEA_CBC = 0x00000342UL; 765 enum CKM_IDEA_MAC = 0x00000343UL; 766 enum CKM_IDEA_MAC_GENERAL = 0x00000344UL; 767 enum CKM_IDEA_CBC_PAD = 0x00000345UL; 768 enum CKM_GENERIC_SECRET_KEY_GEN = 0x00000350UL; 769 enum CKM_CONCATENATE_BASE_AND_KEY = 0x00000360UL; 770 enum CKM_CONCATENATE_BASE_AND_DATA = 0x00000362UL; 771 enum CKM_CONCATENATE_DATA_AND_BASE = 0x00000363UL; 772 enum CKM_XOR_BASE_AND_DATA = 0x00000364UL; 773 enum CKM_EXTRACT_KEY_FROM_KEY = 0x00000365UL; 774 enum CKM_SSL3_PRE_MASTER_KEY_GEN = 0x00000370UL; 775 enum CKM_SSL3_MASTER_KEY_DERIVE = 0x00000371UL; 776 enum CKM_SSL3_KEY_AND_MAC_DERIVE = 0x00000372UL; 777 778 enum CKM_SSL3_MASTER_KEY_DERIVE_DH = 0x00000373UL; 779 enum CKM_TLS_PRE_MASTER_KEY_GEN = 0x00000374UL; 780 enum CKM_TLS_MASTER_KEY_DERIVE = 0x00000375UL; 781 enum CKM_TLS_KEY_AND_MAC_DERIVE = 0x00000376UL; 782 enum CKM_TLS_MASTER_KEY_DERIVE_DH = 0x00000377UL; 783 784 enum CKM_TLS_PRF = 0x00000378UL; 785 786 enum CKM_SSL3_MD5_MAC = 0x00000380UL; 787 enum CKM_SSL3_SHA1_MAC = 0x00000381UL; 788 enum CKM_MD5_KEY_DERIVATION = 0x00000390UL; 789 enum CKM_MD2_KEY_DERIVATION = 0x00000391UL; 790 enum CKM_SHA1_KEY_DERIVATION = 0x00000392UL; 791 792 enum CKM_SHA256_KEY_DERIVATION = 0x00000393UL; 793 enum CKM_SHA384_KEY_DERIVATION = 0x00000394UL; 794 enum CKM_SHA512_KEY_DERIVATION = 0x00000395UL; 795 enum CKM_SHA224_KEY_DERIVATION = 0x00000396UL; 796 797 enum CKM_PBE_MD2_DES_CBC = 0x000003A0UL; 798 enum CKM_PBE_MD5_DES_CBC = 0x000003A1UL; 799 enum CKM_PBE_MD5_CAST_CBC = 0x000003A2UL; 800 enum CKM_PBE_MD5_CAST3_CBC = 0x000003A3UL; 801 enum CKM_PBE_MD5_CAST5_CBC = 0x000003A4UL; /* Deprecated */ 802 enum CKM_PBE_MD5_CAST128_CBC = 0x000003A4UL; 803 enum CKM_PBE_SHA1_CAST5_CBC = 0x000003A5UL; /* Deprecated */ 804 enum CKM_PBE_SHA1_CAST128_CBC = 0x000003A5UL; 805 enum CKM_PBE_SHA1_RC4_128 = 0x000003A6UL; 806 enum CKM_PBE_SHA1_RC4_40 = 0x000003A7UL; 807 enum CKM_PBE_SHA1_DES3_EDE_CBC = 0x000003A8UL; 808 enum CKM_PBE_SHA1_DES2_EDE_CBC = 0x000003A9UL; 809 enum CKM_PBE_SHA1_RC2_128_CBC = 0x000003AAUL; 810 enum CKM_PBE_SHA1_RC2_40_CBC = 0x000003ABUL; 811 812 enum CKM_PKCS5_PBKD2 = 0x000003B0UL; 813 814 enum CKM_PBA_SHA1_WITH_SHA1_HMAC = 0x000003C0UL; 815 816 enum CKM_WTLS_PRE_MASTER_KEY_GEN = 0x000003D0UL; 817 enum CKM_WTLS_MASTER_KEY_DERIVE = 0x000003D1UL; 818 enum CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC = 0x000003D2UL; 819 enum CKM_WTLS_PRF = 0x000003D3UL; 820 enum CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE = 0x000003D4UL; 821 enum CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE = 0x000003D5UL; 822 823 enum CKM_TLS10_MAC_SERVER = 0x000003D6UL; 824 enum CKM_TLS10_MAC_CLIENT = 0x000003D7UL; 825 enum CKM_TLS12_MAC = 0x000003D8UL; 826 enum CKM_TLS12_KDF = 0x000003D9UL; 827 enum CKM_TLS12_MASTER_KEY_DERIVE = 0x000003E0UL; 828 enum CKM_TLS12_KEY_AND_MAC_DERIVE = 0x000003E1UL; 829 enum CKM_TLS12_MASTER_KEY_DERIVE_DH = 0x000003E2UL; 830 enum CKM_TLS12_KEY_SAFE_DERIVE = 0x000003E3UL; 831 enum CKM_TLS_MAC = 0x000003E4UL; 832 enum CKM_TLS_KDF = 0x000003E5UL; 833 834 enum CKM_KEY_WRAP_LYNKS = 0x00000400UL; 835 enum CKM_KEY_WRAP_SET_OAEP = 0x00000401UL; 836 837 enum CKM_CMS_SIG = 0x00000500UL; 838 enum CKM_KIP_DERIVE = 0x00000510UL; 839 enum CKM_KIP_WRAP = 0x00000511UL; 840 enum CKM_KIP_MAC = 0x00000512UL; 841 842 enum CKM_CAMELLIA_KEY_GEN = 0x00000550UL; 843 enum CKM_CAMELLIA_ECB = 0x00000551UL; 844 enum CKM_CAMELLIA_CBC = 0x00000552UL; 845 enum CKM_CAMELLIA_MAC = 0x00000553UL; 846 enum CKM_CAMELLIA_MAC_GENERAL = 0x00000554UL; 847 enum CKM_CAMELLIA_CBC_PAD = 0x00000555UL; 848 enum CKM_CAMELLIA_ECB_ENCRYPT_DATA = 0x00000556UL; 849 enum CKM_CAMELLIA_CBC_ENCRYPT_DATA = 0x00000557UL; 850 enum CKM_CAMELLIA_CTR = 0x00000558UL; 851 852 enum CKM_ARIA_KEY_GEN = 0x00000560UL; 853 enum CKM_ARIA_ECB = 0x00000561UL; 854 enum CKM_ARIA_CBC = 0x00000562UL; 855 enum CKM_ARIA_MAC = 0x00000563UL; 856 enum CKM_ARIA_MAC_GENERAL = 0x00000564UL; 857 enum CKM_ARIA_CBC_PAD = 0x00000565UL; 858 enum CKM_ARIA_ECB_ENCRYPT_DATA = 0x00000566UL; 859 enum CKM_ARIA_CBC_ENCRYPT_DATA = 0x00000567UL; 860 861 enum CKM_SEED_KEY_GEN = 0x00000650UL; 862 enum CKM_SEED_ECB = 0x00000651UL; 863 enum CKM_SEED_CBC = 0x00000652UL; 864 enum CKM_SEED_MAC = 0x00000653UL; 865 enum CKM_SEED_MAC_GENERAL = 0x00000654UL; 866 enum CKM_SEED_CBC_PAD = 0x00000655UL; 867 enum CKM_SEED_ECB_ENCRYPT_DATA = 0x00000656UL; 868 enum CKM_SEED_CBC_ENCRYPT_DATA = 0x00000657UL; 869 870 enum CKM_SKIPJACK_KEY_GEN = 0x00001000UL; 871 enum CKM_SKIPJACK_ECB64 = 0x00001001UL; 872 enum CKM_SKIPJACK_CBC64 = 0x00001002UL; 873 enum CKM_SKIPJACK_OFB64 = 0x00001003UL; 874 enum CKM_SKIPJACK_CFB64 = 0x00001004UL; 875 enum CKM_SKIPJACK_CFB32 = 0x00001005UL; 876 enum CKM_SKIPJACK_CFB16 = 0x00001006UL; 877 enum CKM_SKIPJACK_CFB8 = 0x00001007UL; 878 enum CKM_SKIPJACK_WRAP = 0x00001008UL; 879 enum CKM_SKIPJACK_PRIVATE_WRAP = 0x00001009UL; 880 enum CKM_SKIPJACK_RELAYX = 0x0000100aUL; 881 enum CKM_KEA_KEY_PAIR_GEN = 0x00001010UL; 882 enum CKM_KEA_KEY_DERIVE = 0x00001011UL; 883 enum CKM_KEA_DERIVE = 0x00001012UL; 884 enum CKM_FORTEZZA_TIMESTAMP = 0x00001020UL; 885 enum CKM_BATON_KEY_GEN = 0x00001030UL; 886 enum CKM_BATON_ECB128 = 0x00001031UL; 887 enum CKM_BATON_ECB96 = 0x00001032UL; 888 enum CKM_BATON_CBC128 = 0x00001033UL; 889 enum CKM_BATON_COUNTER = 0x00001034UL; 890 enum CKM_BATON_SHUFFLE = 0x00001035UL; 891 enum CKM_BATON_WRAP = 0x00001036UL; 892 893 enum CKM_ECDSA_KEY_PAIR_GEN = 0x00001040UL; /* Deprecated */ 894 enum CKM_EC_KEY_PAIR_GEN = 0x00001040UL; 895 896 enum CKM_ECDSA = 0x00001041UL; 897 enum CKM_ECDSA_SHA1 = 0x00001042UL; 898 enum CKM_ECDSA_SHA224 = 0x00001043UL; 899 enum CKM_ECDSA_SHA256 = 0x00001044UL; 900 enum CKM_ECDSA_SHA384 = 0x00001045UL; 901 enum CKM_ECDSA_SHA512 = 0x00001046UL; 902 903 enum CKM_ECDH1_DERIVE = 0x00001050UL; 904 enum CKM_ECDH1_COFACTOR_DERIVE = 0x00001051UL; 905 enum CKM_ECMQV_DERIVE = 0x00001052UL; 906 907 enum CKM_ECDH_AES_KEY_WRAP = 0x00001053UL; 908 enum CKM_RSA_AES_KEY_WRAP = 0x00001054UL; 909 910 enum CKM_JUNIPER_KEY_GEN = 0x00001060UL; 911 enum CKM_JUNIPER_ECB128 = 0x00001061UL; 912 enum CKM_JUNIPER_CBC128 = 0x00001062UL; 913 enum CKM_JUNIPER_COUNTER = 0x00001063UL; 914 enum CKM_JUNIPER_SHUFFLE = 0x00001064UL; 915 enum CKM_JUNIPER_WRAP = 0x00001065UL; 916 enum CKM_FASTHASH = 0x00001070UL; 917 918 enum CKM_AES_KEY_GEN = 0x00001080UL; 919 enum CKM_AES_ECB = 0x00001081UL; 920 enum CKM_AES_CBC = 0x00001082UL; 921 enum CKM_AES_MAC = 0x00001083UL; 922 enum CKM_AES_MAC_GENERAL = 0x00001084UL; 923 enum CKM_AES_CBC_PAD = 0x00001085UL; 924 enum CKM_AES_CTR = 0x00001086UL; 925 enum CKM_AES_GCM = 0x00001087UL; 926 enum CKM_AES_CCM = 0x00001088UL; 927 enum CKM_AES_CTS = 0x00001089UL; 928 enum CKM_AES_CMAC = 0x0000108AUL; 929 enum CKM_AES_CMAC_GENERAL = 0x0000108BUL; 930 931 enum CKM_AES_XCBC_MAC = 0x0000108CUL; 932 enum CKM_AES_XCBC_MAC_96 = 0x0000108DUL; 933 enum CKM_AES_GMAC = 0x0000108EUL; 934 935 enum CKM_BLOWFISH_KEY_GEN = 0x00001090UL; 936 enum CKM_BLOWFISH_CBC = 0x00001091UL; 937 enum CKM_TWOFISH_KEY_GEN = 0x00001092UL; 938 enum CKM_TWOFISH_CBC = 0x00001093UL; 939 enum CKM_BLOWFISH_CBC_PAD = 0x00001094UL; 940 enum CKM_TWOFISH_CBC_PAD = 0x00001095UL; 941 942 enum CKM_DES_ECB_ENCRYPT_DATA = 0x00001100UL; 943 enum CKM_DES_CBC_ENCRYPT_DATA = 0x00001101UL; 944 enum CKM_DES3_ECB_ENCRYPT_DATA = 0x00001102UL; 945 enum CKM_DES3_CBC_ENCRYPT_DATA = 0x00001103UL; 946 enum CKM_AES_ECB_ENCRYPT_DATA = 0x00001104UL; 947 enum CKM_AES_CBC_ENCRYPT_DATA = 0x00001105UL; 948 949 enum CKM_GOSTR3410_KEY_PAIR_GEN = 0x00001200UL; 950 enum CKM_GOSTR3410 = 0x00001201UL; 951 enum CKM_GOSTR3410_WITH_GOSTR3411 = 0x00001202UL; 952 enum CKM_GOSTR3410_KEY_WRAP = 0x00001203UL; 953 enum CKM_GOSTR3410_DERIVE = 0x00001204UL; 954 enum CKM_GOSTR3411 = 0x00001210UL; 955 enum CKM_GOSTR3411_HMAC = 0x00001211UL; 956 enum CKM_GOST28147_KEY_GEN = 0x00001220UL; 957 enum CKM_GOST28147_ECB = 0x00001221UL; 958 enum CKM_GOST28147 = 0x00001222UL; 959 enum CKM_GOST28147_MAC = 0x00001223UL; 960 enum CKM_GOST28147_KEY_WRAP = 0x00001224UL; 961 962 enum CKM_DSA_PARAMETER_GEN = 0x00002000UL; 963 enum CKM_DH_PKCS_PARAMETER_GEN = 0x00002001UL; 964 enum CKM_X9_42_DH_PARAMETER_GEN = 0x00002002UL; 965 enum CKM_DSA_PROBABLISTIC_PARAMETER_GEN = 0x00002003UL; 966 enum CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN = 0x00002004UL; 967 968 enum CKM_AES_OFB = 0x00002104UL; 969 enum CKM_AES_CFB64 = 0x00002105UL; 970 enum CKM_AES_CFB8 = 0x00002106UL; 971 enum CKM_AES_CFB128 = 0x00002107UL; 972 973 enum CKM_AES_CFB1 = 0x00002108UL; 974 enum CKM_AES_KEY_WRAP = 0x00002109UL; /* WAS: 0x00001090 */ 975 enum CKM_AES_KEY_WRAP_PAD = 0x0000210AUL; /* WAS: 0x00001091 */ 976 977 enum CKM_RSA_PKCS_TPM_1_1 = 0x00004001UL; 978 enum CKM_RSA_PKCS_OAEP_TPM_1_1 = 0x00004002UL; 979 980 enum CKM_VENDOR_DEFINED = 0x80000000UL; 981 982 alias CK_MECHANISM_TYPE * CK_MECHANISM_TYPE_PTR; 983 984 985 /* CK_MECHANISM is a structure that specifies a particular 986 * mechanism 987 */ 988 struct CK_MECHANISM { 989 CK_MECHANISM_TYPE mechanism; 990 CK_VOID_PTR pParameter; 991 CK_ULONG ulParameterLen; /* in bytes */ 992 } 993 994 alias CK_MECHANISM * CK_MECHANISM_PTR; 995 996 997 /* CK_MECHANISM_INFO provides information about a particular 998 * mechanism 999 */ 1000 struct CK_MECHANISM_INFO { 1001 CK_ULONG ulMinKeySize; 1002 CK_ULONG ulMaxKeySize; 1003 CK_FLAGS flags; 1004 } 1005 1006 /* The flags are defined as follows: 1007 * Bit Flag Mask Meaning */ 1008 enum CKF_HW = 0x00000001UL; /* performed by HW */ 1009 1010 /* Specify whether or not a mechanism can be used for a particular task */ 1011 enum CKF_ENCRYPT = 0x00000100UL; 1012 enum CKF_DECRYPT = 0x00000200UL; 1013 enum CKF_DIGEST = 0x00000400UL; 1014 enum CKF_SIGN = 0x00000800UL; 1015 enum CKF_SIGN_RECOVER = 0x00001000UL; 1016 enum CKF_VERIFY = 0x00002000UL; 1017 enum CKF_VERIFY_RECOVER = 0x00004000UL; 1018 enum CKF_GENERATE = 0x00008000UL; 1019 enum CKF_GENERATE_KEY_PAIR = 0x00010000UL; 1020 enum CKF_WRAP = 0x00020000UL; 1021 enum CKF_UNWRAP = 0x00040000UL; 1022 enum CKF_DERIVE = 0x00080000UL; 1023 1024 /* Describe a token's EC capabilities not available in mechanism 1025 * information. 1026 */ 1027 enum CKF_EC_F_P = 0x00100000UL; 1028 enum CKF_EC_F_2M = 0x00200000UL; 1029 enum CKF_EC_ECPARAMETERS = 0x00400000UL; 1030 enum CKF_EC_NAMEDCURVE = 0x00800000UL; 1031 enum CKF_EC_UNCOMPRESS = 0x01000000UL; 1032 enum CKF_EC_COMPRESS = 0x02000000UL; 1033 1034 enum CKF_EXTENSION = 0x80000000UL; 1035 1036 alias CK_MECHANISM_INFO * CK_MECHANISM_INFO_PTR; 1037 1038 /* CK_RV is a value that identifies the return value of a 1039 * Cryptoki function 1040 */ 1041 alias CK_ULONG CK_RV; 1042 1043 enum CKR_OK = 0x00000000UL; 1044 enum CKR_CANCEL = 0x00000001UL; 1045 enum CKR_HOST_MEMORY = 0x00000002UL; 1046 enum CKR_SLOT_ID_INVALID = 0x00000003UL; 1047 1048 enum CKR_GENERAL_ERROR = 0x00000005UL; 1049 enum CKR_FUNCTION_FAILED = 0x00000006UL; 1050 1051 enum CKR_ARGUMENTS_BAD = 0x00000007UL; 1052 enum CKR_NO_EVENT = 0x00000008UL; 1053 enum CKR_NEED_TO_CREATE_THREADS = 0x00000009UL; 1054 enum CKR_CANT_LOCK = 0x0000000AUL; 1055 1056 enum CKR_ATTRIBUTE_READ_ONLY = 0x00000010UL; 1057 enum CKR_ATTRIBUTE_SENSITIVE = 0x00000011UL; 1058 enum CKR_ATTRIBUTE_TYPE_INVALID = 0x00000012UL; 1059 enum CKR_ATTRIBUTE_VALUE_INVALID = 0x00000013UL; 1060 1061 enum CKR_ACTION_PROHIBITED = 0x0000001BUL; 1062 1063 enum CKR_DATA_INVALID = 0x00000020UL; 1064 enum CKR_DATA_LEN_RANGE = 0x00000021UL; 1065 enum CKR_DEVICE_ERROR = 0x00000030UL; 1066 enum CKR_DEVICE_MEMORY = 0x00000031UL; 1067 enum CKR_DEVICE_REMOVED = 0x00000032UL; 1068 enum CKR_ENCRYPTED_DATA_INVALID = 0x00000040UL; 1069 enum CKR_ENCRYPTED_DATA_LEN_RANGE = 0x00000041UL; 1070 enum CKR_FUNCTION_CANCELED = 0x00000050UL; 1071 enum CKR_FUNCTION_NOT_PARALLEL = 0x00000051UL; 1072 1073 enum CKR_FUNCTION_NOT_SUPPORTED = 0x00000054UL; 1074 1075 enum CKR_KEY_HANDLE_INVALID = 0x00000060UL; 1076 1077 enum CKR_KEY_SIZE_RANGE = 0x00000062UL; 1078 enum CKR_KEY_TYPE_INCONSISTENT = 0x00000063UL; 1079 1080 enum CKR_KEY_NOT_NEEDED = 0x00000064UL; 1081 enum CKR_KEY_CHANGED = 0x00000065UL; 1082 enum CKR_KEY_NEEDED = 0x00000066UL; 1083 enum CKR_KEY_INDIGESTIBLE = 0x00000067UL; 1084 enum CKR_KEY_FUNCTION_NOT_PERMITTED = 0x00000068UL; 1085 enum CKR_KEY_NOT_WRAPPABLE = 0x00000069UL; 1086 enum CKR_KEY_UNEXTRACTABLE = 0x0000006AUL; 1087 1088 enum CKR_MECHANISM_INVALID = 0x00000070UL; 1089 enum CKR_MECHANISM_PARAM_INVALID = 0x00000071UL; 1090 1091 enum CKR_OBJECT_HANDLE_INVALID = 0x00000082UL; 1092 enum CKR_OPERATION_ACTIVE = 0x00000090UL; 1093 enum CKR_OPERATION_NOT_INITIALIZED = 0x00000091UL; 1094 enum CKR_PIN_INCORRECT = 0x000000A0UL; 1095 enum CKR_PIN_INVALID = 0x000000A1UL; 1096 enum CKR_PIN_LEN_RANGE = 0x000000A2UL; 1097 1098 enum CKR_PIN_EXPIRED = 0x000000A3UL; 1099 enum CKR_PIN_LOCKED = 0x000000A4UL; 1100 1101 enum CKR_SESSION_CLOSED = 0x000000B0UL; 1102 enum CKR_SESSION_COUNT = 0x000000B1UL; 1103 enum CKR_SESSION_HANDLE_INVALID = 0x000000B3UL; 1104 enum CKR_SESSION_PARALLEL_NOT_SUPPORTED = 0x000000B4UL; 1105 enum CKR_SESSION_READ_ONLY = 0x000000B5UL; 1106 enum CKR_SESSION_EXISTS = 0x000000B6UL; 1107 1108 enum CKR_SESSION_READ_ONLY_EXISTS = 0x000000B7UL; 1109 enum CKR_SESSION_READ_WRITE_SO_EXISTS = 0x000000B8UL; 1110 1111 enum CKR_SIGNATURE_INVALID = 0x000000C0UL; 1112 enum CKR_SIGNATURE_LEN_RANGE = 0x000000C1UL; 1113 enum CKR_TEMPLATE_INCOMPLETE = 0x000000D0UL; 1114 enum CKR_TEMPLATE_INCONSISTENT = 0x000000D1UL; 1115 enum CKR_TOKEN_NOT_PRESENT = 0x000000E0UL; 1116 enum CKR_TOKEN_NOT_RECOGNIZED = 0x000000E1UL; 1117 enum CKR_TOKEN_WRITE_PROTECTED = 0x000000E2UL; 1118 enum CKR_UNWRAPPING_KEY_HANDLE_INVALID = 0x000000F0UL; 1119 enum CKR_UNWRAPPING_KEY_SIZE_RANGE = 0x000000F1UL; 1120 enum CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT = 0x000000F2UL; 1121 enum CKR_USER_ALREADY_LOGGED_IN = 0x00000100UL; 1122 enum CKR_USER_NOT_LOGGED_IN = 0x00000101UL; 1123 enum CKR_USER_PIN_NOT_INITIALIZED = 0x00000102UL; 1124 enum CKR_USER_TYPE_INVALID = 0x00000103UL; 1125 1126 enum CKR_USER_ANOTHER_ALREADY_LOGGED_IN = 0x00000104UL; 1127 enum CKR_USER_TOO_MANY_TYPES = 0x00000105UL; 1128 1129 enum CKR_WRAPPED_KEY_INVALID = 0x00000110UL; 1130 enum CKR_WRAPPED_KEY_LEN_RANGE = 0x00000112UL; 1131 enum CKR_WRAPPING_KEY_HANDLE_INVALID = 0x00000113UL; 1132 enum CKR_WRAPPING_KEY_SIZE_RANGE = 0x00000114UL; 1133 enum CKR_WRAPPING_KEY_TYPE_INCONSISTENT = 0x00000115UL; 1134 enum CKR_RANDOM_SEED_NOT_SUPPORTED = 0x00000120UL; 1135 1136 enum CKR_RANDOM_NO_RNG = 0x00000121UL; 1137 1138 enum CKR_DOMAIN_PARAMS_INVALID = 0x00000130UL; 1139 1140 enum CKR_CURVE_NOT_SUPPORTED = 0x00000140UL; 1141 1142 enum CKR_BUFFER_TOO_SMALL = 0x00000150UL; 1143 enum CKR_SAVED_STATE_INVALID = 0x00000160UL; 1144 enum CKR_INFORMATION_SENSITIVE = 0x00000170UL; 1145 enum CKR_STATE_UNSAVEABLE = 0x00000180UL; 1146 1147 enum CKR_CRYPTOKI_NOT_INITIALIZED = 0x00000190UL; 1148 enum CKR_CRYPTOKI_ALREADY_INITIALIZED = 0x00000191UL; 1149 enum CKR_MUTEX_BAD = 0x000001A0UL; 1150 enum CKR_MUTEX_NOT_LOCKED = 0x000001A1UL; 1151 1152 enum CKR_NEW_PIN_MODE = 0x000001B0UL; 1153 enum CKR_NEXT_OTP = 0x000001B1UL; 1154 1155 enum CKR_EXCEEDED_MAX_ITERATIONS = 0x000001B5UL; 1156 enum CKR_FIPS_SELF_TEST_FAILED = 0x000001B6UL; 1157 enum CKR_LIBRARY_LOAD_FAILED = 0x000001B7UL; 1158 enum CKR_PIN_TOO_WEAK = 0x000001B8UL; 1159 enum CKR_PUBLIC_KEY_INVALID = 0x000001B9UL; 1160 1161 enum CKR_FUNCTION_REJECTED = 0x00000200UL; 1162 1163 enum CKR_VENDOR_DEFINED = 0x80000000UL; 1164 1165 1166 /* CK_NOTIFY is an application callback that processes events */ 1167 alias CK_NOTIFY = CK_RV function( 1168 CK_SESSION_HANDLE hSession, /* the session's handle */ 1169 CK_NOTIFICATION event, 1170 CK_VOID_PTR pApplication /* passed to C_OpenSession */ 1171 ); 1172 1173 1174 /* CK_FUNCTION_LIST is a structure holding a Cryptoki spec 1175 * version and pointers of appropriate types to all the 1176 * Cryptoki functions 1177 */ 1178 //typedef struct CK_FUNCTION_LIST CK_FUNCTION_LIST; 1179 1180 alias CK_FUNCTION_LIST * CK_FUNCTION_LIST_PTR; 1181 1182 alias CK_FUNCTION_LIST_PTR * CK_FUNCTION_LIST_PTR_PTR; 1183 1184 1185 /* CK_CREATEMUTEX is an application callback for creating a 1186 * mutex object 1187 */ 1188 alias CK_CREATEMUTEX = CK_RV function( 1189 CK_VOID_PTR_PTR ppMutex /* location to receive ptr to mutex */ 1190 ); 1191 1192 1193 /* CK_DESTROYMUTEX is an application callback for destroying a 1194 * mutex object 1195 */ 1196 alias CK_DESTROYMUTEX = CK_RV function( 1197 CK_VOID_PTR pMutex /* pointer to mutex */ 1198 ); 1199 1200 1201 /* CK_LOCKMUTEX is an application callback for locking a mutex */ 1202 alias CK_LOCKMUTEX = CK_RV function( 1203 CK_VOID_PTR pMutex /* pointer to mutex */ 1204 ); 1205 1206 1207 /* CK_UNLOCKMUTEX is an application callback for unlocking a 1208 * mutex 1209 */ 1210 alias CK_UNLOCKMUTEX = CK_RV function( 1211 CK_VOID_PTR pMutex /* pointer to mutex */ 1212 ); 1213 1214 1215 /* CK_C_INITIALIZE_ARGS provides the optional arguments to 1216 * C_Initialize 1217 */ 1218 struct CK_C_INITIALIZE_ARGS { 1219 CK_CREATEMUTEX CreateMutex; 1220 CK_DESTROYMUTEX DestroyMutex; 1221 CK_LOCKMUTEX LockMutex; 1222 CK_UNLOCKMUTEX UnlockMutex; 1223 CK_FLAGS flags; 1224 CK_VOID_PTR pReserved; 1225 } 1226 1227 /* flags: bit flags that provide capabilities of the slot 1228 * Bit Flag Mask Meaning 1229 */ 1230 enum CKF_LIBRARY_CANT_CREATE_OS_THREADS = 0x00000001UL; 1231 enum CKF_OS_LOCKING_OK = 0x00000002UL; 1232 1233 alias CK_C_INITIALIZE_ARGS * CK_C_INITIALIZE_ARGS_PTR; 1234 1235 1236 /* additional flags for parameters to functions */ 1237 1238 /* CKF_DONT_BLOCK is for the function C_WaitForSlotEvent */ 1239 enum CKF_DONT_BLOCK = 1; 1240 1241 /* CK_RSA_PKCS_MGF_TYPE is used to indicate the Message 1242 * Generation Function (MGF) applied to a message block when 1243 * formatting a message block for the PKCS #1 OAEP encryption 1244 * scheme. 1245 */ 1246 alias CK_ULONG CK_RSA_PKCS_MGF_TYPE; 1247 1248 alias CK_RSA_PKCS_MGF_TYPE * CK_RSA_PKCS_MGF_TYPE_PTR; 1249 1250 /* The following MGFs are defined */ 1251 enum CKG_MGF1_SHA1 = 0x00000001UL; 1252 enum CKG_MGF1_SHA256 = 0x00000002UL; 1253 enum CKG_MGF1_SHA384 = 0x00000003UL; 1254 enum CKG_MGF1_SHA512 = 0x00000004UL; 1255 enum CKG_MGF1_SHA224 = 0x00000005UL; 1256 1257 /* CK_RSA_PKCS_OAEP_SOURCE_TYPE is used to indicate the source 1258 * of the encoding parameter when formatting a message block 1259 * for the PKCS #1 OAEP encryption scheme. 1260 */ 1261 alias CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE; 1262 1263 alias CK_RSA_PKCS_OAEP_SOURCE_TYPE * CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR; 1264 1265 /* The following encoding parameter sources are defined */ 1266 enum CKZ_DATA_SPECIFIED = 0x00000001UL; 1267 1268 /* CK_RSA_PKCS_OAEP_PARAMS provides the parameters to the 1269 * CKM_RSA_PKCS_OAEP mechanism. 1270 */ 1271 struct CK_RSA_PKCS_OAEP_PARAMS { 1272 CK_MECHANISM_TYPE hashAlg; 1273 CK_RSA_PKCS_MGF_TYPE mgf; 1274 CK_RSA_PKCS_OAEP_SOURCE_TYPE source; 1275 CK_VOID_PTR pSourceData; 1276 CK_ULONG ulSourceDataLen; 1277 } 1278 1279 alias CK_RSA_PKCS_OAEP_PARAMS * CK_RSA_PKCS_OAEP_PARAMS_PTR; 1280 1281 /* CK_RSA_PKCS_PSS_PARAMS provides the parameters to the 1282 * CKM_RSA_PKCS_PSS mechanism(s). 1283 */ 1284 struct CK_RSA_PKCS_PSS_PARAMS { 1285 CK_MECHANISM_TYPE hashAlg; 1286 CK_RSA_PKCS_MGF_TYPE mgf; 1287 CK_ULONG sLen; 1288 } 1289 1290 alias CK_RSA_PKCS_PSS_PARAMS * CK_RSA_PKCS_PSS_PARAMS_PTR; 1291 1292 alias CK_ULONG CK_EC_KDF_TYPE; 1293 1294 /* The following EC Key Derivation Functions are defined */ 1295 enum CKD_NULL = 0x00000001UL; 1296 enum CKD_SHA1_KDF = 0x00000002UL; 1297 1298 /* The following X9.42 DH key derivation functions are defined */ 1299 enum CKD_SHA1_KDF_ASN1 = 0x00000003UL; 1300 enum CKD_SHA1_KDF_CONCATENATE = 0x00000004UL; 1301 enum CKD_SHA224_KDF = 0x00000005UL; 1302 enum CKD_SHA256_KDF = 0x00000006UL; 1303 enum CKD_SHA384_KDF = 0x00000007UL; 1304 enum CKD_SHA512_KDF = 0x00000008UL; 1305 enum CKD_CPDIVERSIFY_KDF = 0x00000009UL; 1306 1307 1308 /* CK_ECDH1_DERIVE_PARAMS provides the parameters to the 1309 * CKM_ECDH1_DERIVE and CKM_ECDH1_COFACTOR_DERIVE mechanisms, 1310 * where each party contributes one key pair. 1311 */ 1312 struct CK_ECDH1_DERIVE_PARAMS { 1313 CK_EC_KDF_TYPE kdf; 1314 CK_ULONG ulSharedDataLen; 1315 CK_BYTE_PTR pSharedData; 1316 CK_ULONG ulPublicDataLen; 1317 CK_BYTE_PTR pPublicData; 1318 } 1319 1320 alias CK_ECDH1_DERIVE_PARAMS * CK_ECDH1_DERIVE_PARAMS_PTR; 1321 1322 /* 1323 * CK_ECDH2_DERIVE_PARAMS provides the parameters to the 1324 * CKM_ECMQV_DERIVE mechanism, where each party contributes two key pairs. 1325 */ 1326 struct CK_ECDH2_DERIVE_PARAMS { 1327 CK_EC_KDF_TYPE kdf; 1328 CK_ULONG ulSharedDataLen; 1329 CK_BYTE_PTR pSharedData; 1330 CK_ULONG ulPublicDataLen; 1331 CK_BYTE_PTR pPublicData; 1332 CK_ULONG ulPrivateDataLen; 1333 CK_OBJECT_HANDLE hPrivateData; 1334 CK_ULONG ulPublicDataLen2; 1335 CK_BYTE_PTR pPublicData2; 1336 } 1337 1338 alias CK_ECDH2_DERIVE_PARAMS * CK_ECDH2_DERIVE_PARAMS_PTR; 1339 1340 struct CK_ECMQV_DERIVE_PARAMS { 1341 CK_EC_KDF_TYPE kdf; 1342 CK_ULONG ulSharedDataLen; 1343 CK_BYTE_PTR pSharedData; 1344 CK_ULONG ulPublicDataLen; 1345 CK_BYTE_PTR pPublicData; 1346 CK_ULONG ulPrivateDataLen; 1347 CK_OBJECT_HANDLE hPrivateData; 1348 CK_ULONG ulPublicDataLen2; 1349 CK_BYTE_PTR pPublicData2; 1350 CK_OBJECT_HANDLE publicKey; 1351 } 1352 1353 alias CK_ECMQV_DERIVE_PARAMS * CK_ECMQV_DERIVE_PARAMS_PTR; 1354 1355 /* Typedefs and defines for the CKM_X9_42_DH_KEY_PAIR_GEN and the 1356 * CKM_X9_42_DH_PARAMETER_GEN mechanisms 1357 */ 1358 alias CK_ULONG CK_X9_42_DH_KDF_TYPE; 1359 alias CK_X9_42_DH_KDF_TYPE * CK_X9_42_DH_KDF_TYPE_PTR; 1360 1361 /* CK_X9_42_DH1_DERIVE_PARAMS provides the parameters to the 1362 * CKM_X9_42_DH_DERIVE key derivation mechanism, where each party 1363 * contributes one key pair 1364 */ 1365 struct CK_X9_42_DH1_DERIVE_PARAMS { 1366 CK_X9_42_DH_KDF_TYPE kdf; 1367 CK_ULONG ulOtherInfoLen; 1368 CK_BYTE_PTR pOtherInfo; 1369 CK_ULONG ulPublicDataLen; 1370 CK_BYTE_PTR pPublicData; 1371 } 1372 1373 alias CK_X9_42_DH1_DERIVE_PARAMS * CK_X9_42_DH1_DERIVE_PARAMS_PTR; 1374 1375 /* CK_X9_42_DH2_DERIVE_PARAMS provides the parameters to the 1376 * CKM_X9_42_DH_HYBRID_DERIVE and CKM_X9_42_MQV_DERIVE key derivation 1377 * mechanisms, where each party contributes two key pairs 1378 */ 1379 struct CK_X9_42_DH2_DERIVE_PARAMS { 1380 CK_X9_42_DH_KDF_TYPE kdf; 1381 CK_ULONG ulOtherInfoLen; 1382 CK_BYTE_PTR pOtherInfo; 1383 CK_ULONG ulPublicDataLen; 1384 CK_BYTE_PTR pPublicData; 1385 CK_ULONG ulPrivateDataLen; 1386 CK_OBJECT_HANDLE hPrivateData; 1387 CK_ULONG ulPublicDataLen2; 1388 CK_BYTE_PTR pPublicData2; 1389 } 1390 1391 alias CK_X9_42_DH2_DERIVE_PARAMS * CK_X9_42_DH2_DERIVE_PARAMS_PTR; 1392 1393 struct CK_X9_42_MQV_DERIVE_PARAMS { 1394 CK_X9_42_DH_KDF_TYPE kdf; 1395 CK_ULONG ulOtherInfoLen; 1396 CK_BYTE_PTR pOtherInfo; 1397 CK_ULONG ulPublicDataLen; 1398 CK_BYTE_PTR pPublicData; 1399 CK_ULONG ulPrivateDataLen; 1400 CK_OBJECT_HANDLE hPrivateData; 1401 CK_ULONG ulPublicDataLen2; 1402 CK_BYTE_PTR pPublicData2; 1403 CK_OBJECT_HANDLE publicKey; 1404 } 1405 1406 alias CK_X9_42_MQV_DERIVE_PARAMS * CK_X9_42_MQV_DERIVE_PARAMS_PTR; 1407 1408 /* CK_KEA_DERIVE_PARAMS provides the parameters to the 1409 * CKM_KEA_DERIVE mechanism 1410 */ 1411 struct CK_KEA_DERIVE_PARAMS { 1412 CK_BBOOL isSender; 1413 CK_ULONG ulRandomLen; 1414 CK_BYTE_PTR pRandomA; 1415 CK_BYTE_PTR pRandomB; 1416 CK_ULONG ulPublicDataLen; 1417 CK_BYTE_PTR pPublicData; 1418 } 1419 1420 alias CK_KEA_DERIVE_PARAMS * CK_KEA_DERIVE_PARAMS_PTR; 1421 1422 1423 /* CK_RC2_PARAMS provides the parameters to the CKM_RC2_ECB and 1424 * CKM_RC2_MAC mechanisms. An instance of CK_RC2_PARAMS just 1425 * holds the effective keysize 1426 */ 1427 alias CK_ULONG CK_RC2_PARAMS; 1428 1429 alias CK_RC2_PARAMS * CK_RC2_PARAMS_PTR; 1430 1431 1432 /* CK_RC2_CBC_PARAMS provides the parameters to the CKM_RC2_CBC 1433 * mechanism 1434 */ 1435 struct CK_RC2_CBC_PARAMS { 1436 CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */ 1437 CK_BYTE[8] iv; /* IV for CBC mode */ 1438 } 1439 1440 alias CK_RC2_CBC_PARAMS * CK_RC2_CBC_PARAMS_PTR; 1441 1442 1443 /* CK_RC2_MAC_GENERAL_PARAMS provides the parameters for the 1444 * CKM_RC2_MAC_GENERAL mechanism 1445 */ 1446 struct CK_RC2_MAC_GENERAL_PARAMS { 1447 CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */ 1448 CK_ULONG ulMacLength; /* Length of MAC in bytes */ 1449 } 1450 1451 alias CK_RC2_MAC_GENERAL_PARAMS * CK_RC2_MAC_GENERAL_PARAMS_PTR; 1452 1453 1454 /* CK_RC5_PARAMS provides the parameters to the CKM_RC5_ECB and 1455 * CKM_RC5_MAC mechanisms 1456 */ 1457 struct CK_RC5_PARAMS { 1458 CK_ULONG ulWordsize; /* wordsize in bits */ 1459 CK_ULONG ulRounds; /* number of rounds */ 1460 } 1461 1462 alias CK_RC5_PARAMS * CK_RC5_PARAMS_PTR; 1463 1464 1465 /* CK_RC5_CBC_PARAMS provides the parameters to the CKM_RC5_CBC 1466 * mechanism 1467 */ 1468 struct CK_RC5_CBC_PARAMS { 1469 CK_ULONG ulWordsize; /* wordsize in bits */ 1470 CK_ULONG ulRounds; /* number of rounds */ 1471 CK_BYTE_PTR pIv; /* pointer to IV */ 1472 CK_ULONG ulIvLen; /* length of IV in bytes */ 1473 } 1474 1475 alias CK_RC5_CBC_PARAMS * CK_RC5_CBC_PARAMS_PTR; 1476 1477 1478 /* CK_RC5_MAC_GENERAL_PARAMS provides the parameters for the 1479 * CKM_RC5_MAC_GENERAL mechanism 1480 */ 1481 struct CK_RC5_MAC_GENERAL_PARAMS { 1482 CK_ULONG ulWordsize; /* wordsize in bits */ 1483 CK_ULONG ulRounds; /* number of rounds */ 1484 CK_ULONG ulMacLength; /* Length of MAC in bytes */ 1485 } 1486 1487 alias CK_RC5_MAC_GENERAL_PARAMS * CK_RC5_MAC_GENERAL_PARAMS_PTR; 1488 1489 /* CK_MAC_GENERAL_PARAMS provides the parameters to most block 1490 * ciphers' MAC_GENERAL mechanisms. Its value is the length of 1491 * the MAC 1492 */ 1493 alias CK_ULONG CK_MAC_GENERAL_PARAMS; 1494 1495 alias CK_MAC_GENERAL_PARAMS * CK_MAC_GENERAL_PARAMS_PTR; 1496 1497 struct CK_DES_CBC_ENCRYPT_DATA_PARAMS { 1498 CK_BYTE[8] iv; 1499 CK_BYTE_PTR pData; 1500 CK_ULONG length; 1501 } 1502 1503 alias CK_DES_CBC_ENCRYPT_DATA_PARAMS * CK_DES_CBC_ENCRYPT_DATA_PARAMS_PTR; 1504 1505 struct CK_AES_CBC_ENCRYPT_DATA_PARAMS { 1506 CK_BYTE[16] iv; 1507 CK_BYTE_PTR pData; 1508 CK_ULONG length; 1509 } 1510 1511 alias CK_AES_CBC_ENCRYPT_DATA_PARAMS * CK_AES_CBC_ENCRYPT_DATA_PARAMS_PTR; 1512 1513 /* CK_SKIPJACK_PRIVATE_WRAP_PARAMS provides the parameters to the 1514 * CKM_SKIPJACK_PRIVATE_WRAP mechanism 1515 */ 1516 struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS { 1517 CK_ULONG ulPasswordLen; 1518 CK_BYTE_PTR pPassword; 1519 CK_ULONG ulPublicDataLen; 1520 CK_BYTE_PTR pPublicData; 1521 CK_ULONG ulPAndGLen; 1522 CK_ULONG ulQLen; 1523 CK_ULONG ulRandomLen; 1524 CK_BYTE_PTR pRandomA; 1525 CK_BYTE_PTR pPrimeP; 1526 CK_BYTE_PTR pBaseG; 1527 CK_BYTE_PTR pSubprimeQ; 1528 } 1529 1530 alias CK_SKIPJACK_PRIVATE_WRAP_PARAMS * CK_SKIPJACK_PRIVATE_WRAP_PARAMS_PTR; 1531 1532 1533 /* CK_SKIPJACK_RELAYX_PARAMS provides the parameters to the 1534 * CKM_SKIPJACK_RELAYX mechanism 1535 */ 1536 struct CK_SKIPJACK_RELAYX_PARAMS { 1537 CK_ULONG ulOldWrappedXLen; 1538 CK_BYTE_PTR pOldWrappedX; 1539 CK_ULONG ulOldPasswordLen; 1540 CK_BYTE_PTR pOldPassword; 1541 CK_ULONG ulOldPublicDataLen; 1542 CK_BYTE_PTR pOldPublicData; 1543 CK_ULONG ulOldRandomLen; 1544 CK_BYTE_PTR pOldRandomA; 1545 CK_ULONG ulNewPasswordLen; 1546 CK_BYTE_PTR pNewPassword; 1547 CK_ULONG ulNewPublicDataLen; 1548 CK_BYTE_PTR pNewPublicData; 1549 CK_ULONG ulNewRandomLen; 1550 CK_BYTE_PTR pNewRandomA; 1551 } 1552 1553 alias CK_SKIPJACK_RELAYX_PARAMS * CK_SKIPJACK_RELAYX_PARAMS_PTR; 1554 1555 1556 struct CK_PBE_PARAMS { 1557 CK_BYTE_PTR pInitVector; 1558 CK_UTF8CHAR_PTR pPassword; 1559 CK_ULONG ulPasswordLen; 1560 CK_BYTE_PTR pSalt; 1561 CK_ULONG ulSaltLen; 1562 CK_ULONG ulIteration; 1563 } 1564 1565 alias CK_PBE_PARAMS * CK_PBE_PARAMS_PTR; 1566 1567 1568 /* CK_KEY_WRAP_SET_OAEP_PARAMS provides the parameters to the 1569 * CKM_KEY_WRAP_SET_OAEP mechanism 1570 */ 1571 struct CK_KEY_WRAP_SET_OAEP_PARAMS { 1572 CK_BYTE bBC; /* block contents byte */ 1573 CK_BYTE_PTR pX; /* extra data */ 1574 CK_ULONG ulXLen; /* length of extra data in bytes */ 1575 } 1576 1577 alias CK_KEY_WRAP_SET_OAEP_PARAMS * CK_KEY_WRAP_SET_OAEP_PARAMS_PTR; 1578 1579 struct CK_SSL3_RANDOM_DATA { 1580 CK_BYTE_PTR pClientRandom; 1581 CK_ULONG ulClientRandomLen; 1582 CK_BYTE_PTR pServerRandom; 1583 CK_ULONG ulServerRandomLen; 1584 } 1585 1586 1587 struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS { 1588 CK_SSL3_RANDOM_DATA RandomInfo; 1589 CK_VERSION_PTR pVersion; 1590 } 1591 1592 alias CK_SSL3_MASTER_KEY_DERIVE_PARAMS * CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR; 1593 1594 struct CK_SSL3_KEY_MAT_OUT { 1595 CK_OBJECT_HANDLE hClientMacSecret; 1596 CK_OBJECT_HANDLE hServerMacSecret; 1597 CK_OBJECT_HANDLE hClientKey; 1598 CK_OBJECT_HANDLE hServerKey; 1599 CK_BYTE_PTR pIVClient; 1600 CK_BYTE_PTR pIVServer; 1601 } 1602 1603 alias CK_SSL3_KEY_MAT_OUT * CK_SSL3_KEY_MAT_OUT_PTR; 1604 1605 1606 struct CK_SSL3_KEY_MAT_PARAMS { 1607 CK_ULONG ulMacSizeInBits; 1608 CK_ULONG ulKeySizeInBits; 1609 CK_ULONG ulIVSizeInBits; 1610 CK_BBOOL bIsExport; 1611 CK_SSL3_RANDOM_DATA RandomInfo; 1612 CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial; 1613 } 1614 1615 alias CK_SSL3_KEY_MAT_PARAMS * CK_SSL3_KEY_MAT_PARAMS_PTR; 1616 1617 struct CK_TLS_PRF_PARAMS { 1618 CK_BYTE_PTR pSeed; 1619 CK_ULONG ulSeedLen; 1620 CK_BYTE_PTR pLabel; 1621 CK_ULONG ulLabelLen; 1622 CK_BYTE_PTR pOutput; 1623 CK_ULONG_PTR pulOutputLen; 1624 } 1625 1626 alias CK_TLS_PRF_PARAMS * CK_TLS_PRF_PARAMS_PTR; 1627 1628 struct CK_WTLS_RANDOM_DATA { 1629 CK_BYTE_PTR pClientRandom; 1630 CK_ULONG ulClientRandomLen; 1631 CK_BYTE_PTR pServerRandom; 1632 CK_ULONG ulServerRandomLen; 1633 } 1634 1635 alias CK_WTLS_RANDOM_DATA * CK_WTLS_RANDOM_DATA_PTR; 1636 1637 struct CK_WTLS_MASTER_KEY_DERIVE_PARAMS { 1638 CK_MECHANISM_TYPE DigestMechanism; 1639 CK_WTLS_RANDOM_DATA RandomInfo; 1640 CK_BYTE_PTR pVersion; 1641 } 1642 1643 alias CK_WTLS_MASTER_KEY_DERIVE_PARAMS * CK_WTLS_MASTER_KEY_DERIVE_PARAMS_PTR; 1644 1645 struct CK_WTLS_PRF_PARAMS { 1646 CK_MECHANISM_TYPE DigestMechanism; 1647 CK_BYTE_PTR pSeed; 1648 CK_ULONG ulSeedLen; 1649 CK_BYTE_PTR pLabel; 1650 CK_ULONG ulLabelLen; 1651 CK_BYTE_PTR pOutput; 1652 CK_ULONG_PTR pulOutputLen; 1653 } 1654 1655 alias CK_WTLS_PRF_PARAMS * CK_WTLS_PRF_PARAMS_PTR; 1656 1657 struct CK_WTLS_KEY_MAT_OUT { 1658 CK_OBJECT_HANDLE hMacSecret; 1659 CK_OBJECT_HANDLE hKey; 1660 CK_BYTE_PTR pIV; 1661 } 1662 1663 alias CK_WTLS_KEY_MAT_OUT * CK_WTLS_KEY_MAT_OUT_PTR; 1664 1665 struct CK_WTLS_KEY_MAT_PARAMS { 1666 CK_MECHANISM_TYPE DigestMechanism; 1667 CK_ULONG ulMacSizeInBits; 1668 CK_ULONG ulKeySizeInBits; 1669 CK_ULONG ulIVSizeInBits; 1670 CK_ULONG ulSequenceNumber; 1671 CK_BBOOL bIsExport; 1672 CK_WTLS_RANDOM_DATA RandomInfo; 1673 CK_WTLS_KEY_MAT_OUT_PTR pReturnedKeyMaterial; 1674 } 1675 1676 alias CK_WTLS_KEY_MAT_PARAMS * CK_WTLS_KEY_MAT_PARAMS_PTR; 1677 1678 struct CK_CMS_SIG_PARAMS { 1679 CK_OBJECT_HANDLE certificateHandle; 1680 CK_MECHANISM_PTR pSigningMechanism; 1681 CK_MECHANISM_PTR pDigestMechanism; 1682 CK_UTF8CHAR_PTR pContentType; 1683 CK_BYTE_PTR pRequestedAttributes; 1684 CK_ULONG ulRequestedAttributesLen; 1685 CK_BYTE_PTR pRequiredAttributes; 1686 CK_ULONG ulRequiredAttributesLen; 1687 } 1688 1689 alias CK_CMS_SIG_PARAMS * CK_CMS_SIG_PARAMS_PTR; 1690 1691 struct CK_KEY_DERIVATION_STRING_DATA { 1692 CK_BYTE_PTR pData; 1693 CK_ULONG ulLen; 1694 } 1695 1696 alias CK_KEY_DERIVATION_STRING_DATA * CK_KEY_DERIVATION_STRING_DATA_PTR; 1697 1698 1699 /* The CK_EXTRACT_PARAMS is used for the 1700 * CKM_EXTRACT_KEY_FROM_KEY mechanism. It specifies which bit 1701 * of the base key should be used as the first bit of the 1702 * derived key 1703 */ 1704 alias CK_ULONG CK_EXTRACT_PARAMS; 1705 1706 alias CK_EXTRACT_PARAMS * CK_EXTRACT_PARAMS_PTR; 1707 1708 /* CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is used to 1709 * indicate the Pseudo-Random Function (PRF) used to generate 1710 * key bits using PKCS #5 PBKDF2. 1711 */ 1712 alias CK_ULONG CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE; 1713 1714 alias CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE * CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR; 1715 1716 enum CKP_PKCS5_PBKD2_HMAC_SHA1 = 0x00000001UL; 1717 enum CKP_PKCS5_PBKD2_HMAC_GOSTR3411 = 0x00000002UL; 1718 enum CKP_PKCS5_PBKD2_HMAC_SHA224 = 0x00000003UL; 1719 enum CKP_PKCS5_PBKD2_HMAC_SHA256 = 0x00000004UL; 1720 enum CKP_PKCS5_PBKD2_HMAC_SHA384 = 0x00000005UL; 1721 enum CKP_PKCS5_PBKD2_HMAC_SHA512 = 0x00000006UL; 1722 enum CKP_PKCS5_PBKD2_HMAC_SHA512_224 = 0x00000007UL; 1723 enum CKP_PKCS5_PBKD2_HMAC_SHA512_256 = 0x00000008UL; 1724 1725 /* CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is used to indicate the 1726 * source of the salt value when deriving a key using PKCS #5 1727 * PBKDF2. 1728 */ 1729 alias CK_ULONG CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE; 1730 1731 alias CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE * CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR; 1732 1733 /* The following salt value sources are defined in PKCS #5 v2.0. */ 1734 enum CKZ_SALT_SPECIFIED = 0x00000001UL; 1735 1736 /* CK_PKCS5_PBKD2_PARAMS is a structure that provides the 1737 * parameters to the CKM_PKCS5_PBKD2 mechanism. 1738 */ 1739 struct CK_PKCS5_PBKD2_PARAMS { 1740 CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource; 1741 CK_VOID_PTR pSaltSourceData; 1742 CK_ULONG ulSaltSourceDataLen; 1743 CK_ULONG iterations; 1744 CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf; 1745 CK_VOID_PTR pPrfData; 1746 CK_ULONG ulPrfDataLen; 1747 CK_UTF8CHAR_PTR pPassword; 1748 CK_ULONG_PTR ulPasswordLen; 1749 } 1750 1751 alias CK_PKCS5_PBKD2_PARAMS * CK_PKCS5_PBKD2_PARAMS_PTR; 1752 1753 /* CK_PKCS5_PBKD2_PARAMS2 is a corrected version of the CK_PKCS5_PBKD2_PARAMS 1754 * structure that provides the parameters to the CKM_PKCS5_PBKD2 mechanism 1755 * noting that the ulPasswordLen field is a CK_ULONG and not a CK_ULONG_PTR. 1756 */ 1757 struct CK_PKCS5_PBKD2_PARAMS2 { 1758 CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource; 1759 CK_VOID_PTR pSaltSourceData; 1760 CK_ULONG ulSaltSourceDataLen; 1761 CK_ULONG iterations; 1762 CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf; 1763 CK_VOID_PTR pPrfData; 1764 CK_ULONG ulPrfDataLen; 1765 CK_UTF8CHAR_PTR pPassword; 1766 CK_ULONG ulPasswordLen; 1767 } 1768 1769 alias CK_PKCS5_PBKD2_PARAMS2 * CK_PKCS5_PBKD2_PARAMS2_PTR; 1770 1771 alias CK_ULONG CK_OTP_PARAM_TYPE; 1772 alias CK_OTP_PARAM_TYPE CK_PARAM_TYPE; /* backward compatibility */ 1773 1774 struct CK_OTP_PARAM { 1775 CK_OTP_PARAM_TYPE type; 1776 CK_VOID_PTR pValue; 1777 CK_ULONG ulValueLen; 1778 } 1779 1780 alias CK_OTP_PARAM * CK_OTP_PARAM_PTR; 1781 1782 struct CK_OTP_PARAMS { 1783 CK_OTP_PARAM_PTR pParams; 1784 CK_ULONG ulCount; 1785 } 1786 1787 alias CK_OTP_PARAMS * CK_OTP_PARAMS_PTR; 1788 1789 struct CK_OTP_SIGNATURE_INFO { 1790 CK_OTP_PARAM_PTR pParams; 1791 CK_ULONG ulCount; 1792 } 1793 1794 alias CK_OTP_SIGNATURE_INFO * CK_OTP_SIGNATURE_INFO_PTR; 1795 1796 enum CK_OTP_VALUE = 0UL; 1797 enum CK_OTP_PIN = 1UL; 1798 enum CK_OTP_CHALLENGE = 2UL; 1799 enum CK_OTP_TIME = 3UL; 1800 enum CK_OTP_COUNTER = 4UL; 1801 enum CK_OTP_FLAGS = 5UL; 1802 enum CK_OTP_OUTPUT_LENGTH = 6UL; 1803 enum CK_OTP_OUTPUT_FORMAT = 7UL; 1804 1805 enum CKF_NEXT_OTP = 0x00000001UL; 1806 enum CKF_EXCLUDE_TIME = 0x00000002UL; 1807 enum CKF_EXCLUDE_COUNTER = 0x00000004UL; 1808 enum CKF_EXCLUDE_CHALLENGE = 0x00000008UL; 1809 enum CKF_EXCLUDE_PIN = 0x00000010UL; 1810 enum CKF_USER_FRIENDLY_OTP = 0x00000020UL; 1811 1812 struct CK_KIP_PARAMS { 1813 CK_MECHANISM_PTR pMechanism; 1814 CK_OBJECT_HANDLE hKey; 1815 CK_BYTE_PTR pSeed; 1816 CK_ULONG ulSeedLen; 1817 } 1818 1819 alias CK_KIP_PARAMS * CK_KIP_PARAMS_PTR; 1820 1821 struct CK_AES_CTR_PARAMS { 1822 CK_ULONG ulCounterBits; 1823 CK_BYTE[16] cb; 1824 } 1825 1826 alias CK_AES_CTR_PARAMS * CK_AES_CTR_PARAMS_PTR; 1827 1828 struct CK_GCM_PARAMS { 1829 CK_BYTE_PTR pIv; 1830 CK_ULONG ulIvLen; 1831 CK_ULONG ulIvBits; 1832 CK_BYTE_PTR pAAD; 1833 CK_ULONG ulAADLen; 1834 CK_ULONG ulTagBits; 1835 } 1836 1837 alias CK_GCM_PARAMS * CK_GCM_PARAMS_PTR; 1838 1839 struct CK_CCM_PARAMS { 1840 CK_ULONG ulDataLen; 1841 CK_BYTE_PTR pNonce; 1842 CK_ULONG ulNonceLen; 1843 CK_BYTE_PTR pAAD; 1844 CK_ULONG ulAADLen; 1845 CK_ULONG ulMACLen; 1846 } 1847 1848 alias CK_CCM_PARAMS * CK_CCM_PARAMS_PTR; 1849 1850 /* Deprecated. Use CK_GCM_PARAMS */ 1851 struct CK_AES_GCM_PARAMS { 1852 CK_BYTE_PTR pIv; 1853 CK_ULONG ulIvLen; 1854 CK_ULONG ulIvBits; 1855 CK_BYTE_PTR pAAD; 1856 CK_ULONG ulAADLen; 1857 CK_ULONG ulTagBits; 1858 } 1859 1860 alias CK_AES_GCM_PARAMS * CK_AES_GCM_PARAMS_PTR; 1861 1862 /* Deprecated. Use CK_CCM_PARAMS */ 1863 struct CK_AES_CCM_PARAMS { 1864 CK_ULONG ulDataLen; 1865 CK_BYTE_PTR pNonce; 1866 CK_ULONG ulNonceLen; 1867 CK_BYTE_PTR pAAD; 1868 CK_ULONG ulAADLen; 1869 CK_ULONG ulMACLen; 1870 } 1871 1872 alias CK_AES_CCM_PARAMS * CK_AES_CCM_PARAMS_PTR; 1873 1874 struct CK_CAMELLIA_CTR_PARAMS { 1875 CK_ULONG ulCounterBits; 1876 CK_BYTE[16] cb; 1877 } 1878 1879 alias CK_CAMELLIA_CTR_PARAMS * CK_CAMELLIA_CTR_PARAMS_PTR; 1880 1881 struct CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS { 1882 CK_BYTE[16] iv; 1883 CK_BYTE_PTR pData; 1884 CK_ULONG length; 1885 } 1886 1887 alias CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS * CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS_PTR; 1888 1889 struct CK_ARIA_CBC_ENCRYPT_DATA_PARAMS { 1890 CK_BYTE[16] iv; 1891 CK_BYTE_PTR pData; 1892 CK_ULONG length; 1893 } 1894 1895 alias CK_ARIA_CBC_ENCRYPT_DATA_PARAMS * CK_ARIA_CBC_ENCRYPT_DATA_PARAMS_PTR; 1896 1897 struct CK_DSA_PARAMETER_GEN_PARAM { 1898 CK_MECHANISM_TYPE hash; 1899 CK_BYTE_PTR pSeed; 1900 CK_ULONG ulSeedLen; 1901 CK_ULONG ulIndex; 1902 } 1903 1904 alias CK_DSA_PARAMETER_GEN_PARAM * CK_DSA_PARAMETER_GEN_PARAM_PTR; 1905 1906 struct CK_ECDH_AES_KEY_WRAP_PARAMS { 1907 CK_ULONG ulAESKeyBits; 1908 CK_EC_KDF_TYPE kdf; 1909 CK_ULONG ulSharedDataLen; 1910 CK_BYTE_PTR pSharedData; 1911 } 1912 1913 alias CK_ECDH_AES_KEY_WRAP_PARAMS * CK_ECDH_AES_KEY_WRAP_PARAMS_PTR; 1914 1915 alias CK_ULONG CK_JAVA_MIDP_SECURITY_DOMAIN; 1916 1917 alias CK_ULONG CK_CERTIFICATE_CATEGORY; 1918 1919 struct CK_RSA_AES_KEY_WRAP_PARAMS { 1920 CK_ULONG ulAESKeyBits; 1921 CK_RSA_PKCS_OAEP_PARAMS_PTR pOAEPParams; 1922 } 1923 1924 alias CK_RSA_AES_KEY_WRAP_PARAMS * CK_RSA_AES_KEY_WRAP_PARAMS_PTR; 1925 1926 struct CK_TLS12_MASTER_KEY_DERIVE_PARAMS { 1927 CK_SSL3_RANDOM_DATA RandomInfo; 1928 CK_VERSION_PTR pVersion; 1929 CK_MECHANISM_TYPE prfHashMechanism; 1930 } 1931 1932 alias CK_TLS12_MASTER_KEY_DERIVE_PARAMS * CK_TLS12_MASTER_KEY_DERIVE_PARAMS_PTR; 1933 1934 struct CK_TLS12_KEY_MAT_PARAMS { 1935 CK_ULONG ulMacSizeInBits; 1936 CK_ULONG ulKeySizeInBits; 1937 CK_ULONG ulIVSizeInBits; 1938 CK_BBOOL bIsExport; 1939 CK_SSL3_RANDOM_DATA RandomInfo; 1940 CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial; 1941 CK_MECHANISM_TYPE prfHashMechanism; 1942 } 1943 1944 alias CK_TLS12_KEY_MAT_PARAMS * CK_TLS12_KEY_MAT_PARAMS_PTR; 1945 1946 struct CK_TLS_KDF_PARAMS { 1947 CK_MECHANISM_TYPE prfMechanism; 1948 CK_BYTE_PTR pLabel; 1949 CK_ULONG ulLabelLength; 1950 CK_SSL3_RANDOM_DATA RandomInfo; 1951 CK_BYTE_PTR pContextData; 1952 CK_ULONG ulContextDataLength; 1953 } 1954 1955 alias CK_TLS_KDF_PARAMS * CK_TLS_KDF_PARAMS_PTR; 1956 1957 struct CK_TLS_MAC_PARAMS { 1958 CK_MECHANISM_TYPE prfHashMechanism; 1959 CK_ULONG ulMacLength; 1960 CK_ULONG ulServerOrClient; 1961 } 1962 1963 alias CK_TLS_MAC_PARAMS * CK_TLS_MAC_PARAMS_PTR; 1964 1965 struct CK_GOSTR3410_DERIVE_PARAMS { 1966 CK_EC_KDF_TYPE kdf; 1967 CK_BYTE_PTR pPublicData; 1968 CK_ULONG ulPublicDataLen; 1969 CK_BYTE_PTR pUKM; 1970 CK_ULONG ulUKMLen; 1971 } 1972 1973 alias CK_GOSTR3410_DERIVE_PARAMS * CK_GOSTR3410_DERIVE_PARAMS_PTR; 1974 1975 struct CK_GOSTR3410_KEY_WRAP_PARAMS { 1976 CK_BYTE_PTR pWrapOID; 1977 CK_ULONG ulWrapOIDLen; 1978 CK_BYTE_PTR pUKM; 1979 CK_ULONG ulUKMLen; 1980 CK_OBJECT_HANDLE hKey; 1981 } 1982 1983 alias CK_GOSTR3410_KEY_WRAP_PARAMS * CK_GOSTR3410_KEY_WRAP_PARAMS_PTR; 1984 1985 struct CK_SEED_CBC_ENCRYPT_DATA_PARAMS { 1986 CK_BYTE[16] iv; 1987 CK_BYTE_PTR pData; 1988 CK_ULONG length; 1989 } 1990 1991 alias CK_SEED_CBC_ENCRYPT_DATA_PARAMS * CK_SEED_CBC_ENCRYPT_DATA_PARAMS_PTR; 1992 1993 struct CK_FUNCTION_LIST { 1994 version (Windows) { 1995 align(1) : 1996 CK_VERSION version_; /* Cryptoki version */ 1997 mixin CK_FUNCTION_LIST_FENTRIES; 1998 } 1999 else { 2000 CK_VERSION version_; /* Cryptoki version */ 2001 mixin CK_FUNCTION_LIST_FENTRIES; 2002 } 2003 }