Path: blob/master/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11t.h
41149 views
/* Copyright (c) OASIS Open 2016, 2019. All Rights Reserved./1* /Distributed under the terms of the OASIS IPR Policy,2* [http://www.oasis-open.org/policies-guidelines/ipr], AS-IS, WITHOUT ANY3* IMPLIED OR EXPRESS WARRANTY; there is no warranty of MERCHANTABILITY, FITNESS FOR A4* PARTICULAR PURPOSE or NONINFRINGEMENT of the rights of others.5*/67/* Latest version of the specification:8* http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/pkcs11-base-v2.40.html9*/1011/* See top of pkcs11.h for information about the macros that12* must be defined and the structure-packing conventions that13* must be set before including this file.14*/1516#ifndef _PKCS11T_H_17#define _PKCS11T_H_ 11819#define CRYPTOKI_VERSION_MAJOR 320#define CRYPTOKI_VERSION_MINOR 021#define CRYPTOKI_VERSION_AMENDMENT 02223#define CK_TRUE 124#define CK_FALSE 02526#ifndef CK_DISABLE_TRUE_FALSE27#ifndef FALSE28#define FALSE CK_FALSE29#endif30#ifndef TRUE31#define TRUE CK_TRUE32#endif33#endif3435/* an unsigned 8-bit value */36typedef unsigned char CK_BYTE;3738/* an unsigned 8-bit character */39typedef CK_BYTE CK_CHAR;4041/* an 8-bit UTF-8 character */42typedef CK_BYTE CK_UTF8CHAR;4344/* a BYTE-sized Boolean flag */45typedef CK_BYTE CK_BBOOL;4647/* an unsigned value, at least 32 bits long */48typedef unsigned long int CK_ULONG;4950/* a signed value, the same size as a CK_ULONG */51typedef long int CK_LONG;5253/* at least 32 bits; each bit is a Boolean flag */54typedef CK_ULONG CK_FLAGS;555657/* some special values for certain CK_ULONG variables */58#define CK_UNAVAILABLE_INFORMATION (~0UL)59#define CK_EFFECTIVELY_INFINITE 0UL606162typedef CK_BYTE CK_PTR CK_BYTE_PTR;63typedef CK_CHAR CK_PTR CK_CHAR_PTR;64typedef CK_UTF8CHAR CK_PTR CK_UTF8CHAR_PTR;65typedef CK_ULONG CK_PTR CK_ULONG_PTR;66typedef void CK_PTR CK_VOID_PTR;6768/* Pointer to a CK_VOID_PTR-- i.e., pointer to pointer to void */69typedef CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR;707172/* The following value is always invalid if used as a session73* handle or object handle74*/75#define CK_INVALID_HANDLE 0UL767778typedef struct CK_VERSION {79CK_BYTE major; /* integer portion of version number */80CK_BYTE minor; /* 1/100ths portion of version number */81} CK_VERSION;8283typedef CK_VERSION CK_PTR CK_VERSION_PTR;848586typedef struct CK_INFO {87CK_VERSION cryptokiVersion; /* Cryptoki interface ver */88CK_UTF8CHAR manufacturerID[32]; /* blank padded */89CK_FLAGS flags; /* must be zero */90CK_UTF8CHAR libraryDescription[32]; /* blank padded */91CK_VERSION libraryVersion; /* version of library */92} CK_INFO;9394typedef CK_INFO CK_PTR CK_INFO_PTR;959697/* CK_NOTIFICATION enumerates the types of notifications that98* Cryptoki provides to an application99*/100typedef CK_ULONG CK_NOTIFICATION;101#define CKN_SURRENDER 0UL102#define CKN_OTP_CHANGED 1UL103104typedef CK_ULONG CK_SLOT_ID;105106typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR;107108109/* CK_SLOT_INFO provides information about a slot */110typedef struct CK_SLOT_INFO {111CK_UTF8CHAR slotDescription[64]; /* blank padded */112CK_UTF8CHAR manufacturerID[32]; /* blank padded */113CK_FLAGS flags;114115CK_VERSION hardwareVersion; /* version of hardware */116CK_VERSION firmwareVersion; /* version of firmware */117} CK_SLOT_INFO;118119/* flags: bit flags that provide capabilities of the slot120* Bit Flag Mask Meaning121*/122#define CKF_TOKEN_PRESENT 0x00000001UL /* a token is there */123#define CKF_REMOVABLE_DEVICE 0x00000002UL /* removable devices*/124#define CKF_HW_SLOT 0x00000004UL /* hardware slot */125126typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR;127128129/* CK_TOKEN_INFO provides information about a token */130typedef struct CK_TOKEN_INFO {131CK_UTF8CHAR label[32]; /* blank padded */132CK_UTF8CHAR manufacturerID[32]; /* blank padded */133CK_UTF8CHAR model[16]; /* blank padded */134CK_CHAR serialNumber[16]; /* blank padded */135CK_FLAGS flags; /* see below */136137CK_ULONG ulMaxSessionCount; /* max open sessions */138CK_ULONG ulSessionCount; /* sess. now open */139CK_ULONG ulMaxRwSessionCount; /* max R/W sessions */140CK_ULONG ulRwSessionCount; /* R/W sess. now open */141CK_ULONG ulMaxPinLen; /* in bytes */142CK_ULONG ulMinPinLen; /* in bytes */143CK_ULONG ulTotalPublicMemory; /* in bytes */144CK_ULONG ulFreePublicMemory; /* in bytes */145CK_ULONG ulTotalPrivateMemory; /* in bytes */146CK_ULONG ulFreePrivateMemory; /* in bytes */147CK_VERSION hardwareVersion; /* version of hardware */148CK_VERSION firmwareVersion; /* version of firmware */149CK_CHAR utcTime[16]; /* time */150} CK_TOKEN_INFO;151152/* The flags parameter is defined as follows:153* Bit Flag Mask Meaning154*/155#define CKF_RNG 0x00000001UL /* has random # generator */156#define CKF_WRITE_PROTECTED 0x00000002UL /* token is write-protected */157#define CKF_LOGIN_REQUIRED 0x00000004UL /* user must login */158#define CKF_USER_PIN_INITIALIZED 0x00000008UL /* normal user's PIN is set */159160/* CKF_RESTORE_KEY_NOT_NEEDED. If it is set,161* that means that *every* time the state of cryptographic162* operations of a session is successfully saved, all keys163* needed to continue those operations are stored in the state164*/165#define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020UL166167/* CKF_CLOCK_ON_TOKEN. If it is set, that means168* that the token has some sort of clock. The time on that169* clock is returned in the token info structure170*/171#define CKF_CLOCK_ON_TOKEN 0x00000040UL172173/* CKF_PROTECTED_AUTHENTICATION_PATH. If it is174* set, that means that there is some way for the user to login175* without sending a PIN through the Cryptoki library itself176*/177#define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100UL178179/* CKF_DUAL_CRYPTO_OPERATIONS. If it is true,180* that means that a single session with the token can perform181* dual simultaneous cryptographic operations (digest and182* encrypt; decrypt and digest; sign and encrypt; and decrypt183* and sign)184*/185#define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200UL186187/* CKF_TOKEN_INITIALIZED. If it is true, the188* token has been initialized using C_InitializeToken or an189* equivalent mechanism outside the scope of PKCS #11.190* Calling C_InitializeToken when this flag is set will cause191* the token to be reinitialized.192*/193#define CKF_TOKEN_INITIALIZED 0x00000400UL194195/* CKF_SECONDARY_AUTHENTICATION. If it is196* true, the token supports secondary authentication for197* private key objects.198*/199#define CKF_SECONDARY_AUTHENTICATION 0x00000800UL200201/* CKF_USER_PIN_COUNT_LOW. If it is true, an202* incorrect user login PIN has been entered at least once203* since the last successful authentication.204*/205#define CKF_USER_PIN_COUNT_LOW 0x00010000UL206207/* CKF_USER_PIN_FINAL_TRY. If it is true,208* supplying an incorrect user PIN will it to become locked.209*/210#define CKF_USER_PIN_FINAL_TRY 0x00020000UL211212/* CKF_USER_PIN_LOCKED. If it is true, the213* user PIN has been locked. User login to the token is not214* possible.215*/216#define CKF_USER_PIN_LOCKED 0x00040000UL217218/* CKF_USER_PIN_TO_BE_CHANGED. If it is true,219* the user PIN value is the default value set by token220* initialization or manufacturing, or the PIN has been221* expired by the card.222*/223#define CKF_USER_PIN_TO_BE_CHANGED 0x00080000UL224225/* CKF_SO_PIN_COUNT_LOW. If it is true, an226* incorrect SO login PIN has been entered at least once since227* the last successful authentication.228*/229#define CKF_SO_PIN_COUNT_LOW 0x00100000UL230231/* CKF_SO_PIN_FINAL_TRY. If it is true,232* supplying an incorrect SO PIN will it to become locked.233*/234#define CKF_SO_PIN_FINAL_TRY 0x00200000UL235236/* CKF_SO_PIN_LOCKED. If it is true, the SO237* PIN has been locked. SO login to the token is not possible.238*/239#define CKF_SO_PIN_LOCKED 0x00400000UL240241/* CKF_SO_PIN_TO_BE_CHANGED. If it is true,242* the SO PIN value is the default value set by token243* initialization or manufacturing, or the PIN has been244* expired by the card.245*/246#define CKF_SO_PIN_TO_BE_CHANGED 0x00800000UL247248#define CKF_ERROR_STATE 0x01000000UL249250typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR;251252253/* CK_SESSION_HANDLE is a Cryptoki-assigned value that254* identifies a session255*/256typedef CK_ULONG CK_SESSION_HANDLE;257258typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR;259260261/* CK_USER_TYPE enumerates the types of Cryptoki users */262typedef CK_ULONG CK_USER_TYPE;263/* Security Officer */264#define CKU_SO 0UL265/* Normal user */266#define CKU_USER 1UL267/* Context specific */268#define CKU_CONTEXT_SPECIFIC 2UL269270/* CK_STATE enumerates the session states */271typedef CK_ULONG CK_STATE;272#define CKS_RO_PUBLIC_SESSION 0UL273#define CKS_RO_USER_FUNCTIONS 1UL274#define CKS_RW_PUBLIC_SESSION 2UL275#define CKS_RW_USER_FUNCTIONS 3UL276#define CKS_RW_SO_FUNCTIONS 4UL277278/* CK_SESSION_INFO provides information about a session */279typedef struct CK_SESSION_INFO {280CK_SLOT_ID slotID;281CK_STATE state;282CK_FLAGS flags; /* see below */283CK_ULONG ulDeviceError; /* device-dependent error code */284} CK_SESSION_INFO;285286/* The flags are defined in the following table:287* Bit Flag Mask Meaning288*/289#define CKF_RW_SESSION 0x00000002UL /* session is r/w */290#define CKF_SERIAL_SESSION 0x00000004UL /* no parallel */291292typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR;293294295/* CK_OBJECT_HANDLE is a token-specific identifier for an296* object297*/298typedef CK_ULONG CK_OBJECT_HANDLE;299300typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR;301302303/* CK_OBJECT_CLASS is a value that identifies the classes (or304* types) of objects that Cryptoki recognizes. It is defined305* as follows:306*/307typedef CK_ULONG CK_OBJECT_CLASS;308309/* The following classes of objects are defined: */310#define CKO_DATA 0x00000000UL311#define CKO_CERTIFICATE 0x00000001UL312#define CKO_PUBLIC_KEY 0x00000002UL313#define CKO_PRIVATE_KEY 0x00000003UL314#define CKO_SECRET_KEY 0x00000004UL315#define CKO_HW_FEATURE 0x00000005UL316#define CKO_DOMAIN_PARAMETERS 0x00000006UL317#define CKO_MECHANISM 0x00000007UL318#define CKO_OTP_KEY 0x00000008UL319#define CKO_PROFILE 0x00000009UL320321#define CKO_VENDOR_DEFINED 0x80000000UL322323typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR;324325/* Profile ID's */326#define CKP_INVALID_ID 0x00000000UL327#define CKP_BASELINE_PROVIDER 0x00000001UL328#define CKP_EXTENDED_PROVIDER 0x00000002UL329#define CKP_AUTHENTICATION_TOKEN 0x00000003UL330#define CKP_PUBLIC_CERTIFICATES_TOKEN 0x00000004UL331#define CKP_VENDOR_DEFINED 0x80000000UL332333/* CK_HW_FEATURE_TYPE is a value that identifies the hardware feature type334* of an object with CK_OBJECT_CLASS equal to CKO_HW_FEATURE.335*/336typedef CK_ULONG CK_HW_FEATURE_TYPE;337338/* The following hardware feature types are defined */339#define CKH_MONOTONIC_COUNTER 0x00000001UL340#define CKH_CLOCK 0x00000002UL341#define CKH_USER_INTERFACE 0x00000003UL342#define CKH_VENDOR_DEFINED 0x80000000UL343344/* CK_KEY_TYPE is a value that identifies a key type */345typedef CK_ULONG CK_KEY_TYPE;346347/* the following key types are defined: */348#define CKK_RSA 0x00000000UL349#define CKK_DSA 0x00000001UL350#define CKK_DH 0x00000002UL351#define CKK_ECDSA 0x00000003UL /* Deprecated */352#define CKK_EC 0x00000003UL353#define CKK_X9_42_DH 0x00000004UL354#define CKK_KEA 0x00000005UL355#define CKK_GENERIC_SECRET 0x00000010UL356#define CKK_RC2 0x00000011UL357#define CKK_RC4 0x00000012UL358#define CKK_DES 0x00000013UL359#define CKK_DES2 0x00000014UL360#define CKK_DES3 0x00000015UL361#define CKK_CAST 0x00000016UL362#define CKK_CAST3 0x00000017UL363#define CKK_CAST5 0x00000018UL /* Deprecated */364#define CKK_CAST128 0x00000018UL365#define CKK_RC5 0x00000019UL366#define CKK_IDEA 0x0000001AUL367#define CKK_SKIPJACK 0x0000001BUL368#define CKK_BATON 0x0000001CUL369#define CKK_JUNIPER 0x0000001DUL370#define CKK_CDMF 0x0000001EUL371#define CKK_AES 0x0000001FUL372#define CKK_BLOWFISH 0x00000020UL373#define CKK_TWOFISH 0x00000021UL374#define CKK_SECURID 0x00000022UL375#define CKK_HOTP 0x00000023UL376#define CKK_ACTI 0x00000024UL377#define CKK_CAMELLIA 0x00000025UL378#define CKK_ARIA 0x00000026UL379380/* the following definitions were added in the 2.30 header file,381* but never defined in the spec. */382#define CKK_MD5_HMAC 0x00000027UL383#define CKK_SHA_1_HMAC 0x00000028UL384#define CKK_RIPEMD128_HMAC 0x00000029UL385#define CKK_RIPEMD160_HMAC 0x0000002AUL386#define CKK_SHA256_HMAC 0x0000002BUL387#define CKK_SHA384_HMAC 0x0000002CUL388#define CKK_SHA512_HMAC 0x0000002DUL389#define CKK_SHA224_HMAC 0x0000002EUL390391#define CKK_SEED 0x0000002FUL392#define CKK_GOSTR3410 0x00000030UL393#define CKK_GOSTR3411 0x00000031UL394#define CKK_GOST28147 0x00000032UL395#define CKK_CHACHA20 0x00000033UL396#define CKK_POLY1305 0x00000034UL397#define CKK_AES_XTS 0x00000035UL398#define CKK_SHA3_224_HMAC 0x00000036UL399#define CKK_SHA3_256_HMAC 0x00000037UL400#define CKK_SHA3_384_HMAC 0x00000038UL401#define CKK_SHA3_512_HMAC 0x00000039UL402#define CKK_BLAKE2B_160_HMAC 0x0000003aUL403#define CKK_BLAKE2B_256_HMAC 0x0000003bUL404#define CKK_BLAKE2B_384_HMAC 0x0000003cUL405#define CKK_BLAKE2B_512_HMAC 0x0000003dUL406#define CKK_SALSA20 0x0000003eUL407#define CKK_X2RATCHET 0x0000003fUL408#define CKK_EC_EDWARDS 0x00000040UL409#define CKK_EC_MONTGOMERY 0x00000041UL410#define CKK_HKDF 0x00000042UL411#define CKK_SHA512_224_HMAC 0x00000043UL412#define CKK_SHA512_256_HMAC 0x00000044UL413#define CKK_SHA512_T_HMAC 0x00000045UL414415#define CKK_VENDOR_DEFINED 0x80000000UL416417418/* CK_CERTIFICATE_TYPE is a value that identifies a certificate419* type420*/421typedef CK_ULONG CK_CERTIFICATE_TYPE;422423#define CK_CERTIFICATE_CATEGORY_UNSPECIFIED 0UL424#define CK_CERTIFICATE_CATEGORY_TOKEN_USER 1UL425#define CK_CERTIFICATE_CATEGORY_AUTHORITY 2UL426#define CK_CERTIFICATE_CATEGORY_OTHER_ENTITY 3UL427428#define CK_SECURITY_DOMAIN_UNSPECIFIED 0UL429#define CK_SECURITY_DOMAIN_MANUFACTURER 1UL430#define CK_SECURITY_DOMAIN_OPERATOR 2UL431#define CK_SECURITY_DOMAIN_THIRD_PARTY 3UL432433434/* The following certificate types are defined: */435#define CKC_X_509 0x00000000UL436#define CKC_X_509_ATTR_CERT 0x00000001UL437#define CKC_WTLS 0x00000002UL438#define CKC_VENDOR_DEFINED 0x80000000UL439440441/* CK_ATTRIBUTE_TYPE is a value that identifies an attribute442* type443*/444typedef CK_ULONG CK_ATTRIBUTE_TYPE;445446/* The CKF_ARRAY_ATTRIBUTE flag identifies an attribute which447* consists of an array of values.448*/449#define CKF_ARRAY_ATTRIBUTE 0x40000000UL450451/* The following OTP-related defines relate to the CKA_OTP_FORMAT attribute */452#define CK_OTP_FORMAT_DECIMAL 0UL453#define CK_OTP_FORMAT_HEXADECIMAL 1UL454#define CK_OTP_FORMAT_ALPHANUMERIC 2UL455#define CK_OTP_FORMAT_BINARY 3UL456457/* The following OTP-related defines relate to the CKA_OTP_..._REQUIREMENT458* attributes459*/460#define CK_OTP_PARAM_IGNORED 0UL461#define CK_OTP_PARAM_OPTIONAL 1UL462#define CK_OTP_PARAM_MANDATORY 2UL463464/* The following attribute types are defined: */465#define CKA_CLASS 0x00000000UL466#define CKA_TOKEN 0x00000001UL467#define CKA_PRIVATE 0x00000002UL468#define CKA_LABEL 0x00000003UL469#define CKA_UNIQUE_ID 0x00000004UL470#define CKA_APPLICATION 0x00000010UL471#define CKA_VALUE 0x00000011UL472#define CKA_OBJECT_ID 0x00000012UL473#define CKA_CERTIFICATE_TYPE 0x00000080UL474#define CKA_ISSUER 0x00000081UL475#define CKA_SERIAL_NUMBER 0x00000082UL476#define CKA_AC_ISSUER 0x00000083UL477#define CKA_OWNER 0x00000084UL478#define CKA_ATTR_TYPES 0x00000085UL479#define CKA_TRUSTED 0x00000086UL480#define CKA_CERTIFICATE_CATEGORY 0x00000087UL481#define CKA_JAVA_MIDP_SECURITY_DOMAIN 0x00000088UL482#define CKA_URL 0x00000089UL483#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY 0x0000008AUL484#define CKA_HASH_OF_ISSUER_PUBLIC_KEY 0x0000008BUL485#define CKA_NAME_HASH_ALGORITHM 0x0000008CUL486#define CKA_CHECK_VALUE 0x00000090UL487488#define CKA_KEY_TYPE 0x00000100UL489#define CKA_SUBJECT 0x00000101UL490#define CKA_ID 0x00000102UL491#define CKA_SENSITIVE 0x00000103UL492#define CKA_ENCRYPT 0x00000104UL493#define CKA_DECRYPT 0x00000105UL494#define CKA_WRAP 0x00000106UL495#define CKA_UNWRAP 0x00000107UL496#define CKA_SIGN 0x00000108UL497#define CKA_SIGN_RECOVER 0x00000109UL498#define CKA_VERIFY 0x0000010AUL499#define CKA_VERIFY_RECOVER 0x0000010BUL500#define CKA_DERIVE 0x0000010CUL501#define CKA_START_DATE 0x00000110UL502#define CKA_END_DATE 0x00000111UL503#define CKA_MODULUS 0x00000120UL504#define CKA_MODULUS_BITS 0x00000121UL505#define CKA_PUBLIC_EXPONENT 0x00000122UL506#define CKA_PRIVATE_EXPONENT 0x00000123UL507#define CKA_PRIME_1 0x00000124UL508#define CKA_PRIME_2 0x00000125UL509#define CKA_EXPONENT_1 0x00000126UL510#define CKA_EXPONENT_2 0x00000127UL511#define CKA_COEFFICIENT 0x00000128UL512#define CKA_PUBLIC_KEY_INFO 0x00000129UL513#define CKA_PRIME 0x00000130UL514#define CKA_SUBPRIME 0x00000131UL515#define CKA_BASE 0x00000132UL516517#define CKA_PRIME_BITS 0x00000133UL518#define CKA_SUBPRIME_BITS 0x00000134UL519#define CKA_SUB_PRIME_BITS CKA_SUBPRIME_BITS520521#define CKA_VALUE_BITS 0x00000160UL522#define CKA_VALUE_LEN 0x00000161UL523#define CKA_EXTRACTABLE 0x00000162UL524#define CKA_LOCAL 0x00000163UL525#define CKA_NEVER_EXTRACTABLE 0x00000164UL526#define CKA_ALWAYS_SENSITIVE 0x00000165UL527#define CKA_KEY_GEN_MECHANISM 0x00000166UL528529#define CKA_MODIFIABLE 0x00000170UL530#define CKA_COPYABLE 0x00000171UL531532#define CKA_DESTROYABLE 0x00000172UL533534#define CKA_ECDSA_PARAMS 0x00000180UL /* Deprecated */535#define CKA_EC_PARAMS 0x00000180UL536537#define CKA_EC_POINT 0x00000181UL538539#define CKA_SECONDARY_AUTH 0x00000200UL /* Deprecated */540#define CKA_AUTH_PIN_FLAGS 0x00000201UL /* Deprecated */541542#define CKA_ALWAYS_AUTHENTICATE 0x00000202UL543544#define CKA_WRAP_WITH_TRUSTED 0x00000210UL545#define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE|0x00000211UL)546#define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE|0x00000212UL)547#define CKA_DERIVE_TEMPLATE (CKF_ARRAY_ATTRIBUTE|0x00000213UL)548549#define CKA_OTP_FORMAT 0x00000220UL550#define CKA_OTP_LENGTH 0x00000221UL551#define CKA_OTP_TIME_INTERVAL 0x00000222UL552#define CKA_OTP_USER_FRIENDLY_MODE 0x00000223UL553#define CKA_OTP_CHALLENGE_REQUIREMENT 0x00000224UL554#define CKA_OTP_TIME_REQUIREMENT 0x00000225UL555#define CKA_OTP_COUNTER_REQUIREMENT 0x00000226UL556#define CKA_OTP_PIN_REQUIREMENT 0x00000227UL557#define CKA_OTP_COUNTER 0x0000022EUL558#define CKA_OTP_TIME 0x0000022FUL559#define CKA_OTP_USER_IDENTIFIER 0x0000022AUL560#define CKA_OTP_SERVICE_IDENTIFIER 0x0000022BUL561#define CKA_OTP_SERVICE_LOGO 0x0000022CUL562#define CKA_OTP_SERVICE_LOGO_TYPE 0x0000022DUL563564#define CKA_GOSTR3410_PARAMS 0x00000250UL565#define CKA_GOSTR3411_PARAMS 0x00000251UL566#define CKA_GOST28147_PARAMS 0x00000252UL567568#define CKA_HW_FEATURE_TYPE 0x00000300UL569#define CKA_RESET_ON_INIT 0x00000301UL570#define CKA_HAS_RESET 0x00000302UL571572#define CKA_PIXEL_X 0x00000400UL573#define CKA_PIXEL_Y 0x00000401UL574#define CKA_RESOLUTION 0x00000402UL575#define CKA_CHAR_ROWS 0x00000403UL576#define CKA_CHAR_COLUMNS 0x00000404UL577#define CKA_COLOR 0x00000405UL578#define CKA_BITS_PER_PIXEL 0x00000406UL579#define CKA_CHAR_SETS 0x00000480UL580#define CKA_ENCODING_METHODS 0x00000481UL581#define CKA_MIME_TYPES 0x00000482UL582#define CKA_MECHANISM_TYPE 0x00000500UL583#define CKA_REQUIRED_CMS_ATTRIBUTES 0x00000501UL584#define CKA_DEFAULT_CMS_ATTRIBUTES 0x00000502UL585#define CKA_SUPPORTED_CMS_ATTRIBUTES 0x00000503UL586#define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE|0x00000600UL)587#define CKA_PROFILE_ID 0x00000601UL588#define CKA_X2RATCHET_BAG 0x00000602UL589#define CKA_X2RATCHET_BAGSIZE 0x00000603UL590#define CKA_X2RATCHET_BOBS1STMSG 0x00000604UL591#define CKA_X2RATCHET_CKR 0x00000605UL592#define CKA_X2RATCHET_CKS 0x00000606UL593#define CKA_X2RATCHET_DHP 0x00000607UL594#define CKA_X2RATCHET_DHR 0x00000608UL595#define CKA_X2RATCHET_DHS 0x00000609UL596#define CKA_X2RATCHET_HKR 0x0000060aUL597#define CKA_X2RATCHET_HKS 0x0000060bUL598#define CKA_X2RATCHET_ISALICE 0x0000060cUL599#define CKA_X2RATCHET_NHKR 0x0000060dUL600#define CKA_X2RATCHET_NHKS 0x0000060eUL601#define CKA_X2RATCHET_NR 0x0000060fUL602#define CKA_X2RATCHET_NS 0x00000610UL603#define CKA_X2RATCHET_PNS 0x00000611UL604#define CKA_X2RATCHET_RK 0x00000612UL605606#define CKA_VENDOR_DEFINED 0x80000000UL607608/* CK_ATTRIBUTE is a structure that includes the type, length609* and value of an attribute610*/611typedef struct CK_ATTRIBUTE {612CK_ATTRIBUTE_TYPE type;613CK_VOID_PTR pValue;614CK_ULONG ulValueLen; /* in bytes */615} CK_ATTRIBUTE;616617typedef CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR;618619/* CK_DATE is a structure that defines a date */620typedef struct CK_DATE{621CK_CHAR year[4]; /* the year ("1900" - "9999") */622CK_CHAR month[2]; /* the month ("01" - "12") */623CK_CHAR day[2]; /* the day ("01" - "31") */624} CK_DATE;625626627/* CK_MECHANISM_TYPE is a value that identifies a mechanism628* type629*/630typedef CK_ULONG CK_MECHANISM_TYPE;631632/* the following mechanism types are defined: */633#define CKM_RSA_PKCS_KEY_PAIR_GEN 0x00000000UL634#define CKM_RSA_PKCS 0x00000001UL635#define CKM_RSA_9796 0x00000002UL636#define CKM_RSA_X_509 0x00000003UL637638#define CKM_MD2_RSA_PKCS 0x00000004UL639#define CKM_MD5_RSA_PKCS 0x00000005UL640#define CKM_SHA1_RSA_PKCS 0x00000006UL641642#define CKM_RIPEMD128_RSA_PKCS 0x00000007UL643#define CKM_RIPEMD160_RSA_PKCS 0x00000008UL644#define CKM_RSA_PKCS_OAEP 0x00000009UL645646#define CKM_RSA_X9_31_KEY_PAIR_GEN 0x0000000AUL647#define CKM_RSA_X9_31 0x0000000BUL648#define CKM_SHA1_RSA_X9_31 0x0000000CUL649#define CKM_RSA_PKCS_PSS 0x0000000DUL650#define CKM_SHA1_RSA_PKCS_PSS 0x0000000EUL651652#define CKM_DSA_KEY_PAIR_GEN 0x00000010UL653#define CKM_DSA 0x00000011UL654#define CKM_DSA_SHA1 0x00000012UL655#define CKM_DSA_SHA224 0x00000013UL656#define CKM_DSA_SHA256 0x00000014UL657#define CKM_DSA_SHA384 0x00000015UL658#define CKM_DSA_SHA512 0x00000016UL659#define CKM_DSA_SHA3_224 0x00000018UL660#define CKM_DSA_SHA3_256 0x00000019UL661#define CKM_DSA_SHA3_384 0x0000001AUL662#define CKM_DSA_SHA3_512 0x0000001BUL663664#define CKM_DH_PKCS_KEY_PAIR_GEN 0x00000020UL665#define CKM_DH_PKCS_DERIVE 0x00000021UL666667#define CKM_X9_42_DH_KEY_PAIR_GEN 0x00000030UL668#define CKM_X9_42_DH_DERIVE 0x00000031UL669#define CKM_X9_42_DH_HYBRID_DERIVE 0x00000032UL670#define CKM_X9_42_MQV_DERIVE 0x00000033UL671672#define CKM_SHA256_RSA_PKCS 0x00000040UL673#define CKM_SHA384_RSA_PKCS 0x00000041UL674#define CKM_SHA512_RSA_PKCS 0x00000042UL675#define CKM_SHA256_RSA_PKCS_PSS 0x00000043UL676#define CKM_SHA384_RSA_PKCS_PSS 0x00000044UL677#define CKM_SHA512_RSA_PKCS_PSS 0x00000045UL678679#define CKM_SHA224_RSA_PKCS 0x00000046UL680#define CKM_SHA224_RSA_PKCS_PSS 0x00000047UL681682#define CKM_SHA512_224 0x00000048UL683#define CKM_SHA512_224_HMAC 0x00000049UL684#define CKM_SHA512_224_HMAC_GENERAL 0x0000004AUL685#define CKM_SHA512_224_KEY_DERIVATION 0x0000004BUL686#define CKM_SHA512_256 0x0000004CUL687#define CKM_SHA512_256_HMAC 0x0000004DUL688#define CKM_SHA512_256_HMAC_GENERAL 0x0000004EUL689#define CKM_SHA512_256_KEY_DERIVATION 0x0000004FUL690691#define CKM_SHA512_T 0x00000050UL692#define CKM_SHA512_T_HMAC 0x00000051UL693#define CKM_SHA512_T_HMAC_GENERAL 0x00000052UL694#define CKM_SHA512_T_KEY_DERIVATION 0x00000053UL695696#define CKM_SHA3_256_RSA_PKCS 0x00000060UL697#define CKM_SHA3_384_RSA_PKCS 0x00000061UL698#define CKM_SHA3_512_RSA_PKCS 0x00000062UL699#define CKM_SHA3_256_RSA_PKCS_PSS 0x00000063UL700#define CKM_SHA3_384_RSA_PKCS_PSS 0x00000064UL701#define CKM_SHA3_512_RSA_PKCS_PSS 0x00000065UL702#define CKM_SHA3_224_RSA_PKCS 0x00000066UL703#define CKM_SHA3_224_RSA_PKCS_PSS 0x00000067UL704705#define CKM_RC2_KEY_GEN 0x00000100UL706#define CKM_RC2_ECB 0x00000101UL707#define CKM_RC2_CBC 0x00000102UL708#define CKM_RC2_MAC 0x00000103UL709710#define CKM_RC2_MAC_GENERAL 0x00000104UL711#define CKM_RC2_CBC_PAD 0x00000105UL712713#define CKM_RC4_KEY_GEN 0x00000110UL714#define CKM_RC4 0x00000111UL715#define CKM_DES_KEY_GEN 0x00000120UL716#define CKM_DES_ECB 0x00000121UL717#define CKM_DES_CBC 0x00000122UL718#define CKM_DES_MAC 0x00000123UL719720#define CKM_DES_MAC_GENERAL 0x00000124UL721#define CKM_DES_CBC_PAD 0x00000125UL722723#define CKM_DES2_KEY_GEN 0x00000130UL724#define CKM_DES3_KEY_GEN 0x00000131UL725#define CKM_DES3_ECB 0x00000132UL726#define CKM_DES3_CBC 0x00000133UL727#define CKM_DES3_MAC 0x00000134UL728729#define CKM_DES3_MAC_GENERAL 0x00000135UL730#define CKM_DES3_CBC_PAD 0x00000136UL731#define CKM_DES3_CMAC_GENERAL 0x00000137UL732#define CKM_DES3_CMAC 0x00000138UL733#define CKM_CDMF_KEY_GEN 0x00000140UL734#define CKM_CDMF_ECB 0x00000141UL735#define CKM_CDMF_CBC 0x00000142UL736#define CKM_CDMF_MAC 0x00000143UL737#define CKM_CDMF_MAC_GENERAL 0x00000144UL738#define CKM_CDMF_CBC_PAD 0x00000145UL739740#define CKM_DES_OFB64 0x00000150UL741#define CKM_DES_OFB8 0x00000151UL742#define CKM_DES_CFB64 0x00000152UL743#define CKM_DES_CFB8 0x00000153UL744745#define CKM_MD2 0x00000200UL746747#define CKM_MD2_HMAC 0x00000201UL748#define CKM_MD2_HMAC_GENERAL 0x00000202UL749750#define CKM_MD5 0x00000210UL751752#define CKM_MD5_HMAC 0x00000211UL753#define CKM_MD5_HMAC_GENERAL 0x00000212UL754755#define CKM_SHA_1 0x00000220UL756757#define CKM_SHA_1_HMAC 0x00000221UL758#define CKM_SHA_1_HMAC_GENERAL 0x00000222UL759760#define CKM_RIPEMD128 0x00000230UL761#define CKM_RIPEMD128_HMAC 0x00000231UL762#define CKM_RIPEMD128_HMAC_GENERAL 0x00000232UL763#define CKM_RIPEMD160 0x00000240UL764#define CKM_RIPEMD160_HMAC 0x00000241UL765#define CKM_RIPEMD160_HMAC_GENERAL 0x00000242UL766767#define CKM_SHA256 0x00000250UL768#define CKM_SHA256_HMAC 0x00000251UL769#define CKM_SHA256_HMAC_GENERAL 0x00000252UL770#define CKM_SHA224 0x00000255UL771#define CKM_SHA224_HMAC 0x00000256UL772#define CKM_SHA224_HMAC_GENERAL 0x00000257UL773#define CKM_SHA384 0x00000260UL774#define CKM_SHA384_HMAC 0x00000261UL775#define CKM_SHA384_HMAC_GENERAL 0x00000262UL776#define CKM_SHA512 0x00000270UL777#define CKM_SHA512_HMAC 0x00000271UL778#define CKM_SHA512_HMAC_GENERAL 0x00000272UL779#define CKM_SECURID_KEY_GEN 0x00000280UL780#define CKM_SECURID 0x00000282UL781#define CKM_HOTP_KEY_GEN 0x00000290UL782#define CKM_HOTP 0x00000291UL783#define CKM_ACTI 0x000002A0UL784#define CKM_ACTI_KEY_GEN 0x000002A1UL785786#define CKM_SHA3_256 0x000002B0UL787#define CKM_SHA3_256_HMAC 0x000002B1UL788#define CKM_SHA3_256_HMAC_GENERAL 0x000002B2UL789#define CKM_SHA3_256_KEY_GEN 0x000002B3UL790#define CKM_SHA3_224 0x000002B5UL791#define CKM_SHA3_224_HMAC 0x000002B6UL792#define CKM_SHA3_224_HMAC_GENERAL 0x000002B7UL793#define CKM_SHA3_224_KEY_GEN 0x000002B8UL794#define CKM_SHA3_384 0x000002C0UL795#define CKM_SHA3_384_HMAC 0x000002C1UL796#define CKM_SHA3_384_HMAC_GENERAL 0x000002C2UL797#define CKM_SHA3_384_KEY_GEN 0x000002C3UL798#define CKM_SHA3_512 0x000002D0UL799#define CKM_SHA3_512_HMAC 0x000002D1UL800#define CKM_SHA3_512_HMAC_GENERAL 0x000002D2UL801#define CKM_SHA3_512_KEY_GEN 0x000002D3UL802803804#define CKM_CAST_KEY_GEN 0x00000300UL805#define CKM_CAST_ECB 0x00000301UL806#define CKM_CAST_CBC 0x00000302UL807#define CKM_CAST_MAC 0x00000303UL808#define CKM_CAST_MAC_GENERAL 0x00000304UL809#define CKM_CAST_CBC_PAD 0x00000305UL810#define CKM_CAST3_KEY_GEN 0x00000310UL811#define CKM_CAST3_ECB 0x00000311UL812#define CKM_CAST3_CBC 0x00000312UL813#define CKM_CAST3_MAC 0x00000313UL814#define CKM_CAST3_MAC_GENERAL 0x00000314UL815#define CKM_CAST3_CBC_PAD 0x00000315UL816/* Note that CAST128 and CAST5 are the same algorithm */817#define CKM_CAST5_KEY_GEN 0x00000320UL818#define CKM_CAST128_KEY_GEN 0x00000320UL819#define CKM_CAST5_ECB 0x00000321UL820#define CKM_CAST128_ECB 0x00000321UL821#define CKM_CAST5_CBC 0x00000322UL /* Deprecated */822#define CKM_CAST128_CBC 0x00000322UL823#define CKM_CAST5_MAC 0x00000323UL /* Deprecated */824#define CKM_CAST128_MAC 0x00000323UL825#define CKM_CAST5_MAC_GENERAL 0x00000324UL /* Deprecated */826#define CKM_CAST128_MAC_GENERAL 0x00000324UL827#define CKM_CAST5_CBC_PAD 0x00000325UL /* Deprecated */828#define CKM_CAST128_CBC_PAD 0x00000325UL829#define CKM_RC5_KEY_GEN 0x00000330UL830#define CKM_RC5_ECB 0x00000331UL831#define CKM_RC5_CBC 0x00000332UL832#define CKM_RC5_MAC 0x00000333UL833#define CKM_RC5_MAC_GENERAL 0x00000334UL834#define CKM_RC5_CBC_PAD 0x00000335UL835#define CKM_IDEA_KEY_GEN 0x00000340UL836#define CKM_IDEA_ECB 0x00000341UL837#define CKM_IDEA_CBC 0x00000342UL838#define CKM_IDEA_MAC 0x00000343UL839#define CKM_IDEA_MAC_GENERAL 0x00000344UL840#define CKM_IDEA_CBC_PAD 0x00000345UL841#define CKM_GENERIC_SECRET_KEY_GEN 0x00000350UL842#define CKM_CONCATENATE_BASE_AND_KEY 0x00000360UL843#define CKM_CONCATENATE_BASE_AND_DATA 0x00000362UL844#define CKM_CONCATENATE_DATA_AND_BASE 0x00000363UL845#define CKM_XOR_BASE_AND_DATA 0x00000364UL846#define CKM_EXTRACT_KEY_FROM_KEY 0x00000365UL847#define CKM_SSL3_PRE_MASTER_KEY_GEN 0x00000370UL848#define CKM_SSL3_MASTER_KEY_DERIVE 0x00000371UL849#define CKM_SSL3_KEY_AND_MAC_DERIVE 0x00000372UL850851#define CKM_SSL3_MASTER_KEY_DERIVE_DH 0x00000373UL852#define CKM_TLS_PRE_MASTER_KEY_GEN 0x00000374UL853#define CKM_TLS_MASTER_KEY_DERIVE 0x00000375UL854#define CKM_TLS_KEY_AND_MAC_DERIVE 0x00000376UL855#define CKM_TLS_MASTER_KEY_DERIVE_DH 0x00000377UL856857#define CKM_TLS_PRF 0x00000378UL858859#define CKM_SSL3_MD5_MAC 0x00000380UL860#define CKM_SSL3_SHA1_MAC 0x00000381UL861#define CKM_MD5_KEY_DERIVATION 0x00000390UL862#define CKM_MD2_KEY_DERIVATION 0x00000391UL863#define CKM_SHA1_KEY_DERIVATION 0x00000392UL864865#define CKM_SHA256_KEY_DERIVATION 0x00000393UL866#define CKM_SHA384_KEY_DERIVATION 0x00000394UL867#define CKM_SHA512_KEY_DERIVATION 0x00000395UL868#define CKM_SHA224_KEY_DERIVATION 0x00000396UL869#define CKM_SHA3_256_KEY_DERIVATION 0x00000397UL870#define CKM_SHA3_224_KEY_DERIVATION 0x00000398UL871#define CKM_SHA3_384_KEY_DERIVATION 0x00000399UL872#define CKM_SHA3_512_KEY_DERIVATION 0x0000039AUL873#define CKM_SHAKE_128_KEY_DERIVATION 0x0000039BUL874#define CKM_SHAKE_256_KEY_DERIVATION 0x0000039CUL875#define CKM_SHA3_256_KEY_DERIVE CKM_SHA3_256_KEY_DERIVATION876#define CKM_SHA3_224_KEY_DERIVE CKM_SHA3_224_KEY_DERIVATION877#define CKM_SHA3_384_KEY_DERIVE CKM_SHA3_384_KEY_DERIVATION878#define CKM_SHA3_512_KEY_DERIVE CKM_SHA3_512_KEY_DERIVATION879#define CKM_SHAKE_128_KEY_DERIVE CKM_SHAKE_128_KEY_DERIVATION880#define CKM_SHAKE_256_KEY_DERIVE CKM_SHAKE_256_KEY_DERIVATION881882#define CKM_PBE_MD2_DES_CBC 0x000003A0UL883#define CKM_PBE_MD5_DES_CBC 0x000003A1UL884#define CKM_PBE_MD5_CAST_CBC 0x000003A2UL885#define CKM_PBE_MD5_CAST3_CBC 0x000003A3UL886#define CKM_PBE_MD5_CAST5_CBC 0x000003A4UL /* Deprecated */887#define CKM_PBE_MD5_CAST128_CBC 0x000003A4UL888#define CKM_PBE_SHA1_CAST5_CBC 0x000003A5UL /* Deprecated */889#define CKM_PBE_SHA1_CAST128_CBC 0x000003A5UL890#define CKM_PBE_SHA1_RC4_128 0x000003A6UL891#define CKM_PBE_SHA1_RC4_40 0x000003A7UL892#define CKM_PBE_SHA1_DES3_EDE_CBC 0x000003A8UL893#define CKM_PBE_SHA1_DES2_EDE_CBC 0x000003A9UL894#define CKM_PBE_SHA1_RC2_128_CBC 0x000003AAUL895#define CKM_PBE_SHA1_RC2_40_CBC 0x000003ABUL896897#define CKM_PKCS5_PBKD2 0x000003B0UL898899#define CKM_PBA_SHA1_WITH_SHA1_HMAC 0x000003C0UL900901#define CKM_WTLS_PRE_MASTER_KEY_GEN 0x000003D0UL902#define CKM_WTLS_MASTER_KEY_DERIVE 0x000003D1UL903#define CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC 0x000003D2UL904#define CKM_WTLS_PRF 0x000003D3UL905#define CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE 0x000003D4UL906#define CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE 0x000003D5UL907908#define CKM_TLS12_MAC 0x000003D8UL909#define CKM_TLS12_KDF 0x000003D9UL910#define CKM_TLS12_MASTER_KEY_DERIVE 0x000003E0UL911#define CKM_TLS12_KEY_AND_MAC_DERIVE 0x000003E1UL912#define CKM_TLS12_MASTER_KEY_DERIVE_DH 0x000003E2UL913#define CKM_TLS12_KEY_SAFE_DERIVE 0x000003E3UL914#define CKM_TLS_MAC 0x000003E4UL915#define CKM_TLS_KDF 0x000003E5UL916917#define CKM_KEY_WRAP_LYNKS 0x00000400UL918#define CKM_KEY_WRAP_SET_OAEP 0x00000401UL919920#define CKM_CMS_SIG 0x00000500UL921#define CKM_KIP_DERIVE 0x00000510UL922#define CKM_KIP_WRAP 0x00000511UL923#define CKM_KIP_MAC 0x00000512UL924925#define CKM_CAMELLIA_KEY_GEN 0x00000550UL926#define CKM_CAMELLIA_ECB 0x00000551UL927#define CKM_CAMELLIA_CBC 0x00000552UL928#define CKM_CAMELLIA_MAC 0x00000553UL929#define CKM_CAMELLIA_MAC_GENERAL 0x00000554UL930#define CKM_CAMELLIA_CBC_PAD 0x00000555UL931#define CKM_CAMELLIA_ECB_ENCRYPT_DATA 0x00000556UL932#define CKM_CAMELLIA_CBC_ENCRYPT_DATA 0x00000557UL933#define CKM_CAMELLIA_CTR 0x00000558UL934935#define CKM_ARIA_KEY_GEN 0x00000560UL936#define CKM_ARIA_ECB 0x00000561UL937#define CKM_ARIA_CBC 0x00000562UL938#define CKM_ARIA_MAC 0x00000563UL939#define CKM_ARIA_MAC_GENERAL 0x00000564UL940#define CKM_ARIA_CBC_PAD 0x00000565UL941#define CKM_ARIA_ECB_ENCRYPT_DATA 0x00000566UL942#define CKM_ARIA_CBC_ENCRYPT_DATA 0x00000567UL943944#define CKM_SEED_KEY_GEN 0x00000650UL945#define CKM_SEED_ECB 0x00000651UL946#define CKM_SEED_CBC 0x00000652UL947#define CKM_SEED_MAC 0x00000653UL948#define CKM_SEED_MAC_GENERAL 0x00000654UL949#define CKM_SEED_CBC_PAD 0x00000655UL950#define CKM_SEED_ECB_ENCRYPT_DATA 0x00000656UL951#define CKM_SEED_CBC_ENCRYPT_DATA 0x00000657UL952953#define CKM_SKIPJACK_KEY_GEN 0x00001000UL954#define CKM_SKIPJACK_ECB64 0x00001001UL955#define CKM_SKIPJACK_CBC64 0x00001002UL956#define CKM_SKIPJACK_OFB64 0x00001003UL957#define CKM_SKIPJACK_CFB64 0x00001004UL958#define CKM_SKIPJACK_CFB32 0x00001005UL959#define CKM_SKIPJACK_CFB16 0x00001006UL960#define CKM_SKIPJACK_CFB8 0x00001007UL961#define CKM_SKIPJACK_WRAP 0x00001008UL962#define CKM_SKIPJACK_PRIVATE_WRAP 0x00001009UL963#define CKM_SKIPJACK_RELAYX 0x0000100aUL964#define CKM_KEA_KEY_PAIR_GEN 0x00001010UL965#define CKM_KEA_KEY_DERIVE 0x00001011UL966#define CKM_KEA_DERIVE 0x00001012UL967#define CKM_FORTEZZA_TIMESTAMP 0x00001020UL968#define CKM_BATON_KEY_GEN 0x00001030UL969#define CKM_BATON_ECB128 0x00001031UL970#define CKM_BATON_ECB96 0x00001032UL971#define CKM_BATON_CBC128 0x00001033UL972#define CKM_BATON_COUNTER 0x00001034UL973#define CKM_BATON_SHUFFLE 0x00001035UL974#define CKM_BATON_WRAP 0x00001036UL975976#define CKM_ECDSA_KEY_PAIR_GEN 0x00001040UL /* Deprecated */977#define CKM_EC_KEY_PAIR_GEN 0x00001040UL978979#define CKM_ECDSA 0x00001041UL980#define CKM_ECDSA_SHA1 0x00001042UL981#define CKM_ECDSA_SHA224 0x00001043UL982#define CKM_ECDSA_SHA256 0x00001044UL983#define CKM_ECDSA_SHA384 0x00001045UL984#define CKM_ECDSA_SHA512 0x00001046UL985#define CKM_EC_KEY_PAIR_GEN_W_EXTRA_BITS 0x0000140BUL986987#define CKM_ECDH1_DERIVE 0x00001050UL988#define CKM_ECDH1_COFACTOR_DERIVE 0x00001051UL989#define CKM_ECMQV_DERIVE 0x00001052UL990991#define CKM_ECDH_AES_KEY_WRAP 0x00001053UL992#define CKM_RSA_AES_KEY_WRAP 0x00001054UL993994#define CKM_JUNIPER_KEY_GEN 0x00001060UL995#define CKM_JUNIPER_ECB128 0x00001061UL996#define CKM_JUNIPER_CBC128 0x00001062UL997#define CKM_JUNIPER_COUNTER 0x00001063UL998#define CKM_JUNIPER_SHUFFLE 0x00001064UL999#define CKM_JUNIPER_WRAP 0x00001065UL1000#define CKM_FASTHASH 0x00001070UL10011002#define CKM_AES_XTS 0x00001071UL1003#define CKM_AES_XTS_KEY_GEN 0x00001072UL1004#define CKM_AES_KEY_GEN 0x00001080UL1005#define CKM_AES_ECB 0x00001081UL1006#define CKM_AES_CBC 0x00001082UL1007#define CKM_AES_MAC 0x00001083UL1008#define CKM_AES_MAC_GENERAL 0x00001084UL1009#define CKM_AES_CBC_PAD 0x00001085UL1010#define CKM_AES_CTR 0x00001086UL1011#define CKM_AES_GCM 0x00001087UL1012#define CKM_AES_CCM 0x00001088UL1013#define CKM_AES_CTS 0x00001089UL1014#define CKM_AES_CMAC 0x0000108AUL1015#define CKM_AES_CMAC_GENERAL 0x0000108BUL10161017#define CKM_AES_XCBC_MAC 0x0000108CUL1018#define CKM_AES_XCBC_MAC_96 0x0000108DUL1019#define CKM_AES_GMAC 0x0000108EUL10201021#define CKM_BLOWFISH_KEY_GEN 0x00001090UL1022#define CKM_BLOWFISH_CBC 0x00001091UL1023#define CKM_TWOFISH_KEY_GEN 0x00001092UL1024#define CKM_TWOFISH_CBC 0x00001093UL1025#define CKM_BLOWFISH_CBC_PAD 0x00001094UL1026#define CKM_TWOFISH_CBC_PAD 0x00001095UL10271028#define CKM_DES_ECB_ENCRYPT_DATA 0x00001100UL1029#define CKM_DES_CBC_ENCRYPT_DATA 0x00001101UL1030#define CKM_DES3_ECB_ENCRYPT_DATA 0x00001102UL1031#define CKM_DES3_CBC_ENCRYPT_DATA 0x00001103UL1032#define CKM_AES_ECB_ENCRYPT_DATA 0x00001104UL1033#define CKM_AES_CBC_ENCRYPT_DATA 0x00001105UL10341035#define CKM_GOSTR3410_KEY_PAIR_GEN 0x00001200UL1036#define CKM_GOSTR3410 0x00001201UL1037#define CKM_GOSTR3410_WITH_GOSTR3411 0x00001202UL1038#define CKM_GOSTR3410_KEY_WRAP 0x00001203UL1039#define CKM_GOSTR3410_DERIVE 0x00001204UL1040#define CKM_GOSTR3411 0x00001210UL1041#define CKM_GOSTR3411_HMAC 0x00001211UL1042#define CKM_GOST28147_KEY_GEN 0x00001220UL1043#define CKM_GOST28147_ECB 0x00001221UL1044#define CKM_GOST28147 0x00001222UL1045#define CKM_GOST28147_MAC 0x00001223UL1046#define CKM_GOST28147_KEY_WRAP 0x00001224UL1047#define CKM_CHACHA20_KEY_GEN 0x00001225UL1048#define CKM_CHACHA20 0x00001226UL1049#define CKM_POLY1305_KEY_GEN 0x00001227UL1050#define CKM_POLY1305 0x00001228UL1051#define CKM_DSA_PARAMETER_GEN 0x00002000UL1052#define CKM_DH_PKCS_PARAMETER_GEN 0x00002001UL1053#define CKM_X9_42_DH_PARAMETER_GEN 0x00002002UL1054#define CKM_DSA_PROBABILISTIC_PARAMETER_GEN 0x00002003UL1055#define CKM_DSA_PROBABLISTIC_PARAMETER_GEN CKM_DSA_PROBABILISTIC_PARAMETER_GEN1056#define CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN 0x00002004UL1057#define CKM_DSA_FIPS_G_GEN 0x00002005UL10581059#define CKM_AES_OFB 0x00002104UL1060#define CKM_AES_CFB64 0x00002105UL1061#define CKM_AES_CFB8 0x00002106UL1062#define CKM_AES_CFB128 0x00002107UL10631064#define CKM_AES_CFB1 0x00002108UL1065#define CKM_AES_KEY_WRAP 0x00002109UL /* WAS: 0x00001090 */1066#define CKM_AES_KEY_WRAP_PAD 0x0000210AUL /* WAS: 0x00001091 */1067#define CKM_AES_KEY_WRAP_KWP 0x0000210BUL10681069#define CKM_RSA_PKCS_TPM_1_1 0x00004001UL1070#define CKM_RSA_PKCS_OAEP_TPM_1_1 0x00004002UL10711072#define CKM_SHA_1_KEY_GEN 0x00004003UL1073#define CKM_SHA224_KEY_GEN 0x00004004UL1074#define CKM_SHA256_KEY_GEN 0x00004005UL1075#define CKM_SHA384_KEY_GEN 0x00004006UL1076#define CKM_SHA512_KEY_GEN 0x00004007UL1077#define CKM_SHA512_224_KEY_GEN 0x00004008UL1078#define CKM_SHA512_256_KEY_GEN 0x00004009UL1079#define CKM_SHA512_T_KEY_GEN 0x0000400aUL1080#define CKM_NULL 0x0000400bUL1081#define CKM_BLAKE2B_160 0x0000400cUL1082#define CKM_BLAKE2B_160_HMAC 0x0000400dUL1083#define CKM_BLAKE2B_160_HMAC_GENERAL 0x0000400eUL1084#define CKM_BLAKE2B_160_KEY_DERIVE 0x0000400fUL1085#define CKM_BLAKE2B_160_KEY_GEN 0x00004010UL1086#define CKM_BLAKE2B_256 0x00004011UL1087#define CKM_BLAKE2B_256_HMAC 0x00004012UL1088#define CKM_BLAKE2B_256_HMAC_GENERAL 0x00004013UL1089#define CKM_BLAKE2B_256_KEY_DERIVE 0x00004014UL1090#define CKM_BLAKE2B_256_KEY_GEN 0x00004015UL1091#define CKM_BLAKE2B_384 0x00004016UL1092#define CKM_BLAKE2B_384_HMAC 0x00004017UL1093#define CKM_BLAKE2B_384_HMAC_GENERAL 0x00004018UL1094#define CKM_BLAKE2B_384_KEY_DERIVE 0x00004019UL1095#define CKM_BLAKE2B_384_KEY_GEN 0x0000401aUL1096#define CKM_BLAKE2B_512 0x0000401bUL1097#define CKM_BLAKE2B_512_HMAC 0x0000401cUL1098#define CKM_BLAKE2B_512_HMAC_GENERAL 0x0000401dUL1099#define CKM_BLAKE2B_512_KEY_DERIVE 0x0000401eUL1100#define CKM_BLAKE2B_512_KEY_GEN 0x0000401fUL1101#define CKM_SALSA20 0x00004020UL1102#define CKM_CHACHA20_POLY1305 0x00004021UL1103#define CKM_SALSA20_POLY1305 0x00004022UL1104#define CKM_X3DH_INITIALIZE 0x00004023UL1105#define CKM_X3DH_RESPOND 0x00004024UL1106#define CKM_X2RATCHET_INITIALIZE 0x00004025UL1107#define CKM_X2RATCHET_RESPOND 0x00004026UL1108#define CKM_X2RATCHET_ENCRYPT 0x00004027UL1109#define CKM_X2RATCHET_DECRYPT 0x00004028UL1110#define CKM_XEDDSA 0x00004029UL1111#define CKM_HKDF_DERIVE 0x0000402aUL1112#define CKM_HKDF_DATA 0x0000402bUL1113#define CKM_HKDF_KEY_GEN 0x0000402cUL1114#define CKM_SALSA20_KEY_GEN 0x0000402dUL11151116#define CKM_ECDSA_SHA3_224 0x00001047UL1117#define CKM_ECDSA_SHA3_256 0x00001048UL1118#define CKM_ECDSA_SHA3_384 0x00001049UL1119#define CKM_ECDSA_SHA3_512 0x0000104aUL1120#define CKM_EC_EDWARDS_KEY_PAIR_GEN 0x00001055UL1121#define CKM_EC_MONTGOMERY_KEY_PAIR_GEN 0x00001056UL1122#define CKM_EDDSA 0x00001057UL1123#define CKM_SP800_108_COUNTER_KDF 0x000003acUL1124#define CKM_SP800_108_FEEDBACK_KDF 0x000003adUL1125#define CKM_SP800_108_DOUBLE_PIPELINE_KDF 0x000003aeUL11261127#define CKM_VENDOR_DEFINED 0x80000000UL11281129typedef CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR;113011311132/* CK_MECHANISM is a structure that specifies a particular1133* mechanism1134*/1135typedef struct CK_MECHANISM {1136CK_MECHANISM_TYPE mechanism;1137CK_VOID_PTR pParameter;1138CK_ULONG ulParameterLen; /* in bytes */1139} CK_MECHANISM;11401141typedef CK_MECHANISM CK_PTR CK_MECHANISM_PTR;114211431144/* CK_MECHANISM_INFO provides information about a particular1145* mechanism1146*/1147typedef struct CK_MECHANISM_INFO {1148CK_ULONG ulMinKeySize;1149CK_ULONG ulMaxKeySize;1150CK_FLAGS flags;1151} CK_MECHANISM_INFO;11521153/* The flags are defined as follows:1154* Bit Flag Mask Meaning */1155#define CKF_HW 0x00000001UL /* performed by HW */11561157/* Specify whether or not a mechanism can be used for a particular task */1158#define CKF_MESSAGE_ENCRYPT 0x00000002UL1159#define CKF_MESSAGE_DECRYPT 0x00000004UL1160#define CKF_MESSAGE_SIGN 0x00000008UL1161#define CKF_MESSAGE_VERIFY 0x00000010UL1162#define CKF_MULTI_MESSAGE 0x00000020UL1163#define CKF_MULTI_MESSGE CKF_MULTI_MESSAGE1164#define CKF_FIND_OBJECTS 0x00000040UL11651166#define CKF_ENCRYPT 0x00000100UL1167#define CKF_DECRYPT 0x00000200UL1168#define CKF_DIGEST 0x00000400UL1169#define CKF_SIGN 0x00000800UL1170#define CKF_SIGN_RECOVER 0x00001000UL1171#define CKF_VERIFY 0x00002000UL1172#define CKF_VERIFY_RECOVER 0x00004000UL1173#define CKF_GENERATE 0x00008000UL1174#define CKF_GENERATE_KEY_PAIR 0x00010000UL1175#define CKF_WRAP 0x00020000UL1176#define CKF_UNWRAP 0x00040000UL1177#define CKF_DERIVE 0x00080000UL11781179/* Describe a token's EC capabilities not available in mechanism1180* information.1181*/1182#define CKF_EC_F_P 0x00100000UL1183#define CKF_EC_F_2M 0x00200000UL1184#define CKF_EC_ECPARAMETERS 0x00400000UL1185#define CKF_EC_OID 0x00800000UL1186#define CKF_EC_NAMEDCURVE CKF_EC_OID /* deprecated since PKCS#11 3.00 */1187#define CKF_EC_UNCOMPRESS 0x01000000UL1188#define CKF_EC_COMPRESS 0x02000000UL1189#define CKF_EC_CURVENAME 0x04000000UL11901191#define CKF_EXTENSION 0x80000000UL11921193typedef CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR;11941195/* CK_RV is a value that identifies the return value of a1196* Cryptoki function1197*/1198typedef CK_ULONG CK_RV;11991200#define CKR_OK 0x00000000UL1201#define CKR_CANCEL 0x00000001UL1202#define CKR_HOST_MEMORY 0x00000002UL1203#define CKR_SLOT_ID_INVALID 0x00000003UL12041205#define CKR_GENERAL_ERROR 0x00000005UL1206#define CKR_FUNCTION_FAILED 0x00000006UL12071208#define CKR_ARGUMENTS_BAD 0x00000007UL1209#define CKR_NO_EVENT 0x00000008UL1210#define CKR_NEED_TO_CREATE_THREADS 0x00000009UL1211#define CKR_CANT_LOCK 0x0000000AUL12121213#define CKR_ATTRIBUTE_READ_ONLY 0x00000010UL1214#define CKR_ATTRIBUTE_SENSITIVE 0x00000011UL1215#define CKR_ATTRIBUTE_TYPE_INVALID 0x00000012UL1216#define CKR_ATTRIBUTE_VALUE_INVALID 0x00000013UL12171218#define CKR_ACTION_PROHIBITED 0x0000001BUL12191220#define CKR_DATA_INVALID 0x00000020UL1221#define CKR_DATA_LEN_RANGE 0x00000021UL1222#define CKR_DEVICE_ERROR 0x00000030UL1223#define CKR_DEVICE_MEMORY 0x00000031UL1224#define CKR_DEVICE_REMOVED 0x00000032UL1225#define CKR_ENCRYPTED_DATA_INVALID 0x00000040UL1226#define CKR_ENCRYPTED_DATA_LEN_RANGE 0x00000041UL1227#define CKR_AEAD_DECRYPT_FAILED 0x00000042UL1228#define CKR_FUNCTION_CANCELED 0x00000050UL1229#define CKR_FUNCTION_NOT_PARALLEL 0x00000051UL12301231#define CKR_FUNCTION_NOT_SUPPORTED 0x00000054UL12321233#define CKR_KEY_HANDLE_INVALID 0x00000060UL12341235#define CKR_KEY_SIZE_RANGE 0x00000062UL1236#define CKR_KEY_TYPE_INCONSISTENT 0x00000063UL12371238#define CKR_KEY_NOT_NEEDED 0x00000064UL1239#define CKR_KEY_CHANGED 0x00000065UL1240#define CKR_KEY_NEEDED 0x00000066UL1241#define CKR_KEY_INDIGESTIBLE 0x00000067UL1242#define CKR_KEY_FUNCTION_NOT_PERMITTED 0x00000068UL1243#define CKR_KEY_NOT_WRAPPABLE 0x00000069UL1244#define CKR_KEY_UNEXTRACTABLE 0x0000006AUL12451246#define CKR_MECHANISM_INVALID 0x00000070UL1247#define CKR_MECHANISM_PARAM_INVALID 0x00000071UL12481249#define CKR_OBJECT_HANDLE_INVALID 0x00000082UL1250#define CKR_OPERATION_ACTIVE 0x00000090UL1251#define CKR_OPERATION_NOT_INITIALIZED 0x00000091UL1252#define CKR_PIN_INCORRECT 0x000000A0UL1253#define CKR_PIN_INVALID 0x000000A1UL1254#define CKR_PIN_LEN_RANGE 0x000000A2UL12551256#define CKR_PIN_EXPIRED 0x000000A3UL1257#define CKR_PIN_LOCKED 0x000000A4UL12581259#define CKR_SESSION_CLOSED 0x000000B0UL1260#define CKR_SESSION_COUNT 0x000000B1UL1261#define CKR_SESSION_HANDLE_INVALID 0x000000B3UL1262#define CKR_SESSION_PARALLEL_NOT_SUPPORTED 0x000000B4UL1263#define CKR_SESSION_READ_ONLY 0x000000B5UL1264#define CKR_SESSION_EXISTS 0x000000B6UL12651266#define CKR_SESSION_READ_ONLY_EXISTS 0x000000B7UL1267#define CKR_SESSION_READ_WRITE_SO_EXISTS 0x000000B8UL12681269#define CKR_SIGNATURE_INVALID 0x000000C0UL1270#define CKR_SIGNATURE_LEN_RANGE 0x000000C1UL1271#define CKR_TEMPLATE_INCOMPLETE 0x000000D0UL1272#define CKR_TEMPLATE_INCONSISTENT 0x000000D1UL1273#define CKR_TOKEN_NOT_PRESENT 0x000000E0UL1274#define CKR_TOKEN_NOT_RECOGNIZED 0x000000E1UL1275#define CKR_TOKEN_WRITE_PROTECTED 0x000000E2UL1276#define CKR_UNWRAPPING_KEY_HANDLE_INVALID 0x000000F0UL1277#define CKR_UNWRAPPING_KEY_SIZE_RANGE 0x000000F1UL1278#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 0x000000F2UL1279#define CKR_USER_ALREADY_LOGGED_IN 0x00000100UL1280#define CKR_USER_NOT_LOGGED_IN 0x00000101UL1281#define CKR_USER_PIN_NOT_INITIALIZED 0x00000102UL1282#define CKR_USER_TYPE_INVALID 0x00000103UL12831284#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000104UL1285#define CKR_USER_TOO_MANY_TYPES 0x00000105UL12861287#define CKR_WRAPPED_KEY_INVALID 0x00000110UL1288#define CKR_WRAPPED_KEY_LEN_RANGE 0x00000112UL1289#define CKR_WRAPPING_KEY_HANDLE_INVALID 0x00000113UL1290#define CKR_WRAPPING_KEY_SIZE_RANGE 0x00000114UL1291#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 0x00000115UL1292#define CKR_RANDOM_SEED_NOT_SUPPORTED 0x00000120UL12931294#define CKR_RANDOM_NO_RNG 0x00000121UL12951296#define CKR_DOMAIN_PARAMS_INVALID 0x00000130UL12971298#define CKR_CURVE_NOT_SUPPORTED 0x00000140UL12991300#define CKR_BUFFER_TOO_SMALL 0x00000150UL1301#define CKR_SAVED_STATE_INVALID 0x00000160UL1302#define CKR_INFORMATION_SENSITIVE 0x00000170UL1303#define CKR_STATE_UNSAVEABLE 0x00000180UL13041305#define CKR_CRYPTOKI_NOT_INITIALIZED 0x00000190UL1306#define CKR_CRYPTOKI_ALREADY_INITIALIZED 0x00000191UL1307#define CKR_MUTEX_BAD 0x000001A0UL1308#define CKR_MUTEX_NOT_LOCKED 0x000001A1UL13091310#define CKR_NEW_PIN_MODE 0x000001B0UL1311#define CKR_NEXT_OTP 0x000001B1UL13121313#define CKR_EXCEEDED_MAX_ITERATIONS 0x000001B5UL1314#define CKR_FIPS_SELF_TEST_FAILED 0x000001B6UL1315#define CKR_LIBRARY_LOAD_FAILED 0x000001B7UL1316#define CKR_PIN_TOO_WEAK 0x000001B8UL1317#define CKR_PUBLIC_KEY_INVALID 0x000001B9UL13181319#define CKR_FUNCTION_REJECTED 0x00000200UL1320#define CKR_TOKEN_RESOURCE_EXCEEDED 0x00000201UL1321#define CKR_OPERATION_CANCEL_FAILED 0x00000202UL13221323#define CKR_VENDOR_DEFINED 0x80000000UL132413251326/* CK_NOTIFY is an application callback that processes events */1327typedef CK_CALLBACK_FUNCTION(CK_RV, CK_NOTIFY)(1328CK_SESSION_HANDLE hSession, /* the session's handle */1329CK_NOTIFICATION event,1330CK_VOID_PTR pApplication /* passed to C_OpenSession */1331);133213331334/* CK_FUNCTION_LIST is a structure holding a Cryptoki spec1335* version and pointers of appropriate types to all the1336* Cryptoki functions1337*/1338typedef struct CK_FUNCTION_LIST CK_FUNCTION_LIST;1339typedef struct CK_FUNCTION_LIST_3_0 CK_FUNCTION_LIST_3_0;13401341typedef CK_FUNCTION_LIST CK_PTR CK_FUNCTION_LIST_PTR;1342typedef CK_FUNCTION_LIST_3_0 CK_PTR CK_FUNCTION_LIST_3_0_PTR;13431344typedef CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR;1345typedef CK_FUNCTION_LIST_3_0_PTR CK_PTR CK_FUNCTION_LIST_3_0_PTR_PTR;13461347typedef struct CK_INTERFACE {1348CK_CHAR *pInterfaceName;1349CK_VOID_PTR pFunctionList;1350CK_FLAGS flags;1351} CK_INTERFACE;13521353typedef CK_INTERFACE CK_PTR CK_INTERFACE_PTR;1354typedef CK_INTERFACE_PTR CK_PTR CK_INTERFACE_PTR_PTR;13551356#define CKF_END_OF_MESSAGE 0x00000001UL135713581359/* CK_CREATEMUTEX is an application callback for creating a1360* mutex object1361*/1362typedef CK_CALLBACK_FUNCTION(CK_RV, CK_CREATEMUTEX)(1363CK_VOID_PTR_PTR ppMutex /* location to receive ptr to mutex */1364);136513661367/* CK_DESTROYMUTEX is an application callback for destroying a1368* mutex object1369*/1370typedef CK_CALLBACK_FUNCTION(CK_RV, CK_DESTROYMUTEX)(1371CK_VOID_PTR pMutex /* pointer to mutex */1372);137313741375/* CK_LOCKMUTEX is an application callback for locking a mutex */1376typedef CK_CALLBACK_FUNCTION(CK_RV, CK_LOCKMUTEX)(1377CK_VOID_PTR pMutex /* pointer to mutex */1378);137913801381/* CK_UNLOCKMUTEX is an application callback for unlocking a1382* mutex1383*/1384typedef CK_CALLBACK_FUNCTION(CK_RV, CK_UNLOCKMUTEX)(1385CK_VOID_PTR pMutex /* pointer to mutex */1386);13871388/* Get functionlist flags */1389#define CKF_INTERFACE_FORK_SAFE 0x00000001UL13901391/* CK_C_INITIALIZE_ARGS provides the optional arguments to1392* C_Initialize1393*/1394typedef struct CK_C_INITIALIZE_ARGS {1395CK_CREATEMUTEX CreateMutex;1396CK_DESTROYMUTEX DestroyMutex;1397CK_LOCKMUTEX LockMutex;1398CK_UNLOCKMUTEX UnlockMutex;1399CK_FLAGS flags;1400CK_VOID_PTR pReserved;1401} CK_C_INITIALIZE_ARGS;14021403/* flags: bit flags that provide capabilities of the slot1404* Bit Flag Mask Meaning1405*/1406#define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001UL1407#define CKF_OS_LOCKING_OK 0x00000002UL14081409typedef CK_C_INITIALIZE_ARGS CK_PTR CK_C_INITIALIZE_ARGS_PTR;1410141114121413/* additional flags for parameters to functions */14141415/* CKF_DONT_BLOCK is for the function C_WaitForSlotEvent */1416#define CKF_DONT_BLOCK 114171418/* CK_RSA_PKCS_MGF_TYPE is used to indicate the Message1419* Generation Function (MGF) applied to a message block when1420* formatting a message block for the PKCS #1 OAEP encryption1421* scheme.1422*/1423typedef CK_ULONG CK_RSA_PKCS_MGF_TYPE;14241425typedef CK_RSA_PKCS_MGF_TYPE CK_PTR CK_RSA_PKCS_MGF_TYPE_PTR;14261427/* The following MGFs are defined */1428#define CKG_MGF1_SHA1 0x00000001UL1429#define CKG_MGF1_SHA256 0x00000002UL1430#define CKG_MGF1_SHA384 0x00000003UL1431#define CKG_MGF1_SHA512 0x00000004UL1432#define CKG_MGF1_SHA224 0x00000005UL1433#define CKG_MGF1_SHA3_224 0x00000006UL1434#define CKG_MGF1_SHA3_256 0x00000007UL1435#define CKG_MGF1_SHA3_384 0x00000008UL1436#define CKG_MGF1_SHA3_512 0x00000009UL14371438/* CK_RSA_PKCS_OAEP_SOURCE_TYPE is used to indicate the source1439* of the encoding parameter when formatting a message block1440* for the PKCS #1 OAEP encryption scheme.1441*/1442typedef CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE;14431444typedef CK_RSA_PKCS_OAEP_SOURCE_TYPE CK_PTR CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR;14451446/* The following encoding parameter sources are defined */1447#define CKZ_DATA_SPECIFIED 0x00000001UL14481449/* CK_RSA_PKCS_OAEP_PARAMS provides the parameters to the1450* CKM_RSA_PKCS_OAEP mechanism.1451*/1452typedef struct CK_RSA_PKCS_OAEP_PARAMS {1453CK_MECHANISM_TYPE hashAlg;1454CK_RSA_PKCS_MGF_TYPE mgf;1455CK_RSA_PKCS_OAEP_SOURCE_TYPE source;1456CK_VOID_PTR pSourceData;1457CK_ULONG ulSourceDataLen;1458} CK_RSA_PKCS_OAEP_PARAMS;14591460typedef CK_RSA_PKCS_OAEP_PARAMS CK_PTR CK_RSA_PKCS_OAEP_PARAMS_PTR;14611462/* CK_RSA_PKCS_PSS_PARAMS provides the parameters to the1463* CKM_RSA_PKCS_PSS mechanism(s).1464*/1465typedef struct CK_RSA_PKCS_PSS_PARAMS {1466CK_MECHANISM_TYPE hashAlg;1467CK_RSA_PKCS_MGF_TYPE mgf;1468CK_ULONG sLen;1469} CK_RSA_PKCS_PSS_PARAMS;14701471typedef CK_RSA_PKCS_PSS_PARAMS CK_PTR CK_RSA_PKCS_PSS_PARAMS_PTR;14721473typedef CK_ULONG CK_EC_KDF_TYPE;1474typedef CK_EC_KDF_TYPE CK_PTR CK_EC_KDF_TYPE_PTR;14751476/* The following EC Key Derivation Functions are defined */1477#define CKD_NULL 0x00000001UL1478#define CKD_SHA1_KDF 0x00000002UL14791480/* The following X9.42 DH key derivation functions are defined */1481#define CKD_SHA1_KDF_ASN1 0x00000003UL1482#define CKD_SHA1_KDF_CONCATENATE 0x00000004UL1483#define CKD_SHA224_KDF 0x00000005UL1484#define CKD_SHA256_KDF 0x00000006UL1485#define CKD_SHA384_KDF 0x00000007UL1486#define CKD_SHA512_KDF 0x00000008UL1487#define CKD_CPDIVERSIFY_KDF 0x00000009UL1488#define CKD_SHA3_224_KDF 0x0000000AUL1489#define CKD_SHA3_256_KDF 0x0000000BUL1490#define CKD_SHA3_384_KDF 0x0000000CUL1491#define CKD_SHA3_512_KDF 0x0000000DUL1492#define CKD_SHA1_KDF_SP800 0x0000000EUL1493#define CKD_SHA224_KDF_SP800 0x0000000FUL1494#define CKD_SHA256_KDF_SP800 0x00000010UL1495#define CKD_SHA384_KDF_SP800 0x00000011UL1496#define CKD_SHA512_KDF_SP800 0x00000012UL1497#define CKD_SHA3_224_KDF_SP800 0x00000013UL1498#define CKD_SHA3_256_KDF_SP800 0x00000014UL1499#define CKD_SHA3_384_KDF_SP800 0x00000015UL1500#define CKD_SHA3_512_KDF_SP800 0x00000016UL1501#define CKD_BLAKE2B_160_KDF 0x00000017UL1502#define CKD_BLAKE2B_256_KDF 0x00000018UL1503#define CKD_BLAKE2B_384_KDF 0x00000019UL1504#define CKD_BLAKE2B_512_KDF 0x0000001aUL15051506/* CK_ECDH1_DERIVE_PARAMS provides the parameters to the1507* CKM_ECDH1_DERIVE and CKM_ECDH1_COFACTOR_DERIVE mechanisms,1508* where each party contributes one key pair.1509*/1510typedef struct CK_ECDH1_DERIVE_PARAMS {1511CK_EC_KDF_TYPE kdf;1512CK_ULONG ulSharedDataLen;1513CK_BYTE_PTR pSharedData;1514CK_ULONG ulPublicDataLen;1515CK_BYTE_PTR pPublicData;1516} CK_ECDH1_DERIVE_PARAMS;15171518typedef CK_ECDH1_DERIVE_PARAMS CK_PTR CK_ECDH1_DERIVE_PARAMS_PTR;15191520/*1521* CK_ECDH2_DERIVE_PARAMS provides the parameters to the1522* CKM_ECMQV_DERIVE mechanism, where each party contributes two key pairs.1523*/1524typedef struct CK_ECDH2_DERIVE_PARAMS {1525CK_EC_KDF_TYPE kdf;1526CK_ULONG ulSharedDataLen;1527CK_BYTE_PTR pSharedData;1528CK_ULONG ulPublicDataLen;1529CK_BYTE_PTR pPublicData;1530CK_ULONG ulPrivateDataLen;1531CK_OBJECT_HANDLE hPrivateData;1532CK_ULONG ulPublicDataLen2;1533CK_BYTE_PTR pPublicData2;1534} CK_ECDH2_DERIVE_PARAMS;15351536typedef CK_ECDH2_DERIVE_PARAMS CK_PTR CK_ECDH2_DERIVE_PARAMS_PTR;15371538typedef struct CK_ECMQV_DERIVE_PARAMS {1539CK_EC_KDF_TYPE kdf;1540CK_ULONG ulSharedDataLen;1541CK_BYTE_PTR pSharedData;1542CK_ULONG ulPublicDataLen;1543CK_BYTE_PTR pPublicData;1544CK_ULONG ulPrivateDataLen;1545CK_OBJECT_HANDLE hPrivateData;1546CK_ULONG ulPublicDataLen2;1547CK_BYTE_PTR pPublicData2;1548CK_OBJECT_HANDLE publicKey;1549} CK_ECMQV_DERIVE_PARAMS;15501551typedef CK_ECMQV_DERIVE_PARAMS CK_PTR CK_ECMQV_DERIVE_PARAMS_PTR;15521553/* Typedefs and defines for the CKM_X9_42_DH_KEY_PAIR_GEN and the1554* CKM_X9_42_DH_PARAMETER_GEN mechanisms1555*/1556typedef CK_ULONG CK_X9_42_DH_KDF_TYPE;1557typedef CK_X9_42_DH_KDF_TYPE CK_PTR CK_X9_42_DH_KDF_TYPE_PTR;15581559/* CK_X9_42_DH1_DERIVE_PARAMS provides the parameters to the1560* CKM_X9_42_DH_DERIVE key derivation mechanism, where each party1561* contributes one key pair1562*/1563typedef struct CK_X9_42_DH1_DERIVE_PARAMS {1564CK_X9_42_DH_KDF_TYPE kdf;1565CK_ULONG ulOtherInfoLen;1566CK_BYTE_PTR pOtherInfo;1567CK_ULONG ulPublicDataLen;1568CK_BYTE_PTR pPublicData;1569} CK_X9_42_DH1_DERIVE_PARAMS;15701571typedef struct CK_X9_42_DH1_DERIVE_PARAMS CK_PTR CK_X9_42_DH1_DERIVE_PARAMS_PTR;15721573/* CK_X9_42_DH2_DERIVE_PARAMS provides the parameters to the1574* CKM_X9_42_DH_HYBRID_DERIVE and CKM_X9_42_MQV_DERIVE key derivation1575* mechanisms, where each party contributes two key pairs1576*/1577typedef struct CK_X9_42_DH2_DERIVE_PARAMS {1578CK_X9_42_DH_KDF_TYPE kdf;1579CK_ULONG ulOtherInfoLen;1580CK_BYTE_PTR pOtherInfo;1581CK_ULONG ulPublicDataLen;1582CK_BYTE_PTR pPublicData;1583CK_ULONG ulPrivateDataLen;1584CK_OBJECT_HANDLE hPrivateData;1585CK_ULONG ulPublicDataLen2;1586CK_BYTE_PTR pPublicData2;1587} CK_X9_42_DH2_DERIVE_PARAMS;15881589typedef CK_X9_42_DH2_DERIVE_PARAMS CK_PTR CK_X9_42_DH2_DERIVE_PARAMS_PTR;15901591typedef struct CK_X9_42_MQV_DERIVE_PARAMS {1592CK_X9_42_DH_KDF_TYPE kdf;1593CK_ULONG ulOtherInfoLen;1594CK_BYTE_PTR pOtherInfo;1595CK_ULONG ulPublicDataLen;1596CK_BYTE_PTR pPublicData;1597CK_ULONG ulPrivateDataLen;1598CK_OBJECT_HANDLE hPrivateData;1599CK_ULONG ulPublicDataLen2;1600CK_BYTE_PTR pPublicData2;1601CK_OBJECT_HANDLE publicKey;1602} CK_X9_42_MQV_DERIVE_PARAMS;16031604typedef CK_X9_42_MQV_DERIVE_PARAMS CK_PTR CK_X9_42_MQV_DERIVE_PARAMS_PTR;16051606/* CK_KEA_DERIVE_PARAMS provides the parameters to the1607* CKM_KEA_DERIVE mechanism1608*/1609typedef struct CK_KEA_DERIVE_PARAMS {1610CK_BBOOL isSender;1611CK_ULONG ulRandomLen;1612CK_BYTE_PTR pRandomA;1613CK_BYTE_PTR pRandomB;1614CK_ULONG ulPublicDataLen;1615CK_BYTE_PTR pPublicData;1616} CK_KEA_DERIVE_PARAMS;16171618typedef CK_KEA_DERIVE_PARAMS CK_PTR CK_KEA_DERIVE_PARAMS_PTR;161916201621/* CK_RC2_PARAMS provides the parameters to the CKM_RC2_ECB and1622* CKM_RC2_MAC mechanisms. An instance of CK_RC2_PARAMS just1623* holds the effective keysize1624*/1625typedef CK_ULONG CK_RC2_PARAMS;16261627typedef CK_RC2_PARAMS CK_PTR CK_RC2_PARAMS_PTR;162816291630/* CK_RC2_CBC_PARAMS provides the parameters to the CKM_RC2_CBC1631* mechanism1632*/1633typedef struct CK_RC2_CBC_PARAMS {1634CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */1635CK_BYTE iv[8]; /* IV for CBC mode */1636} CK_RC2_CBC_PARAMS;16371638typedef CK_RC2_CBC_PARAMS CK_PTR CK_RC2_CBC_PARAMS_PTR;163916401641/* CK_RC2_MAC_GENERAL_PARAMS provides the parameters for the1642* CKM_RC2_MAC_GENERAL mechanism1643*/1644typedef struct CK_RC2_MAC_GENERAL_PARAMS {1645CK_ULONG ulEffectiveBits; /* effective bits (1-1024) */1646CK_ULONG ulMacLength; /* Length of MAC in bytes */1647} CK_RC2_MAC_GENERAL_PARAMS;16481649typedef CK_RC2_MAC_GENERAL_PARAMS CK_PTR \1650CK_RC2_MAC_GENERAL_PARAMS_PTR;165116521653/* CK_RC5_PARAMS provides the parameters to the CKM_RC5_ECB and1654* CKM_RC5_MAC mechanisms1655*/1656typedef struct CK_RC5_PARAMS {1657CK_ULONG ulWordsize; /* wordsize in bits */1658CK_ULONG ulRounds; /* number of rounds */1659} CK_RC5_PARAMS;16601661typedef CK_RC5_PARAMS CK_PTR CK_RC5_PARAMS_PTR;166216631664/* CK_RC5_CBC_PARAMS provides the parameters to the CKM_RC5_CBC1665* mechanism1666*/1667typedef struct CK_RC5_CBC_PARAMS {1668CK_ULONG ulWordsize; /* wordsize in bits */1669CK_ULONG ulRounds; /* number of rounds */1670CK_BYTE_PTR pIv; /* pointer to IV */1671CK_ULONG ulIvLen; /* length of IV in bytes */1672} CK_RC5_CBC_PARAMS;16731674typedef CK_RC5_CBC_PARAMS CK_PTR CK_RC5_CBC_PARAMS_PTR;167516761677/* CK_RC5_MAC_GENERAL_PARAMS provides the parameters for the1678* CKM_RC5_MAC_GENERAL mechanism1679*/1680typedef struct CK_RC5_MAC_GENERAL_PARAMS {1681CK_ULONG ulWordsize; /* wordsize in bits */1682CK_ULONG ulRounds; /* number of rounds */1683CK_ULONG ulMacLength; /* Length of MAC in bytes */1684} CK_RC5_MAC_GENERAL_PARAMS;16851686typedef CK_RC5_MAC_GENERAL_PARAMS CK_PTR \1687CK_RC5_MAC_GENERAL_PARAMS_PTR;16881689/* CK_MAC_GENERAL_PARAMS provides the parameters to most block1690* ciphers' MAC_GENERAL mechanisms. Its value is the length of1691* the MAC1692*/1693typedef CK_ULONG CK_MAC_GENERAL_PARAMS;16941695typedef CK_MAC_GENERAL_PARAMS CK_PTR CK_MAC_GENERAL_PARAMS_PTR;16961697typedef struct CK_DES_CBC_ENCRYPT_DATA_PARAMS {1698CK_BYTE iv[8];1699CK_BYTE_PTR pData;1700CK_ULONG length;1701} CK_DES_CBC_ENCRYPT_DATA_PARAMS;17021703typedef CK_DES_CBC_ENCRYPT_DATA_PARAMS CK_PTR \1704CK_DES_CBC_ENCRYPT_DATA_PARAMS_PTR;17051706typedef struct CK_AES_CBC_ENCRYPT_DATA_PARAMS {1707CK_BYTE iv[16];1708CK_BYTE_PTR pData;1709CK_ULONG length;1710} CK_AES_CBC_ENCRYPT_DATA_PARAMS;17111712typedef CK_AES_CBC_ENCRYPT_DATA_PARAMS CK_PTR \1713CK_AES_CBC_ENCRYPT_DATA_PARAMS_PTR;17141715/* CK_SKIPJACK_PRIVATE_WRAP_PARAMS provides the parameters to the1716* CKM_SKIPJACK_PRIVATE_WRAP mechanism1717*/1718typedef struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS {1719CK_ULONG ulPasswordLen;1720CK_BYTE_PTR pPassword;1721CK_ULONG ulPublicDataLen;1722CK_BYTE_PTR pPublicData;1723CK_ULONG ulPAndGLen;1724CK_ULONG ulQLen;1725CK_ULONG ulRandomLen;1726CK_BYTE_PTR pRandomA;1727CK_BYTE_PTR pPrimeP;1728CK_BYTE_PTR pBaseG;1729CK_BYTE_PTR pSubprimeQ;1730} CK_SKIPJACK_PRIVATE_WRAP_PARAMS;17311732typedef CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_PTR \1733CK_SKIPJACK_PRIVATE_WRAP_PARAMS_PTR;173417351736/* CK_SKIPJACK_RELAYX_PARAMS provides the parameters to the1737* CKM_SKIPJACK_RELAYX mechanism1738*/1739typedef struct CK_SKIPJACK_RELAYX_PARAMS {1740CK_ULONG ulOldWrappedXLen;1741CK_BYTE_PTR pOldWrappedX;1742CK_ULONG ulOldPasswordLen;1743CK_BYTE_PTR pOldPassword;1744CK_ULONG ulOldPublicDataLen;1745CK_BYTE_PTR pOldPublicData;1746CK_ULONG ulOldRandomLen;1747CK_BYTE_PTR pOldRandomA;1748CK_ULONG ulNewPasswordLen;1749CK_BYTE_PTR pNewPassword;1750CK_ULONG ulNewPublicDataLen;1751CK_BYTE_PTR pNewPublicData;1752CK_ULONG ulNewRandomLen;1753CK_BYTE_PTR pNewRandomA;1754} CK_SKIPJACK_RELAYX_PARAMS;17551756typedef CK_SKIPJACK_RELAYX_PARAMS CK_PTR \1757CK_SKIPJACK_RELAYX_PARAMS_PTR;175817591760typedef struct CK_PBE_PARAMS {1761CK_BYTE_PTR pInitVector;1762CK_UTF8CHAR_PTR pPassword;1763CK_ULONG ulPasswordLen;1764CK_BYTE_PTR pSalt;1765CK_ULONG ulSaltLen;1766CK_ULONG ulIteration;1767} CK_PBE_PARAMS;17681769typedef CK_PBE_PARAMS CK_PTR CK_PBE_PARAMS_PTR;177017711772/* CK_KEY_WRAP_SET_OAEP_PARAMS provides the parameters to the1773* CKM_KEY_WRAP_SET_OAEP mechanism1774*/1775typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS {1776CK_BYTE bBC; /* block contents byte */1777CK_BYTE_PTR pX; /* extra data */1778CK_ULONG ulXLen; /* length of extra data in bytes */1779} CK_KEY_WRAP_SET_OAEP_PARAMS;17801781typedef CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR CK_KEY_WRAP_SET_OAEP_PARAMS_PTR;17821783typedef struct CK_SSL3_RANDOM_DATA {1784CK_BYTE_PTR pClientRandom;1785CK_ULONG ulClientRandomLen;1786CK_BYTE_PTR pServerRandom;1787CK_ULONG ulServerRandomLen;1788} CK_SSL3_RANDOM_DATA;178917901791typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS {1792CK_SSL3_RANDOM_DATA RandomInfo;1793CK_VERSION_PTR pVersion;1794} CK_SSL3_MASTER_KEY_DERIVE_PARAMS;17951796typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR \1797CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR;17981799typedef struct CK_SSL3_KEY_MAT_OUT {1800CK_OBJECT_HANDLE hClientMacSecret;1801CK_OBJECT_HANDLE hServerMacSecret;1802CK_OBJECT_HANDLE hClientKey;1803CK_OBJECT_HANDLE hServerKey;1804CK_BYTE_PTR pIVClient;1805CK_BYTE_PTR pIVServer;1806} CK_SSL3_KEY_MAT_OUT;18071808typedef CK_SSL3_KEY_MAT_OUT CK_PTR CK_SSL3_KEY_MAT_OUT_PTR;180918101811typedef struct CK_SSL3_KEY_MAT_PARAMS {1812CK_ULONG ulMacSizeInBits;1813CK_ULONG ulKeySizeInBits;1814CK_ULONG ulIVSizeInBits;1815CK_BBOOL bIsExport;1816CK_SSL3_RANDOM_DATA RandomInfo;1817CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial;1818} CK_SSL3_KEY_MAT_PARAMS;18191820typedef CK_SSL3_KEY_MAT_PARAMS CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR;18211822typedef struct CK_TLS_PRF_PARAMS {1823CK_BYTE_PTR pSeed;1824CK_ULONG ulSeedLen;1825CK_BYTE_PTR pLabel;1826CK_ULONG ulLabelLen;1827CK_BYTE_PTR pOutput;1828CK_ULONG_PTR pulOutputLen;1829} CK_TLS_PRF_PARAMS;18301831typedef CK_TLS_PRF_PARAMS CK_PTR CK_TLS_PRF_PARAMS_PTR;18321833typedef struct CK_WTLS_RANDOM_DATA {1834CK_BYTE_PTR pClientRandom;1835CK_ULONG ulClientRandomLen;1836CK_BYTE_PTR pServerRandom;1837CK_ULONG ulServerRandomLen;1838} CK_WTLS_RANDOM_DATA;18391840typedef CK_WTLS_RANDOM_DATA CK_PTR CK_WTLS_RANDOM_DATA_PTR;18411842typedef struct CK_WTLS_MASTER_KEY_DERIVE_PARAMS {1843CK_MECHANISM_TYPE DigestMechanism;1844CK_WTLS_RANDOM_DATA RandomInfo;1845CK_BYTE_PTR pVersion;1846} CK_WTLS_MASTER_KEY_DERIVE_PARAMS;18471848typedef CK_WTLS_MASTER_KEY_DERIVE_PARAMS CK_PTR \1849CK_WTLS_MASTER_KEY_DERIVE_PARAMS_PTR;18501851typedef struct CK_WTLS_PRF_PARAMS {1852CK_MECHANISM_TYPE DigestMechanism;1853CK_BYTE_PTR pSeed;1854CK_ULONG ulSeedLen;1855CK_BYTE_PTR pLabel;1856CK_ULONG ulLabelLen;1857CK_BYTE_PTR pOutput;1858CK_ULONG_PTR pulOutputLen;1859} CK_WTLS_PRF_PARAMS;18601861typedef CK_WTLS_PRF_PARAMS CK_PTR CK_WTLS_PRF_PARAMS_PTR;18621863typedef struct CK_WTLS_KEY_MAT_OUT {1864CK_OBJECT_HANDLE hMacSecret;1865CK_OBJECT_HANDLE hKey;1866CK_BYTE_PTR pIV;1867} CK_WTLS_KEY_MAT_OUT;18681869typedef CK_WTLS_KEY_MAT_OUT CK_PTR CK_WTLS_KEY_MAT_OUT_PTR;18701871typedef struct CK_WTLS_KEY_MAT_PARAMS {1872CK_MECHANISM_TYPE DigestMechanism;1873CK_ULONG ulMacSizeInBits;1874CK_ULONG ulKeySizeInBits;1875CK_ULONG ulIVSizeInBits;1876CK_ULONG ulSequenceNumber;1877CK_BBOOL bIsExport;1878CK_WTLS_RANDOM_DATA RandomInfo;1879CK_WTLS_KEY_MAT_OUT_PTR pReturnedKeyMaterial;1880} CK_WTLS_KEY_MAT_PARAMS;18811882typedef CK_WTLS_KEY_MAT_PARAMS CK_PTR CK_WTLS_KEY_MAT_PARAMS_PTR;18831884typedef struct CK_CMS_SIG_PARAMS {1885CK_OBJECT_HANDLE certificateHandle;1886CK_MECHANISM_PTR pSigningMechanism;1887CK_MECHANISM_PTR pDigestMechanism;1888CK_UTF8CHAR_PTR pContentType;1889CK_BYTE_PTR pRequestedAttributes;1890CK_ULONG ulRequestedAttributesLen;1891CK_BYTE_PTR pRequiredAttributes;1892CK_ULONG ulRequiredAttributesLen;1893} CK_CMS_SIG_PARAMS;18941895typedef CK_CMS_SIG_PARAMS CK_PTR CK_CMS_SIG_PARAMS_PTR;18961897typedef struct CK_KEY_DERIVATION_STRING_DATA {1898CK_BYTE_PTR pData;1899CK_ULONG ulLen;1900} CK_KEY_DERIVATION_STRING_DATA;19011902typedef CK_KEY_DERIVATION_STRING_DATA CK_PTR \1903CK_KEY_DERIVATION_STRING_DATA_PTR;190419051906/* The CK_EXTRACT_PARAMS is used for the1907* CKM_EXTRACT_KEY_FROM_KEY mechanism. It specifies which bit1908* of the base key should be used as the first bit of the1909* derived key1910*/1911typedef CK_ULONG CK_EXTRACT_PARAMS;19121913typedef CK_EXTRACT_PARAMS CK_PTR CK_EXTRACT_PARAMS_PTR;19141915/* CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is used to1916* indicate the Pseudo-Random Function (PRF) used to generate1917* key bits using PKCS #5 PBKDF2.1918*/1919typedef CK_ULONG CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE;19201921typedef CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE CK_PTR \1922CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR;19231924#define CKP_PKCS5_PBKD2_HMAC_SHA1 0x00000001UL1925#define CKP_PKCS5_PBKD2_HMAC_GOSTR3411 0x00000002UL1926#define CKP_PKCS5_PBKD2_HMAC_SHA224 0x00000003UL1927#define CKP_PKCS5_PBKD2_HMAC_SHA256 0x00000004UL1928#define CKP_PKCS5_PBKD2_HMAC_SHA384 0x00000005UL1929#define CKP_PKCS5_PBKD2_HMAC_SHA512 0x00000006UL1930#define CKP_PKCS5_PBKD2_HMAC_SHA512_224 0x00000007UL1931#define CKP_PKCS5_PBKD2_HMAC_SHA512_256 0x00000008UL19321933/* CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is used to indicate the1934* source of the salt value when deriving a key using PKCS #51935* PBKDF2.1936*/1937typedef CK_ULONG CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE;19381939typedef CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE CK_PTR \1940CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR;19411942/* The following salt value sources are defined in PKCS #5 v2.0. */1943#define CKZ_SALT_SPECIFIED 0x00000001UL19441945/* CK_PKCS5_PBKD2_PARAMS is a structure that provides the1946* parameters to the CKM_PKCS5_PBKD2 mechanism.1947*/1948typedef struct CK_PKCS5_PBKD2_PARAMS {1949CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;1950CK_VOID_PTR pSaltSourceData;1951CK_ULONG ulSaltSourceDataLen;1952CK_ULONG iterations;1953CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;1954CK_VOID_PTR pPrfData;1955CK_ULONG ulPrfDataLen;1956CK_UTF8CHAR_PTR pPassword;1957CK_ULONG_PTR ulPasswordLen;1958} CK_PKCS5_PBKD2_PARAMS;19591960typedef CK_PKCS5_PBKD2_PARAMS CK_PTR CK_PKCS5_PBKD2_PARAMS_PTR;19611962/* CK_PKCS5_PBKD2_PARAMS2 is a corrected version of the CK_PKCS5_PBKD2_PARAMS1963* structure that provides the parameters to the CKM_PKCS5_PBKD2 mechanism1964* noting that the ulPasswordLen field is a CK_ULONG and not a CK_ULONG_PTR.1965*/1966typedef struct CK_PKCS5_PBKD2_PARAMS2 {1967CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;1968CK_VOID_PTR pSaltSourceData;1969CK_ULONG ulSaltSourceDataLen;1970CK_ULONG iterations;1971CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;1972CK_VOID_PTR pPrfData;1973CK_ULONG ulPrfDataLen;1974CK_UTF8CHAR_PTR pPassword;1975CK_ULONG ulPasswordLen;1976} CK_PKCS5_PBKD2_PARAMS2;19771978typedef CK_PKCS5_PBKD2_PARAMS2 CK_PTR CK_PKCS5_PBKD2_PARAMS2_PTR;19791980typedef CK_ULONG CK_OTP_PARAM_TYPE;1981typedef CK_OTP_PARAM_TYPE CK_PARAM_TYPE; /* backward compatibility */19821983typedef struct CK_OTP_PARAM {1984CK_OTP_PARAM_TYPE type;1985CK_VOID_PTR pValue;1986CK_ULONG ulValueLen;1987} CK_OTP_PARAM;19881989typedef CK_OTP_PARAM CK_PTR CK_OTP_PARAM_PTR;19901991typedef struct CK_OTP_PARAMS {1992CK_OTP_PARAM_PTR pParams;1993CK_ULONG ulCount;1994} CK_OTP_PARAMS;19951996typedef CK_OTP_PARAMS CK_PTR CK_OTP_PARAMS_PTR;19971998typedef struct CK_OTP_SIGNATURE_INFO {1999CK_OTP_PARAM_PTR pParams;2000CK_ULONG ulCount;2001} CK_OTP_SIGNATURE_INFO;20022003typedef CK_OTP_SIGNATURE_INFO CK_PTR CK_OTP_SIGNATURE_INFO_PTR;20042005#define CK_OTP_VALUE 0UL2006#define CK_OTP_PIN 1UL2007#define CK_OTP_CHALLENGE 2UL2008#define CK_OTP_TIME 3UL2009#define CK_OTP_COUNTER 4UL2010#define CK_OTP_FLAGS 5UL2011#define CK_OTP_OUTPUT_LENGTH 6UL2012#define CK_OTP_OUTPUT_FORMAT 7UL20132014#define CKF_NEXT_OTP 0x00000001UL2015#define CKF_EXCLUDE_TIME 0x00000002UL2016#define CKF_EXCLUDE_COUNTER 0x00000004UL2017#define CKF_EXCLUDE_CHALLENGE 0x00000008UL2018#define CKF_EXCLUDE_PIN 0x00000010UL2019#define CKF_USER_FRIENDLY_OTP 0x00000020UL20202021typedef struct CK_KIP_PARAMS {2022CK_MECHANISM_PTR pMechanism;2023CK_OBJECT_HANDLE hKey;2024CK_BYTE_PTR pSeed;2025CK_ULONG ulSeedLen;2026} CK_KIP_PARAMS;20272028typedef CK_KIP_PARAMS CK_PTR CK_KIP_PARAMS_PTR;20292030typedef struct CK_AES_CTR_PARAMS {2031CK_ULONG ulCounterBits;2032CK_BYTE cb[16];2033} CK_AES_CTR_PARAMS;20342035typedef CK_AES_CTR_PARAMS CK_PTR CK_AES_CTR_PARAMS_PTR;20362037typedef struct CK_GCM_PARAMS {2038CK_BYTE_PTR pIv;2039CK_ULONG ulIvLen;2040CK_ULONG ulIvBits;2041CK_BYTE_PTR pAAD;2042CK_ULONG ulAADLen;2043CK_ULONG ulTagBits;2044} CK_GCM_PARAMS;20452046typedef CK_GCM_PARAMS CK_PTR CK_GCM_PARAMS_PTR;20472048typedef CK_ULONG CK_GENERATOR_FUNCTION;2049#define CKG_NO_GENERATE 0x00000000UL2050#define CKG_GENERATE 0x00000001UL2051#define CKG_GENERATE_COUNTER 0x00000002UL2052#define CKG_GENERATE_RANDOM 0x00000003UL20532054typedef struct CK_GCM_MESSAGE_PARAMS {2055CK_BYTE_PTR pIv;2056CK_ULONG ulIvLen;2057CK_ULONG ulIvFixedBits;2058CK_GENERATOR_FUNCTION ivGenerator;2059CK_BYTE_PTR pTag;2060CK_ULONG ulTagBits;2061} CK_GCM_MESSAGE_PARAMS;20622063typedef CK_GCM_MESSAGE_PARAMS CK_GCM_MESSAGE_PARAMS_PTR;20642065typedef struct CK_CCM_PARAMS {2066CK_ULONG ulDataLen;2067CK_BYTE_PTR pNonce;2068CK_ULONG ulNonceLen;2069CK_BYTE_PTR pAAD;2070CK_ULONG ulAADLen;2071CK_ULONG ulMACLen;2072} CK_CCM_PARAMS;20732074typedef CK_CCM_PARAMS CK_PTR CK_CCM_PARAMS_PTR;20752076typedef struct CK_CCM_MESSAGE_PARAMS {2077CK_ULONG ulDataLen; /*plaintext or ciphertext*/2078CK_BYTE_PTR pNonce;2079CK_ULONG ulNonceLen;2080CK_ULONG ulNonceFixedBits;2081CK_GENERATOR_FUNCTION nonceGenerator;2082CK_BYTE_PTR pMAC;2083CK_ULONG ulMACLen;2084} CK_CCM_MESSAGE_PARAMS;20852086typedef CK_CCM_MESSAGE_PARAMS CK_CCM_MESSAGE_PARAMS_PTR;20872088/* Deprecated. Use CK_GCM_PARAMS */2089typedef struct CK_AES_GCM_PARAMS {2090CK_BYTE_PTR pIv;2091CK_ULONG ulIvLen;2092CK_ULONG ulIvBits;2093CK_BYTE_PTR pAAD;2094CK_ULONG ulAADLen;2095CK_ULONG ulTagBits;2096} CK_AES_GCM_PARAMS;20972098typedef CK_AES_GCM_PARAMS CK_PTR CK_AES_GCM_PARAMS_PTR;20992100/* Deprecated. Use CK_CCM_PARAMS */2101typedef struct CK_AES_CCM_PARAMS {2102CK_ULONG ulDataLen;2103CK_BYTE_PTR pNonce;2104CK_ULONG ulNonceLen;2105CK_BYTE_PTR pAAD;2106CK_ULONG ulAADLen;2107CK_ULONG ulMACLen;2108} CK_AES_CCM_PARAMS;21092110typedef CK_AES_CCM_PARAMS CK_PTR CK_AES_CCM_PARAMS_PTR;21112112typedef struct CK_CAMELLIA_CTR_PARAMS {2113CK_ULONG ulCounterBits;2114CK_BYTE cb[16];2115} CK_CAMELLIA_CTR_PARAMS;21162117typedef CK_CAMELLIA_CTR_PARAMS CK_PTR CK_CAMELLIA_CTR_PARAMS_PTR;21182119typedef struct CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS {2120CK_BYTE iv[16];2121CK_BYTE_PTR pData;2122CK_ULONG length;2123} CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS;21242125typedef CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR \2126CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS_PTR;21272128typedef struct CK_ARIA_CBC_ENCRYPT_DATA_PARAMS {2129CK_BYTE iv[16];2130CK_BYTE_PTR pData;2131CK_ULONG length;2132} CK_ARIA_CBC_ENCRYPT_DATA_PARAMS;21332134typedef CK_ARIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR \2135CK_ARIA_CBC_ENCRYPT_DATA_PARAMS_PTR;21362137typedef struct CK_DSA_PARAMETER_GEN_PARAM {2138CK_MECHANISM_TYPE hash;2139CK_BYTE_PTR pSeed;2140CK_ULONG ulSeedLen;2141CK_ULONG ulIndex;2142} CK_DSA_PARAMETER_GEN_PARAM;21432144typedef CK_DSA_PARAMETER_GEN_PARAM CK_PTR CK_DSA_PARAMETER_GEN_PARAM_PTR;21452146typedef struct CK_ECDH_AES_KEY_WRAP_PARAMS {2147CK_ULONG ulAESKeyBits;2148CK_EC_KDF_TYPE kdf;2149CK_ULONG ulSharedDataLen;2150CK_BYTE_PTR pSharedData;2151} CK_ECDH_AES_KEY_WRAP_PARAMS;21522153typedef CK_ECDH_AES_KEY_WRAP_PARAMS CK_PTR CK_ECDH_AES_KEY_WRAP_PARAMS_PTR;21542155typedef CK_ULONG CK_JAVA_MIDP_SECURITY_DOMAIN;21562157typedef CK_ULONG CK_CERTIFICATE_CATEGORY;21582159typedef struct CK_RSA_AES_KEY_WRAP_PARAMS {2160CK_ULONG ulAESKeyBits;2161CK_RSA_PKCS_OAEP_PARAMS_PTR pOAEPParams;2162} CK_RSA_AES_KEY_WRAP_PARAMS;21632164typedef CK_RSA_AES_KEY_WRAP_PARAMS CK_PTR CK_RSA_AES_KEY_WRAP_PARAMS_PTR;21652166typedef struct CK_TLS12_MASTER_KEY_DERIVE_PARAMS {2167CK_SSL3_RANDOM_DATA RandomInfo;2168CK_VERSION_PTR pVersion;2169CK_MECHANISM_TYPE prfHashMechanism;2170} CK_TLS12_MASTER_KEY_DERIVE_PARAMS;21712172typedef CK_TLS12_MASTER_KEY_DERIVE_PARAMS CK_PTR \2173CK_TLS12_MASTER_KEY_DERIVE_PARAMS_PTR;21742175typedef struct CK_TLS12_KEY_MAT_PARAMS {2176CK_ULONG ulMacSizeInBits;2177CK_ULONG ulKeySizeInBits;2178CK_ULONG ulIVSizeInBits;2179CK_BBOOL bIsExport;2180CK_SSL3_RANDOM_DATA RandomInfo;2181CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial;2182CK_MECHANISM_TYPE prfHashMechanism;2183} CK_TLS12_KEY_MAT_PARAMS;21842185typedef CK_TLS12_KEY_MAT_PARAMS CK_PTR CK_TLS12_KEY_MAT_PARAMS_PTR;21862187typedef struct CK_TLS_KDF_PARAMS {2188CK_MECHANISM_TYPE prfMechanism;2189CK_BYTE_PTR pLabel;2190CK_ULONG ulLabelLength;2191CK_SSL3_RANDOM_DATA RandomInfo;2192CK_BYTE_PTR pContextData;2193CK_ULONG ulContextDataLength;2194} CK_TLS_KDF_PARAMS;21952196typedef CK_TLS_KDF_PARAMS CK_PTR CK_TLS_KDF_PARAMS_PTR;21972198typedef struct CK_TLS_MAC_PARAMS {2199CK_MECHANISM_TYPE prfHashMechanism;2200CK_ULONG ulMacLength;2201CK_ULONG ulServerOrClient;2202} CK_TLS_MAC_PARAMS;22032204typedef CK_TLS_MAC_PARAMS CK_PTR CK_TLS_MAC_PARAMS_PTR;22052206typedef struct CK_GOSTR3410_DERIVE_PARAMS {2207CK_EC_KDF_TYPE kdf;2208CK_BYTE_PTR pPublicData;2209CK_ULONG ulPublicDataLen;2210CK_BYTE_PTR pUKM;2211CK_ULONG ulUKMLen;2212} CK_GOSTR3410_DERIVE_PARAMS;22132214typedef CK_GOSTR3410_DERIVE_PARAMS CK_PTR CK_GOSTR3410_DERIVE_PARAMS_PTR;22152216typedef struct CK_GOSTR3410_KEY_WRAP_PARAMS {2217CK_BYTE_PTR pWrapOID;2218CK_ULONG ulWrapOIDLen;2219CK_BYTE_PTR pUKM;2220CK_ULONG ulUKMLen;2221CK_OBJECT_HANDLE hKey;2222} CK_GOSTR3410_KEY_WRAP_PARAMS;22232224typedef CK_GOSTR3410_KEY_WRAP_PARAMS CK_PTR CK_GOSTR3410_KEY_WRAP_PARAMS_PTR;22252226typedef struct CK_SEED_CBC_ENCRYPT_DATA_PARAMS {2227CK_BYTE iv[16];2228CK_BYTE_PTR pData;2229CK_ULONG length;2230} CK_SEED_CBC_ENCRYPT_DATA_PARAMS;22312232typedef CK_SEED_CBC_ENCRYPT_DATA_PARAMS CK_PTR \2233CK_SEED_CBC_ENCRYPT_DATA_PARAMS_PTR;22342235/*2236* New PKCS 11 v3.0 data structures.2237*/22382239typedef CK_ULONG CK_PROFILE_ID;2240typedef CK_PROFILE_ID CK_PTR CK_PROFILE_ID_PTR;22412242/* Typedefs for Flexible KDF */2243typedef CK_ULONG CK_PRF_DATA_TYPE;2244typedef CK_MECHANISM_TYPE CK_SP800_108_PRF_TYPE;2245#define CK_SP800_108_ITERATION_VARIABLE 0x00000001UL2246#define CK_SP800_108_OPTIONAL_COUNTER 0x00000002UL2247#define CK_SP800_108_DKM_LENGTH 0x00000003UL2248#define CK_SP800_108_BYTE_ARRAY 0x00000004UL2249#define CK_SP800_108_COUNTER CK_SP800_108_OPTIONAL_COUNTER22502251typedef struct CK_PRF_DATA_PARAM2252{2253CK_PRF_DATA_TYPE type;2254CK_VOID_PTR pValue;2255CK_ULONG ulValueLen;2256} CK_PRF_DATA_PARAM;22572258typedef CK_PRF_DATA_PARAM CK_PTR CK_PRF_DATA_PARAM_PTR;225922602261typedef struct CK_SP800_108_COUNTER_FORMAT2262{2263CK_BBOOL bLittleEndian;2264CK_ULONG ulWidthInBits;2265} CK_SP800_108_COUNTER_FORMAT;22662267typedef CK_SP800_108_COUNTER_FORMAT CK_PTR CK_SP800_108_COUNTER_FORMAT_PTR;22682269typedef CK_ULONG CK_SP800_108_DKM_LENGTH_METHOD;2270#define CK_SP800_108_DKM_LENGTH_SUM_OF_KEYS 0x00000001UL2271#define CK_SP800_108_DKM_LENGTH_SUM_OF_SEGMENTS 0x00000002UL22722273typedef struct CK_SP800_108_DKM_LENGTH_FORMAT2274{2275CK_SP800_108_DKM_LENGTH_METHOD dkmLengthMethod;2276CK_BBOOL bLittleEndian;2277CK_ULONG ulWidthInBits;2278} CK_SP800_108_DKM_LENGTH_FORMAT;22792280typedef CK_SP800_108_DKM_LENGTH_FORMAT \2281CK_PTR CK_SP800_108_DKM_LENGTH_FORMAT_PTR;22822283typedef struct CK_DERIVED_KEY2284{2285CK_ATTRIBUTE_PTR pTemplate;2286CK_ULONG ulAttributeCount;2287CK_OBJECT_HANDLE_PTR phKey;2288} CK_DERIVED_KEY;22892290typedef CK_DERIVED_KEY CK_PTR CK_DERIVED_KEY_PTR;22912292typedef struct CK_SP800_108_KDF_PARAMS2293{2294CK_SP800_108_PRF_TYPE prfType;2295CK_ULONG ulNumberOfDataParams;2296CK_PRF_DATA_PARAM_PTR pDataParams;2297CK_ULONG ulAdditionalDerivedKeys;2298CK_DERIVED_KEY_PTR pAdditionalDerivedKeys;2299} CK_SP800_108_KDF_PARAMS;23002301typedef CK_SP800_108_KDF_PARAMS CK_PTR CK_SP800_108_KDF_PARAMS_PTR;23022303typedef struct CK_SP800_108_FEEDBACK_KDF_PARAMS2304{2305CK_SP800_108_PRF_TYPE prfType;2306CK_ULONG ulNumberOfDataParams;2307CK_PRF_DATA_PARAM_PTR pDataParams;2308CK_ULONG ulIVLen;2309CK_BYTE_PTR pIV;2310CK_ULONG ulAdditionalDerivedKeys;2311CK_DERIVED_KEY_PTR pAdditionalDerivedKeys;2312} CK_SP800_108_FEEDBACK_KDF_PARAMS;23132314typedef CK_SP800_108_FEEDBACK_KDF_PARAMS \2315CK_PTR CK_SP800_108_FEEDBACK_KDF_PARAMS_PTR;23162317/* EDDSA */2318typedef struct CK_EDDSA_PARAMS {2319CK_BBOOL phFlag;2320CK_ULONG ulContextDataLen;2321CK_BYTE_PTR pContextData;2322} CK_EDDSA_PARAMS;23232324typedef CK_EDDSA_PARAMS CK_PTR CK_EDDSA_PARAMS_PTR;23252326/* Extended ChaCha20/Salsa20 support*/2327typedef struct CK_CHACHA20_PARAMS {2328CK_BYTE_PTR pBlockCounter;2329CK_ULONG blockCounterBits;2330CK_BYTE_PTR pNonce;2331CK_ULONG ulNonceBits;2332} CK_CHACHA20_PARAMS;23332334typedef CK_CHACHA20_PARAMS CK_PTR CK_CHACHA20_PARAMS_PTR;23352336typedef struct CK_SALSA20_PARAMS {2337CK_BYTE_PTR pBlockCounter;2338CK_BYTE_PTR pNonce;2339CK_ULONG ulNonceBits;2340} CK_SALSA20_PARAMS;23412342typedef CK_SALSA20_PARAMS CK_PTR CK_SALSA20_PARAMS_PTR;23432344typedef struct CK_SALSA20_CHACHA20_POLY1305_PARAMS {2345CK_BYTE_PTR pNonce;2346CK_ULONG ulNonceLen;2347CK_BYTE_PTR pAAD;2348CK_ULONG ulAADLen;2349} CK_SALSA20_CHACHA20_POLY1305_PARAMS;23502351typedef CK_SALSA20_CHACHA20_POLY1305_PARAMS \2352CK_PTR CK_SALSA20_CHACHA20_POLY1305_PARAMS_PTR;23532354typedef struct CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS {2355CK_BYTE_PTR pNonce;2356CK_ULONG ulNonceLen;2357CK_BYTE_PTR pTag;2358} CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS;23592360typedef CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS \2361CK_PTR CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS_PTR;23622363typedef CK_ULONG CK_X3DH_KDF_TYPE;2364typedef CK_X3DH_KDF_TYPE CK_PTR CK_X3DH_KDF_TYPE_PTR;23652366/* X3dh, ratchet */2367typedef struct CK_X3DH_INITIATE_PARAMS {2368CK_X3DH_KDF_TYPE kdf;2369CK_OBJECT_HANDLE pPeer_identity;2370CK_OBJECT_HANDLE pPeer_prekey;2371CK_BYTE_PTR pPrekey_signature;2372CK_BYTE_PTR pOnetime_key;2373CK_OBJECT_HANDLE pOwn_identity;2374CK_OBJECT_HANDLE pOwn_ephemeral;2375} CK_X3DH_INITIATE_PARAMS;23762377typedef struct CK_X3DH_RESPOND_PARAMS {2378CK_X3DH_KDF_TYPE kdf;2379CK_BYTE_PTR pIdentity_id;2380CK_BYTE_PTR pPrekey_id;2381CK_BYTE_PTR pOnetime_id;2382CK_OBJECT_HANDLE pInitiator_identity;2383CK_BYTE_PTR pInitiator_ephemeral;2384} CK_X3DH_RESPOND_PARAMS;23852386typedef CK_ULONG CK_X2RATCHET_KDF_TYPE;2387typedef CK_X2RATCHET_KDF_TYPE CK_PTR CK_X2RATCHET_KDF_TYPE_PTR;23882389typedef struct CK_X2RATCHET_INITIALIZE_PARAMS {2390CK_BYTE_PTR sk;2391CK_OBJECT_HANDLE peer_public_prekey;2392CK_OBJECT_HANDLE peer_public_identity;2393CK_OBJECT_HANDLE own_public_identity;2394CK_BBOOL bEncryptedHeader;2395CK_ULONG eCurve;2396CK_MECHANISM_TYPE aeadMechanism;2397CK_X2RATCHET_KDF_TYPE kdfMechanism;2398} CK_X2RATCHET_INITIALIZE_PARAMS;23992400typedef CK_X2RATCHET_INITIALIZE_PARAMS \2401CK_PTR CK_X2RATCHET_INITIALIZE_PARAMS_PTR;24022403typedef struct CK_X2RATCHET_RESPOND_PARAMS {2404CK_BYTE_PTR sk;2405CK_OBJECT_HANDLE own_prekey;2406CK_OBJECT_HANDLE initiator_identity;2407CK_OBJECT_HANDLE own_public_identity;2408CK_BBOOL bEncryptedHeader;2409CK_ULONG eCurve;2410CK_MECHANISM_TYPE aeadMechanism;2411CK_X2RATCHET_KDF_TYPE kdfMechanism;2412} CK_X2RATCHET_RESPOND_PARAMS;2413typedef CK_X2RATCHET_RESPOND_PARAMS \2414CK_PTR CK_X2RATCHET_RESPOND_PARAMS_PTR;24152416typedef CK_ULONG CK_XEDDSA_HASH_TYPE;2417typedef CK_XEDDSA_HASH_TYPE CK_PTR CK_XEDDSA_HASH_TYPE_PTR;24182419/* XEDDSA */2420typedef struct CK_XEDDSA_PARAMS {2421CK_XEDDSA_HASH_TYPE hash;2422} CK_XEDDSA_PARAMS;2423typedef CK_XEDDSA_PARAMS CK_PTR CK_XEDDSA_PARAMS_PTR;24242425typedef struct CK_HKDF_PARAMS {2426CK_BBOOL bExtract;2427CK_BBOOL bExpand;2428CK_MECHANISM_TYPE prfHashMechanism;2429CK_ULONG ulSaltType;2430CK_BYTE_PTR pSalt;2431CK_ULONG ulSaltLen;2432CK_OBJECT_HANDLE hSaltKey;2433CK_BYTE_PTR pInfo;2434CK_ULONG ulInfoLen;2435} CK_HKDF_PARAMS;2436typedef CK_HKDF_PARAMS CK_PTR CK_HKDF_PARAMS_PTR;24372438#define CKF_HKDF_SALT_NULL 0x00000001UL2439#define CKF_HKDF_SALT_DATA 0x00000002UL2440#define CKF_HKDF_SALT_KEY 0x00000004UL24412442#endif /* _PKCS11T_H_ */2443244424452446