Commit 529fc95bbd for strongswan.org
commit 529fc95bbdaf48f3c94e9f767e95a638f38bcf3f
Author: Tobias Brunner <tobias@strongswan.org>
Date: Tue Oct 6 12:20:18 2026 +0200
pkcs11: Switch to a simpler Public Domain PKCS#11 header
We don't need the non-Cryptoki-compatible interface, so use the simpler
Public Domain version from https://github.com/latchset/pkcs11-headers/
that avoids all those redundant typedefs and defines. The only
difference is the removal of the "extern" function declaration as we
strictly use function pointers via `dlsym()`. This also updates it to
version 3.2 of the standard (includes support for newer algorithms
like ML-KEM and ML-DSA).
diff --git a/src/libstrongswan/plugins/pkcs11/pkcs11.h b/src/libstrongswan/plugins/pkcs11/pkcs11.h
index b27bd84871..d8a7197ca3 100644
--- a/src/libstrongswan/plugins/pkcs11/pkcs11.h
+++ b/src/libstrongswan/plugins/pkcs11/pkcs11.h
@@ -1,1846 +1,2622 @@
-/* pkcs11.h
- Copyright 2006, 2007 g10 Code GmbH
- Copyright 2006 Andreas Jellinghaus
+/* This header is Public Domain, the main contents are from
+ * https://github.com/latchset/pkcs11-headers/ */
- This file is free software; as a special exception the author gives
- unlimited permission to copy and/or distribute it, with or without
- modifications, as long as this notice is preserved.
-
- This file is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY, to the extent permitted by law; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. */
+#ifndef PKCS11_H
+#define PKCS11_H 1
-/* Please submit changes back to the Scute project at
- http://www.scute.org/ (or send them to marcus@g10code.com), so that
- they can be picked up by other projects from there as well. */
+#if defined(__cplusplus)
+extern "C" {
+#endif
-/* This file is a modified implementation of the PKCS #11 standard by
- RSA Security Inc. It is mostly a drop-in replacement, with the
- following change:
+/* System dependencies. */
+#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
- This header file does not require any macro definitions by the user
- (like CK_DEFINE_FUNCTION etc). In fact, it defines those macros
- for you (if useful, some are missing, let me know if you need
- more).
+/* There is a matching pop below. */
+#pragma pack(push, cryptoki, 1)
- There is an additional API available that does comply better to the
- GNU coding standard. It can be switched on by defining
- CRYPTOKI_GNU before including this header file. For this, the
- following changes are made to the specification:
+#ifdef CRYPTOKI_EXPORTS
+#define CK_SPEC __declspec(dllexport)
+#else
+#define CK_SPEC __declspec(dllimport)
+#endif
- All structure types are changed to a "struct ck_foo" where CK_FOO
- is the type name in PKCS #11.
+#else
- All non-structure types are changed to ck_foo_t where CK_FOO is the
- lowercase version of the type name in PKCS #11. The basic types
- (CK_ULONG et al.) are removed without substitute.
+#define CK_SPEC
- All members of structures are modified in the following way: Type
- indication prefixes are removed, and underscore characters are
- inserted before words. Then the result is lowercased.
+#endif
- Note that function names are still in the original case, as they
- need for ABI compatibility.
+#define PKCS11_DEPRECATED
- CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute. Use
- <stdbool.h>.
+/* Main declarations, only difference to the source are the removed "extern"
+ * function declarations */
+#define CRYPTOKI_VERSION_MAJOR 3
+#define CRYPTOKI_VERSION_MINOR 2
+#define CRYPTOKI_VERSION_AMENDMENT 0
- If CRYPTOKI_COMPAT is defined before including this header file,
- then none of the API changes above take place, and the API is the
- one defined by the PKCS #11 standard. */
+/* Basic types */
+typedef unsigned char CK_BBOOL;
+typedef unsigned char CK_BYTE;
+typedef unsigned char CK_CHAR;
+typedef unsigned char CK_UTF8CHAR;
+typedef unsigned long int CK_ULONG;
-#ifndef PKCS11_H
-#define PKCS11_H 1
+typedef CK_BBOOL * CK_BBOOL_PTR;
+typedef CK_BYTE * CK_BYTE_PTR;
+typedef CK_CHAR * CK_CHAR_PTR;
+typedef CK_UTF8CHAR * CK_UTF8CHAR_PTR;
+typedef CK_ULONG * CK_ULONG_PTR;
-#if defined(__cplusplus)
-extern "C" {
-#endif
+/* Basic defines */
+#define NULL_PTR ((void *)0)
+typedef void * CK_VOID_PTR;
+typedef void ** CK_VOID_PTR_PTR;
+#define CK_EFFECTIVELY_INFINITE 0UL
+#define CK_UNAVAILABLE_INFORMATION ~0UL
+#define CK_INVALID_HANDLE 0UL
+#define CK_TRUE 1
+#define CK_FALSE 0
-/* The version of cryptoki we implement. The revision is changed with
- each modification of this file. If you do not use the "official"
- version of this file, please consider deleting the revision macro
- (you may use a macro with a different name to keep track of your
- versions). */
-#define CRYPTOKI_VERSION_MAJOR 3
-#define CRYPTOKI_VERSION_MINOR 0
-#define CRYPTOKI_VERSION_REVISION 0
+/* CK_ types in alphabetical order */
+#define ULONGDEF(__name__) \
+typedef CK_ULONG __name__; \
+typedef __name__ * __name__ ## _PTR;
+
+ULONGDEF(CK_ATTRIBUTE_TYPE);
+ULONGDEF(CK_CERTIFICATE_CATEGORY);
+ULONGDEF(CK_CERTIFICATE_TYPE);
+ULONGDEF(CK_EC_KDF_TYPE);
+ULONGDEF(CK_EXTRACT_PARAMS);
+ULONGDEF(CK_FLAGS);
+ULONGDEF(CK_GENERATOR_FUNCTION);
+ULONGDEF(CK_HEDGE_TYPE);
+ULONGDEF(CK_HSS_LEVELS);
+ULONGDEF(CK_HW_FEATURE_TYPE);
+ULONGDEF(CK_JAVA_MIDP_SECURITY_DOMAIN);
+ULONGDEF(CK_KEY_TYPE);
+ULONGDEF(CK_LMS_TYPE);
+ULONGDEF(CK_LMOTS_TYPE);
+ULONGDEF(CK_MAC_GENERAL_PARAMS);
+ULONGDEF(CK_MECHANISM_TYPE);
+ULONGDEF(CK_ML_DSA_PARAMETER_SET_TYPE);
+ULONGDEF(CK_ML_KEM_PARAMETER_SET_TYPE);
+ULONGDEF(CK_NOTIFICATION);
+ULONGDEF(CK_OBJECT_CLASS);
+ULONGDEF(CK_OBJECT_HANDLE);
+ULONGDEF(CK_OTP_PARAM_TYPE);
+ULONGDEF(CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE);
+ULONGDEF(CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE);
+ULONGDEF(CK_PRF_DATA_TYPE);
+ULONGDEF(CK_PROFILE_ID);
+ULONGDEF(CK_RC2_PARAMS);
+ULONGDEF(CK_RSA_PKCS_MGF_TYPE);
+ULONGDEF(CK_RSA_PKCS_OAEP_SOURCE_TYPE);
+ULONGDEF(CK_RV);
+ULONGDEF(CK_SESSION_HANDLE);
+ULONGDEF(CK_SESSION_VALIDATION_FLAGS_TYPE);
+ULONGDEF(CK_SLH_DSA_PARAMETER_SET_TYPE);
+ULONGDEF(CK_SLOT_ID);
+ULONGDEF(CK_SP800_108_DKM_LENGTH_METHOD);
+ULONGDEF(CK_STATE);
+ULONGDEF(CK_TRUST);
+ULONGDEF(CK_USER_TYPE);
+ULONGDEF(CK_VALIDATION_AUTHORITY_TYPE);
+ULONGDEF(CK_VALIDATION_TYPE);
+ULONGDEF(CK_X2RATCHET_KDF_TYPE);
+ULONGDEF(CK_X3DH_KDF_TYPE);
+ULONGDEF(CK_X9_42_DH_KDF_TYPE);
+ULONGDEF(CK_XEDDSA_HASH_TYPE);
+ULONGDEF(CK_XMSSMT_PARAMETER_SET_TYPE);
+ULONGDEF(CK_XMSS_PARAMETER_SET_TYPE);
+
+/* domain specific values and constants */
+
+/* CK (certificate) */
+#define CK_CERTIFICATE_CATEGORY_UNSPECIFIED 0UL
+#define CK_CERTIFICATE_CATEGORY_TOKEN_USER 1UL
+#define CK_CERTIFICATE_CATEGORY_AUTHORITY 2UL
+#define CK_CERTIFICATE_CATEGORY_OTHER_ENTITY 3UL
+
+/* CK (OTP) */
+#define CK_OTP_VALUE 0UL
+#define CK_OTP_PIN 1UL
+#define CK_OTP_CHALLENGE 2UL
+#define CK_OTP_TIME 3UL
+#define CK_OTP_COUNTER 4UL
+#define CK_OTP_FLAGS 5UL
+#define CK_OTP_OUTPUT_LENGTH 6UL
+#define CK_OTP_OUTPUT_FORMAT 7UL
+
+/* CK (OTP format) */
+#define CK_OTP_FORMAT_DECIMAL 0UL
+#define CK_OTP_FORMAT_HEXADECIMAL 1UL
+#define CK_OTP_FORMAT_ALPHANUMERIC 2UL
+#define CK_OTP_FORMAT_BINARY 3UL
+
+/* CK (OTP requirement) */
+#define CK_OTP_PARAM_IGNORED 0UL
+#define CK_OTP_PARAM_OPTIONAL 1UL
+#define CK_OTP_PARAM_MANDATORY 2UL
+
+/* CK (security) */
+#define CK_SECURITY_DOMAIN_UNSPECIFIED 0UL
+#define CK_SECURITY_DOMAIN_MANUFACTURER 1UL
+#define CK_SECURITY_DOMAIN_OPERATOR 2UL
+#define CK_SECURITY_DOMAIN_THIRD_PARTY 3UL
+
+/* CK (SP800 KDF) */
+#define CK_SP800_108_ITERATION_VARIABLE 0x00000001UL
+#define CK_SP800_108_OPTIONAL_COUNTER 0x00000002UL
+#define CK_SP800_108_COUNTER 0x00000002UL
+#define CK_SP800_108_DKM_LENGTH 0x00000003UL
+#define CK_SP800_108_BYTE_ARRAY 0x00000004UL
+#define CK_SP800_108_KEY_HANDLE 0x00000005UL
+
+/* CK (SP800 DKM) */
+#define CK_SP800_108_DKM_LENGTH_SUM_OF_KEYS 0x00000001UL
+#define CK_SP800_108_DKM_LENGTH_SUM_OF_SEGMENTS 0x00000002UL
+
+/* CKA */
+#define CKA_CLASS 0x00000000UL
+#define CKA_TOKEN 0x00000001UL
+#define CKA_PRIVATE 0x00000002UL
+#define CKA_LABEL 0x00000003UL
+#define CKA_UNIQUE_ID 0x00000004UL
+#define CKA_APPLICATION 0x00000010UL
+#define CKA_VALUE 0x00000011UL
+#define CKA_OBJECT_ID 0x00000012UL
+#define CKA_CERTIFICATE_TYPE 0x00000080UL
+#define CKA_ISSUER 0x00000081UL
+#define CKA_SERIAL_NUMBER 0x00000082UL
+#define CKA_AC_ISSUER 0x00000083UL
+#define CKA_OWNER 0x00000084UL
+#define CKA_ATTR_TYPES 0x00000085UL
+#define CKA_TRUSTED 0x00000086UL
+#define CKA_CERTIFICATE_CATEGORY 0x00000087UL
+#define CKA_JAVA_MIDP_SECURITY_DOMAIN 0x00000088UL
+#define CKA_URL 0x00000089UL
+#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY 0x0000008AUL
+#define CKA_HASH_OF_ISSUER_PUBLIC_KEY 0x0000008BUL
+#define CKA_NAME_HASH_ALGORITHM 0x0000008CUL
+#define CKA_CHECK_VALUE 0x00000090UL
+#define CKA_KEY_TYPE 0x00000100UL
+#define CKA_SUBJECT 0x00000101UL
+#define CKA_ID 0x00000102UL
+#define CKA_SENSITIVE 0x00000103UL
+#define CKA_ENCRYPT 0x00000104UL
+#define CKA_DECRYPT 0x00000105UL
+#define CKA_WRAP 0x00000106UL
+#define CKA_UNWRAP 0x00000107UL
+#define CKA_SIGN 0x00000108UL
+#define CKA_SIGN_RECOVER 0x00000109UL
+#define CKA_VERIFY 0x0000010AUL
+#define CKA_VERIFY_RECOVER 0x0000010BUL
+#define CKA_DERIVE 0x0000010CUL
+#define CKA_START_DATE 0x00000110UL
+#define CKA_END_DATE 0x00000111UL
+#define CKA_MODULUS 0x00000120UL
+#define CKA_MODULUS_BITS 0x00000121UL
+#define CKA_PUBLIC_EXPONENT 0x00000122UL
+#define CKA_PRIVATE_EXPONENT 0x00000123UL
+#define CKA_PRIME_1 0x00000124UL
+#define CKA_PRIME_2 0x00000125UL
+#define CKA_EXPONENT_1 0x00000126UL
+#define CKA_EXPONENT_2 0x00000127UL
+#define CKA_COEFFICIENT 0x00000128UL
+#define CKA_PUBLIC_KEY_INFO 0x00000129UL
+#define CKA_PRIME 0x00000130UL
+#define CKA_SUBPRIME 0x00000131UL
+#define CKA_BASE 0x00000132UL
+#define CKA_PRIME_BITS 0x00000133UL
+#define CKA_SUBPRIME_BITS 0x00000134UL
+#define CKA_SUB_PRIME_BITS 0x00000134UL
+#define CKA_VALUE_BITS 0x00000160UL
+#define CKA_VALUE_LEN 0x00000161UL
+#define CKA_EXTRACTABLE 0x00000162UL
+#define CKA_LOCAL 0x00000163UL
+#define CKA_NEVER_EXTRACTABLE 0x00000164UL
+#define CKA_ALWAYS_SENSITIVE 0x00000165UL
+#define CKA_KEY_GEN_MECHANISM 0x00000166UL
+#define CKA_MODIFIABLE 0x00000170UL
+#define CKA_COPYABLE 0x00000171UL
+#define CKA_DESTROYABLE 0x00000172UL
+#define CKA_EC_PARAMS 0x00000180UL
+#define CKA_EC_POINT 0x00000181UL
+#define CKA_ALWAYS_AUTHENTICATE 0x00000202UL
+#define CKA_WRAP_WITH_TRUSTED 0x00000210UL
+#define CKA_OTP_FORMAT 0x00000220UL
+#define CKA_OTP_LENGTH 0x00000221UL
+#define CKA_OTP_TIME_INTERVAL 0x00000222UL
+#define CKA_OTP_USER_FRIENDLY_MODE 0x00000223UL
+#define CKA_OTP_CHALLENGE_REQUIREMENT 0x00000224UL
+#define CKA_OTP_TIME_REQUIREMENT 0x00000225UL
+#define CKA_OTP_COUNTER_REQUIREMENT 0x00000226UL
+#define CKA_OTP_PIN_REQUIREMENT 0x00000227UL
+#define CKA_OTP_COUNTER 0x0000022EUL
+#define CKA_OTP_TIME 0x0000022FUL
+#define CKA_OTP_USER_IDENTIFIER 0x0000022AUL
+#define CKA_OTP_SERVICE_IDENTIFIER 0x0000022BUL
+#define CKA_OTP_SERVICE_LOGO 0x0000022CUL
+#define CKA_OTP_SERVICE_LOGO_TYPE 0x0000022DUL
+#define CKA_GOSTR3410_PARAMS 0x00000250UL
+#define CKA_GOSTR3411_PARAMS 0x00000251UL
+#define CKA_GOST28147_PARAMS 0x00000252UL
+#define CKA_HW_FEATURE_TYPE 0x00000300UL
+#define CKA_RESET_ON_INIT 0x00000301UL
+#define CKA_HAS_RESET 0x00000302UL
+#define CKA_PIXEL_X 0x00000400UL
+#define CKA_PIXEL_Y 0x00000401UL
+#define CKA_RESOLUTION 0x00000402UL
+#define CKA_CHAR_ROWS 0x00000403UL
+#define CKA_CHAR_COLUMNS 0x00000404UL
+#define CKA_COLOR 0x00000405UL
+#define CKA_BITS_PER_PIXEL 0x00000406UL
+#define CKA_CHAR_SETS 0x00000480UL
+#define CKA_ENCODING_METHODS 0x00000481UL
+#define CKA_MIME_TYPES 0x00000482UL
+#define CKA_MECHANISM_TYPE 0x00000500UL
+#define CKA_REQUIRED_CMS_ATTRIBUTES 0x00000501UL
+#define CKA_DEFAULT_CMS_ATTRIBUTES 0x00000502UL
+#define CKA_SUPPORTED_CMS_ATTRIBUTES 0x00000503UL
+#define CKA_PROFILE_ID 0x00000601UL
+#define CKA_X2RATCHET_BAG 0x00000602UL
+#define CKA_X2RATCHET_BAGSIZE 0x00000603UL
+#define CKA_X2RATCHET_BOBS1STMSG 0x00000604UL
+#define CKA_X2RATCHET_CKR 0x00000605UL
+#define CKA_X2RATCHET_CKS 0x00000606UL
+#define CKA_X2RATCHET_DHP 0x00000607UL
+#define CKA_X2RATCHET_DHR 0x00000608UL
+#define CKA_X2RATCHET_DHS 0x00000609UL
+#define CKA_X2RATCHET_HKR 0x0000060AUL
+#define CKA_X2RATCHET_HKS 0x0000060BUL
+#define CKA_X2RATCHET_ISALICE 0x0000060CUL
+#define CKA_X2RATCHET_NHKR 0x0000060DUL
+#define CKA_X2RATCHET_NHKS 0x0000060EUL
+#define CKA_X2RATCHET_NR 0x0000060FUL
+#define CKA_X2RATCHET_NS 0x00000610UL
+#define CKA_X2RATCHET_PNS 0x00000611UL
+#define CKA_X2RATCHET_RK 0x00000612UL
+#define CKA_HSS_LEVELS 0x00000617UL
+#define CKA_HSS_LMS_TYPE 0x00000618UL
+#define CKA_HSS_LMOTS_TYPE 0x00000619UL
+#define CKA_HSS_LMS_TYPES 0x0000061AUL
+#define CKA_HSS_LMOTS_TYPES 0x0000061BUL
+#define CKA_HSS_KEYS_REMAINING 0x0000061CUL
+#define CKA_PARAMETER_SET 0x0000061DUL
+#define CKA_OBJECT_VALIDATION_FLAGS 0x0000061EUL
+#define CKA_VALIDATION_TYPE 0x0000061FUL
+#define CKA_VALIDATION_VERSION 0x00000620UL
+#define CKA_VALIDATION_LEVEL 0x00000621UL
+#define CKA_VALIDATION_MODULE_ID 0x00000622UL
+#define CKA_VALIDATION_FLAG 0x00000623UL
+#define CKA_VALIDATION_AUTHORITY_TYPE 0x00000624UL
+#define CKA_VALIDATION_COUNTRY 0x00000625UL
+#define CKA_VALIDATION_CERTIFICATE_IDENTIFIER 0x00000626UL
+#define CKA_VALIDATION_CERTIFICATE_URI 0x00000627UL
+#define CKA_VALIDATION_VENDOR_URI 0x00000628UL
+#define CKA_VALIDATION_PROFILE 0x00000629UL
+#define CKA_ENCAPSULATE_TEMPLATE 0x0000062AUL
+#define CKA_DECAPSULATE_TEMPLATE 0x0000062BUL
+#define CKA_TRUST_SERVER_AUTH 0x0000062CUL
+#define CKA_TRUST_CLIENT_AUTH 0x0000062DUL
+#define CKA_TRUST_CODE_SIGNING 0x0000062EUL
+#define CKA_TRUST_EMAIL_PROTECTION 0x0000062FUL
+#define CKA_TRUST_IPSEC_IKE 0x00000630UL
+#define CKA_TRUST_TIME_STAMPING 0x00000631UL
+#define CKA_TRUST_OCSP_SIGNING 0x00000632UL
+#define CKA_ENCAPSULATE 0x00000633UL
+#define CKA_DECAPSULATE 0x00000634UL
+#define CKA_HASH_OF_CERTIFICATE 0x00000635UL
+#define CKA_PUBLIC_CRC64_VALUE 0x00000636UL
+#define CKA_SEED 0x00000637UL
+#define CKA_VENDOR_DEFINED 0x80000000UL
+/* Array attributes */
+#define CKA_WRAP_TEMPLATE 0x40000211UL
+#define CKA_UNWRAP_TEMPLATE 0x40000212UL
+#define CKA_DERIVE_TEMPLATE 0x40000213UL
+#define CKA_ALLOWED_MECHANISMS 0x40000600UL
+/* Deprecated */
+#ifdef PKCS11_DEPRECATED
+#define CKA_ECDSA_PARAMS 0x00000180UL
+#define CKA_SECONDARY_AUTH 0x00000200UL
+#define CKA_AUTH_PIN_FLAGS 0x00000201UL
+#endif
+/* CKC */
+#define CKC_X_509 0x00000000UL
+#define CKC_X_509_ATTR_CERT 0x00000001UL
+#define CKC_WTLS 0x00000002UL
+#define CKC_VENDOR_DEFINED 0x80000000UL
+
+/* CKD */
+#define CKD_NULL 0x00000001UL
+#define CKD_SHA1_KDF 0x00000002UL
+#define CKD_SHA1_KDF_ASN1 0x00000003UL
+#define CKD_SHA1_KDF_CONCATENATE 0x00000004UL
+#define CKD_SHA224_KDF 0x00000005UL
+#define CKD_SHA256_KDF 0x00000006UL
+#define CKD_SHA384_KDF 0x00000007UL
+#define CKD_SHA512_KDF 0x00000008UL
+#define CKD_CPDIVERSIFY_KDF 0x00000009UL
+#define CKD_SHA3_224_KDF 0x0000000AUL
+#define CKD_SHA3_256_KDF 0x0000000BUL
+#define CKD_SHA3_384_KDF 0x0000000CUL
+#define CKD_SHA3_512_KDF 0x0000000DUL
+#define CKD_SHA1_KDF_SP800 0x0000000EUL
+#define CKD_SHA224_KDF_SP800 0x0000000FUL
+#define CKD_SHA256_KDF_SP800 0x00000010UL
+#define CKD_SHA384_KDF_SP800 0x00000011UL
+#define CKD_SHA512_KDF_SP800 0x00000012UL
+#define CKD_SHA3_224_KDF_SP800 0x00000013UL
+#define CKD_SHA3_256_KDF_SP800 0x00000014UL
+#define CKD_SHA3_384_KDF_SP800 0x00000015UL
+#define CKD_SHA3_512_KDF_SP800 0x00000016UL
+#define CKD_BLAKE2B_160_KDF 0x00000017UL
+#define CKD_BLAKE2B_256_KDF 0x00000018UL
+#define CKD_BLAKE2B_384_KDF 0x00000019UL
+#define CKD_BLAKE2B_512_KDF 0x0000001AUL
+
+/* CFK (array attributes) */
+#define CKF_ARRAY_ATTRIBUTE 0x40000000UL
+
+/* CKF (capabilities) */
+#define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001UL
+#define CKF_OS_LOCKING_OK 0x00000002UL
+
+/* CKF (HKDF) */
+#define CKF_HKDF_SALT_NULL 0x00000001UL
+#define CKF_HKDF_SALT_DATA 0x00000002UL
+#define CKF_HKDF_SALT_KEY 0x00000004UL
+
+/* CKF (interface) */
+#define CKF_INTERFACE_FORK_SAFE 0x00000001UL
+
+/* CKF (mechanism) */
+#define CKF_HW 0x00000001UL
+#define CKF_MESSAGE_ENCRYPT 0x00000002UL
+#define CKF_MESSAGE_DECRYPT 0x00000004UL
+#define CKF_MESSAGE_SIGN 0x00000008UL
+#define CKF_MESSAGE_VERIFY 0x00000010UL
+#define CKF_MULTI_MESSAGE 0x00000020UL
+#define CKF_MULTI_MESSGE 0x00000020UL
+#define CKF_FIND_OBJECTS 0x00000040UL
+#define CKF_ENCRYPT 0x00000100UL
+#define CKF_DECRYPT 0x00000200UL
+#define CKF_DIGEST 0x00000400UL
+#define CKF_SIGN 0x00000800UL
+#define CKF_SIGN_RECOVER 0x00001000UL
+#define CKF_VERIFY 0x00002000UL
+#define CKF_VERIFY_RECOVER 0x00004000UL
+#define CKF_GENERATE 0x00008000UL
+#define CKF_GENERATE_KEY_PAIR 0x00010000UL
+#define CKF_WRAP 0x00020000UL
+#define CKF_UNWRAP 0x00040000UL
+#define CKF_DERIVE 0x00080000UL
+#define CKF_EC_F_P 0x00100000UL
+#define CKF_EC_F_2M 0x00200000UL
+#define CKF_EC_ECPARAMETERS 0x00400000UL
+#define CKF_EC_OID 0x00800000UL
+#define CKF_EC_UNCOMPRESS 0x01000000UL
+#define CKF_EC_COMPRESS 0x02000000UL
+#define CKF_EC_CURVENAME 0x04000000UL
+#define CKF_ENCAPSULATE 0x10000000UL
+#define CKF_DECAPSULATE 0x20000000UL
+#define CKF_EXTENSION 0x80000000UL
+/* Deprecated */
+#ifdef PKCS11_DEPRECATED
+#define CKF_EC_NAMEDCURVE 0x00800000U
+#endif
-/* Compatibility interface is default, unless CRYPTOKI_GNU is
- given. */
-#ifndef CRYPTOKI_GNU
-#ifndef CRYPTOKI_COMPAT
-#define CRYPTOKI_COMPAT 1
+/* CKF (message) */
+#define CKF_END_OF_MESSAGE 0x00000001UL
+
+/* CKF (OTP) */
+#define CKF_NEXT_OTP 0x00000001UL
+#define CKF_EXCLUDE_TIME 0x00000002UL
+#define CKF_EXCLUDE_COUNTER 0x00000004UL
+#define CKF_EXCLUDE_CHALLENGE 0x00000008UL
+#define CKF_EXCLUDE_PIN 0x00000010UL
+#define CKF_USER_FRIENDLY_OTP 0x00000020UL
+
+/* CKF (parameters to functions) */
+#define CKF_DONT_BLOCK 1
+
+/* CKF (session) */
+#define CKF_RW_SESSION 0x00000002UL
+#define CKF_SERIAL_SESSION 0x00000004UL
+#define CKF_ASYNC_SESSION 0x00000008UL
+
+/* CFK (slot) */
+#define CKF_TOKEN_PRESENT 0x00000001UL
+#define CKF_REMOVABLE_DEVICE 0x00000002UL
+#define CKF_HW_SLOT 0x00000004UL
+
+/* CKF (token) */
+#define CKF_RNG 0x00000001UL
+#define CKF_WRITE_PROTECTED 0x00000002UL
+#define CKF_LOGIN_REQUIRED 0x00000004UL
+#define CKF_USER_PIN_INITIALIZED 0x00000008UL
+#define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020UL
+#define CKF_CLOCK_ON_TOKEN 0x00000040UL
+#define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100UL
+#define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200UL
+#define CKF_TOKEN_INITIALIZED 0x00000400UL
+#define CKF_SECONDARY_AUTHENTICATION 0x00000800UL
+#define CKF_USER_PIN_COUNT_LOW 0x00010000UL
+#define CKF_USER_PIN_FINAL_TRY 0x00020000UL
+#define CKF_USER_PIN_LOCKED 0x00040000UL
+#define CKF_USER_PIN_TO_BE_CHANGED 0x00080000UL
+#define CKF_SO_PIN_COUNT_LOW 0x00100000UL
+#define CKF_SO_PIN_FINAL_TRY 0x00200000UL
+#define CKF_SO_PIN_LOCKED 0x00400000UL
+#define CKF_SO_PIN_TO_BE_CHANGED 0x00800000UL
+#define CKF_ERROR_STATE 0x01000000UL
+#define CKF_SEED_RANDOM_REQUIRED 0x02000000UL
+#define CKF_ASYNC_SESSION_SUPPORTED 0x04000000UL
+
+/* CKG (GCM) */
+#define CKG_NO_GENERATE 0x00000000UL
+#define CKG_GENERATE 0x00000001UL
+#define CKG_GENERATE_COUNTER 0x00000002UL
+#define CKG_GENERATE_RANDOM 0x00000003UL
+#define CKG_GENERATE_COUNTER_XOR 0x00000004UL
+
+/* CKG (MFG) */
+#define CKG_MGF1_SHA1 0x00000001UL
+#define CKG_MGF1_SHA256 0x00000002UL
+#define CKG_MGF1_SHA384 0x00000003UL
+#define CKG_MGF1_SHA512 0x00000004UL
+#define CKG_MGF1_SHA224 0x00000005UL
+#define CKG_MGF1_SHA3_224 0x00000006UL
+#define CKG_MGF1_SHA3_256 0x00000007UL
+#define CKG_MGF1_SHA3_384 0x00000008UL
+#define CKG_MGF1_SHA3_512 0x00000009UL
+
+/* CKH (clock) */
+#define CKH_MONOTONIC_COUNTER 0x00000001UL
+#define CKH_CLOCK 0x00000002UL
+#define CKH_USER_INTERFACE 0x00000003UL
+#define CKH_VENDOR_DEFINED 0x80000000UL
+
+/* CKH (hedge type) */
+#define CKH_HEDGE_PREFERRED 0x00000000UL
+#define CKH_HEDGE_REQUIRED 0x00000001UL
+#define CKH_DETERMINISTIC_REQUIRED 0x00000002UL
+
+/* CKK */
+#define CKK_RSA 0x00000000UL
+#define CKK_DSA 0x00000001UL
+#define CKK_DH 0x00000002UL
+#define CKK_EC 0x00000003UL
+#define CKK_X9_42_DH 0x00000004UL
+#define CKK_KEA 0x00000005UL
+#define CKK_GENERIC_SECRET 0x00000010UL
+#define CKK_RC2 0x00000011UL
+#define CKK_RC4 0x00000012UL
+#define CKK_DES 0x00000013UL
+#define CKK_DES2 0x00000014UL
+#define CKK_DES3 0x00000015UL
+#define CKK_CAST 0x00000016UL
+#define CKK_CAST3 0x00000017UL
+#define CKK_CAST128 0x00000018UL
+#define CKK_RC5 0x00000019UL
+#define CKK_IDEA 0x0000001AUL
+#define CKK_SKIPJACK 0x0000001BUL
+#define CKK_BATON 0x0000001CUL
+#define CKK_JUNIPER 0x0000001DUL
+#define CKK_CDMF 0x0000001EUL
+#define CKK_AES 0x0000001FUL
+#define CKK_BLOWFISH 0x00000020UL
+#define CKK_TWOFISH 0x00000021UL
+#define CKK_SECURID 0x00000022UL
+#define CKK_HOTP 0x00000023UL
+#define CKK_ACTI 0x00000024UL
+#define CKK_CAMELLIA 0x00000025UL
+#define CKK_ARIA 0x00000026UL
+#define CKK_MD5_HMAC 0x00000027UL
+#define CKK_SHA_1_HMAC 0x00000028UL
+#define CKK_RIPEMD128_HMAC 0x00000029UL
+#define CKK_RIPEMD160_HMAC 0x0000002AUL
+#define CKK_SHA256_HMAC 0x0000002BUL
+#define CKK_SHA384_HMAC 0x0000002CUL
+#define CKK_SHA512_HMAC 0x0000002DUL
+#define CKK_SHA224_HMAC 0x0000002EUL
+#define CKK_SEED 0x0000002FUL
+#define CKK_GOSTR3410 0x00000030UL
+#define CKK_GOSTR3411 0x00000031UL
+#define CKK_GOST28147 0x00000032UL
+#define CKK_CHACHA20 0x00000033UL
+#define CKK_POLY1305 0x00000034UL
+#define CKK_AES_XTS 0x00000035UL
+#define CKK_SHA3_224_HMAC 0x00000036UL
+#define CKK_SHA3_256_HMAC 0x00000037UL
+#define CKK_SHA3_384_HMAC 0x00000038UL
+#define CKK_SHA3_512_HMAC 0x00000039UL
+#define CKK_BLAKE2B_160_HMAC 0x0000003AUL
+#define CKK_BLAKE2B_256_HMAC 0x0000003BUL
+#define CKK_BLAKE2B_384_HMAC 0x0000003CUL
+#define CKK_BLAKE2B_512_HMAC 0x0000003DUL
+#define CKK_SALSA20 0x0000003EUL
+#define CKK_X2RATCHET 0x0000003FUL
+#define CKK_EC_EDWARDS 0x00000040UL
+#define CKK_EC_MONTGOMERY 0x00000041UL
+#define CKK_HKDF 0x00000042UL
+#define CKK_SHA512_224_HMAC 0x00000043UL
+#define CKK_SHA512_256_HMAC 0x00000044UL
+#define CKK_SHA512_T_HMAC 0x00000045UL
+#define CKK_HSS 0x00000046UL
+#define CKK_XMSS 0x00000047UL
+#define CKK_XMSSMT 0x00000048UL
+#define CKK_ML_KEM 0x00000049UL
+#define CKK_ML_DSA 0x0000004AUL
+#define CKK_SLH_DSA 0x0000004BUL
+#define CKK_VENDOR_DEFINED 0x80000000UL
+/* Deprecated */
+#ifdef PKCS11_DEPRECATED
+#define CKK_ECDSA 0x00000003UL
+#define CKK_CAST5 0x00000018UL
#endif
+
+/* CKM */
+#define CKM_RSA_PKCS_KEY_PAIR_GEN 0x00000000UL
+#define CKM_RSA_PKCS 0x00000001UL
+#define CKM_RSA_9796 0x00000002UL
+#define CKM_RSA_X_509 0x00000003UL
+#define CKM_MD2_RSA_PKCS 0x00000004UL
+#define CKM_MD5_RSA_PKCS 0x00000005UL
+#define CKM_SHA1_RSA_PKCS 0x00000006UL
+#define CKM_RIPEMD128_RSA_PKCS 0x00000007UL
+#define CKM_RIPEMD160_RSA_PKCS 0x00000008UL
+#define CKM_RSA_PKCS_OAEP 0x00000009UL
+#define CKM_RSA_X9_31_KEY_PAIR_GEN 0x0000000AUL
+#define CKM_RSA_X9_31 0x0000000BUL
+#define CKM_SHA1_RSA_X9_31 0x0000000CUL
+#define CKM_RSA_PKCS_PSS 0x0000000DUL
+#define CKM_SHA1_RSA_PKCS_PSS 0x0000000EUL
+#define CKM_ML_KEM_KEY_PAIR_GEN 0x0000000FUL
+#define CKM_DSA_KEY_PAIR_GEN 0x00000010UL
+#define CKM_DSA 0x00000011UL
+#define CKM_DSA_SHA1 0x00000012UL
+#define CKM_DSA_SHA224 0x00000013UL
+#define CKM_DSA_SHA256 0x00000014UL
+#define CKM_DSA_SHA384 0x00000015UL
+#define CKM_DSA_SHA512 0x00000016UL
+#define CKM_ML_KEM 0x00000017UL
+#define CKM_DSA_SHA3_224 0x00000018UL
+#define CKM_DSA_SHA3_256 0x00000019UL
+#define CKM_DSA_SHA3_384 0x0000001AUL
+#define CKM_DSA_SHA3_512 0x0000001BUL
+#define CKM_ML_DSA_KEY_PAIR_GEN 0x0000001CUL
+#define CKM_ML_DSA 0x0000001DUL
+#define CKM_HASH_ML_DSA 0x0000001FUL
+#define CKM_DH_PKCS_KEY_PAIR_GEN 0x00000020UL
+#define CKM_DH_PKCS_DERIVE 0x00000021UL
+#define CKM_HASH_ML_DSA_SHA224 0x00000023UL
+#define CKM_HASH_ML_DSA_SHA256 0x00000024UL
+#define CKM_HASH_ML_DSA_SHA384 0x00000025UL
+#define CKM_HASH_ML_DSA_SHA512 0x00000026UL
+#define CKM_HASH_ML_DSA_SHA3_224 0x00000027UL
+#define CKM_HASH_ML_DSA_SHA3_256 0x00000028UL
+#define CKM_HASH_ML_DSA_SHA3_384 0x00000029UL
+#define CKM_HASH_ML_DSA_SHA3_512 0x0000002AUL
+#define CKM_HASH_ML_DSA_SHAKE128 0x0000002BUL
+#define CKM_HASH_ML_DSA_SHAKE256 0x0000002CUL
+#define CKM_SLH_DSA_KEY_PAIR_GEN 0x0000002DUL
+#define CKM_SLH_DSA 0x0000002EUL
+#define CKM_X9_42_DH_KEY_PAIR_GEN 0x00000030UL
+#define CKM_X9_42_DH_DERIVE 0x00000031UL
+#define CKM_X9_42_DH_HYBRID_DERIVE 0x00000032UL
+#define CKM_X9_42_MQV_DERIVE 0x00000033UL
+#define CKM_HASH_SLH_DSA 0x00000034UL
+#define CKM_HASH_SLH_DSA_SHA224 0x00000036UL
+#define CKM_HASH_SLH_DSA_SHA256 0x00000037UL
+#define CKM_HASH_SLH_DSA_SHA384 0x00000038UL
+#define CKM_HASH_SLH_DSA_SHA512 0x00000039UL
+#define CKM_HASH_SLH_DSA_SHA3_224 0x0000003AUL
+#define CKM_HASH_SLH_DSA_SHA3_256 0x0000003BUL
+#define CKM_HASH_SLH_DSA_SHA3_384 0x0000003CUL
+#define CKM_HASH_SLH_DSA_SHA3_512 0x0000003DUL
+#define CKM_HASH_SLH_DSA_SHAKE128 0x0000003EUL
+#define CKM_HASH_SLH_DSA_SHAKE256 0x0000003FUL
+#define CKM_SHA256_RSA_PKCS 0x00000040UL
+#define CKM_SHA384_RSA_PKCS 0x00000041UL
+#define CKM_SHA512_RSA_PKCS 0x00000042UL
+#define CKM_SHA256_RSA_PKCS_PSS 0x00000043UL
+#define CKM_SHA384_RSA_PKCS_PSS 0x00000044UL
+#define CKM_SHA512_RSA_PKCS_PSS 0x00000045UL
+#define CKM_SHA224_RSA_PKCS 0x00000046UL
+#define CKM_SHA224_RSA_PKCS_PSS 0x00000047UL
+#define CKM_SHA512_224 0x00000048UL
+#define CKM_SHA512_224_HMAC 0x00000049UL
+#define CKM_SHA512_224_HMAC_GENERAL 0x0000004AUL
+#define CKM_SHA512_224_KEY_DERIVATION 0x0000004BUL
+#define CKM_SHA512_256 0x0000004CUL
+#define CKM_SHA512_256_HMAC 0x0000004DUL
+#define CKM_SHA512_256_HMAC_GENERAL 0x0000004EUL
+#define CKM_SHA512_256_KEY_DERIVATION 0x0000004FUL
+#define CKM_SHA512_T 0x00000050UL
+#define CKM_SHA512_T_HMAC 0x00000051UL
+#define CKM_SHA512_T_HMAC_GENERAL 0x00000052UL
+#define CKM_SHA512_T_KEY_DERIVATION 0x00000053UL
+#define CKM_TLS12_EXTENDED_MASTER_KEY_DERIVE 0x00000056UL
+#define CKM_TLS12_EXTENDED_MASTER_KEY_DERIVE_DH 0x00000057UL
+#define CKM_SHA3_256_RSA_PKCS 0x00000060UL
+#define CKM_SHA3_384_RSA_PKCS 0x00000061UL
+#define CKM_SHA3_512_RSA_PKCS 0x00000062UL
+#define CKM_SHA3_256_RSA_PKCS_PSS 0x00000063UL
+#define CKM_SHA3_384_RSA_PKCS_PSS 0x00000064UL
+#define CKM_SHA3_512_RSA_PKCS_PSS 0x00000065UL
+#define CKM_SHA3_224_RSA_PKCS 0x00000066UL
+#define CKM_SHA3_224_RSA_PKCS_PSS 0x00000067UL
+#define CKM_RC2_KEY_GEN 0x00000100UL
+#define CKM_RC2_ECB 0x00000101UL
+#define CKM_RC2_CBC 0x00000102UL
+#define CKM_RC2_MAC 0x00000103UL
+#define CKM_RC2_MAC_GENERAL 0x00000104UL
+#define CKM_RC2_CBC_PAD 0x00000105UL
+#define CKM_RC4_KEY_GEN 0x00000110UL
+#define CKM_RC4 0x00000111UL
+#define CKM_DES_KEY_GEN 0x00000120UL
+#define CKM_DES_ECB 0x00000121UL
+#define CKM_DES_CBC 0x00000122UL
+#define CKM_DES_MAC 0x00000123UL
+#define CKM_DES_MAC_GENERAL 0x00000124UL
+#define CKM_DES_CBC_PAD 0x00000125UL
+#define CKM_DES2_KEY_GEN 0x00000130UL
+#define CKM_DES3_KEY_GEN 0x00000131UL
+#define CKM_DES3_ECB 0x00000132UL
+#define CKM_DES3_CBC 0x00000133UL
+#define CKM_DES3_MAC 0x00000134UL
+#define CKM_DES3_MAC_GENERAL 0x00000135UL
+#define CKM_DES3_CBC_PAD 0x00000136UL
+#define CKM_DES3_CMAC_GENERAL 0x00000137UL
+#define CKM_DES3_CMAC 0x00000138UL
+#define CKM_CDMF_KEY_GEN 0x00000140UL
+#define CKM_CDMF_ECB 0x00000141UL
+#define CKM_CDMF_CBC 0x00000142UL
+#define CKM_CDMF_MAC 0x00000143UL
+#define CKM_CDMF_MAC_GENERAL 0x00000144UL
+#define CKM_CDMF_CBC_PAD 0x00000145UL
+#define CKM_DES_OFB64 0x00000150UL
+#define CKM_DES_OFB8 0x00000151UL
+#define CKM_DES_CFB64 0x00000152UL
+#define CKM_DES_CFB8 0x00000153UL
+#define CKM_MD2 0x00000200UL
+#define CKM_MD2_HMAC 0x00000201UL
+#define CKM_MD2_HMAC_GENERAL 0x00000202UL
+#define CKM_MD5 0x00000210UL
+#define CKM_MD5_HMAC 0x00000211UL
+#define CKM_MD5_HMAC_GENERAL 0x00000212UL
+#define CKM_SHA_1 0x00000220UL
+#define CKM_SHA_1_HMAC 0x00000221UL
+#define CKM_SHA_1_HMAC_GENERAL 0x00000222UL
+#define CKM_RIPEMD128 0x00000230UL
+#define CKM_RIPEMD128_HMAC 0x00000231UL
+#define CKM_RIPEMD128_HMAC_GENERAL 0x00000232UL
+#define CKM_RIPEMD160 0x00000240UL
+#define CKM_RIPEMD160_HMAC 0x00000241UL
+#define CKM_RIPEMD160_HMAC_GENERAL 0x00000242UL
+#define CKM_SHA256 0x00000250UL
+#define CKM_SHA256_HMAC 0x00000251UL
+#define CKM_SHA256_HMAC_GENERAL 0x00000252UL
+#define CKM_SHA224 0x00000255UL
+#define CKM_SHA224_HMAC 0x00000256UL
+#define CKM_SHA224_HMAC_GENERAL 0x00000257UL
+#define CKM_SHA384 0x00000260UL
+#define CKM_SHA384_HMAC 0x00000261UL
+#define CKM_SHA384_HMAC_GENERAL 0x00000262UL
+#define CKM_SHA512 0x00000270UL
+#define CKM_SHA512_HMAC 0x00000271UL
+#define CKM_SHA512_HMAC_GENERAL 0x00000272UL
+#define CKM_SECURID_KEY_GEN 0x00000280UL
+#define CKM_SECURID 0x00000282UL
+#define CKM_HOTP_KEY_GEN 0x00000290UL
+#define CKM_HOTP 0x00000291UL
+#define CKM_ACTI 0x000002A0UL
+#define CKM_ACTI_KEY_GEN 0x000002A1UL
+#define CKM_SHA3_256 0x000002B0UL
+#define CKM_SHA3_256_HMAC 0x000002B1UL
+#define CKM_SHA3_256_HMAC_GENERAL 0x000002B2UL
+#define CKM_SHA3_256_KEY_GEN 0x000002B3UL
+#define CKM_SHA3_224 0x000002B5UL
+#define CKM_SHA3_224_HMAC 0x000002B6UL
+#define CKM_SHA3_224_HMAC_GENERAL 0x000002B7UL
+#define CKM_SHA3_224_KEY_GEN 0x000002B8UL
+#define CKM_SHA3_384 0x000002C0UL
+#define CKM_SHA3_384_HMAC 0x000002C1UL
+#define CKM_SHA3_384_HMAC_GENERAL 0x000002C2UL
+#define CKM_SHA3_384_KEY_GEN 0x000002C3UL
+#define CKM_SHA3_512 0x000002D0UL
+#define CKM_SHA3_512_HMAC 0x000002D1UL
+#define CKM_SHA3_512_HMAC_GENERAL 0x000002D2UL
+#define CKM_SHA3_512_KEY_GEN 0x000002D3UL
+#define CKM_CAST_KEY_GEN 0x00000300UL
+#define CKM_CAST_ECB 0x00000301UL
+#define CKM_CAST_CBC 0x00000302UL
+#define CKM_CAST_MAC 0x00000303UL
+#define CKM_CAST_MAC_GENERAL 0x00000304UL
+#define CKM_CAST_CBC_PAD 0x00000305UL
+#define CKM_CAST3_KEY_GEN 0x00000310UL
+#define CKM_CAST3_ECB 0x00000311UL
+#define CKM_CAST3_CBC 0x00000312UL
+#define CKM_CAST3_MAC 0x00000313UL
+#define CKM_CAST3_MAC_GENERAL 0x00000314UL
+#define CKM_CAST3_CBC_PAD 0x00000315UL
+#define CKM_CAST128_KEY_GEN 0x00000320UL
+#define CKM_CAST128_ECB 0x00000321UL
+#define CKM_CAST128_MAC 0x00000323UL
+#define CKM_CAST128_CBC 0x00000322UL
+#define CKM_CAST128_MAC_GENERAL 0x00000324UL
+#define CKM_CAST128_CBC_PAD 0x00000325UL
+#define CKM_RC5_KEY_GEN 0x00000330UL
+#define CKM_RC5_ECB 0x00000331UL
+#define CKM_RC5_CBC 0x00000332UL
+#define CKM_RC5_MAC 0x00000333UL
+#define CKM_RC5_MAC_GENERAL 0x00000334UL
+#define CKM_RC5_CBC_PAD 0x00000335UL
+#define CKM_IDEA_KEY_GEN 0x00000340UL
+#define CKM_IDEA_ECB 0x00000341UL
+#define CKM_IDEA_CBC 0x00000342UL
+#define CKM_IDEA_MAC 0x00000343UL
+#define CKM_IDEA_MAC_GENERAL 0x00000344UL
+#define CKM_IDEA_CBC_PAD 0x00000345UL
+#define CKM_GENERIC_SECRET_KEY_GEN 0x00000350UL
+#define CKM_CONCATENATE_BASE_AND_KEY 0x00000360UL
+#define CKM_CONCATENATE_BASE_AND_DATA 0x00000362UL
+#define CKM_CONCATENATE_DATA_AND_BASE 0x00000363UL
+#define CKM_XOR_BASE_AND_DATA 0x00000364UL
+#define CKM_EXTRACT_KEY_FROM_KEY 0x00000365UL
+#define CKM_SSL3_PRE_MASTER_KEY_GEN 0x00000370UL
+#define CKM_SSL3_MASTER_KEY_DERIVE 0x00000371UL
+#define CKM_SSL3_KEY_AND_MAC_DERIVE 0x00000372UL
+#define CKM_SSL3_MASTER_KEY_DERIVE_DH 0x00000373UL
+#define CKM_TLS_PRE_MASTER_KEY_GEN 0x00000374UL
+#define CKM_TLS_MASTER_KEY_DERIVE 0x00000375UL
+#define CKM_TLS_KEY_AND_MAC_DERIVE 0x00000376UL
+#define CKM_TLS_MASTER_KEY_DERIVE_DH 0x00000377UL
+#define CKM_TLS_PRF 0x00000378UL
+#define CKM_SSL3_MD5_MAC 0x00000380UL
+#define CKM_SSL3_SHA1_MAC 0x00000381UL
+#define CKM_MD5_KEY_DERIVATION 0x00000390UL
+#define CKM_MD2_KEY_DERIVATION 0x00000391UL
+#define CKM_SHA1_KEY_DERIVATION 0x00000392UL
+#define CKM_SHA256_KEY_DERIVATION 0x00000393UL
+#define CKM_SHA384_KEY_DERIVATION 0x00000394UL
+#define CKM_SHA512_KEY_DERIVATION 0x00000395UL
+#define CKM_SHA224_KEY_DERIVATION 0x00000396UL
+#define CKM_SHA3_256_KEY_DERIVATION 0x00000397UL
+#define CKM_SHA3_256_KEY_DERIVE 0x00000397UL
+#define CKM_SHA3_224_KEY_DERIVATION 0x00000398UL
+#define CKM_SHA3_224_KEY_DERIVE 0x00000398UL
+#define CKM_SHA3_384_KEY_DERIVATION 0x00000399UL
+#define CKM_SHA3_384_KEY_DERIVE 0x00000399UL
+#define CKM_SHA3_512_KEY_DERIVATION 0x0000039AUL
+#define CKM_SHA3_512_KEY_DERIVE 0x0000039AUL
+#define CKM_SHAKE_128_KEY_DERIVATION 0x0000039BUL
+#define CKM_SHAKE_128_KEY_DERIVE 0x0000039BUL
+#define CKM_SHAKE_256_KEY_DERIVATION 0x0000039CUL
+#define CKM_SHAKE_256_KEY_DERIVE 0x0000039CUL
+#define CKM_PBE_MD2_DES_CBC 0x000003A0UL
+#define CKM_PBE_MD5_DES_CBC 0x000003A1UL
+#define CKM_PBE_MD5_CAST_CBC 0x000003A2UL
+#define CKM_PBE_MD5_CAST3_CBC 0x000003A3UL
+#define CKM_PBE_MD5_CAST128_CBC 0x000003A4UL
+#define CKM_PBE_SHA1_CAST128_CBC 0x000003A5UL
+#define CKM_PBE_SHA1_RC4_128 0x000003A6UL
+#define CKM_PBE_SHA1_RC4_40 0x000003A7UL
+#define CKM_PBE_SHA1_DES3_EDE_CBC 0x000003A8UL
+#define CKM_PBE_SHA1_DES2_EDE_CBC 0x000003A9UL
+#define CKM_PBE_SHA1_RC2_128_CBC 0x000003AAUL
+#define CKM_PBE_SHA1_RC2_40_CBC 0x000003ABUL
+#define CKM_PKCS5_PBKD2 0x000003B0UL
+#define CKM_PBA_SHA1_WITH_SHA1_HMAC 0x000003C0UL
+#define CKM_WTLS_PRE_MASTER_KEY_GEN 0x000003D0UL
+#define CKM_WTLS_MASTER_KEY_DERIVE 0x000003D1UL
+#define CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC 0x000003D2UL
+#define CKM_WTLS_PRF 0x000003D3UL
+#define CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE 0x000003D4UL
+#define CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE 0x000003D5UL
+#define CKM_TLS10_MAC_SERVER 0x000003D6UL
+#define CKM_TLS10_MAC_CLIENT 0x000003D7UL
+#define CKM_TLS12_MAC 0x000003D8UL
+#define CKM_TLS12_KDF 0x000003D9UL
+#define CKM_TLS12_MASTER_KEY_DERIVE 0x000003E0UL
+#define CKM_TLS12_KEY_AND_MAC_DERIVE 0x000003E1UL
+#define CKM_TLS12_MASTER_KEY_DERIVE_DH 0x000003E2UL
+#define CKM_TLS12_KEY_SAFE_DERIVE 0x000003E3UL
+#define CKM_TLS_MAC 0x000003E4UL
+#define CKM_TLS_KDF 0x000003E5UL
+#define CKM_KEY_WRAP_LYNKS 0x00000400UL
+#define CKM_KEY_WRAP_SET_OAEP 0x00000401UL
+#define CKM_CMS_SIG 0x00000500UL
+#define CKM_KIP_DERIVE 0x00000510UL
+#define CKM_KIP_WRAP 0x00000511UL
+#define CKM_KIP_MAC 0x00000512UL
+#define CKM_CAMELLIA_KEY_GEN 0x00000550UL
+#define CKM_CAMELLIA_ECB 0x00000551UL
+#define CKM_CAMELLIA_CBC 0x00000552UL
+#define CKM_CAMELLIA_MAC 0x00000553UL
+#define CKM_CAMELLIA_MAC_GENERAL 0x00000554UL
+#define CKM_CAMELLIA_CBC_PAD 0x00000555UL
+#define CKM_CAMELLIA_ECB_ENCRYPT_DATA 0x00000556UL
+#define CKM_CAMELLIA_CBC_ENCRYPT_DATA 0x00000557UL
+#define CKM_CAMELLIA_CTR 0x00000558UL
+#define CKM_ARIA_KEY_GEN 0x00000560UL
+#define CKM_ARIA_ECB 0x00000561UL
+#define CKM_ARIA_CBC 0x00000562UL
+#define CKM_ARIA_MAC 0x00000563UL
+#define CKM_ARIA_MAC_GENERAL 0x00000564UL
+#define CKM_ARIA_CBC_PAD 0x00000565UL
+#define CKM_ARIA_ECB_ENCRYPT_DATA 0x00000566UL
+#define CKM_ARIA_CBC_ENCRYPT_DATA 0x00000567UL
+#define CKM_SEED_KEY_GEN 0x00000650UL
+#define CKM_SEED_ECB 0x00000651UL
+#define CKM_SEED_CBC 0x00000652UL
+#define CKM_SEED_MAC 0x00000653UL
+#define CKM_SEED_MAC_GENERAL 0x00000654UL
+#define CKM_SEED_CBC_PAD 0x00000655UL
+#define CKM_SEED_ECB_ENCRYPT_DATA 0x00000656UL
+#define CKM_SEED_CBC_ENCRYPT_DATA 0x00000657UL
+#define CKM_SKIPJACK_KEY_GEN 0x00001000UL
+#define CKM_SKIPJACK_ECB64 0x00001001UL
+#define CKM_SKIPJACK_CBC64 0x00001002UL
+#define CKM_SKIPJACK_OFB64 0x00001003UL
+#define CKM_SKIPJACK_CFB64 0x00001004UL
+#define CKM_SKIPJACK_CFB32 0x00001005UL
+#define CKM_SKIPJACK_CFB16 0x00001006UL
+#define CKM_SKIPJACK_CFB8 0x00001007UL
+#define CKM_SKIPJACK_WRAP 0x00001008UL
+#define CKM_SKIPJACK_PRIVATE_WRAP 0x00001009UL
+#define CKM_SKIPJACK_RELAYX 0x0000100AUL
+#define CKM_KEA_KEY_PAIR_GEN 0x00001010UL
+#define CKM_KEA_KEY_DERIVE 0x00001011UL
+#define CKM_KEA_DERIVE 0x00001012UL
+#define CKM_FORTEZZA_TIMESTAMP 0x00001020UL
+#define CKM_BATON_KEY_GEN 0x00001030UL
+#define CKM_BATON_ECB128 0x00001031UL
+#define CKM_BATON_ECB96 0x00001032UL
+#define CKM_BATON_CBC128 0x00001033UL
+#define CKM_BATON_COUNTER 0x00001034UL
+#define CKM_BATON_SHUFFLE 0x00001035UL
+#define CKM_BATON_WRAP 0x00001036UL
+#define CKM_EC_KEY_PAIR_GEN 0x00001040UL
+#define CKM_ECDSA 0x00001041UL
+#define CKM_ECDSA_SHA1 0x00001042UL
+#define CKM_ECDSA_SHA224 0x00001043UL
+#define CKM_ECDSA_SHA256 0x00001044UL
+#define CKM_ECDSA_SHA384 0x00001045UL
+#define CKM_ECDSA_SHA512 0x00001046UL
+#define CKM_EC_KEY_PAIR_GEN_W_EXTRA_BITS 0x0000140BUL
+#define CKM_ECDH1_DERIVE 0x00001050UL
+#define CKM_ECDH1_COFACTOR_DERIVE 0x00001051UL
+#define CKM_ECMQV_DERIVE 0x00001052UL
+#define CKM_ECDH_AES_KEY_WRAP 0x00001053UL
+#define CKM_RSA_AES_KEY_WRAP 0x00001054UL
+#define CKM_JUNIPER_KEY_GEN 0x00001060UL
+#define CKM_JUNIPER_ECB128 0x00001061UL
+#define CKM_JUNIPER_CBC128 0x00001062UL
+#define CKM_JUNIPER_COUNTER 0x00001063UL
+#define CKM_JUNIPER_SHUFFLE 0x00001064UL
+#define CKM_JUNIPER_WRAP 0x00001065UL
+#define CKM_FASTHASH 0x00001070UL
+#define CKM_AES_XTS 0x00001071UL
+#define CKM_AES_XTS_KEY_GEN 0x00001072UL
+#define CKM_AES_KEY_GEN 0x00001080UL
+#define CKM_AES_ECB 0x00001081UL
+#define CKM_AES_CBC 0x00001082UL
+#define CKM_AES_MAC 0x00001083UL
+#define CKM_AES_MAC_GENERAL 0x00001084UL
+#define CKM_AES_CBC_PAD 0x00001085UL
+#define CKM_AES_CTR 0x00001086UL
+#define CKM_AES_GCM 0x00001087UL
+#define CKM_AES_CCM 0x00001088UL
+#define CKM_AES_CTS 0x00001089UL
+#define CKM_AES_CMAC 0x0000108AUL
+#define CKM_AES_CMAC_GENERAL 0x0000108BUL
+#define CKM_AES_XCBC_MAC 0x0000108CUL
+#define CKM_AES_XCBC_MAC_96 0x0000108DUL
+#define CKM_AES_GMAC 0x0000108EUL
+#define CKM_BLOWFISH_KEY_GEN 0x00001090UL
+#define CKM_BLOWFISH_CBC 0x00001091UL
+#define CKM_TWOFISH_KEY_GEN 0x00001092UL
+#define CKM_TWOFISH_CBC 0x00001093UL
+#define CKM_BLOWFISH_CBC_PAD 0x00001094UL
+#define CKM_TWOFISH_CBC_PAD 0x00001095UL
+#define CKM_DES_ECB_ENCRYPT_DATA 0x00001100UL
+#define CKM_DES_CBC_ENCRYPT_DATA 0x00001101UL
+#define CKM_DES3_ECB_ENCRYPT_DATA 0x00001102UL
+#define CKM_DES3_CBC_ENCRYPT_DATA 0x00001103UL
+#define CKM_AES_ECB_ENCRYPT_DATA 0x00001104UL
+#define CKM_AES_CBC_ENCRYPT_DATA 0x00001105UL
+#define CKM_GOSTR3410_KEY_PAIR_GEN 0x00001200UL
+#define CKM_GOSTR3410 0x00001201UL
+#define CKM_GOSTR3410_WITH_GOSTR3411 0x00001202UL
+#define CKM_GOSTR3410_KEY_WRAP 0x00001203UL
+#define CKM_GOSTR3410_DERIVE 0x00001204UL
+#define CKM_GOSTR3411 0x00001210UL
+#define CKM_GOSTR3411_HMAC 0x00001211UL
+#define CKM_GOST28147_KEY_GEN 0x00001220UL
+#define CKM_GOST28147_ECB 0x00001221UL
+#define CKM_GOST28147 0x00001222UL
+#define CKM_GOST28147_MAC 0x00001223UL
+#define CKM_GOST28147_KEY_WRAP 0x00001224UL
+#define CKM_CHACHA20_KEY_GEN 0x00001225UL
+#define CKM_CHACHA20 0x00001226UL
+#define CKM_POLY1305_KEY_GEN 0x00001227UL
+#define CKM_POLY1305 0x00001228UL
+#define CKM_DSA_PARAMETER_GEN 0x00002000UL
+#define CKM_DH_PKCS_PARAMETER_GEN 0x00002001UL
+#define CKM_X9_42_DH_PARAMETER_GEN 0x00002002UL
+#define CKM_DSA_PROBABILISTIC_PARAMETER_GEN 0x00002003UL
+#define CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN 0x00002004UL
+#define CKM_DSA_FIPS_G_GEN 0x00002005UL
+#define CKM_AES_OFB 0x00002104UL
+#define CKM_AES_CFB64 0x00002105UL
+#define CKM_AES_CFB8 0x00002106UL
+#define CKM_AES_CFB128 0x00002107UL
+#define CKM_AES_CFB1 0x00002108UL
+#define CKM_AES_KEY_WRAP 0x00002109UL
+#define CKM_AES_KEY_WRAP_PAD 0x0000210AUL
+#define CKM_AES_KEY_WRAP_KWP 0x0000210BUL
+#define CKM_AES_KEY_WRAP_PKCS7 0x0000210CUL
+#define CKM_RSA_PKCS_TPM_1_1 0x00004001UL
+#define CKM_RSA_PKCS_OAEP_TPM_1_1 0x00004002UL
+#define CKM_SHA_1_KEY_GEN 0x00004003UL
+#define CKM_SHA224_KEY_GEN 0x00004004UL
+#define CKM_SHA256_KEY_GEN 0x00004005UL
+#define CKM_SHA384_KEY_GEN 0x00004006UL
+#define CKM_SHA512_KEY_GEN 0x00004007UL
+#define CKM_SHA512_224_KEY_GEN 0x00004008UL
+#define CKM_SHA512_256_KEY_GEN 0x00004009UL
+#define CKM_SHA512_T_KEY_GEN 0x0000400AUL
+#define CKM_NULL 0x0000400BUL
+#define CKM_BLAKE2B_160 0x0000400CUL
+#define CKM_BLAKE2B_160_HMAC 0x0000400DUL
+#define CKM_BLAKE2B_160_HMAC_GENERAL 0x0000400EUL
+#define CKM_BLAKE2B_160_KEY_DERIVE 0x0000400FUL
+#define CKM_BLAKE2B_160_KEY_GEN 0x00004010UL
+#define CKM_BLAKE2B_256 0x00004011UL
+#define CKM_BLAKE2B_256_HMAC 0x00004012UL
+#define CKM_BLAKE2B_256_HMAC_GENERAL 0x00004013UL
+#define CKM_BLAKE2B_256_KEY_DERIVE 0x00004014UL
+#define CKM_BLAKE2B_256_KEY_GEN 0x00004015UL
+#define CKM_BLAKE2B_384 0x00004016UL
+#define CKM_BLAKE2B_384_HMAC 0x00004017UL
+#define CKM_BLAKE2B_384_HMAC_GENERAL 0x00004018UL
+#define CKM_BLAKE2B_384_KEY_DERIVE 0x00004019UL
+#define CKM_BLAKE2B_384_KEY_GEN 0x0000401AUL
+#define CKM_BLAKE2B_512 0x0000401BUL
+#define CKM_BLAKE2B_512_HMAC 0x0000401CUL
+#define CKM_BLAKE2B_512_HMAC_GENERAL 0x0000401DUL
+#define CKM_BLAKE2B_512_KEY_DERIVE 0x0000401EUL
+#define CKM_BLAKE2B_512_KEY_GEN 0x0000401FUL
+#define CKM_SALSA20 0x00004020UL
+#define CKM_CHACHA20_POLY1305 0x00004021UL
+#define CKM_SALSA20_POLY1305 0x00004022UL
+#define CKM_X3DH_INITIALIZE 0x00004023UL
+#define CKM_X3DH_RESPOND 0x00004024UL
+#define CKM_X2RATCHET_INITIALIZE 0x00004025UL
+#define CKM_X2RATCHET_RESPOND 0x00004026UL
+#define CKM_X2RATCHET_ENCRYPT 0x00004027UL
+#define CKM_X2RATCHET_DECRYPT 0x00004028UL
+#define CKM_XEDDSA 0x00004029UL
+#define CKM_HKDF_DERIVE 0x0000402AUL
+#define CKM_HKDF_DATA 0x0000402BUL
+#define CKM_HKDF_KEY_GEN 0x0000402CUL
+#define CKM_SALSA20_KEY_GEN 0x0000402DUL
+#define CKM_ECDSA_SHA3_224 0x00001047UL
+#define CKM_ECDSA_SHA3_256 0x00001048UL
+#define CKM_ECDSA_SHA3_384 0x00001049UL
+#define CKM_ECDSA_SHA3_512 0x0000104AUL
+#define CKM_EC_EDWARDS_KEY_PAIR_GEN 0x00001055UL
+#define CKM_EC_MONTGOMERY_KEY_PAIR_GEN 0x00001056UL
+#define CKM_EDDSA 0x00001057UL
+#define CKM_SP800_108_COUNTER_KDF 0x000003ACUL
+#define CKM_SP800_108_FEEDBACK_KDF 0x000003ADUL
+#define CKM_SP800_108_DOUBLE_PIPELINE_KDF 0x000003AEUL
+#define CKM_IKE2_PRF_PLUS_DERIVE 0x0000402EUL
+#define CKM_IKE_PRF_DERIVE 0x0000402FUL
+#define CKM_IKE1_PRF_DERIVE 0x00004030UL
+#define CKM_IKE1_EXTENDED_DERIVE 0x00004031UL
+#define CKM_HSS_KEY_PAIR_GEN 0x00004032UL
+#define CKM_HSS 0x00004033UL
+#define CKM_XMSS_KEY_PAIR_GEN 0x00004034UL
+#define CKM_XMSSMT_KEY_PAIR_GEN 0x00004035UL
+#define CKM_XMSS 0x00004036UL
+#define CKM_XMSSMT 0x00004037UL
+#define CKM_ECDH_X_AES_KEY_WRAP 0x00004038UL
+#define CKM_ECDH_COF_AES_KEY_WRAP 0x00004039UL
+#define CKM_PUB_KEY_FROM_PRIV_KEY 0x0000403AUL
+#define CKM_VENDOR_DEFINED 0x80000000UL
+/* Deprecated */
+#ifdef PKCS11_DEPRECATED
+#define CKM_CAST5_KEY_GEN 0x00000320UL
+#define CKM_CAST5_ECB 0x00000321UL
+#define CKM_CAST5_CBC 0x00000322UL
+#define CKM_CAST5_MAC 0x00000323UL
+#define CKM_CAST5_MAC_GENERAL 0x00000324UL
+#define CKM_CAST5_CBC_PAD 0x00000325UL
+#define CKM_PBE_MD5_CAST5_CBC 0x000003A4UL
+#define CKM_PBE_SHA1_CAST5_CBC 0x000003A5UL
+#define CKM_ECDSA_KEY_PAIR_GEN 0x00001040UL
+#define CKM_DSA_PROBABLISTIC_PARAMETER_GEN 0x00002003UL
#endif
-/* System dependencies. */
+/* CKN */
+#define CKN_SURRENDER 0UL
+#define CKN_OTP_CHANGED 1UL
+
+/* CKO */
+#define CKO_DATA 0x00000000UL
+#define CKO_CERTIFICATE 0x00000001UL
+#define CKO_PUBLIC_KEY 0x00000002UL
+#define CKO_PRIVATE_KEY 0x00000003UL
+#define CKO_SECRET_KEY 0x00000004UL
+#define CKO_HW_FEATURE 0x00000005UL
+#define CKO_DOMAIN_PARAMETERS 0x00000006UL
+#define CKO_MECHANISM 0x00000007UL
+#define CKO_OTP_KEY 0x00000008UL
+#define CKO_PROFILE 0x00000009UL
+#define CKO_VALIDATION 0x0000000AUL
+#define CKO_TRUST 0x0000000BUL
+#define CKO_VENDOR_DEFINED 0x80000000UL
+
+/* CKP (profile) */
+#define CKP_INVALID_ID 0x00000000UL
+#define CKP_BASELINE_PROVIDER 0x00000001UL
+#define CKP_EXTENDED_PROVIDER 0x00000002UL
+#define CKP_AUTHENTICATION_TOKEN 0x00000003UL
+#define CKP_PUBLIC_CERTIFICATES_TOKEN 0x00000004UL
+#define CKP_COMPLETE_PROVIDER 0x00000005UL
+#define CKP_HKDF_TLS_TOKEN 0x00000006UL
+#define CKP_VENDOR_DEFINED 0x80000000UL
+
+/* CKP (PBKD2) */
+#define CKP_PKCS5_PBKD2_HMAC_SHA1 0x00000001UL
+#define CKP_PKCS5_PBKD2_HMAC_GOSTR3411 0x00000002UL
+#define CKP_PKCS5_PBKD2_HMAC_SHA224 0x00000003UL
+#define CKP_PKCS5_PBKD2_HMAC_SHA256 0x00000004UL
+#define CKP_PKCS5_PBKD2_HMAC_SHA384 0x00000005UL
+#define CKP_PKCS5_PBKD2_HMAC_SHA512 0x00000006UL
+#define CKP_PKCS5_PBKD2_HMAC_SHA512_224 0x00000007UL
+#define CKP_PKCS5_PBKD2_HMAC_SHA512_256 0x00000008UL
+
+/* CKP (ML-DSA) */
+#define CKP_ML_DSA_44 0x00000001UL
+#define CKP_ML_DSA_65 0x00000002UL
+#define CKP_ML_DSA_87 0x00000003UL
+
+/* CKP (ML_KEM) */
+#define CKP_ML_KEM_512 0x00000001UL
+#define CKP_ML_KEM_768 0x00000002UL
+#define CKP_ML_KEM_1024 0x00000003UL
+
+/* CKP (SLH-DSA) */
+#define CKP_SLH_DSA_SHA2_128S 0x00000001UL
+#define CKP_SLH_DSA_SHAKE_128S 0x00000002UL
+#define CKP_SLH_DSA_SHA2_128F 0x00000003UL
+#define CKP_SLH_DSA_SHAKE_128F 0x00000004UL
+#define CKP_SLH_DSA_SHA2_192S 0x00000005UL
+#define CKP_SLH_DSA_SHAKE_192S 0x00000006UL
+#define CKP_SLH_DSA_SHA2_192F 0x00000007UL
+#define CKP_SLH_DSA_SHAKE_192F 0x00000008UL
+#define CKP_SLH_DSA_SHA2_256S 0x00000009UL
+#define CKP_SLH_DSA_SHAKE_256S 0x0000000AUL
+#define CKP_SLH_DSA_SHA2_256F 0x0000000BUL
+#define CKP_SLH_DSA_SHAKE_256F 0x0000000CUL
+
+/* CKR */
+#define CKR_OK 0x00000000UL
+#define CKR_CANCEL 0x00000001UL
+#define CKR_HOST_MEMORY 0x00000002UL
+#define CKR_SLOT_ID_INVALID 0x00000003UL
+#define CKR_GENERAL_ERROR 0x00000005UL
+#define CKR_FUNCTION_FAILED 0x00000006UL
+#define CKR_ARGUMENTS_BAD 0x00000007UL
+#define CKR_NO_EVENT 0x00000008UL
+#define CKR_NEED_TO_CREATE_THREADS 0x00000009UL
+#define CKR_CANT_LOCK 0x0000000AUL
+#define CKR_ATTRIBUTE_READ_ONLY 0x00000010UL
+#define CKR_ATTRIBUTE_SENSITIVE 0x00000011UL
+#define CKR_ATTRIBUTE_TYPE_INVALID 0x00000012UL
+#define CKR_ATTRIBUTE_VALUE_INVALID 0x00000013UL
+#define CKR_ACTION_PROHIBITED 0x0000001BUL
+#define CKR_DATA_INVALID 0x00000020UL
+#define CKR_DATA_LEN_RANGE 0x00000021UL
+#define CKR_DEVICE_ERROR 0x00000030UL
+#define CKR_DEVICE_MEMORY 0x00000031UL
+#define CKR_DEVICE_REMOVED 0x00000032UL
+#define CKR_ENCRYPTED_DATA_INVALID 0x00000040UL
+#define CKR_ENCRYPTED_DATA_LEN_RANGE 0x00000041UL
+#define CKR_AEAD_DECRYPT_FAILED 0x00000042UL
+#define CKR_FUNCTION_CANCELED 0x00000050UL
+#define CKR_FUNCTION_NOT_PARALLEL 0x00000051UL
+#define CKR_FUNCTION_NOT_SUPPORTED 0x00000054UL
+#define CKR_KEY_HANDLE_INVALID 0x00000060UL
+#define CKR_KEY_SIZE_RANGE 0x00000062UL
+#define CKR_KEY_TYPE_INCONSISTENT 0x00000063UL
+#define CKR_KEY_NOT_NEEDED 0x00000064UL
+#define CKR_KEY_CHANGED 0x00000065UL
+#define CKR_KEY_NEEDED 0x00000066UL
+#define CKR_KEY_INDIGESTIBLE 0x00000067UL
+#define CKR_KEY_FUNCTION_NOT_PERMITTED 0x00000068UL
+#define CKR_KEY_NOT_WRAPPABLE 0x00000069UL
+#define CKR_KEY_UNEXTRACTABLE 0x0000006AUL
+#define CKR_MECHANISM_INVALID 0x00000070UL
+#define CKR_MECHANISM_PARAM_INVALID 0x00000071UL
+#define CKR_OBJECT_HANDLE_INVALID 0x00000082UL
+#define CKR_OPERATION_ACTIVE 0x00000090UL
+#define CKR_OPERATION_NOT_INITIALIZED 0x00000091UL
+#define CKR_PIN_INCORRECT 0x000000A0UL
+#define CKR_PIN_INVALID 0x000000A1UL
+#define CKR_PIN_LEN_RANGE 0x000000A2UL
+#define CKR_PIN_EXPIRED 0x000000A3UL
+#define CKR_PIN_LOCKED 0x000000A4UL
+#define CKR_SESSION_CLOSED 0x000000B0UL
+#define CKR_SESSION_COUNT 0x000000B1UL
+#define CKR_SESSION_HANDLE_INVALID 0x000000B3UL
+#define CKR_SESSION_PARALLEL_NOT_SUPPORTED 0x000000B4UL
+#define CKR_SESSION_READ_ONLY 0x000000B5UL
+#define CKR_SESSION_EXISTS 0x000000B6UL
+#define CKR_SESSION_READ_ONLY_EXISTS 0x000000B7UL
+#define CKR_SESSION_READ_WRITE_SO_EXISTS 0x000000B8UL
+#define CKR_SIGNATURE_INVALID 0x000000C0UL
+#define CKR_SIGNATURE_LEN_RANGE 0x000000C1UL
+#define CKR_TEMPLATE_INCOMPLETE 0x000000D0UL
+#define CKR_TEMPLATE_INCONSISTENT 0x000000D1UL
+#define CKR_TOKEN_NOT_PRESENT 0x000000E0UL
+#define CKR_TOKEN_NOT_RECOGNIZED 0x000000E1UL
+#define CKR_TOKEN_WRITE_PROTECTED 0x000000E2UL
+#define CKR_UNWRAPPING_KEY_HANDLE_INVALID 0x000000F0UL
+#define CKR_UNWRAPPING_KEY_SIZE_RANGE 0x000000F1UL
+#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 0x000000F2UL
+#define CKR_USER_ALREADY_LOGGED_IN 0x00000100UL
+#define CKR_USER_NOT_LOGGED_IN 0x00000101UL
+#define CKR_USER_PIN_NOT_INITIALIZED 0x00000102UL
+#define CKR_USER_TYPE_INVALID 0x00000103UL
+#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000104UL
+#define CKR_USER_TOO_MANY_TYPES 0x00000105UL
+#define CKR_WRAPPED_KEY_INVALID 0x00000110UL
+#define CKR_WRAPPED_KEY_LEN_RANGE 0x00000112UL
+#define CKR_WRAPPING_KEY_HANDLE_INVALID 0x00000113UL
+#define CKR_WRAPPING_KEY_SIZE_RANGE 0x00000114UL
+#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 0x00000115UL
+#define CKR_RANDOM_SEED_NOT_SUPPORTED 0x00000120UL
+#define CKR_RANDOM_NO_RNG 0x00000121UL
+#define CKR_DOMAIN_PARAMS_INVALID 0x00000130UL
+#define CKR_CURVE_NOT_SUPPORTED 0x00000140UL
+#define CKR_BUFFER_TOO_SMALL 0x00000150UL
+#define CKR_SAVED_STATE_INVALID 0x00000160UL
+#define CKR_INFORMATION_SENSITIVE 0x00000170UL
+#define CKR_STATE_UNSAVEABLE 0x00000180UL
+#define CKR_CRYPTOKI_NOT_INITIALIZED 0x00000190UL
+#define CKR_CRYPTOKI_ALREADY_INITIALIZED 0x00000191UL
+#define CKR_MUTEX_BAD 0x000001A0UL
+#define CKR_MUTEX_NOT_LOCKED 0x000001A1UL
+#define CKR_NEW_PIN_MODE 0x000001B0UL
+#define CKR_NEXT_OTP 0x000001B1UL
+#define CKR_EXCEEDED_MAX_ITERATIONS 0x000001B5UL
+#define CKR_FIPS_SELF_TEST_FAILED 0x000001B6UL
+#define CKR_LIBRARY_LOAD_FAILED 0x000001B7UL
+#define CKR_PIN_TOO_WEAK 0x000001B8UL
+#define CKR_PUBLIC_KEY_INVALID 0x000001B9UL
+#define CKR_FUNCTION_REJECTED 0x00000200UL
+#define CKR_TOKEN_RESOURCE_EXCEEDED 0x00000201UL
+#define CKR_OPERATION_CANCEL_FAILED 0x00000202UL
+#define CKR_KEY_EXHAUSTED 0x00000203UL
+#define CKR_PENDING 0x00000204UL
+#define CKR_SESSION_ASYNC_NOT_SUPPORTED 0x00000205UL
+#define CKR_SEED_RANDOM_REQUIRED 0x00000206UL
+#define CKR_OPERATION_NOT_VALIDATED 0x00000207UL
+#define CKR_TOKEN_NOT_INITIALIZED 0x00000208UL
+#define CKR_PARAMETER_SET_NOT_SUPPORTED 0x00000209UL
+#define CKR_VENDOR_DEFINED 0x80000000UL
+
+/* CKS */
+#define CKS_RO_PUBLIC_SESSION 0UL
+#define CKS_RO_USER_FUNCTIONS 1UL
+#define CKS_RW_PUBLIC_SESSION 2UL
+#define CKS_RW_USER_FUNCTIONS 3UL
+#define CKS_RW_SO_FUNCTIONS 4UL
+
+/* CKS (validation) */
+#define CKS_LAST_VALIDATION_OK 0x00000001UL
+
+/* CKT (trust) */
+#define CKT_TRUST_UNKNOWN 0x00000000UL
+#define CKT_TRUSTED 0x00000001UL
+#define CKT_TRUST_ANCHOR 0x00000002UL
+#define CKT_NOT_TRUSTED 0x00000003UL
+#define CKT_TRUST_MUST_VERIFY_TRUST 0x00000004UL
+
+/* CKU */
+#define CKU_SO 0UL
+#define CKU_USER 1UL
+#define CKU_CONTEXT_SPECIFIC 2UL
+
+/* CKV (validation authority) */
+#define CKV_AUTHORITY_TYPE_UNSPECIFIED 0x00000000UL
+#define CKV_AUTHORITY_TYPE_NIST_CMVP 0x00000001UL
+#define CKV_AUTHORITY_TYPE_COMMON_CRITERIA 0x00000002UL
+
+/* CKV (validation type) */
+#define CKV_TYPE_UNSPECIFIED 0x00000000UL
+#define CKV_TYPE_SOFTWARE 0x00000001UL
+#define CKV_TYPE_HARDWARE 0x00000002UL
+#define CKV_TYPE_FIRMWARE 0x00000003UL
+#define CKV_TYPE_HYBRID 0x00000004UL
+
+/* CKZ (data) */
+#define CKZ_DATA_SPECIFIED 0x00000001UL
+
+/* CKZ (salt) */
+#define CKZ_SALT_SPECIFIED 0x00000001UL
+
+/* Sundry structures type definition in alphabetical order */
+#define STRUCTDEF(__name__) \
+struct __name__; \
+typedef struct __name__ __name__; \
+typedef struct __name__ * __name__ ## _PTR; \
+typedef struct __name__ ** __name__ ## _PTR_PTR;
+
+STRUCTDEF(CK_ATTRIBUTE);
+STRUCTDEF(CK_C_INITIALIZE_ARGS);
+STRUCTDEF(CK_DATE);
+STRUCTDEF(CK_DERIVED_KEY);
+STRUCTDEF(CK_FUNCTION_LIST);
+STRUCTDEF(CK_FUNCTION_LIST_3_0);
+STRUCTDEF(CK_FUNCTION_LIST_3_2);
+STRUCTDEF(CK_INFO);
+STRUCTDEF(CK_INTERFACE);
+STRUCTDEF(CK_MECHANISM);
+STRUCTDEF(CK_MECHANISM_INFO);
+STRUCTDEF(CK_SESSION_INFO);
+STRUCTDEF(CK_SLOT_INFO);
+STRUCTDEF(CK_TOKEN_INFO);
+STRUCTDEF(CK_VERSION);
+
+/* Function type definitions */
+typedef CK_RV (* CK_NOTIFY)(CK_SESSION_HANDLE, CK_NOTIFICATION, void *);
+typedef CK_RV (* CK_CREATEMUTEX)(void **);
+typedef CK_RV (* CK_DESTROYMUTEX)(void *);
+typedef CK_RV (* CK_LOCKMUTEX)(void *);
+typedef CK_RV (* CK_UNLOCKMUTEX)(void *);
+
+/* General Structure definitions */
+struct CK_ATTRIBUTE {
+ CK_ATTRIBUTE_TYPE type;
+ void * pValue;
+ CK_ULONG ulValueLen;
+};
-#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
+struct CK_C_INITIALIZE_ARGS {
+ CK_CREATEMUTEX CreateMutex;
+ CK_DESTROYMUTEX DestroyMutex;
+ CK_LOCKMUTEX LockMutex;
+ CK_UNLOCKMUTEX UnlockMutex;
+ CK_FLAGS flags;
+ void * pReserved;
+};
-/* There is a matching pop below. */
-#pragma pack(push, cryptoki, 1)
+struct CK_DATE{
+ CK_CHAR year[4];
+ CK_CHAR month[2];
+ CK_CHAR day[2];
+};
-#ifdef CRYPTOKI_EXPORTS
-#define CK_SPEC __declspec(dllexport)
-#else
-#define CK_SPEC __declspec(dllimport)
-#endif
+struct CK_DERIVED_KEY
+{
+ CK_ATTRIBUTE * pTemplate;
+ CK_ULONG ulAttributeCount;
+ CK_OBJECT_HANDLE * phKey;
+};
-#else
+struct CK_VERSION {
+ CK_BYTE major;
+ CK_BYTE minor;
+};
-#define CK_SPEC
+struct CK_INFO {
+ struct CK_VERSION cryptokiVersion;
+ CK_UTF8CHAR manufacturerID[32];
+ CK_FLAGS flags;
+ CK_UTF8CHAR libraryDescription[32];
+ struct CK_VERSION libraryVersion;
+};
-#endif
+struct CK_INTERFACE {
+ CK_UTF8CHAR * pInterfaceName;
+ void * pFunctionList;
+ CK_FLAGS flags;
+};
-#ifdef CRYPTOKI_COMPAT
- /* If we are in compatibility mode, switch all exposed names to the
- PKCS #11 variant. There are corresponding #undefs below. */
+struct CK_MECHANISM {
+ CK_MECHANISM_TYPE mechanism;
+ void * pParameter;
+ CK_ULONG ulParameterLen;
+};
-#define ck_flags_t CK_FLAGS
-#define ck_version _CK_VERSION
+struct CK_MECHANISM_INFO {
+ CK_ULONG ulMinKeySize;
+ CK_ULONG ulMaxKeySize;
+ CK_FLAGS flags;
+};
-#define ck_info _CK_INFO
-#define cryptoki_version cryptokiVersion
-#define manufacturer_id manufacturerID
-#define library_description libraryDescription
-#define library_version libraryVersion
+struct CK_SESSION_INFO {
+ CK_SLOT_ID slotID;
+ CK_STATE state;
+ CK_FLAGS flags;
+ CK_ULONG ulDeviceError;
+};
-#define ck_notification_t CK_NOTIFICATION
-#define ck_slot_id_t CK_SLOT_ID
+struct CK_SLOT_INFO {
+ CK_UTF8CHAR slotDescription[64];
+ CK_UTF8CHAR manufacturerID[32];
+ CK_FLAGS flags;
+ CK_VERSION hardwareVersion;
+ CK_VERSION firmwareVersion;
+};
-#define ck_slot_info _CK_SLOT_INFO
-#define slot_description slotDescription
-#define hardware_version hardwareVersion
-#define firmware_version firmwareVersion
+struct CK_TOKEN_INFO {
+ CK_UTF8CHAR label[32];
+ CK_UTF8CHAR manufacturerID[32];
+ CK_UTF8CHAR model[16];
+ CK_CHAR serialNumber[16];
+ CK_FLAGS flags;
+ CK_ULONG ulMaxSessionCount;
+ CK_ULONG ulSessionCount;
+ CK_ULONG ulMaxRwSessionCount;
+ CK_ULONG ulRwSessionCount;
+ CK_ULONG ulMaxPinLen;
+ CK_ULONG ulMinPinLen;
+ CK_ULONG ulTotalPublicMemory;
+ CK_ULONG ulFreePublicMemory;
+ CK_ULONG ulTotalPrivateMemory;
+ CK_ULONG ulFreePrivateMemory;
+ CK_VERSION hardwareVersion;
+ CK_VERSION firmwareVersion;
+ CK_CHAR utcTime[16];
+};
-#define ck_token_info _CK_TOKEN_INFO
-#define serial_number serialNumber
-#define max_session_count ulMaxSessionCount
-#define session_count ulSessionCount
-#define max_rw_session_count ulMaxRwSessionCount
-#define rw_session_count ulRwSessionCount
-#define max_pin_len ulMaxPinLen
-#define min_pin_len ulMinPinLen
-#define total_public_memory ulTotalPublicMemory
-#define free_public_memory ulFreePublicMemory
-#define total_private_memory ulTotalPrivateMemory
-#define free_private_memory ulFreePrivateMemory
-#define utc_time utcTime
+/* Param Structure definitions in alphabetical order */
+STRUCTDEF(CK_AES_CBC_ENCRYPT_DATA_PARAMS);
+STRUCTDEF(CK_AES_CCM_PARAMS);
+STRUCTDEF(CK_AES_CTR_PARAMS);
+STRUCTDEF(CK_AES_GCM_PARAMS);
+STRUCTDEF(CK_ARIA_CBC_ENCRYPT_DATA_PARAMS);
+STRUCTDEF(CK_ASYNC_DATA);
+STRUCTDEF(CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS);
+STRUCTDEF(CK_CAMELLIA_CTR_PARAMS);
+STRUCTDEF(CK_CCM_MESSAGE_PARAMS);
+STRUCTDEF(CK_CCM_PARAMS);
+STRUCTDEF(CK_CCM_WRAP_PARAMS);
+STRUCTDEF(CK_CHACHA20_PARAMS);
+STRUCTDEF(CK_CMS_SIG_PARAMS);
+STRUCTDEF(CK_DES_CBC_ENCRYPT_DATA_PARAMS);
+STRUCTDEF(CK_DSA_PARAMETER_GEN_PARAM);
+STRUCTDEF(CK_ECDH_AES_KEY_WRAP_PARAMS);
+STRUCTDEF(CK_ECDH1_DERIVE_PARAMS);
+STRUCTDEF(CK_ECDH2_DERIVE_PARAMS);
+STRUCTDEF(CK_ECMQV_DERIVE_PARAMS);
+STRUCTDEF(CK_EDDSA_PARAMS);
+STRUCTDEF(CK_GCM_MESSAGE_PARAMS);
+STRUCTDEF(CK_GCM_PARAMS);
+STRUCTDEF(CK_GCM_WRAP_PARAMS);
+STRUCTDEF(CK_GOSTR3410_DERIVE_PARAMS);
+STRUCTDEF(CK_GOSTR3410_KEY_WRAP_PARAMS);
+STRUCTDEF(CK_HASH_SIGN_ADDITIONAL_CONTEXT);
+STRUCTDEF(CK_HKDF_PARAMS);
+STRUCTDEF(CK_IKE_PRF_DERIVE_PARAMS);
+STRUCTDEF(CK_IKE1_EXTENDED_DERIVE_PARAMS);
+STRUCTDEF(CK_IKE1_PRF_DERIVE_PARAMS);
+STRUCTDEF(CK_IKE2_PRF_PLUS_DERIVE_PARAMS);
+STRUCTDEF(CK_KEA_DERIVE_PARAMS);
+STRUCTDEF(CK_KEY_DERIVATION_STRING_DATA);
+STRUCTDEF(CK_KEY_WRAP_SET_OAEP_PARAMS);
+STRUCTDEF(CK_KIP_PARAMS);
+STRUCTDEF(CK_OTP_PARAM);
+STRUCTDEF(CK_OTP_PARAMS);
+STRUCTDEF(CK_OTP_SIGNATURE_INFO);
+STRUCTDEF(CK_PBE_PARAMS);
+STRUCTDEF(CK_PKCS5_PBKD2_PARAMS);
+STRUCTDEF(CK_PKCS5_PBKD2_PARAMS2);
+STRUCTDEF(CK_PRF_DATA_PARAM);
+STRUCTDEF(CK_RC2_CBC_PARAMS);
+STRUCTDEF(CK_RC2_MAC_GENERAL_PARAMS);
+STRUCTDEF(CK_RC5_CBC_PARAMS);
+STRUCTDEF(CK_RC5_MAC_GENERAL_PARAMS);
+STRUCTDEF(CK_RC5_PARAMS);
+STRUCTDEF(CK_RSA_AES_KEY_WRAP_PARAMS);
+STRUCTDEF(CK_RSA_PKCS_OAEP_PARAMS);
+STRUCTDEF(CK_RSA_PKCS_PSS_PARAMS);
+STRUCTDEF(CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS);
+STRUCTDEF(CK_SALSA20_CHACHA20_POLY1305_PARAMS);
+STRUCTDEF(CK_SALSA20_PARAMS);
+STRUCTDEF(CK_SEED_CBC_ENCRYPT_DATA_PARAMS);
+STRUCTDEF(CK_SIGN_ADDITIONAL_CONTEXT);
+STRUCTDEF(CK_SKIPJACK_PRIVATE_WRAP_PARAMS);
+STRUCTDEF(CK_SKIPJACK_RELAYX_PARAMS);
+STRUCTDEF(CK_SP800_108_COUNTER_FORMAT);
+STRUCTDEF(CK_SP800_108_DKM_LENGTH_FORMAT);
+STRUCTDEF(CK_SP800_108_FEEDBACK_KDF_PARAMS);
+STRUCTDEF(CK_SP800_108_KDF_PARAMS);
+STRUCTDEF(CK_TLS12_EXTENDED_MASTER_KEY_DERIVE_PARAMS);
+STRUCTDEF(CK_X2RATCHET_INITIALIZE_PARAMS);
+STRUCTDEF(CK_X2RATCHET_RESPOND_PARAMS);
+STRUCTDEF(CK_X3DH_INITIATE_PARAMS);
+STRUCTDEF(CK_X3DH_RESPOND_PARAMS);
+STRUCTDEF(CK_X9_42_DH1_DERIVE_PARAMS);
+STRUCTDEF(CK_X9_42_DH2_DERIVE_PARAMS);
+STRUCTDEF(CK_X9_42_MQV_DERIVE_PARAMS);
+STRUCTDEF(CK_XEDDSA_PARAMS);
+STRUCTDEF(specifiedParams);
+
+struct CK_AES_CBC_ENCRYPT_DATA_PARAMS {
+ CK_BYTE iv[16];
+ CK_BYTE * pData;
+ CK_ULONG length;
+};
-#define ck_session_handle_t CK_SESSION_HANDLE
-#define ck_user_type_t CK_USER_TYPE
-#define ck_state_t CK_STATE
+struct CK_AES_CCM_PARAMS {
+ CK_ULONG ulDataLen;
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceLen;
+ CK_BYTE * pAAD;
+ CK_ULONG ulAADLen;
+ CK_ULONG ulMACLen;
+};
-#define ck_session_info _CK_SESSION_INFO
-#define slot_id slotID
-#define device_error ulDeviceError
+struct CK_AES_CTR_PARAMS {
+ CK_ULONG ulCounterBits;
+ CK_BYTE cb[16];
+};
-#define ck_object_handle_t CK_OBJECT_HANDLE
-#define ck_object_class_t CK_OBJECT_CLASS
-#define ck_hw_feature_type_t CK_HW_FEATURE_TYPE
-#define ck_key_type_t CK_KEY_TYPE
-#define ck_certificate_type_t CK_CERTIFICATE_TYPE
-#define ck_attribute_type_t CK_ATTRIBUTE_TYPE
+struct CK_AES_GCM_PARAMS {
+ CK_BYTE * pIv;
+ CK_ULONG ulIvLen;
+ CK_ULONG ulIvBits;
+ CK_BYTE * pAAD;
+ CK_ULONG ulAADLen;
+ CK_ULONG ulTagBits;
+};
-#define ck_attribute _CK_ATTRIBUTE
-#define value pValue
-#define value_len ulValueLen
+struct CK_ARIA_CBC_ENCRYPT_DATA_PARAMS {
+ CK_BYTE iv[16];
+ CK_BYTE * pData;
+ CK_ULONG length;
+};
-#define ck_date _CK_DATE
+struct CK_ASYNC_DATA {
+ CK_ULONG ulVersion;
+ CK_BYTE * pValue;
+ CK_ULONG ulValue;
+ CK_OBJECT_HANDLE hObject;
+ CK_OBJECT_HANDLE hAdditionalObject;
+};
-#define ck_mechanism_type_t CK_MECHANISM_TYPE
+struct CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS {
+ CK_BYTE iv[16];
+ CK_BYTE * pData;
+ CK_ULONG length;
+};
-#define ck_rsa_pkcs_mgf_type_t CK_RSA_PKCS_MGF_TYPE
+struct CK_CAMELLIA_CTR_PARAMS {
+ CK_ULONG ulCounterBits;
+ CK_BYTE cb[16];
+};
-#define ck_mechanism _CK_MECHANISM
-#define parameter pParameter
-#define parameter_len ulParameterLen
+struct CK_CCM_MESSAGE_PARAMS {
+ CK_ULONG ulDataLen;
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceLen;
+ CK_ULONG ulNonceFixedBits;
+ CK_GENERATOR_FUNCTION nonceGenerator;
+ CK_BYTE * pMAC;
+ CK_ULONG ulMACLen;
+};
-#define ck_mechanism_info _CK_MECHANISM_INFO
-#define min_key_size ulMinKeySize
-#define max_key_size ulMaxKeySize
+struct CK_CCM_PARAMS {
+ CK_ULONG ulDataLen;
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceLen;
+ CK_BYTE * pAAD;
+ CK_ULONG ulAADLen;
+ CK_ULONG ulMACLen;
+};
+struct CK_CCM_WRAP_PARAMS {
+ CK_ULONG ulDataLen;
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceLen;
+ CK_ULONG ulNonceFixedBits;
+ CK_GENERATOR_FUNCTION nonceGenerator;
+ CK_BYTE * pAAD;
+ CK_ULONG ulAADLen;
+ CK_ULONG ulMACLen;
+};
-#define ck_rv_t CK_RV
-#define ck_notify_t CK_NOTIFY
+struct CK_CHACHA20_PARAMS {
+ CK_BYTE * pBlockCounter;
+ CK_ULONG blockCounterBits;
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceBits;
+};
-#define ck_interface CK_INTERFACE
+struct CK_CMS_SIG_PARAMS {
+ CK_OBJECT_HANDLE certificateHandle;
+ CK_MECHANISM * pSigningMechanism;
+ CK_MECHANISM * pDigestMechanism;
+ CK_UTF8CHAR * pContentType;
+ CK_BYTE * pRequestedAttributes;
+ CK_ULONG ulRequestedAttributesLen;
+ CK_BYTE * pRequiredAttributes;
+ CK_ULONG ulRequiredAttributesLen;
+};
-#define ck_function_list _CK_FUNCTION_LIST
-#define ck_function_list_3_0 _CK_FUNCTION_LIST_3_0
+struct CK_DES_CBC_ENCRYPT_DATA_PARAMS {
+ CK_BYTE iv[8];
+ CK_BYTE * pData;
+ CK_ULONG length;
+};
-#define ck_createmutex_t CK_CREATEMUTEX
-#define ck_destroymutex_t CK_DESTROYMUTEX
-#define ck_lockmutex_t CK_LOCKMUTEX
-#define ck_unlockmutex_t CK_UNLOCKMUTEX
+struct CK_DSA_PARAMETER_GEN_PARAM {
+ CK_MECHANISM_TYPE hash;
+ CK_BYTE * pSeed;
+ CK_ULONG ulSeedLen;
+ CK_ULONG ulIndex;
+};
-#define ck_c_initialize_args _CK_C_INITIALIZE_ARGS
-#define create_mutex CreateMutex
-#define destroy_mutex DestroyMutex
-#define lock_mutex LockMutex
-#define unlock_mutex UnlockMutex
-#define reserved pReserved
+struct CK_ECDH_AES_KEY_WRAP_PARAMS {
+ CK_ULONG ulAESKeyBits;
+ CK_EC_KDF_TYPE kdf;
+ CK_ULONG ulSharedDataLen;
+ CK_BYTE * pSharedData;
+};
-#define ck_ec_kdf_type_t CK_EC_KDF_TYPE
+struct CK_ECDH1_DERIVE_PARAMS {
+ CK_EC_KDF_TYPE kdf;
+ CK_ULONG ulSharedDataLen;
+ CK_BYTE * pSharedData;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * pPublicData;
+};
-#define ck_ecdh1_derive_args _CK_ECDH1_DERIVE_PARAMS
-#define shared_data_len ulSharedDataLen
-#define shared_data pSharedData
-#define public_data_len ulPublicDataLen
-#define public_data pPublicData
+struct CK_ECDH2_DERIVE_PARAMS {
+ CK_EC_KDF_TYPE kdf;
+ CK_ULONG ulSharedDataLen;
+ CK_BYTE * pSharedData;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * pPublicData;
+ CK_ULONG ulPrivateDataLen;
+ CK_OBJECT_HANDLE hPrivateData;
+ CK_ULONG ulPublicDataLen2;
+ CK_BYTE * pPublicData2;
+};
-#endif /* CRYPTOKI_COMPAT */
+struct CK_ECMQV_DERIVE_PARAMS {
+ CK_EC_KDF_TYPE kdf;
+ CK_ULONG ulSharedDataLen;
+ CK_BYTE * pSharedData;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * pPublicData;
+ CK_ULONG ulPrivateDataLen;
+ CK_OBJECT_HANDLE hPrivateData;
+ CK_ULONG ulPublicDataLen2;
+ CK_BYTE * pPublicData2;
+ CK_OBJECT_HANDLE publicKey;
+};
+struct CK_EDDSA_PARAMS {
+ CK_BBOOL phFlag;
+ CK_ULONG ulContextDataLen;
+ CK_BYTE * pContextData;
+};
-typedef unsigned long ck_flags_t;
+struct CK_GCM_MESSAGE_PARAMS {
+ CK_BYTE * pIv;
+ CK_ULONG ulIvLen;
+ CK_ULONG ulIvFixedBits;
+ CK_GENERATOR_FUNCTION ivGenerator;
+ CK_BYTE * pTag;
+ CK_ULONG ulTagBits;
+};
-struct ck_version
-{
- unsigned char major;
- unsigned char minor;
+struct CK_GCM_PARAMS {
+ CK_BYTE * pIv;
+ CK_ULONG ulIvLen;
+ CK_ULONG ulIvBits;
+ CK_BYTE * pAAD;
+ CK_ULONG ulAADLen;
+ CK_ULONG ulTagBits;
};
+struct CK_GCM_WRAP_PARAMS {
+ CK_BYTE * pIv;
+ CK_ULONG ulIvLen;
+ CK_ULONG ulIvFixedBits;
+ CK_GENERATOR_FUNCTION ivGenerator;
+ CK_BYTE * pAAD;
+ CK_ULONG ulAADLen;
+ CK_ULONG ulTagBits;
+};
-struct ck_info
-{
- struct ck_version cryptoki_version;
- unsigned char manufacturer_id[32];
- ck_flags_t flags;
- unsigned char library_description[32];
- struct ck_version library_version;
+struct CK_GOSTR3410_DERIVE_PARAMS {
+ CK_EC_KDF_TYPE kdf;
+ CK_BYTE * pPublicData;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * pUKM;
+ CK_ULONG ulUKMLen;
};
+struct CK_GOSTR3410_KEY_WRAP_PARAMS {
+ CK_BYTE * pWrapOID;
+ CK_ULONG ulWrapOIDLen;
+ CK_BYTE * pUKM;
+ CK_ULONG ulUKMLen;
+ CK_OBJECT_HANDLE hKey;
+};
-typedef unsigned long ck_notification_t;
+struct CK_HASH_SIGN_ADDITIONAL_CONTEXT {
+ CK_HEDGE_TYPE hedgeVariant;
+ CK_BYTE * pContext;
+ CK_ULONG ulContextLen;
+ CK_MECHANISM_TYPE hash;
+};
-#define CKN_SURRENDER (0UL)
+struct CK_HKDF_PARAMS {
+ CK_BBOOL bExtract;
+ CK_BBOOL bExpand;
+ CK_MECHANISM_TYPE prfHashMechanism;
+ CK_ULONG ulSaltType;
+ CK_BYTE * pSalt;
+ CK_ULONG ulSaltLen;
+ CK_OBJECT_HANDLE hSaltKey;
+ CK_BYTE * pInfo;
+ CK_ULONG ulInfoLen;
+};
+struct CK_IKE_PRF_DERIVE_PARAMS {
+ CK_MECHANISM_TYPE prfMechanism;
+ CK_BBOOL bDataAsKey;
+ CK_BBOOL bRekey;
+ CK_BYTE * pNi;
+ CK_ULONG ulNiLen;
+ CK_BYTE * pNr;
+ CK_ULONG ulNrLen;
+ CK_OBJECT_HANDLE hNewKey;
+};
-typedef unsigned long ck_slot_id_t;
+struct CK_IKE1_EXTENDED_DERIVE_PARAMS {
+ CK_MECHANISM_TYPE prfMechanism;
+ CK_BBOOL bHasKeygxy;
+ CK_OBJECT_HANDLE hKeygxy;
+ CK_BYTE * pExtraData;
+ CK_ULONG ulExtraDataLen;
+};
+struct CK_IKE1_PRF_DERIVE_PARAMS {
+ CK_MECHANISM_TYPE prfMechanism;
+ CK_BBOOL bHasPrevKey;
+ CK_OBJECT_HANDLE hKeygxy;
+ CK_OBJECT_HANDLE hPrevKey;
+ CK_BYTE * pCKYi;
+ CK_ULONG ulCKYiLen;
+ CK_BYTE * pCKYr;
+ CK_ULONG ulCKYrLen;
+ CK_BYTE keyNumber;
+};
-struct ck_slot_info
-{
- unsigned char slot_description[64];
- unsigned char manufacturer_id[32];
- ck_flags_t flags;
- struct ck_version hardware_version;
- struct ck_version firmware_version;
+struct CK_IKE2_PRF_PLUS_DERIVE_PARAMS {
+ CK_MECHANISM_TYPE prfMechanism;
+ CK_BBOOL bHasSeedKey;
+ CK_OBJECT_HANDLE hSeedKey;
+ CK_BYTE * pSeedData;
+ CK_ULONG ulSeedDataLen;
};
+struct CK_KEA_DERIVE_PARAMS {
+ CK_BBOOL isSender;
+ CK_ULONG ulRandomLen;
+ CK_BYTE * RandomA;
+ CK_BYTE * RandomB;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * PublicData;
+};
-#define CKF_TOKEN_PRESENT (1UL << 0)
-#define CKF_REMOVABLE_DEVICE (1UL << 1)
-#define CKF_HW_SLOT (1UL << 2)
-#define CKF_ARRAY_ATTRIBUTE (1UL << 30)
+struct CK_KEY_DERIVATION_STRING_DATA {
+ CK_BYTE * pData;
+ CK_ULONG ulLen;
+};
+struct CK_KEY_WRAP_SET_OAEP_PARAMS {
+ CK_BYTE bBC;
+ CK_BYTE * pX;
+ CK_ULONG ulXLen;
+};
-struct ck_token_info
-{
- unsigned char label[32];
- unsigned char manufacturer_id[32];
- unsigned char model[16];
- unsigned char serial_number[16];
- ck_flags_t flags;
- unsigned long max_session_count;
- unsigned long session_count;
- unsigned long max_rw_session_count;
- unsigned long rw_session_count;
- unsigned long max_pin_len;
- unsigned long min_pin_len;
- unsigned long total_public_memory;
- unsigned long free_public_memory;
- unsigned long total_private_memory;
- unsigned long free_private_memory;
- struct ck_version hardware_version;
- struct ck_version firmware_version;
- unsigned char utc_time[16];
-};
-
-
-#define CKF_RNG (1UL << 0)
-#define CKF_WRITE_PROTECTED (1UL << 1)
-#define CKF_LOGIN_REQUIRED (1UL << 2)
-#define CKF_USER_PIN_INITIALIZED (1UL << 3)
-#define CKF_RESTORE_KEY_NOT_NEEDED (1UL << 5)
-#define CKF_CLOCK_ON_TOKEN (1UL << 6)
-#define CKF_PROTECTED_AUTHENTICATION_PATH (1UL << 8)
-#define CKF_DUAL_CRYPTO_OPERATIONS (1UL << 9)
-#define CKF_TOKEN_INITIALIZED (1UL << 10)
-#define CKF_SECONDARY_AUTHENTICATION (1UL << 11)
-#define CKF_USER_PIN_COUNT_LOW (1UL << 16)
-#define CKF_USER_PIN_FINAL_TRY (1UL << 17)
-#define CKF_USER_PIN_LOCKED (1UL << 18)
-#define CKF_USER_PIN_TO_BE_CHANGED (1UL << 19)
-#define CKF_SO_PIN_COUNT_LOW (1UL << 20)
-#define CKF_SO_PIN_FINAL_TRY (1UL << 21)
-#define CKF_SO_PIN_LOCKED (1UL << 22)
-#define CKF_SO_PIN_TO_BE_CHANGED (1UL << 23)
-
-#define CK_UNAVAILABLE_INFORMATION ((unsigned long) -1)
-#define CK_EFFECTIVELY_INFINITE (0UL)
-
-
-typedef unsigned long ck_session_handle_t;
-
-#define CK_INVALID_HANDLE (0UL)
-
-
-typedef unsigned long ck_user_type_t;
-
-#define CKU_SO (0UL)
-#define CKU_USER (1UL)
-#define CKU_CONTEXT_SPECIFIC (2UL)
-
-
-typedef unsigned long ck_state_t;
-
-#define CKS_RO_PUBLIC_SESSION (0UL)
-#define CKS_RO_USER_FUNCTIONS (1UL)
-#define CKS_RW_PUBLIC_SESSION (2UL)
-#define CKS_RW_USER_FUNCTIONS (3UL)
-#define CKS_RW_SO_FUNCTIONS (4UL)
-
-
-struct ck_session_info
-{
- ck_slot_id_t slot_id;
- ck_state_t state;
- ck_flags_t flags;
- unsigned long device_error;
-};
-
-#define CKF_RW_SESSION (1UL << 1)
-#define CKF_SERIAL_SESSION (1UL << 2)
-
-
-typedef unsigned long ck_object_handle_t;
-
-
-typedef unsigned long ck_object_class_t;
-
-#define CKO_DATA (0UL)
-#define CKO_CERTIFICATE (1UL)
-#define CKO_PUBLIC_KEY (2UL)
-#define CKO_PRIVATE_KEY (3UL)
-#define CKO_SECRET_KEY (4UL)
-#define CKO_HW_FEATURE (5UL)
-#define CKO_DOMAIN_PARAMETERS (6UL)
-#define CKO_MECHANISM (7UL)
-#define CKO_OTP_KEY (8UL)
-#define CKO_PROFILE (9UL)
-#define CKO_VENDOR_DEFINED (1UL << 31)
-
-#define CKP_INVALID_ID (0UL)
-#define CKP_BASELINE_PROVIDER (1UL)
-#define CKP_EXTENDED_PROVIDER (2UL)
-#define CKP_AUTHENTICATION_TOKEN (3UL)
-#define CKP_PUBLIC_CERTIFICATES_TOKEN (4UL)
-#define CKP_VENDOR_DEFINED (1UL << 31)
-
-typedef unsigned long ck_hw_feature_type_t;
-
-#define CKH_MONOTONIC_COUNTER (1UL)
-#define CKH_CLOCK (2UL)
-#define CKH_USER_INTERFACE (3UL)
-#define CKH_VENDOR_DEFINED (1UL << 31)
-
-
-typedef unsigned long ck_key_type_t;
-
-#define CKK_RSA (0UL)
-#define CKK_DSA (1UL)
-#define CKK_DH (2UL)
-#define CKK_ECDSA (3UL)
-#define CKK_EC (3UL)
-#define CKK_X9_42_DH (4UL)
-#define CKK_KEA (5UL)
-#define CKK_GENERIC_SECRET (0x10UL)
-#define CKK_RC2 (0x11UL)
-#define CKK_RC4 (0x12UL)
-#define CKK_DES (0x13UL)
-#define CKK_DES2 (0x14UL)
-#define CKK_DES3 (0x15UL)
-#define CKK_CAST (0x16UL)
-#define CKK_CAST3 (0x17UL)
-#define CKK_CAST128 (0x18UL)
-#define CKK_RC5 (0x19UL)
-#define CKK_IDEA (0x1aUL)
-#define CKK_SKIPJACK (0x1bUL)
-#define CKK_BATON (0x1cUL)
-#define CKK_JUNIPER (0x1dUL)
-#define CKK_CDMF (0x1eUL)
-#define CKK_AES (0x1fUL)
-#define CKK_BLOWFISH (0x20UL)
-#define CKK_TWOFISH (0x21UL)
-#define CKK_GOSTR3410 (0x30UL)
-#define CKK_GOSTR3411 (0x31UL)
-#define CKK_GOST28147 (0x32UL)
-#define CKK_EC_EDWARDS (0x40UL)
-#define CKK_EC_MONTGOMERY (0x41UL)
-#define CKK_VENDOR_DEFINED (1UL << 31)
-
-
-typedef unsigned long ck_certificate_type_t;
-
-#define CKC_X_509 (0UL)
-#define CKC_X_509_ATTR_CERT (1UL)
-#define CKC_WTLS (2UL)
-#define CKC_VENDOR_DEFINED (1UL << 31)
-
-
-typedef unsigned long ck_attribute_type_t;
-
-#define CKA_CLASS (0UL)
-#define CKA_TOKEN (1UL)
-#define CKA_PRIVATE (2UL)
-#define CKA_LABEL (3UL)
-#define CKA_UNIQUE_ID (4UL)
-#define CKA_APPLICATION (0x10UL)
-#define CKA_VALUE (0x11UL)
-#define CKA_OBJECT_ID (0x12UL)
-#define CKA_CERTIFICATE_TYPE (0x80UL)
-#define CKA_ISSUER (0x81UL)
-#define CKA_SERIAL_NUMBER (0x82UL)
-#define CKA_AC_ISSUER (0x83UL)
-#define CKA_OWNER (0x84UL)
-#define CKA_ATTR_TYPES (0x85UL)
-#define CKA_TRUSTED (0x86UL)
-#define CKA_CERTIFICATE_CATEGORY (0x87UL)
-#define CKA_JAVA_MIDP_SECURITY_DOMAIN (0x88UL)
-#define CKA_URL (0x89UL)
-#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY (0x8aUL)
-#define CKA_HASH_OF_ISSUER_PUBLIC_KEY (0x8bUL)
-#define CKA_CHECK_VALUE (0x90UL)
-#define CKA_KEY_TYPE (0x100UL)
-#define CKA_SUBJECT (0x101UL)
-#define CKA_ID (0x102UL)
-#define CKA_SENSITIVE (0x103UL)
-#define CKA_ENCRYPT (0x104UL)
-#define CKA_DECRYPT (0x105UL)
-#define CKA_WRAP (0x106UL)
-#define CKA_UNWRAP (0x107UL)
-#define CKA_SIGN (0x108UL)
-#define CKA_SIGN_RECOVER (0x109UL)
-#define CKA_VERIFY (0x10aUL)
-#define CKA_VERIFY_RECOVER (0x10bUL)
-#define CKA_DERIVE (0x10cUL)
-#define CKA_START_DATE (0x110UL)
-#define CKA_END_DATE (0x111UL)
-#define CKA_MODULUS (0x120UL)
-#define CKA_MODULUS_BITS (0x121UL)
-#define CKA_PUBLIC_EXPONENT (0x122UL)
-#define CKA_PRIVATE_EXPONENT (0x123UL)
-#define CKA_PRIME_1 (0x124UL)
-#define CKA_PRIME_2 (0x125UL)
-#define CKA_EXPONENT_1 (0x126UL)
-#define CKA_EXPONENT_2 (0x127UL)
-#define CKA_COEFFICIENT (0x128UL)
-#define CKA_PUBLIC_KEY_INFO (0x129UL)
-#define CKA_PRIME (0x130UL)
-#define CKA_SUBPRIME (0x131UL)
-#define CKA_BASE (0x132UL)
-#define CKA_PRIME_BITS (0x133UL)
-#define CKA_SUB_PRIME_BITS (0x134UL)
-#define CKA_VALUE_BITS (0x160UL)
-#define CKA_VALUE_LEN (0x161UL)
-#define CKA_EXTRACTABLE (0x162UL)
-#define CKA_LOCAL (0x163UL)
-#define CKA_NEVER_EXTRACTABLE (0x164UL)
-#define CKA_ALWAYS_SENSITIVE (0x165UL)
-#define CKA_KEY_GEN_MECHANISM (0x166UL)
-#define CKA_MODIFIABLE (0x170UL)
-#define CKA_COPYABLE (0x171UL)
-#define CKA_DESTROYABLE (0x172UL)
-#define CKA_ECDSA_PARAMS (0x180UL)
-#define CKA_EC_PARAMS (0x180UL)
-#define CKA_EC_POINT (0x181UL)
-#define CKA_SECONDARY_AUTH (0x200UL)
-#define CKA_AUTH_PIN_FLAGS (0x201UL)
-#define CKA_ALWAYS_AUTHENTICATE (0x202UL)
-#define CKA_WRAP_WITH_TRUSTED (0x210UL)
-#define CKA_GOSTR3410_PARAMS (0x250UL)
-#define CKA_GOSTR3411_PARAMS (0x251UL)
-#define CKA_GOST28147_PARAMS (0x252UL)
-#define CKA_HW_FEATURE_TYPE (0x300UL)
-#define CKA_RESET_ON_INIT (0x301UL)
-#define CKA_HAS_RESET (0x302UL)
-#define CKA_PIXEL_X (0x400UL)
-#define CKA_PIXEL_Y (0x401UL)
-#define CKA_RESOLUTION (0x402UL)
-#define CKA_CHAR_ROWS (0x403UL)
-#define CKA_CHAR_COLUMNS (0x404UL)
-#define CKA_COLOR (0x405UL)
-#define CKA_BITS_PER_PIXEL (0x406UL)
-#define CKA_CHAR_SETS (0x480UL)
-#define CKA_ENCODING_METHODS (0x481UL)
-#define CKA_MIME_TYPES (0x482UL)
-#define CKA_MECHANISM_TYPE (0x500UL)
-#define CKA_REQUIRED_CMS_ATTRIBUTES (0x501UL)
-#define CKA_DEFAULT_CMS_ATTRIBUTES (0x502UL)
-#define CKA_SUPPORTED_CMS_ATTRIBUTES (0x503UL)
-#define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x211UL)
-#define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x212UL)
-#define CKA_OTP_FORMAT (0x220UL)
-#define CKA_OTP_LENGTH (0x221UL)
-#define CKA_OTP_TIME_INTERVAL (0x222UL)
-#define CKA_OTP_USER_FRIENDLY_MODE (0x223UL)
-#define CKA_OTP_CHALLENGE_REQUIREMENT (0x224UL)
-#define CKA_OTP_TIME_REQUIREMENT (0x225UL)
-#define CKA_OTP_COUNTER_REQUIREMENT (0x226UL)
-#define CKA_OTP_PIN_REQUIREMENT (0x227UL)
-#define CKA_OTP_USER_IDENTIFIER (0x22AUL)
-#define CKA_OTP_SERVICE_IDENTIFIER (0x22BUL)
-#define CKA_OTP_SERVICE_LOGO (0x22CUL)
-#define CKA_OTP_SERVICE_LOGO_TYPE (0x22DUL)
-#define CKA_OTP_COUNTER (0x22EUL)
-#define CKA_OTP_TIME (0x22FUL)
-#define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE | 0x600UL)
-#define CKA_PROFILE_ID (0x601UL)
-#define CKA_VENDOR_DEFINED (1UL << 31)
-
-
-struct ck_attribute
-{
- ck_attribute_type_t type;
- void *value;
- unsigned long value_len;
+struct CK_KIP_PARAMS {
+ CK_MECHANISM * pMechanism;
+ CK_OBJECT_HANDLE hKey;
+ CK_BYTE * pSeed;
+ CK_ULONG ulSeedLen;
};
+struct CK_OTP_PARAM {
+ CK_OTP_PARAM_TYPE type;
+ void * pValue;
+ CK_ULONG ulValueLen;
+};
-struct ck_date
-{
- unsigned char year[4];
- unsigned char month[2];
- unsigned char day[2];
-};
-
-
-typedef unsigned long ck_mechanism_type_t;
-
-#define CKM_RSA_PKCS_KEY_PAIR_GEN (0UL)
-#define CKM_RSA_PKCS (1UL)
-#define CKM_RSA_9796 (2UL)
-#define CKM_RSA_X_509 (3UL)
-#define CKM_MD2_RSA_PKCS (4UL)
-#define CKM_MD5_RSA_PKCS (5UL)
-#define CKM_SHA1_RSA_PKCS (6UL)
-#define CKM_RIPEMD128_RSA_PKCS (7UL)
-#define CKM_RIPEMD160_RSA_PKCS (8UL)
-#define CKM_RSA_PKCS_OAEP (9UL)
-#define CKM_RSA_X9_31_KEY_PAIR_GEN (0xaUL)
-#define CKM_RSA_X9_31 (0xbUL)
-#define CKM_SHA1_RSA_X9_31 (0xcUL)
-#define CKM_RSA_PKCS_PSS (0xdUL)
-#define CKM_SHA1_RSA_PKCS_PSS (0xeUL)
-#define CKM_DSA_KEY_PAIR_GEN (0x10UL)
-#define CKM_DSA (0x11UL)
-#define CKM_DSA_SHA1 (0x12UL)
-#define CKM_DSA_SHA224 (0x13UL)
-#define CKM_DSA_SHA256 (0x14UL)
-#define CKM_DSA_SHA384 (0x15UL)
-#define CKM_DSA_SHA512 (0x16UL)
-#define CKM_DH_PKCS_KEY_PAIR_GEN (0x20UL)
-#define CKM_DH_PKCS_DERIVE (0x21UL)
-#define CKM_X9_42_DH_KEY_PAIR_GEN (0x30UL)
-#define CKM_X9_42_DH_DERIVE (0x31UL)
-#define CKM_X9_42_DH_HYBRID_DERIVE (0x32UL)
-#define CKM_X9_42_MQV_DERIVE (0x33UL)
-#define CKM_SHA256_RSA_PKCS (0x40UL)
-#define CKM_SHA384_RSA_PKCS (0x41UL)
-#define CKM_SHA512_RSA_PKCS (0x42UL)
-#define CKM_SHA256_RSA_PKCS_PSS (0x43UL)
-#define CKM_SHA384_RSA_PKCS_PSS (0x44UL)
-#define CKM_SHA512_RSA_PKCS_PSS (0x45UL)
-#define CKM_SHA224_RSA_PKCS (0x46UL)
-#define CKM_SHA224_RSA_PKCS_PSS (0x47UL)
-#define CKM_SHA3_256_RSA_PKCS (0x60UL)
-#define CKM_SHA3_384_RSA_PKCS (0x61UL)
-#define CKM_SHA3_512_RSA_PKCS (0x62UL)
-#define CKM_SHA3_256_RSA_PKCS_PSS (0x63UL)
-#define CKM_SHA3_384_RSA_PKCS_PSS (0x64UL)
-#define CKM_SHA3_512_RSA_PKCS_PSS (0x65UL)
-#define CKM_SHA3_224_RSA_PKCS (0x66UL)
-#define CKM_SHA3_224_RSA_PKCS_PSS (0x67UL)
-#define CKM_RC2_KEY_GEN (0x100UL)
-#define CKM_RC2_ECB (0x101UL)
-#define CKM_RC2_CBC (0x102UL)
-#define CKM_RC2_MAC (0x103UL)
-#define CKM_RC2_MAC_GENERAL (0x104UL)
-#define CKM_RC2_CBC_PAD (0x105UL)
-#define CKM_RC4_KEY_GEN (0x110UL)
-#define CKM_RC4 (0x111UL)
-#define CKM_DES_KEY_GEN (0x120UL)
-#define CKM_DES_ECB (0x121UL)
-#define CKM_DES_CBC (0x122UL)
-#define CKM_DES_MAC (0x123UL)
-#define CKM_DES_MAC_GENERAL (0x124UL)
-#define CKM_DES_CBC_PAD (0x125UL)
-#define CKM_DES2_KEY_GEN (0x130UL)
-#define CKM_DES3_KEY_GEN (0x131UL)
-#define CKM_DES3_ECB (0x132UL)
-#define CKM_DES3_CBC (0x133UL)
-#define CKM_DES3_MAC (0x134UL)
-#define CKM_DES3_MAC_GENERAL (0x135UL)
-#define CKM_DES3_CBC_PAD (0x136UL)
-#define CKM_DES3_CMAC_GENERAL (0x137UL)
-#define CKM_DES3_CMAC (0x138UL)
-#define CKM_CDMF_KEY_GEN (0x140UL)
-#define CKM_CDMF_ECB (0x141UL)
-#define CKM_CDMF_CBC (0x142UL)
-#define CKM_CDMF_MAC (0x143UL)
-#define CKM_CDMF_MAC_GENERAL (0x144UL)
-#define CKM_CDMF_CBC_PAD (0x145UL)
-#define CKM_MD2 (0x200UL)
-#define CKM_MD2_HMAC (0x201UL)
-#define CKM_MD2_HMAC_GENERAL (0x202UL)
-#define CKM_MD5 (0x210UL)
-#define CKM_MD5_HMAC (0x211UL)
-#define CKM_MD5_HMAC_GENERAL (0x212UL)
-#define CKM_SHA_1 (0x220UL)
-#define CKM_SHA_1_HMAC (0x221UL)
-#define CKM_SHA_1_HMAC_GENERAL (0x222UL)
-#define CKM_RIPEMD128 (0x230UL)
-#define CKM_RIPEMD128_HMAC (0x231UL)
-#define CKM_RIPEMD128_HMAC_GENERAL (0x232UL)
-#define CKM_RIPEMD160 (0x240UL)
-#define CKM_RIPEMD160_HMAC (0x241UL)
-#define CKM_RIPEMD160_HMAC_GENERAL (0x242UL)
-#define CKM_SHA256 (0x250UL)
-#define CKM_SHA256_HMAC (0x251UL)
-#define CKM_SHA256_HMAC_GENERAL (0x252UL)
-#define CKM_SHA224 (0x255UL)
-#define CKM_SHA224_HMAC (0x256UL)
-#define CKM_SHA224_HMAC_GENERAL (0x257UL)
-#define CKM_SHA384 (0x260UL)
-#define CKM_SHA384_HMAC (0x261UL)
-#define CKM_SHA384_HMAC_GENERAL (0x262UL)
-#define CKM_SHA512 (0x270UL)
-#define CKM_SHA512_HMAC (0x271UL)
-#define CKM_SHA512_HMAC_GENERAL (0x272UL)
-#define CKM_SHA3_256 (0x2B0UL)
-#define CKM_SHA3_256_HMAC (0x2B1UL)
-#define CKM_SHA3_256_HMAC_GENERAL (0x2B2UL)
-#define CKM_SHA3_256_KEY_GEN (0x2B3UL)
-#define CKM_SHA3_224 (0x2B5UL)
-#define CKM_SHA3_224_HMAC (0x2B6UL)
-#define CKM_SHA3_224_HMAC_GENERAL (0x2B7UL)
-#define CKM_SHA3_224_KEY_GEN (0x2B8UL)
-#define CKM_SHA3_384 (0x2C0UL)
-#define CKM_SHA3_384_HMAC (0x2C1UL)
-#define CKM_SHA3_384_HMAC_GENERAL (0x2C2UL)
-#define CKM_SHA3_384_KEY_GEN (0x2C3UL)
-#define CKM_SHA3_512 (0x2D0UL)
-#define CKM_SHA3_512_HMAC (0x2D1UL)
-#define CKM_SHA3_512_HMAC_GENERAL (0x2D2UL)
-#define CKM_SHA3_512_KEY_GEN (0x2D3UL)
-#define CKM_CAST_KEY_GEN (0x300UL)
-#define CKM_CAST_ECB (0x301UL)
-#define CKM_CAST_CBC (0x302UL)
-#define CKM_CAST_MAC (0x303UL)
-#define CKM_CAST_MAC_GENERAL (0x304UL)
-#define CKM_CAST_CBC_PAD (0x305UL)
-#define CKM_CAST3_KEY_GEN (0x310UL)
-#define CKM_CAST3_ECB (0x311UL)
-#define CKM_CAST3_CBC (0x312UL)
-#define CKM_CAST3_MAC (0x313UL)
-#define CKM_CAST3_MAC_GENERAL (0x314UL)
-#define CKM_CAST3_CBC_PAD (0x315UL)
-#define CKM_CAST5_KEY_GEN (0x320UL)
-#define CKM_CAST128_KEY_GEN (0x320UL)
-#define CKM_CAST5_ECB (0x321UL)
-#define CKM_CAST128_ECB (0x321UL)
-#define CKM_CAST5_CBC (0x322UL)
-#define CKM_CAST128_CBC (0x322UL)
-#define CKM_CAST5_MAC (0x323UL)
-#define CKM_CAST128_MAC (0x323UL)
-#define CKM_CAST5_MAC_GENERAL (0x324UL)
-#define CKM_CAST128_MAC_GENERAL (0x324UL)
-#define CKM_CAST5_CBC_PAD (0x325UL)
-#define CKM_CAST128_CBC_PAD (0x325UL)
-#define CKM_RC5_KEY_GEN (0x330UL)
-#define CKM_RC5_ECB (0x331UL)
-#define CKM_RC5_CBC (0x332UL)
-#define CKM_RC5_MAC (0x333UL)
-#define CKM_RC5_MAC_GENERAL (0x334UL)
-#define CKM_RC5_CBC_PAD (0x335UL)
-#define CKM_IDEA_KEY_GEN (0x340UL)
-#define CKM_IDEA_ECB (0x341UL)
-#define CKM_IDEA_CBC (0x342UL)
-#define CKM_IDEA_MAC (0x343UL)
-#define CKM_IDEA_MAC_GENERAL (0x344UL)
-#define CKM_IDEA_CBC_PAD (0x345UL)
-#define CKM_GENERIC_SECRET_KEY_GEN (0x350UL)
-#define CKM_CONCATENATE_BASE_AND_KEY (0x360UL)
-#define CKM_CONCATENATE_BASE_AND_DATA (0x362UL)
-#define CKM_CONCATENATE_DATA_AND_BASE (0x363UL)
-#define CKM_XOR_BASE_AND_DATA (0x364UL)
-#define CKM_EXTRACT_KEY_FROM_KEY (0x365UL)
-#define CKM_SSL3_PRE_MASTER_KEY_GEN (0x370UL)
-#define CKM_SSL3_MASTER_KEY_DERIVE (0x371UL)
-#define CKM_SSL3_KEY_AND_MAC_DERIVE (0x372UL)
-#define CKM_SSL3_MASTER_KEY_DERIVE_DH (0x373UL)
-#define CKM_TLS_PRE_MASTER_KEY_GEN (0x374UL)
-#define CKM_TLS_MASTER_KEY_DERIVE (0x375UL)
-#define CKM_TLS_KEY_AND_MAC_DERIVE (0x376UL)
-#define CKM_TLS_MASTER_KEY_DERIVE_DH (0x377UL)
-#define CKM_SSL3_MD5_MAC (0x380UL)
-#define CKM_SSL3_SHA1_MAC (0x381UL)
-#define CKM_MD5_KEY_DERIVATION (0x390UL)
-#define CKM_MD2_KEY_DERIVATION (0x391UL)
-#define CKM_SHA1_KEY_DERIVATION (0x392UL)
-#define CKM_PBE_MD2_DES_CBC (0x3a0UL)
-#define CKM_PBE_MD5_DES_CBC (0x3a1UL)
-#define CKM_PBE_MD5_CAST_CBC (0x3a2UL)
-#define CKM_PBE_MD5_CAST3_CBC (0x3a3UL)
-#define CKM_PBE_MD5_CAST5_CBC (0x3a4UL)
-#define CKM_PBE_MD5_CAST128_CBC (0x3a4UL)
-#define CKM_PBE_SHA1_CAST5_CBC (0x3a5UL)
-#define CKM_PBE_SHA1_CAST128_CBC (0x3a5UL)
-#define CKM_PBE_SHA1_RC4_128 (0x3a6UL)
-#define CKM_PBE_SHA1_RC4_40 (0x3a7UL)
-#define CKM_PBE_SHA1_DES3_EDE_CBC (0x3a8UL)
-#define CKM_PBE_SHA1_DES2_EDE_CBC (0x3a9UL)
-#define CKM_PBE_SHA1_RC2_128_CBC (0x3aaUL)
-#define CKM_PBE_SHA1_RC2_40_CBC (0x3abUL)
-#define CKM_PKCS5_PBKD2 (0x3b0UL)
-#define CKM_PBA_SHA1_WITH_SHA1_HMAC (0x3c0UL)
-#define CKM_KEY_WRAP_LYNKS (0x400UL)
-#define CKM_KEY_WRAP_SET_OAEP (0x401UL)
-#define CKM_SKIPJACK_KEY_GEN (0x1000UL)
-#define CKM_SKIPJACK_ECB64 (0x1001UL)
-#define CKM_SKIPJACK_CBC64 (0x1002UL)
-#define CKM_SKIPJACK_OFB64 (0x1003UL)
-#define CKM_SKIPJACK_CFB64 (0x1004UL)
-#define CKM_SKIPJACK_CFB32 (0x1005UL)
-#define CKM_SKIPJACK_CFB16 (0x1006UL)
-#define CKM_SKIPJACK_CFB8 (0x1007UL)
-#define CKM_SKIPJACK_WRAP (0x1008UL)
-#define CKM_SKIPJACK_PRIVATE_WRAP (0x1009UL)
-#define CKM_SKIPJACK_RELAYX (0x100aUL)
-#define CKM_KEA_KEY_PAIR_GEN (0x1010UL)
-#define CKM_KEA_KEY_DERIVE (0x1011UL)
-#define CKM_FORTEZZA_TIMESTAMP (0x1020UL)
-#define CKM_BATON_KEY_GEN (0x1030UL)
-#define CKM_BATON_ECB128 (0x1031UL)
-#define CKM_BATON_ECB96 (0x1032UL)
-#define CKM_BATON_CBC128 (0x1033UL)
-#define CKM_BATON_COUNTER (0x1034UL)
-#define CKM_BATON_SHUFFLE (0x1035UL)
-#define CKM_BATON_WRAP (0x1036UL)
-#define CKM_ECDSA_KEY_PAIR_GEN (0x1040UL)
-#define CKM_EC_KEY_PAIR_GEN (0x1040UL)
-#define CKM_ECDSA (0x1041UL)
-#define CKM_ECDSA_SHA1 (0x1042UL)
-#define CKM_ECDSA_SHA224 (0x1043UL)
-#define CKM_ECDSA_SHA256 (0x1044UL)
-#define CKM_ECDSA_SHA384 (0x1045UL)
-#define CKM_ECDSA_SHA512 (0x1046UL)
-#define CKM_ECDSA_SHA3_224 (0x1047UL)
-#define CKM_ECDSA_SHA3_256 (0x1048UL)
-#define CKM_ECDSA_SHA3_384 (0x1049UL)
-#define CKM_ECDSA_SHA3_512 (0x104AUL)
-#define CKM_ECDH1_DERIVE (0x1050UL)
-#define CKM_ECDH1_COFACTOR_DERIVE (0x1051UL)
-#define CKM_ECMQV_DERIVE (0x1052UL)
-#define CKM_EC_EDWARDS_KEY_PAIR_GEN (0x1055UL)
-#define CKM_EC_MONTGOMERY_KEY_PAIR_GEN (0x1056UL)
-#define CKM_EDDSA (0x1057UL)
-#define CKM_JUNIPER_KEY_GEN (0x1060UL)
-#define CKM_JUNIPER_ECB128 (0x1061UL)
-#define CKM_JUNIPER_CBC128 (0x1062UL)
-#define CKM_JUNIPER_COUNTER (0x1063UL)
-#define CKM_JUNIPER_SHUFFLE (0x1064UL)
-#define CKM_JUNIPER_WRAP (0x1065UL)
-#define CKM_FASTHASH (0x1070UL)
-#define CKM_AES_KEY_GEN (0x1080UL)
-#define CKM_AES_ECB (0x1081UL)
-#define CKM_AES_CBC (0x1082UL)
-#define CKM_AES_MAC (0x1083UL)
-#define CKM_AES_MAC_GENERAL (0x1084UL)
-#define CKM_AES_CBC_PAD (0x1085UL)
-#define CKM_AES_CTR (0x1086UL)
-#define CKM_AES_GCM (0x1087UL)
-#define CKM_AES_CCM (0x1088UL)
-#define CKM_AES_CTS (0x1089UL)
-#define CKM_AES_CMAC (0x108AUL)
-#define CKM_AES_CMAC_GENERAL (0x108BUL)
-#define CKM_AES_XCBC_MAC (0x108CUL)
-#define CKM_AES_XCBC_MAC_96 (0x108DUL)
-#define CKM_AES_GMAC (0x108EUL)
-#define CKM_BLOWFISH_KEY_GEN (0x1090UL)
-#define CKM_BLOWFISH_CBC (0x1091UL)
-#define CKM_TWOFISH_KEY_GEN (0x1092UL)
-#define CKM_TWOFISH_CBC (0x1093UL)
-#define CKM_DES_ECB_ENCRYPT_DATA (0x1100UL)
-#define CKM_DES_CBC_ENCRYPT_DATA (0x1101UL)
-#define CKM_DES3_ECB_ENCRYPT_DATA (0x1102UL)
-#define CKM_DES3_CBC_ENCRYPT_DATA (0x1103UL)
-#define CKM_AES_ECB_ENCRYPT_DATA (0x1104UL)
-#define CKM_AES_CBC_ENCRYPT_DATA (0x1105UL)
-#define CKM_DSA_PARAMETER_GEN (0x2000UL)
-#define CKM_DH_PKCS_PARAMETER_GEN (0x2001UL)
-#define CKM_X9_42_DH_PARAMETER_GEN (0x2002UL)
-#define CKM_AES_OFB (0x2104UL)
-#define CKM_AES_CFB64 (0x2105UL)
-#define CKM_AES_CFB8 (0x2106UL)
-#define CKM_AES_CFB128 (0x2107UL)
-#define CKM_AES_KEY_WRAP (0x2109UL)
-#define CKM_AES_KEY_WRAP_PAD (0x210AUL)
-#define CKM_XEDDSA (0x4029UL)
-
-
-#define CKM_VENDOR_DEFINED (1UL << 31)
-
-struct ck_mechanism
-{
- ck_mechanism_type_t mechanism;
- void *parameter;
- unsigned long parameter_len;
+struct CK_OTP_PARAMS {
+ CK_OTP_PARAM * pParams;
+ CK_ULONG ulCount;
};
+struct CK_OTP_SIGNATURE_INFO {
+ CK_OTP_PARAM * pParams;
+ CK_ULONG ulCount;
+};
-struct ck_mechanism_info
-{
- unsigned long min_key_size;
- unsigned long max_key_size;
- ck_flags_t flags;
-};
-
-#define CKF_HW (1UL << 0)
-
-#define CKF_MESSAGE_ENCRYPT (1UL << 1)
-#define CKF_MESSAGE_DECRYPT (1UL << 2)
-#define CKF_MESSAGE_SIGN (1UL << 3)
-#define CKF_MESSAGE_VERIFY (1UL << 4)
-#define CKF_MULTI_MESSAGE (1UL << 5)
-#define CKF_FIND_OBJECTS (1UL << 6)
-
-#define CKF_ENCRYPT (1UL << 8)
-#define CKF_DECRYPT (1UL << 9)
-#define CKF_DIGEST (1UL << 10)
-#define CKF_SIGN (1UL << 11)
-#define CKF_SIGN_RECOVER (1UL << 12)
-#define CKF_VERIFY (1UL << 13)
-#define CKF_VERIFY_RECOVER (1UL << 14)
-#define CKF_GENERATE (1UL << 15)
-#define CKF_GENERATE_KEY_PAIR (1UL << 16)
-#define CKF_WRAP (1UL << 17)
-#define CKF_UNWRAP (1UL << 18)
-#define CKF_DERIVE (1UL << 19)
-#define CKF_EXTENSION (1UL << 31)
-
-#define CKF_EC_F_P (1UL << 20)
-#define CKF_EC_F_2M (1UL << 21)
-#define CKF_EC_ECPARAMETERS (1UL << 22)
-#define CKF_EC_OID (1UL << 23)
-#define CKF_EC_NAMEDCURVE CKF_EC_OID
-#define CKF_EC_UNCOMPRESS (1UL << 24)
-#define CKF_EC_COMPRESS (1UL << 25)
-#define CKF_EC_CURVENAME (1UL << 26)
-
-/* Flags for C_WaitForSlotEvent. */
-#define CKF_DONT_BLOCK (1UL)
-
-/* Flags for Key derivation */
-#define CKD_NULL (1UL)
-#define CKD_SHA1_KDF (2UL)
-#define CKD_SHA224_KDF (5UL)
-#define CKD_SHA256_KDF (6UL)
-#define CKD_SHA384_KDF (7UL)
-#define CKD_SHA512_KDF (8UL)
-
-typedef struct CK_ECDH1_DERIVE_PARAMS {
- unsigned long kdf;
- unsigned long ulSharedDataLen;
- unsigned char * pSharedData;
- unsigned long ulPublicDataLen;
- unsigned char * pPublicData;
-} CK_ECDH1_DERIVE_PARAMS;
-
-typedef struct CK_ECMQV_DERIVE_PARAMS {
- unsigned long kdf;
- unsigned long ulSharedDataLen;
- unsigned char * pSharedData;
- unsigned long ulPublicDataLen;
- unsigned char * pPublicData;
- unsigned long ulPrivateDataLen;
- CK_OBJECT_HANDLE hPrivateData;
- unsigned long ulPublicDataLen2;
- unsigned char * pPublicData2;
- CK_OBJECT_HANDLE publicKey;
-} CK_ECMQV_DERIVE_PARAMS;
-
-typedef unsigned long ck_rsa_pkcs_mgf_type_t;
-typedef unsigned long CK_RSA_PKCS_OAEP_SOURCE_TYPE;
-
-typedef struct CK_RSA_PKCS_OAEP_PARAMS {
- CK_MECHANISM_TYPE hashAlg;
- CK_RSA_PKCS_MGF_TYPE mgf;
- CK_RSA_PKCS_OAEP_SOURCE_TYPE source;
- void *pSourceData;
- unsigned long ulSourceDataLen;
-} CK_RSA_PKCS_OAEP_PARAMS;
-
-typedef struct CK_RSA_PKCS_PSS_PARAMS {
- ck_mechanism_type_t hashAlg;
- CK_RSA_PKCS_MGF_TYPE mgf;
- unsigned long sLen;
-} CK_RSA_PKCS_PSS_PARAMS;
-
-#define CKG_MGF1_SHA1 (1UL)
-#define CKG_MGF1_SHA224 (5UL)
-#define CKG_MGF1_SHA256 (2UL)
-#define CKG_MGF1_SHA384 (3UL)
-#define CKG_MGF1_SHA512 (4UL)
-#define CKG_MGF1_SHA3_224 (6UL)
-#define CKG_MGF1_SHA3_256 (7UL)
-#define CKG_MGF1_SHA3_384 (8UL)
-#define CKG_MGF1_SHA3_512 (9UL)
-
-#define CKZ_DATA_SPECIFIED (1UL)
-
-typedef struct CK_GCM_PARAMS {
- void * pIv;
- unsigned long ulIvLen;
- unsigned long ulIvBits;
- void * pAAD;
- unsigned long ulAADLen;
- unsigned long ulTagBits;
-} CK_GCM_PARAMS;
-
-/* EDDSA */
-typedef struct CK_EDDSA_PARAMS {
- unsigned char phFlag;
- unsigned long ulContextDataLen;
- unsigned char *pContextData;
-} CK_EDDSA_PARAMS;
-
-typedef CK_EDDSA_PARAMS *CK_EDDSA_PARAMS_PTR;
-
-/* XEDDSA */
-typedef struct CK_XEDDSA_PARAMS {
- unsigned long hash;
-} CK_XEDDSA_PARAMS;
-
-typedef CK_XEDDSA_PARAMS *CK_XEDDSA_PARAMS_PTR;
-
-typedef struct CK_AES_CTR_PARAMS {
- unsigned long ulCounterBits;
- unsigned char cb[16];
-} CK_AES_CTR_PARAMS;
-
-typedef CK_AES_CTR_PARAMS *CK_AES_CTR_PARAMS_PTR;
-
-typedef unsigned long ck_rv_t;
-
-
-typedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session,
- ck_notification_t event, void *application);
-
-struct ck_interface {
- char * pInterfaceName;
- void * pFunctionList;
- ck_flags_t flags;
-};
-
-#define CKF_INTERFACE_FORK_SAFE (0x00000001UL)
-
-/* Forward reference. */
-struct ck_function_list;
-struct ck_function_list_3_0;
-
-#define _CK_DECLARE_FUNCTION(name, args) \
-typedef ck_rv_t (*CK_ ## name) args; \
-ck_rv_t CK_SPEC name args
-
-_CK_DECLARE_FUNCTION (C_Initialize, (void *init_args));
-_CK_DECLARE_FUNCTION (C_Finalize, (void *reserved));
-_CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info));
-_CK_DECLARE_FUNCTION (C_GetFunctionList,
- (struct ck_function_list **function_list));
-
-_CK_DECLARE_FUNCTION (C_GetSlotList,
- (unsigned char token_present, ck_slot_id_t *slot_list,
- unsigned long *count));
-_CK_DECLARE_FUNCTION (C_GetSlotInfo,
- (ck_slot_id_t slot_id, struct ck_slot_info *info));
-_CK_DECLARE_FUNCTION (C_GetTokenInfo,
- (ck_slot_id_t slot_id, struct ck_token_info *info));
-_CK_DECLARE_FUNCTION (C_WaitForSlotEvent,
- (ck_flags_t flags, ck_slot_id_t *slot, void *reserved));
-_CK_DECLARE_FUNCTION (C_GetMechanismList,
- (ck_slot_id_t slot_id,
- ck_mechanism_type_t *mechanism_list,
- unsigned long *count));
-_CK_DECLARE_FUNCTION (C_GetMechanismInfo,
- (ck_slot_id_t slot_id, ck_mechanism_type_t type,
- struct ck_mechanism_info *info));
-_CK_DECLARE_FUNCTION (C_InitToken,
- (ck_slot_id_t slot_id, unsigned char *pin,
- unsigned long pin_len, unsigned char *label));
-_CK_DECLARE_FUNCTION (C_InitPIN,
- (ck_session_handle_t session, unsigned char *pin,
- unsigned long pin_len));
-_CK_DECLARE_FUNCTION (C_SetPIN,
- (ck_session_handle_t session, unsigned char *old_pin,
- unsigned long old_len, unsigned char *new_pin,
- unsigned long new_len));
-
-_CK_DECLARE_FUNCTION (C_OpenSession,
- (ck_slot_id_t slot_id, ck_flags_t flags,
- void *application, ck_notify_t notify,
- ck_session_handle_t *session));
-_CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session));
-_CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id));
-_CK_DECLARE_FUNCTION (C_GetSessionInfo,
- (ck_session_handle_t session,
- struct ck_session_info *info));
-_CK_DECLARE_FUNCTION (C_GetOperationState,
- (ck_session_handle_t session,
- unsigned char *operation_state,
- unsigned long *operation_state_len));
-_CK_DECLARE_FUNCTION (C_SetOperationState,
- (ck_session_handle_t session,
- unsigned char *operation_state,
- unsigned long operation_state_len,
- ck_object_handle_t encryption_key,
- ck_object_handle_t authentication_key));
-_CK_DECLARE_FUNCTION (C_Login,
- (ck_session_handle_t session, ck_user_type_t user_type,
- unsigned char *pin, unsigned long pin_len));
-_CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_CreateObject,
- (ck_session_handle_t session,
- struct ck_attribute *templ,
- unsigned long count, ck_object_handle_t *object));
-_CK_DECLARE_FUNCTION (C_CopyObject,
- (ck_session_handle_t session, ck_object_handle_t object,
- struct ck_attribute *templ, unsigned long count,
- ck_object_handle_t *new_object));
-_CK_DECLARE_FUNCTION (C_DestroyObject,
- (ck_session_handle_t session,
- ck_object_handle_t object));
-_CK_DECLARE_FUNCTION (C_GetObjectSize,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- unsigned long *size));
-_CK_DECLARE_FUNCTION (C_GetAttributeValue,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_SetAttributeValue,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_FindObjectsInit,
- (ck_session_handle_t session,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_FindObjects,
- (ck_session_handle_t session,
- ck_object_handle_t *object,
- unsigned long max_object_count,
- unsigned long *object_count));
-_CK_DECLARE_FUNCTION (C_FindObjectsFinal,
- (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_EncryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Encrypt,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *encrypted_data,
- unsigned long *encrypted_data_len));
-_CK_DECLARE_FUNCTION (C_EncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_EncryptFinal,
- (ck_session_handle_t session,
- unsigned char *last_encrypted_part,
- unsigned long *last_encrypted_part_len));
-
-_CK_DECLARE_FUNCTION (C_DecryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Decrypt,
- (ck_session_handle_t session,
- unsigned char *encrypted_data,
- unsigned long encrypted_data_len,
- unsigned char *data, unsigned long *data_len));
-_CK_DECLARE_FUNCTION (C_DecryptUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part, unsigned long *part_len));
-_CK_DECLARE_FUNCTION (C_DecryptFinal,
- (ck_session_handle_t session,
- unsigned char *last_part,
- unsigned long *last_part_len));
-
-_CK_DECLARE_FUNCTION (C_DigestInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism));
-_CK_DECLARE_FUNCTION (C_Digest,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *digest,
- unsigned long *digest_len));
-_CK_DECLARE_FUNCTION (C_DigestUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_DigestKey,
- (ck_session_handle_t session, ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_DigestFinal,
- (ck_session_handle_t session,
- unsigned char *digest,
- unsigned long *digest_len));
-
-_CK_DECLARE_FUNCTION (C_SignInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Sign,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_SignUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_SignFinal,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_SignRecoverInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_SignRecover,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-
-_CK_DECLARE_FUNCTION (C_VerifyInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Verify,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_VerifyUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_VerifyFinal,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_VerifyRecoverInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_VerifyRecover,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long signature_len,
- unsigned char *data,
- unsigned long *data_len));
-
-_CK_DECLARE_FUNCTION (C_DigestEncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_DecryptDigestUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part,
- unsigned long *part_len));
-_CK_DECLARE_FUNCTION (C_SignEncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part,
- unsigned long *part_len));
-
-_CK_DECLARE_FUNCTION (C_GenerateKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- struct ck_attribute *templ,
- unsigned long count,
- ck_object_handle_t *key));
-_CK_DECLARE_FUNCTION (C_GenerateKeyPair,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- struct ck_attribute *public_key_template,
- unsigned long public_key_attribute_count,
- struct ck_attribute *private_key_template,
- unsigned long private_key_attribute_count,
- ck_object_handle_t *public_key,
- ck_object_handle_t *private_key));
-_CK_DECLARE_FUNCTION (C_WrapKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t wrapping_key,
- ck_object_handle_t key,
- unsigned char *wrapped_key,
- unsigned long *wrapped_key_len));
-_CK_DECLARE_FUNCTION (C_UnwrapKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t unwrapping_key,
- unsigned char *wrapped_key,
- unsigned long wrapped_key_len,
- struct ck_attribute *templ,
- unsigned long attribute_count,
- ck_object_handle_t *key));
-_CK_DECLARE_FUNCTION (C_DeriveKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t base_key,
- struct ck_attribute *templ,
- unsigned long attribute_count,
- ck_object_handle_t *key));
-
-_CK_DECLARE_FUNCTION (C_SeedRandom,
- (ck_session_handle_t session, unsigned char *seed,
- unsigned long seed_len));
-_CK_DECLARE_FUNCTION (C_GenerateRandom,
- (ck_session_handle_t session,
- unsigned char *random_data,
- unsigned long random_len));
-
-_CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session));
-_CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_GetInterfaceList,
- (struct ck_interface *interfaces_list,
- unsigned long *count));
-_CK_DECLARE_FUNCTION (C_GetInterface,
- (unsigned char *interface_name,
- struct ck_version *version,
- struct ck_interface **interface_ptr,
- ck_flags_t flags));
-
-_CK_DECLARE_FUNCTION (C_LoginUser,
- (ck_session_handle_t session,
- ck_user_type_t user_type,
- unsigned char *pin,
- unsigned long pin_len,
- unsigned char *username,
- unsigned long username_len));
-
-_CK_DECLARE_FUNCTION (C_SessionCancel,
- (ck_session_handle_t session,
- ck_flags_t flags));
-
-_CK_DECLARE_FUNCTION (C_MessageEncryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_EncryptMessage,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *associated_data,
- unsigned long associated_data_len,
- unsigned char *plaintext,
- unsigned long plaintext_len,
- unsigned char *ciphertext,
- unsigned long *ciphertext_len));
-_CK_DECLARE_FUNCTION (C_EncryptMessageBegin,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *associated_data,
- unsigned long associated_data_len));
-_CK_DECLARE_FUNCTION (C_EncryptMessageNext,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *plaintext_part,
- unsigned long plaintext_part_len,
- unsigned char *ciphertext_part,
- unsigned long *ciphertext_part_len,
- ck_flags_t flags));
-_CK_DECLARE_FUNCTION (C_MessageEncryptFinal,
- (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_MessageDecryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_DecryptMessage,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *associated_data,
- unsigned long associated_data_len,
- unsigned char *ciphertext,
- unsigned long ciphertext_len,
- unsigned char *plaintext,
- unsigned long *plaintext_len));
-_CK_DECLARE_FUNCTION (C_DecryptMessageBegin,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *associated_data,
- unsigned long associated_data_len));
-_CK_DECLARE_FUNCTION (C_DecryptMessageNext,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *ciphertext_part,
- unsigned long ciphertext_part_len,
- unsigned char *plaintext_part,
- unsigned long *plaintext_part_len,
- ck_flags_t flags));
-_CK_DECLARE_FUNCTION (C_MessageDecryptFinal,
- (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_MessageSignInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_SignMessage,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *data,
- unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_SignMessageBegin,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len));
-_CK_DECLARE_FUNCTION (C_SignMessageNext,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *data,
- unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_MessageSignFinal,
- (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_MessageVerifyInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_VerifyMessage,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *data,
- unsigned long data_len,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_VerifyMessageBegin,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len));
-_CK_DECLARE_FUNCTION (C_VerifyMessageNext,
- (ck_session_handle_t session,
- void *parameter,
- unsigned long parameter_len,
- unsigned char *data,
- unsigned long data_len,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_MessageVerifyFinal,
- (ck_session_handle_t session));
-
-/* Flags in Message-based encryption/decryption API */
-#define CKF_END_OF_MESSAGE (0x00000001UL)
-
-struct ck_function_list
-{
- struct ck_version version;
- CK_C_Initialize C_Initialize;
- CK_C_Finalize C_Finalize;
- CK_C_GetInfo C_GetInfo;
- CK_C_GetFunctionList C_GetFunctionList;
- CK_C_GetSlotList C_GetSlotList;
- CK_C_GetSlotInfo C_GetSlotInfo;
- CK_C_GetTokenInfo C_GetTokenInfo;
- CK_C_GetMechanismList C_GetMechanismList;
- CK_C_GetMechanismInfo C_GetMechanismInfo;
- CK_C_InitToken C_InitToken;
- CK_C_InitPIN C_InitPIN;
- CK_C_SetPIN C_SetPIN;
- CK_C_OpenSession C_OpenSession;
- CK_C_CloseSession C_CloseSession;
- CK_C_CloseAllSessions C_CloseAllSessions;
- CK_C_GetSessionInfo C_GetSessionInfo;
- CK_C_GetOperationState C_GetOperationState;
- CK_C_SetOperationState C_SetOperationState;
- CK_C_Login C_Login;
- CK_C_Logout C_Logout;
- CK_C_CreateObject C_CreateObject;
- CK_C_CopyObject C_CopyObject;
- CK_C_DestroyObject C_DestroyObject;
- CK_C_GetObjectSize C_GetObjectSize;
- CK_C_GetAttributeValue C_GetAttributeValue;
- CK_C_SetAttributeValue C_SetAttributeValue;
- CK_C_FindObjectsInit C_FindObjectsInit;
- CK_C_FindObjects C_FindObjects;
- CK_C_FindObjectsFinal C_FindObjectsFinal;
- CK_C_EncryptInit C_EncryptInit;
- CK_C_Encrypt C_Encrypt;
- CK_C_EncryptUpdate C_EncryptUpdate;
- CK_C_EncryptFinal C_EncryptFinal;
- CK_C_DecryptInit C_DecryptInit;
- CK_C_Decrypt C_Decrypt;
- CK_C_DecryptUpdate C_DecryptUpdate;
- CK_C_DecryptFinal C_DecryptFinal;
- CK_C_DigestInit C_DigestInit;
- CK_C_Digest C_Digest;
- CK_C_DigestUpdate C_DigestUpdate;
- CK_C_DigestKey C_DigestKey;
- CK_C_DigestFinal C_DigestFinal;
- CK_C_SignInit C_SignInit;
- CK_C_Sign C_Sign;
- CK_C_SignUpdate C_SignUpdate;
- CK_C_SignFinal C_SignFinal;
- CK_C_SignRecoverInit C_SignRecoverInit;
- CK_C_SignRecover C_SignRecover;
- CK_C_VerifyInit C_VerifyInit;
- CK_C_Verify C_Verify;
- CK_C_VerifyUpdate C_VerifyUpdate;
- CK_C_VerifyFinal C_VerifyFinal;
- CK_C_VerifyRecoverInit C_VerifyRecoverInit;
- CK_C_VerifyRecover C_VerifyRecover;
- CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
- CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
- CK_C_SignEncryptUpdate C_SignEncryptUpdate;
- CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
- CK_C_GenerateKey C_GenerateKey;
- CK_C_GenerateKeyPair C_GenerateKeyPair;
- CK_C_WrapKey C_WrapKey;
- CK_C_UnwrapKey C_UnwrapKey;
- CK_C_DeriveKey C_DeriveKey;
- CK_C_SeedRandom C_SeedRandom;
- CK_C_GenerateRandom C_GenerateRandom;
- CK_C_GetFunctionStatus C_GetFunctionStatus;
- CK_C_CancelFunction C_CancelFunction;
- CK_C_WaitForSlotEvent C_WaitForSlotEvent;
-};
-
-struct ck_function_list_3_0
-{
- struct ck_version version;
- CK_C_Initialize C_Initialize;
- CK_C_Finalize C_Finalize;
- CK_C_GetInfo C_GetInfo;
- CK_C_GetFunctionList C_GetFunctionList;
- CK_C_GetSlotList C_GetSlotList;
- CK_C_GetSlotInfo C_GetSlotInfo;
- CK_C_GetTokenInfo C_GetTokenInfo;
- CK_C_GetMechanismList C_GetMechanismList;
- CK_C_GetMechanismInfo C_GetMechanismInfo;
- CK_C_InitToken C_InitToken;
- CK_C_InitPIN C_InitPIN;
- CK_C_SetPIN C_SetPIN;
- CK_C_OpenSession C_OpenSession;
- CK_C_CloseSession C_CloseSession;
- CK_C_CloseAllSessions C_CloseAllSessions;
- CK_C_GetSessionInfo C_GetSessionInfo;
- CK_C_GetOperationState C_GetOperationState;
- CK_C_SetOperationState C_SetOperationState;
- CK_C_Login C_Login;
- CK_C_Logout C_Logout;
- CK_C_CreateObject C_CreateObject;
- CK_C_CopyObject C_CopyObject;
- CK_C_DestroyObject C_DestroyObject;
- CK_C_GetObjectSize C_GetObjectSize;
- CK_C_GetAttributeValue C_GetAttributeValue;
- CK_C_SetAttributeValue C_SetAttributeValue;
- CK_C_FindObjectsInit C_FindObjectsInit;
- CK_C_FindObjects C_FindObjects;
- CK_C_FindObjectsFinal C_FindObjectsFinal;
- CK_C_EncryptInit C_EncryptInit;
- CK_C_Encrypt C_Encrypt;
- CK_C_EncryptUpdate C_EncryptUpdate;
- CK_C_EncryptFinal C_EncryptFinal;
- CK_C_DecryptInit C_DecryptInit;
- CK_C_Decrypt C_Decrypt;
- CK_C_DecryptUpdate C_DecryptUpdate;
- CK_C_DecryptFinal C_DecryptFinal;
- CK_C_DigestInit C_DigestInit;
- CK_C_Digest C_Digest;
- CK_C_DigestUpdate C_DigestUpdate;
- CK_C_DigestKey C_DigestKey;
- CK_C_DigestFinal C_DigestFinal;
- CK_C_SignInit C_SignInit;
- CK_C_Sign C_Sign;
- CK_C_SignUpdate C_SignUpdate;
- CK_C_SignFinal C_SignFinal;
- CK_C_SignRecoverInit C_SignRecoverInit;
- CK_C_SignRecover C_SignRecover;
- CK_C_VerifyInit C_VerifyInit;
- CK_C_Verify C_Verify;
- CK_C_VerifyUpdate C_VerifyUpdate;
- CK_C_VerifyFinal C_VerifyFinal;
- CK_C_VerifyRecoverInit C_VerifyRecoverInit;
- CK_C_VerifyRecover C_VerifyRecover;
- CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
- CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
- CK_C_SignEncryptUpdate C_SignEncryptUpdate;
- CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
- CK_C_GenerateKey C_GenerateKey;
- CK_C_GenerateKeyPair C_GenerateKeyPair;
- CK_C_WrapKey C_WrapKey;
- CK_C_UnwrapKey C_UnwrapKey;
- CK_C_DeriveKey C_DeriveKey;
- CK_C_SeedRandom C_SeedRandom;
- CK_C_GenerateRandom C_GenerateRandom;
- CK_C_GetFunctionStatus C_GetFunctionStatus;
- CK_C_CancelFunction C_CancelFunction;
- CK_C_WaitForSlotEvent C_WaitForSlotEvent;
- /* PKCS #11 3.0 functions */
- CK_C_GetInterfaceList C_GetInterfaceList;
- CK_C_GetInterface C_GetInterface;
- CK_C_LoginUser C_LoginUser;
- CK_C_SessionCancel C_SessionCancel;
- CK_C_MessageEncryptInit C_MessageEncryptInit;
- CK_C_EncryptMessage C_EncryptMessage;
- CK_C_EncryptMessageBegin C_EncryptMessageBegin;
- CK_C_EncryptMessageNext C_EncryptMessageNext;
- CK_C_MessageEncryptFinal C_MessageEncryptFinal;
- CK_C_MessageDecryptInit C_MessageDecryptInit;
- CK_C_DecryptMessage C_DecryptMessage;
- CK_C_DecryptMessageBegin C_DecryptMessageBegin;
- CK_C_DecryptMessageNext C_DecryptMessageNext;
- CK_C_MessageDecryptFinal C_MessageDecryptFinal;
- CK_C_MessageSignInit C_MessageSignInit;
- CK_C_SignMessage C_SignMessage;
- CK_C_SignMessageBegin C_SignMessageBegin;
- CK_C_SignMessageNext C_SignMessageNext;
- CK_C_MessageSignFinal C_MessageSignFinal;
- CK_C_MessageVerifyInit C_MessageVerifyInit;
- CK_C_VerifyMessage C_VerifyMessage;
- CK_C_VerifyMessageBegin C_VerifyMessageBegin;
- CK_C_VerifyMessageNext C_VerifyMessageNext;
- CK_C_MessageVerifyFinal C_MessageVerifyFinal;
-};
-
-
-typedef ck_rv_t (*ck_createmutex_t) (void **mutex);
-typedef ck_rv_t (*ck_destroymutex_t) (void *mutex);
-typedef ck_rv_t (*ck_lockmutex_t) (void *mutex);
-typedef ck_rv_t (*ck_unlockmutex_t) (void *mutex);
-
-
-struct ck_c_initialize_args
-{
- ck_createmutex_t create_mutex;
- ck_destroymutex_t destroy_mutex;
- ck_lockmutex_t lock_mutex;
- ck_unlockmutex_t unlock_mutex;
- ck_flags_t flags;
- void *reserved;
+struct CK_PBE_PARAMS {
+ CK_BYTE * pInitVector;
+ CK_UTF8CHAR * pPassword;
+ CK_ULONG ulPasswordLen;
+ CK_BYTE * pSalt;
+ CK_ULONG ulSaltLen;
+ CK_ULONG ulIteration;
};
-typedef unsigned long ck_ec_kdf_type_t;
+struct CK_PKCS5_PBKD2_PARAMS {
+ CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;
+ void * pSaltSourceData;
+ CK_ULONG ulSaltSourceDataLen;
+ CK_ULONG iterations;
+ CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
+ void * pPrfData;
+ CK_ULONG ulPrfDataLen;
+ CK_UTF8CHAR * pPassword;
+ CK_ULONG * ulPasswordLen;
+};
-struct ck_ecdh1_derive_params
-{
- ck_ec_kdf_type_t kdf;
- unsigned long shared_data_len;
- void *shared_data;
- unsigned long public_data_len;
- void *public_data;
-};
-
-#define CKF_LIBRARY_CANT_CREATE_OS_THREADS (1UL << 0)
-#define CKF_OS_LOCKING_OK (1UL << 1)
-
-#define CKR_OK (0UL)
-#define CKR_CANCEL (1UL)
-#define CKR_HOST_MEMORY (2UL)
-#define CKR_SLOT_ID_INVALID (3UL)
-#define CKR_GENERAL_ERROR (5UL)
-#define CKR_FUNCTION_FAILED (6UL)
-#define CKR_ARGUMENTS_BAD (7UL)
-#define CKR_NO_EVENT (8UL)
-#define CKR_NEED_TO_CREATE_THREADS (9UL)
-#define CKR_CANT_LOCK (0xaUL)
-#define CKR_ATTRIBUTE_READ_ONLY (0x10UL)
-#define CKR_ATTRIBUTE_SENSITIVE (0x11UL)
-#define CKR_ATTRIBUTE_TYPE_INVALID (0x12UL)
-#define CKR_ATTRIBUTE_VALUE_INVALID (0x13UL)
-#define CKR_ACTION_PROHIBITED (0x1BUL)
-#define CKR_DATA_INVALID (0x20UL)
-#define CKR_DATA_LEN_RANGE (0x21UL)
-#define CKR_DEVICE_ERROR (0x30UL)
-#define CKR_DEVICE_MEMORY (0x31UL)
-#define CKR_DEVICE_REMOVED (0x32UL)
-#define CKR_ENCRYPTED_DATA_INVALID (0x40UL)
-#define CKR_ENCRYPTED_DATA_LEN_RANGE (0x41UL)
-#define CKR_FUNCTION_CANCELED (0x50UL)
-#define CKR_FUNCTION_NOT_PARALLEL (0x51UL)
-#define CKR_FUNCTION_NOT_SUPPORTED (0x54UL)
-#define CKR_KEY_HANDLE_INVALID (0x60UL)
-#define CKR_KEY_SIZE_RANGE (0x62UL)
-#define CKR_KEY_TYPE_INCONSISTENT (0x63UL)
-#define CKR_KEY_NOT_NEEDED (0x64UL)
-#define CKR_KEY_CHANGED (0x65UL)
-#define CKR_KEY_NEEDED (0x66UL)
-#define CKR_KEY_INDIGESTIBLE (0x67UL)
-#define CKR_KEY_FUNCTION_NOT_PERMITTED (0x68UL)
-#define CKR_KEY_NOT_WRAPPABLE (0x69UL)
-#define CKR_KEY_UNEXTRACTABLE (0x6aUL)
-#define CKR_MECHANISM_INVALID (0x70UL)
-#define CKR_MECHANISM_PARAM_INVALID (0x71UL)
-#define CKR_OBJECT_HANDLE_INVALID (0x82UL)
-#define CKR_OPERATION_ACTIVE (0x90UL)
-#define CKR_OPERATION_NOT_INITIALIZED (0x91UL)
-#define CKR_PIN_INCORRECT (0xa0UL)
-#define CKR_PIN_INVALID (0xa1UL)
-#define CKR_PIN_LEN_RANGE (0xa2UL)
-#define CKR_PIN_EXPIRED (0xa3UL)
-#define CKR_PIN_LOCKED (0xa4UL)
-#define CKR_SESSION_CLOSED (0xb0UL)
-#define CKR_SESSION_COUNT (0xb1UL)
-#define CKR_SESSION_HANDLE_INVALID (0xb3UL)
-#define CKR_SESSION_PARALLEL_NOT_SUPPORTED (0xb4UL)
-#define CKR_SESSION_READ_ONLY (0xb5UL)
-#define CKR_SESSION_EXISTS (0xb6UL)
-#define CKR_SESSION_READ_ONLY_EXISTS (0xb7UL)
-#define CKR_SESSION_READ_WRITE_SO_EXISTS (0xb8UL)
-#define CKR_SIGNATURE_INVALID (0xc0UL)
-#define CKR_SIGNATURE_LEN_RANGE (0xc1UL)
-#define CKR_TEMPLATE_INCOMPLETE (0xd0UL)
-#define CKR_TEMPLATE_INCONSISTENT (0xd1UL)
-#define CKR_TOKEN_NOT_PRESENT (0xe0UL)
-#define CKR_TOKEN_NOT_RECOGNIZED (0xe1UL)
-#define CKR_TOKEN_WRITE_PROTECTED (0xe2UL)
-#define CKR_UNWRAPPING_KEY_HANDLE_INVALID (0xf0UL)
-#define CKR_UNWRAPPING_KEY_SIZE_RANGE (0xf1UL)
-#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT (0xf2UL)
-#define CKR_USER_ALREADY_LOGGED_IN (0x100UL)
-#define CKR_USER_NOT_LOGGED_IN (0x101UL)
-#define CKR_USER_PIN_NOT_INITIALIZED (0x102UL)
-#define CKR_USER_TYPE_INVALID (0x103UL)
-#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN (0x104UL)
-#define CKR_USER_TOO_MANY_TYPES (0x105UL)
-#define CKR_WRAPPED_KEY_INVALID (0x110UL)
-#define CKR_WRAPPED_KEY_LEN_RANGE (0x112UL)
-#define CKR_WRAPPING_KEY_HANDLE_INVALID (0x113UL)
-#define CKR_WRAPPING_KEY_SIZE_RANGE (0x114UL)
-#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT (0x115UL)
-#define CKR_RANDOM_SEED_NOT_SUPPORTED (0x120UL)
-#define CKR_RANDOM_NO_RNG (0x121UL)
-#define CKR_DOMAIN_PARAMS_INVALID (0x130UL)
-#define CKR_CURVE_NOT_SUPPORTED (0x140UL)
-#define CKR_BUFFER_TOO_SMALL (0x150UL)
-#define CKR_SAVED_STATE_INVALID (0x160UL)
-#define CKR_INFORMATION_SENSITIVE (0x170UL)
-#define CKR_STATE_UNSAVEABLE (0x180UL)
-#define CKR_CRYPTOKI_NOT_INITIALIZED (0x190UL)
-#define CKR_CRYPTOKI_ALREADY_INITIALIZED (0x191UL)
-#define CKR_MUTEX_BAD (0x1a0UL)
-#define CKR_MUTEX_NOT_LOCKED (0x1a1UL)
-#define CKR_FUNCTION_REJECTED (0x200UL)
-#define CKR_VENDOR_DEFINED (1UL << 31)
-
-
-/* Compatibility layer. */
-
-#ifdef CRYPTOKI_COMPAT
-
-#undef CK_DEFINE_FUNCTION
-#define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name
-
-/* For NULL. */
-#include <stddef.h>
+struct CK_PKCS5_PBKD2_PARAMS2 {
+ CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;
+ void * pSaltSourceData;
+ CK_ULONG ulSaltSourceDataLen;
+ CK_ULONG iterations;
+ CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
+ void * pPrfData;
+ CK_ULONG ulPrfDataLen;
+ CK_UTF8CHAR * pPassword;
+ CK_ULONG ulPasswordLen;
+};
-typedef unsigned char CK_BYTE;
-typedef unsigned char CK_CHAR;
-typedef unsigned char CK_UTF8CHAR;
-typedef unsigned char CK_BBOOL;
-typedef unsigned long int CK_ULONG;
-typedef long int CK_LONG;
-typedef CK_BYTE *CK_BYTE_PTR;
-typedef CK_CHAR *CK_CHAR_PTR;
-typedef CK_UTF8CHAR *CK_UTF8CHAR_PTR;
-typedef CK_ULONG *CK_ULONG_PTR;
-typedef void *CK_VOID_PTR;
-typedef void **CK_VOID_PTR_PTR;
-#define CK_FALSE 0
-#define CK_TRUE 1
-#ifndef CK_DISABLE_TRUE_FALSE
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE 1
-#endif
-#endif
+struct CK_PRF_DATA_PARAM {
+ CK_PRF_DATA_TYPE type;
+ void * pValue;
+ CK_ULONG ulValueLen;
+};
+
+struct CK_RC2_CBC_PARAMS {
+ CK_ULONG ulEffectiveBits;
+ CK_BYTE iv[8];
+};
+
+struct CK_RC2_MAC_GENERAL_PARAMS {
+ CK_ULONG ulEffectiveBits;
+ CK_ULONG ulMacLength;
+};
+
+struct CK_RC5_CBC_PARAMS {
+ CK_ULONG ulWordsize;
+ CK_ULONG ulRounds;
+ CK_BYTE * pIv;
+ CK_ULONG ulIvLen;
+};
+
+struct CK_RC5_MAC_GENERAL_PARAMS {
+ CK_ULONG ulWordsize;
+ CK_ULONG ulRounds;
+ CK_ULONG ulMacLength;
+};
+
+struct CK_RC5_PARAMS {
+ CK_ULONG ulWordsize;
+ CK_ULONG ulRounds;
+};
+
+struct CK_RSA_AES_KEY_WRAP_PARAMS {
+ CK_ULONG ulAESKeyBits;
+ CK_RSA_PKCS_OAEP_PARAMS * pOAEPParams;
+};
+
+struct CK_RSA_PKCS_OAEP_PARAMS {
+ CK_MECHANISM_TYPE hashAlg;
+ CK_RSA_PKCS_MGF_TYPE mgf;
+ CK_RSA_PKCS_OAEP_SOURCE_TYPE source;
+ void * pSourceData;
+ CK_ULONG ulSourceDataLen;
+};
-typedef struct ck_version CK_VERSION;
-typedef struct ck_version *CK_VERSION_PTR;
+struct CK_RSA_PKCS_PSS_PARAMS {
+ CK_MECHANISM_TYPE hashAlg;
+ CK_RSA_PKCS_MGF_TYPE mgf;
+ CK_ULONG sLen;
+};
-typedef struct ck_info CK_INFO;
-typedef struct ck_info *CK_INFO_PTR;
+struct CK_SALSA20_CHACHA20_POLY1305_MSG_PARAMS {
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceLen;
+ CK_BYTE * pTag;
+};
-typedef ck_slot_id_t *CK_SLOT_ID_PTR;
+struct CK_SALSA20_CHACHA20_POLY1305_PARAMS {
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceLen;
+ CK_BYTE * pAAD;
+ CK_ULONG ulAADLen;
+};
-typedef struct ck_slot_info CK_SLOT_INFO;
-typedef struct ck_slot_info *CK_SLOT_INFO_PTR;
+struct CK_SALSA20_PARAMS {
+ CK_BYTE * pBlockCounter;
+ CK_BYTE * pNonce;
+ CK_ULONG ulNonceBits;
+};
-typedef struct ck_token_info CK_TOKEN_INFO;
-typedef struct ck_token_info *CK_TOKEN_INFO_PTR;
+struct CK_SEED_CBC_ENCRYPT_DATA_PARAMS {
+ CK_BYTE iv[16];
+ CK_BYTE * pData;
+ CK_ULONG length;
+};
-typedef ck_session_handle_t *CK_SESSION_HANDLE_PTR;
+struct CK_SIGN_ADDITIONAL_CONTEXT {
+ CK_HEDGE_TYPE hedgeVariant;
+ CK_BYTE * pContext;
+ CK_ULONG ulContextLen;
+};
-typedef struct ck_session_info CK_SESSION_INFO;
-typedef struct ck_session_info *CK_SESSION_INFO_PTR;
+struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS {
+ CK_ULONG ulPasswordLen;
+ CK_BYTE * pPassword;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * pPublicData;
+ CK_ULONG ulPAndGLen;
+ CK_ULONG ulQLen;
+ CK_ULONG ulRandomLen;
+ CK_BYTE * pRandomA;
+ CK_BYTE * pPrimeP;
+ CK_BYTE * pBaseG;
+ CK_BYTE * pSubprimeQ;
+};
-typedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR;
+struct CK_SKIPJACK_RELAYX_PARAMS {
+ CK_ULONG ulOldWrappedXLen;
+ CK_BYTE * pOldWrappedX;
+ CK_ULONG ulOldPasswordLen;
+ CK_BYTE * pOldPassword;
+ CK_ULONG ulOldPublicDataLen;
+ CK_BYTE * pOldPublicData;
+ CK_ULONG ulOldRandomLen;
+ CK_BYTE * pOldRandomA;
+ CK_ULONG ulNewPasswordLen;
+ CK_BYTE * pNewPassword;
+ CK_ULONG ulNewPublicDataLen;
+ CK_BYTE * pNewPublicData;
+ CK_ULONG ulNewRandomLen;
+ CK_BYTE * pNewRandomA;
+};
-typedef ck_object_class_t *CK_OBJECT_CLASS_PTR;
+struct CK_SP800_108_COUNTER_FORMAT {
+ CK_BBOOL bLittleEndian;
+ CK_ULONG ulWidthInBits;
+};
-typedef struct ck_attribute CK_ATTRIBUTE;
-typedef struct ck_attribute *CK_ATTRIBUTE_PTR;
+struct CK_SP800_108_DKM_LENGTH_FORMAT {
+ CK_SP800_108_DKM_LENGTH_METHOD dkmLengthMethod;
+ CK_BBOOL bLittleEndian;
+ CK_ULONG ulWidthInBits;
+};
-typedef struct ck_date CK_DATE;
-typedef struct ck_date *CK_DATE_PTR;
+typedef CK_MECHANISM_TYPE CK_SP800_108_PRF_TYPE;
-typedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR;
+struct CK_SP800_108_FEEDBACK_KDF_PARAMS
+{
+ CK_SP800_108_PRF_TYPE prfType;
+ CK_ULONG ulNumberOfDataParams;
+ CK_PRF_DATA_PARAM * pDataParams;
+ CK_ULONG ulIVLen;
+ CK_BYTE * pIV;
+ CK_ULONG ulAdditionalDerivedKeys;
+ CK_DERIVED_KEY * pAdditionalDerivedKeys;
+};
-typedef ck_rsa_pkcs_mgf_type_t *CK_RSA_PKCS_MGF_TYPE_PTR;
+struct CK_TLS12_EXTENDED_MASTER_KEY_DERIVE_PARAMS {
+ CK_MECHANISM_TYPE prfHashMechanism;
+ CK_BYTE * pSessionHash;
+ CK_ULONG ulSessionHashLen;
+ CK_VERSION * pVersion;
+};
-typedef struct ck_mechanism CK_MECHANISM;
-typedef struct ck_mechanism *CK_MECHANISM_PTR;
+struct CK_SP800_108_KDF_PARAMS
+{
+ CK_SP800_108_PRF_TYPE prfType;
+ CK_ULONG ulNumberOfDataParams;
+ CK_PRF_DATA_PARAM * pDataParams;
+ CK_ULONG ulAdditionalDerivedKeys;
+ CK_DERIVED_KEY * pAdditionalDerivedKeys;
+};
-typedef struct ck_mechanism_info CK_MECHANISM_INFO;
-typedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR;
+struct CK_X2RATCHET_INITIALIZE_PARAMS {
+ CK_BYTE * sk;
+ CK_OBJECT_HANDLE peer_public_prekey;
+ CK_OBJECT_HANDLE peer_public_identity;
+ CK_OBJECT_HANDLE own_public_identity;
+ CK_BBOOL bEncryptedHeader;
+ CK_ULONG eCurve;
+ CK_MECHANISM_TYPE aeadMechanism;
+ CK_X2RATCHET_KDF_TYPE kdfMechanism;
+};
-typedef struct ck_interface CK_INTERFACE;
-typedef struct ck_interface *CK_INTERFACE_PTR;
-typedef struct ck_interface **CK_INTERFACE_PTR_PTR;
+struct CK_X2RATCHET_RESPOND_PARAMS {
+ CK_BYTE * sk;
+ CK_OBJECT_HANDLE own_prekey;
+ CK_OBJECT_HANDLE initiator_identity;
+ CK_OBJECT_HANDLE own_public_identity;
+ CK_BBOOL bEncryptedHeader;
+ CK_ULONG eCurve;
+ CK_MECHANISM_TYPE aeadMechanism;
+ CK_X2RATCHET_KDF_TYPE kdfMechanism;
+};
-typedef struct ck_function_list CK_FUNCTION_LIST;
-typedef struct ck_function_list *CK_FUNCTION_LIST_PTR;
-typedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR;
+struct CK_X3DH_INITIATE_PARAMS {
+ CK_X3DH_KDF_TYPE kdf;
+ CK_OBJECT_HANDLE pPeer_identity;
+ CK_OBJECT_HANDLE pPeer_prekey;
+ CK_BYTE * pPrekey_signature;
+ CK_BYTE * pOnetime_key;
+ CK_OBJECT_HANDLE pOwn_identity;
+ CK_OBJECT_HANDLE pOwn_ephemeral;
+};
-typedef struct ck_function_list_3_0 CK_FUNCTION_LIST_3_0;
-typedef struct ck_function_list_3_0 *CK_FUNCTION_LIST_3_0_PTR;
-typedef struct ck_function_list_3_0 **CK_FUNCTION_LIST_3_0_PTR_PTR;
+struct CK_X3DH_RESPOND_PARAMS {
+ CK_X3DH_KDF_TYPE kdf;
+ CK_BYTE * pIdentity_id;
+ CK_BYTE * pPrekey_id;
+ CK_BYTE * pOnetime_id;
+ CK_OBJECT_HANDLE pInitiator_identity;
+ CK_BYTE * pInitiator_ephemeral;
+};
-typedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS;
-typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR;
+struct CK_X9_42_DH1_DERIVE_PARAMS {
+ CK_X9_42_DH_KDF_TYPE kdf;
+ CK_ULONG ulOtherInfoLen;
+ CK_BYTE * pOtherInfo;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * pPublicData;
+};
-#define NULL_PTR NULL
+struct CK_X9_42_DH2_DERIVE_PARAMS {
+ CK_X9_42_DH_KDF_TYPE kdf;
+ CK_ULONG ulOtherInfoLen;
+ CK_BYTE * pOtherInfo;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * pPublicData;
+ CK_ULONG ulPrivateDataLen;
+ CK_OBJECT_HANDLE hPrivateData;
+ CK_ULONG ulPublicDataLen2;
+ CK_BYTE * pPublicData2;
+};
-/* Delete the helper macros defined at the top of the file. */
-#undef ck_flags_t
-#undef ck_version
+struct CK_X9_42_MQV_DERIVE_PARAMS {
+ CK_X9_42_DH_KDF_TYPE kdf;
+ CK_ULONG ulOtherInfoLen;
+ CK_BYTE * OtherInfo;
+ CK_ULONG ulPublicDataLen;
+ CK_BYTE * PublicData;
+ CK_ULONG ulPrivateDataLen;
+ CK_OBJECT_HANDLE hPrivateData;
+ CK_ULONG ulPublicDataLen2;
+ CK_BYTE * PublicData2;
+ CK_OBJECT_HANDLE publicKey;
+};
-#undef ck_info
-#undef cryptoki_version
-#undef manufacturer_id
-#undef library_description
-#undef library_version
+struct CK_XEDDSA_PARAMS {
+ CK_XEDDSA_HASH_TYPE hash;
+};
-#undef ck_notification_t
-#undef ck_slot_id_t
+/* TLS related structure definitions */
+STRUCTDEF(CK_SSL3_KEY_MAT_OUT);
+STRUCTDEF(CK_SSL3_KEY_MAT_PARAMS);
+STRUCTDEF(CK_SSL3_MASTER_KEY_DERIVE_PARAMS);
+STRUCTDEF(CK_SSL3_RANDOM_DATA);
+STRUCTDEF(CK_TLS_KDF_PARAMS);
+STRUCTDEF(CK_TLS_MAC_PARAMS);
+STRUCTDEF(CK_TLS_PRF_PARAMS);
+STRUCTDEF(CK_TLS12_KEY_MAT_PARAMS);
+STRUCTDEF(CK_TLS12_MASTER_KEY_DERIVE_PARAMS);
+STRUCTDEF(CK_WTLS_KEY_MAT_OUT);
+STRUCTDEF(CK_WTLS_KEY_MAT_PARAMS);
+STRUCTDEF(CK_WTLS_MASTER_KEY_DERIVE_PARAMS);
+STRUCTDEF(CK_WTLS_PRF_PARAMS);
+STRUCTDEF(CK_WTLS_RANDOM_DATA);
+
+struct CK_SSL3_KEY_MAT_OUT {
+ CK_OBJECT_HANDLE hClientMacSecret;
+ CK_OBJECT_HANDLE hServerMacSecret;
+ CK_OBJECT_HANDLE hClientKey;
+ CK_OBJECT_HANDLE hServerKey;
+ CK_BYTE * pIVClient;
+ CK_BYTE * pIVServer;
+};
-#undef ck_slot_info
-#undef slot_description
-#undef hardware_version
-#undef firmware_version
+struct CK_SSL3_RANDOM_DATA {
+ CK_BYTE * pClientRandom;
+ CK_ULONG ulClientRandomLen;
+ CK_BYTE * pServerRandom;
+ CK_ULONG ulServerRandomLen;
+};
-#undef ck_token_info
-#undef serial_number
-#undef max_session_count
-#undef session_count
-#undef max_rw_session_count
-#undef rw_session_count
-#undef max_pin_len
-#undef min_pin_len
-#undef total_public_memory
-#undef free_public_memory
-#undef total_private_memory
-#undef free_private_memory
-#undef utc_time
+struct CK_SSL3_KEY_MAT_PARAMS {
+ CK_ULONG ulMacSizeInBits;
+ CK_ULONG ulKeySizeInBits;
+ CK_ULONG ulIVSizeInBits;
+ CK_BBOOL bIsExport;
+ CK_SSL3_RANDOM_DATA RandomInfo;
+ CK_SSL3_KEY_MAT_OUT * pReturnedKeyMaterial;
+};
-#undef ck_session_handle_t
-#undef ck_user_type_t
-#undef ck_state_t
+struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS {
+ CK_SSL3_RANDOM_DATA RandomInfo;
+ CK_VERSION * pVersion;
+};
-#undef ck_session_info
-#undef slot_id
-#undef device_error
+struct CK_TLS_KDF_PARAMS {
+ CK_MECHANISM_TYPE prfMechanism;
+ CK_BYTE * pLabel;
+ CK_ULONG ulLabelLength;
+ CK_SSL3_RANDOM_DATA RandomInfo;
+ CK_BYTE * pContextData;
+ CK_ULONG ulContextDataLength;
+};
-#undef ck_object_handle_t
-#undef ck_object_class_t
-#undef ck_hw_feature_type_t
-#undef ck_key_type_t
-#undef ck_certificate_type_t
-#undef ck_attribute_type_t
+struct CK_TLS_MAC_PARAMS {
+ CK_MECHANISM_TYPE prfHashMechanism;
+ CK_ULONG ulMacLength;
+ CK_ULONG ulServerOrClient;
+};
-#undef ck_attribute
-#undef value
-#undef value_len
+struct CK_TLS_PRF_PARAMS {
+ CK_BYTE * pSeed;
+ CK_ULONG ulSeedLen;
+ CK_BYTE * pLabel;
+ CK_ULONG ulLabelLen;
+ CK_BYTE * pOutput;
+ CK_ULONG * pulOutputLen;
+};
-#undef ck_date
+struct CK_TLS12_KEY_MAT_PARAMS {
+ CK_ULONG ulMacSizeInBits;
+ CK_ULONG ulKeySizeInBits;
+ CK_ULONG ulIVSizeInBits;
+ CK_BBOOL bIsExport;
+ CK_SSL3_RANDOM_DATA RandomInfo;
+ CK_SSL3_KEY_MAT_OUT * pReturnedKeyMaterial;
+ CK_MECHANISM_TYPE prfHashMechanism;
+};
-#undef ck_mechanism_type_t
+struct CK_TLS12_MASTER_KEY_DERIVE_PARAMS {
+ CK_SSL3_RANDOM_DATA RandomInfo;
+ CK_VERSION * pVersion;
+ CK_MECHANISM_TYPE prfHashMechanism;
+};
-#undef ck_rsa_pkcs_mgf_type_t
+struct CK_WTLS_KEY_MAT_OUT {
+ CK_OBJECT_HANDLE hMacSecret;
+ CK_OBJECT_HANDLE hKey;
+ CK_BYTE * pIV;
+};
+
+struct CK_WTLS_RANDOM_DATA {
+ CK_BYTE * pClientRandom;
+ CK_ULONG ulClientRandomLen;
+ CK_BYTE * pServerRandom;
+ CK_ULONG ulServerRandomLen;
+};
+
+struct CK_WTLS_KEY_MAT_PARAMS {
+ CK_MECHANISM_TYPE DigestMechanism;
+ CK_ULONG ulMacSizeInBits;
+ CK_ULONG ulKeySizeInBits;
+ CK_ULONG ulIVSizeInBits;
+ CK_ULONG ulSequenceNumber;
+ CK_BBOOL bIsExport;
+ CK_WTLS_RANDOM_DATA RandomInfo;
+ CK_WTLS_KEY_MAT_OUT * pReturnedKeyMaterial;
+};
-#undef ck_mechanism
-#undef parameter
-#undef parameter_len
+struct CK_WTLS_MASTER_KEY_DERIVE_PARAMS {
+ CK_MECHANISM_TYPE DigestMechanism;
+ CK_WTLS_RANDOM_DATA RandomInfo;
+ CK_BYTE * pVersion;
+};
-#undef ck_mechanism_info
-#undef min_key_size
-#undef max_key_size
+struct CK_WTLS_PRF_PARAMS {
+ CK_MECHANISM_TYPE DigestMechanism;
+ CK_BYTE * pSeed;
+ CK_ULONG ulSeedLen;
+ CK_BYTE * pLabel;
+ CK_ULONG ulLabelLen;
+ CK_BYTE * pOutput;
+ CK_ULONG * pulOutputLen;
+};
-#undef ck_rv_t
-#undef ck_notify_t
+typedef CK_RV (* CK_C_Initialize)(void *);
+typedef CK_RV (* CK_C_Finalize)(void *);
+typedef CK_RV (* CK_C_GetInfo)(CK_INFO *);
+typedef CK_RV (* CK_C_GetFunctionList)(CK_FUNCTION_LIST **);
+typedef CK_RV (* CK_C_GetSlotList)(CK_BBOOL, CK_SLOT_ID *, CK_ULONG *);
+typedef CK_RV (* CK_C_GetSlotInfo)(CK_SLOT_ID, CK_SLOT_INFO *);
+typedef CK_RV (* CK_C_GetTokenInfo)(CK_SLOT_ID, CK_TOKEN_INFO *);
+typedef CK_RV (* CK_C_GetMechanismList)(CK_SLOT_ID, CK_MECHANISM_TYPE *,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_GetMechanismInfo)(CK_SLOT_ID, CK_MECHANISM_TYPE,
+ CK_MECHANISM_INFO *);
+typedef CK_RV (* CK_C_InitToken)(CK_SLOT_ID, CK_UTF8CHAR *, CK_ULONG,
+ CK_UTF8CHAR *);
+typedef CK_RV (* CK_C_InitPIN)(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG);
+typedef CK_RV (* CK_C_SetPIN)(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG,
+ CK_UTF8CHAR *, CK_ULONG);
+typedef CK_RV (* CK_C_OpenSession)(CK_SLOT_ID, CK_FLAGS, void *, CK_NOTIFY,
+ CK_SESSION_HANDLE *);
+typedef CK_RV (* CK_C_CloseSession)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_CloseAllSessions)(CK_SLOT_ID);
+typedef CK_RV (* CK_C_GetSessionInfo)(CK_SESSION_HANDLE, CK_SESSION_INFO *);
+typedef CK_RV (* CK_C_GetOperationState)(CK_SESSION_HANDLE, CK_BYTE *,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_SetOperationState)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_OBJECT_HANDLE, CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_Login)(CK_SESSION_HANDLE, CK_USER_TYPE, CK_UTF8CHAR *,
+ CK_ULONG);
+typedef CK_RV (* CK_C_Logout)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_CreateObject)(CK_SESSION_HANDLE, CK_ATTRIBUTE *, CK_ULONG,
+ CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_CopyObject)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
+ CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_DestroyObject)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_GetObjectSize)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_GetAttributeValue)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
+ CK_ATTRIBUTE *, CK_ULONG);
+typedef CK_RV (* CK_C_SetAttributeValue)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
+ CK_ATTRIBUTE *, CK_ULONG);
+typedef CK_RV (* CK_C_FindObjectsInit)(CK_SESSION_HANDLE, CK_ATTRIBUTE *,
+ CK_ULONG);
+typedef CK_RV (* CK_C_FindObjects)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE *,
+ CK_ULONG, CK_ULONG *);
+typedef CK_RV (* CK_C_FindObjectsFinal)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_EncryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_Encrypt)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_EncryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_EncryptFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DecryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_Decrypt)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DecryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DecryptFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DigestInit)(CK_SESSION_HANDLE, CK_MECHANISM *);
+typedef CK_RV (* CK_C_Digest)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_DigestUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_DigestKey)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_DigestFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_SignInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_Sign)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_SignUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_SignFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_SignRecoverInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_SignRecover)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_VerifyInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_Verify)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG);
+typedef CK_RV (* CK_C_VerifyUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_VerifyFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_VerifyRecoverInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_VerifyRecover)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DigestEncryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *,
+ CK_ULONG, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DecryptDigestUpdate)(CK_SESSION_HANDLE, CK_BYTE *,
+ CK_ULONG, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_SignEncryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DecryptVerifyUpdate)(CK_SESSION_HANDLE, CK_BYTE *,
+ CK_ULONG, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_GenerateKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_ATTRIBUTE *, CK_ULONG,
+ CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_GenerateKeyPair)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_ATTRIBUTE *, CK_ULONG, CK_ATTRIBUTE *,
+ CK_ULONG, CK_OBJECT_HANDLE *,
+ CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_WrapKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_OBJECT_HANDLE, CK_BYTE *,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_UnwrapKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_BYTE *, CK_ULONG,
+ CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_DeriveKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_ATTRIBUTE *, CK_ULONG,
+ CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_SeedRandom)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_GenerateRandom)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_GetFunctionStatus)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_CancelFunction)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_WaitForSlotEvent)(CK_FLAGS, CK_SLOT_ID *, void *);
+typedef CK_RV (* CK_C_GetInterfaceList)(CK_INTERFACE *, CK_ULONG *);
+typedef CK_RV (* CK_C_GetInterface)(CK_UTF8CHAR *, CK_VERSION *,
+ CK_INTERFACE **, CK_FLAGS);
+typedef CK_RV (* CK_C_LoginUser)(CK_SESSION_HANDLE, CK_USER_TYPE, CK_UTF8CHAR *,
+ CK_ULONG, CK_UTF8CHAR *, CK_ULONG);
+typedef CK_RV (* CK_C_SessionCancel)(CK_SESSION_HANDLE, CK_FLAGS);
+typedef CK_RV (* CK_C_MessageEncryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_EncryptMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_EncryptMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_EncryptMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG *, CK_FLAGS);
+typedef CK_RV (* CK_C_MessageEncryptFinal)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_MessageDecryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_DecryptMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG,
+ CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_DecryptMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_DecryptMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG *, CK_FLAGS);
+typedef CK_RV (* CK_C_MessageDecryptFinal)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_MessageSignInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_SignMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
+typedef CK_RV (* CK_C_SignMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG);
+typedef CK_RV (* CK_C_SignMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_MessageSignFinal)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_MessageVerifyInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE);
+typedef CK_RV (* CK_C_VerifyMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_VerifyMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG);
+typedef CK_RV (* CK_C_VerifyMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
+ CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG);
+typedef CK_RV (* CK_C_MessageVerifyFinal)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_EncapsulateKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_ATTRIBUTE *,
+ CK_ULONG, CK_BYTE *, CK_ULONG *,
+ CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_DecapsulateKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_ATTRIBUTE *,
+ CK_ULONG, CK_BYTE *, CK_ULONG,
+ CK_OBJECT_HANDLE *);
+typedef CK_RV (* CK_C_VerifySignatureInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_BYTE *,
+ CK_ULONG);
+typedef CK_RV (* CK_C_VerifySignature)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_VerifySignatureUpdate)(CK_SESSION_HANDLE, CK_BYTE *,
+ CK_ULONG);
+typedef CK_RV (* CK_C_VerifySignatureFinal)(CK_SESSION_HANDLE);
+typedef CK_RV (* CK_C_GetSessionValidationFlags)(CK_SESSION_HANDLE,
+ CK_SESSION_VALIDATION_FLAGS_TYPE,
+ CK_FLAGS *);
+typedef CK_RV (* CK_C_AsyncComplete)(CK_SESSION_HANDLE, CK_UTF8CHAR *,
+ CK_ASYNC_DATA *);
+typedef CK_RV (* CK_C_AsyncGetID)(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG *);
+typedef CK_RV (* CK_C_AsyncJoin)(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG,
+ CK_BYTE *, CK_ULONG);
+typedef CK_RV (* CK_C_WrapKeyAuthenticated)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_OBJECT_HANDLE,
+ CK_BYTE *, CK_ULONG, CK_BYTE *,
+ CK_ULONG *);
+typedef CK_RV (* CK_C_UnwrapKeyAuthenticated)(CK_SESSION_HANDLE, CK_MECHANISM *,
+ CK_OBJECT_HANDLE, CK_BYTE *,
+ CK_ULONG, CK_ATTRIBUTE *,
+ CK_ULONG, CK_BYTE *, CK_ULONG,
+ CK_OBJECT_HANDLE *);
+
+struct CK_FUNCTION_LIST_3_2 {
+ CK_VERSION version;
+ CK_C_Initialize C_Initialize;
+ CK_C_Finalize C_Finalize;
+ CK_C_GetInfo C_GetInfo;
+ CK_C_GetFunctionList C_GetFunctionList;
+ CK_C_GetSlotList C_GetSlotList;
+ CK_C_GetSlotInfo C_GetSlotInfo;
+ CK_C_GetTokenInfo C_GetTokenInfo;
+ CK_C_GetMechanismList C_GetMechanismList;
+ CK_C_GetMechanismInfo C_GetMechanismInfo;
+ CK_C_InitToken C_InitToken;
+ CK_C_InitPIN C_InitPIN;
+ CK_C_SetPIN C_SetPIN;
+ CK_C_OpenSession C_OpenSession;
+ CK_C_CloseSession C_CloseSession;
+ CK_C_CloseAllSessions C_CloseAllSessions;
+ CK_C_GetSessionInfo C_GetSessionInfo;
+ CK_C_GetOperationState C_GetOperationState;
+ CK_C_SetOperationState C_SetOperationState;
+ CK_C_Login C_Login;
+ CK_C_Logout C_Logout;
+ CK_C_CreateObject C_CreateObject;
+ CK_C_CopyObject C_CopyObject;
+ CK_C_DestroyObject C_DestroyObject;
+ CK_C_GetObjectSize C_GetObjectSize;
+ CK_C_GetAttributeValue C_GetAttributeValue;
+ CK_C_SetAttributeValue C_SetAttributeValue;
+ CK_C_FindObjectsInit C_FindObjectsInit;
+ CK_C_FindObjects C_FindObjects;
+ CK_C_FindObjectsFinal C_FindObjectsFinal;
+ CK_C_EncryptInit C_EncryptInit;
+ CK_C_Encrypt C_Encrypt;
+ CK_C_EncryptUpdate C_EncryptUpdate;
+ CK_C_EncryptFinal C_EncryptFinal;
+ CK_C_DecryptInit C_DecryptInit;
+ CK_C_Decrypt C_Decrypt;
+ CK_C_DecryptUpdate C_DecryptUpdate;
+ CK_C_DecryptFinal C_DecryptFinal;
+ CK_C_DigestInit C_DigestInit;
+ CK_C_Digest C_Digest;
+ CK_C_DigestUpdate C_DigestUpdate;
+ CK_C_DigestKey C_DigestKey;
+ CK_C_DigestFinal C_DigestFinal;
+ CK_C_SignInit C_SignInit;
+ CK_C_Sign C_Sign;
+ CK_C_SignUpdate C_SignUpdate;
+ CK_C_SignFinal C_SignFinal;
+ CK_C_SignRecoverInit C_SignRecoverInit;
+ CK_C_SignRecover C_SignRecover;
+ CK_C_VerifyInit C_VerifyInit;
+ CK_C_Verify C_Verify;
+ CK_C_VerifyUpdate C_VerifyUpdate;
+ CK_C_VerifyFinal C_VerifyFinal;
+ CK_C_VerifyRecoverInit C_VerifyRecoverInit;
+ CK_C_VerifyRecover C_VerifyRecover;
+ CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
+ CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
+ CK_C_SignEncryptUpdate C_SignEncryptUpdate;
+ CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
+ CK_C_GenerateKey C_GenerateKey;
+ CK_C_GenerateKeyPair C_GenerateKeyPair;
+ CK_C_WrapKey C_WrapKey;
+ CK_C_UnwrapKey C_UnwrapKey;
+ CK_C_DeriveKey C_DeriveKey;
+ CK_C_SeedRandom C_SeedRandom;
+ CK_C_GenerateRandom C_GenerateRandom;
+ CK_C_GetFunctionStatus C_GetFunctionStatus;
+ CK_C_CancelFunction C_CancelFunction;
+ CK_C_WaitForSlotEvent C_WaitForSlotEvent;
+ CK_C_GetInterfaceList C_GetInterfaceList;
+ CK_C_GetInterface C_GetInterface;
+ CK_C_LoginUser C_LoginUser;
+ CK_C_SessionCancel C_SessionCancel;
+ CK_C_MessageEncryptInit C_MessageEncryptInit;
+ CK_C_EncryptMessage C_EncryptMessage;
+ CK_C_EncryptMessageBegin C_EncryptMessageBegin;
+ CK_C_EncryptMessageNext C_EncryptMessageNext;
+ CK_C_MessageEncryptFinal C_MessageEncryptFinal;
+ CK_C_MessageDecryptInit C_MessageDecryptInit;
+ CK_C_DecryptMessage C_DecryptMessage;
+ CK_C_DecryptMessageBegin C_DecryptMessageBegin;
+ CK_C_DecryptMessageNext C_DecryptMessageNext;
+ CK_C_MessageDecryptFinal C_MessageDecryptFinal;
+ CK_C_MessageSignInit C_MessageSignInit;
+ CK_C_SignMessage C_SignMessage;
+ CK_C_SignMessageBegin C_SignMessageBegin;
+ CK_C_SignMessageNext C_SignMessageNext;
+ CK_C_MessageSignFinal C_MessageSignFinal;
+ CK_C_MessageVerifyInit C_MessageVerifyInit;
+ CK_C_VerifyMessage C_VerifyMessage;
+ CK_C_VerifyMessageBegin C_VerifyMessageBegin;
+ CK_C_VerifyMessageNext C_VerifyMessageNext;
+ CK_C_MessageVerifyFinal C_MessageVerifyFinal;
+ CK_C_EncapsulateKey C_EncapsulateKey;
+ CK_C_DecapsulateKey C_DecapsulateKey;
+ CK_C_VerifySignatureInit C_VerifySignatureInit;
+ CK_C_VerifySignature C_VerifySignature;
+ CK_C_VerifySignatureUpdate C_VerifySignatureUpdate;
+ CK_C_VerifySignatureFinal C_VerifySignatureFinal;
+ CK_C_GetSessionValidationFlags C_GetSessionValidationFlags;
+ CK_C_AsyncComplete C_AsyncComplete;
+ CK_C_AsyncGetID C_AsyncGetID;
+ CK_C_AsyncJoin C_AsyncJoin;
+ CK_C_WrapKeyAuthenticated C_WrapKeyAuthenticated ;
+ CK_C_UnwrapKeyAuthenticated C_UnwrapKeyAuthenticated ;
+};
-#undef ck_interface
+struct CK_FUNCTION_LIST_3_0 {
+ CK_VERSION version;
+ CK_C_Initialize C_Initialize;
+ CK_C_Finalize C_Finalize;
+ CK_C_GetInfo C_GetInfo;
+ CK_C_GetFunctionList C_GetFunctionList;
+ CK_C_GetSlotList C_GetSlotList;
+ CK_C_GetSlotInfo C_GetSlotInfo;
+ CK_C_GetTokenInfo C_GetTokenInfo;
+ CK_C_GetMechanismList C_GetMechanismList;
+ CK_C_GetMechanismInfo C_GetMechanismInfo;
+ CK_C_InitToken C_InitToken;
+ CK_C_InitPIN C_InitPIN;
+ CK_C_SetPIN C_SetPIN;
+ CK_C_OpenSession C_OpenSession;
+ CK_C_CloseSession C_CloseSession;
+ CK_C_CloseAllSessions C_CloseAllSessions;
+ CK_C_GetSessionInfo C_GetSessionInfo;
+ CK_C_GetOperationState C_GetOperationState;
+ CK_C_SetOperationState C_SetOperationState;
+ CK_C_Login C_Login;
+ CK_C_Logout C_Logout;
+ CK_C_CreateObject C_CreateObject;
+ CK_C_CopyObject C_CopyObject;
+ CK_C_DestroyObject C_DestroyObject;
+ CK_C_GetObjectSize C_GetObjectSize;
+ CK_C_GetAttributeValue C_GetAttributeValue;
+ CK_C_SetAttributeValue C_SetAttributeValue;
+ CK_C_FindObjectsInit C_FindObjectsInit;
+ CK_C_FindObjects C_FindObjects;
+ CK_C_FindObjectsFinal C_FindObjectsFinal;
+ CK_C_EncryptInit C_EncryptInit;
+ CK_C_Encrypt C_Encrypt;
+ CK_C_EncryptUpdate C_EncryptUpdate;
+ CK_C_EncryptFinal C_EncryptFinal;
+ CK_C_DecryptInit C_DecryptInit;
+ CK_C_Decrypt C_Decrypt;
+ CK_C_DecryptUpdate C_DecryptUpdate;
+ CK_C_DecryptFinal C_DecryptFinal;
+ CK_C_DigestInit C_DigestInit;
+ CK_C_Digest C_Digest;
+ CK_C_DigestUpdate C_DigestUpdate;
+ CK_C_DigestKey C_DigestKey;
+ CK_C_DigestFinal C_DigestFinal;
+ CK_C_SignInit C_SignInit;
+ CK_C_Sign C_Sign;
+ CK_C_SignUpdate C_SignUpdate;
+ CK_C_SignFinal C_SignFinal;
+ CK_C_SignRecoverInit C_SignRecoverInit;
+ CK_C_SignRecover C_SignRecover;
+ CK_C_VerifyInit C_VerifyInit;
+ CK_C_Verify C_Verify;
+ CK_C_VerifyUpdate C_VerifyUpdate;
+ CK_C_VerifyFinal C_VerifyFinal;
+ CK_C_VerifyRecoverInit C_VerifyRecoverInit;
+ CK_C_VerifyRecover C_VerifyRecover;
+ CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
+ CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
+ CK_C_SignEncryptUpdate C_SignEncryptUpdate;
+ CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
+ CK_C_GenerateKey C_GenerateKey;
+ CK_C_GenerateKeyPair C_GenerateKeyPair;
+ CK_C_WrapKey C_WrapKey;
+ CK_C_UnwrapKey C_UnwrapKey;
+ CK_C_DeriveKey C_DeriveKey;
+ CK_C_SeedRandom C_SeedRandom;
+ CK_C_GenerateRandom C_GenerateRandom;
+ CK_C_GetFunctionStatus C_GetFunctionStatus;
+ CK_C_CancelFunction C_CancelFunction;
+ CK_C_WaitForSlotEvent C_WaitForSlotEvent;
+ CK_C_GetInterfaceList C_GetInterfaceList;
+ CK_C_GetInterface C_GetInterface;
+ CK_C_LoginUser C_LoginUser;
+ CK_C_SessionCancel C_SessionCancel;
+ CK_C_MessageEncryptInit C_MessageEncryptInit;
+ CK_C_EncryptMessage C_EncryptMessage;
+ CK_C_EncryptMessageBegin C_EncryptMessageBegin;
+ CK_C_EncryptMessageNext C_EncryptMessageNext;
+ CK_C_MessageEncryptFinal C_MessageEncryptFinal;
+ CK_C_MessageDecryptInit C_MessageDecryptInit;
+ CK_C_DecryptMessage C_DecryptMessage;
+ CK_C_DecryptMessageBegin C_DecryptMessageBegin;
+ CK_C_DecryptMessageNext C_DecryptMessageNext;
+ CK_C_MessageDecryptFinal C_MessageDecryptFinal;
+ CK_C_MessageSignInit C_MessageSignInit;
+ CK_C_SignMessage C_SignMessage;
+ CK_C_SignMessageBegin C_SignMessageBegin;
+ CK_C_SignMessageNext C_SignMessageNext;
+ CK_C_MessageSignFinal C_MessageSignFinal;
+ CK_C_MessageVerifyInit C_MessageVerifyInit;
+ CK_C_VerifyMessage C_VerifyMessage;
+ CK_C_VerifyMessageBegin C_VerifyMessageBegin;
+ CK_C_VerifyMessageNext C_VerifyMessageNext;
+ CK_C_MessageVerifyFinal C_MessageVerifyFinal;
+};
-#undef ck_function_list
-#undef ck_function_list_3_0
+struct CK_FUNCTION_LIST {
+ CK_VERSION version;
+ CK_C_Initialize C_Initialize;
+ CK_C_Finalize C_Finalize;
+ CK_C_GetInfo C_GetInfo;
+ CK_C_GetFunctionList C_GetFunctionList;
+ CK_C_GetSlotList C_GetSlotList;
+ CK_C_GetSlotInfo C_GetSlotInfo;
+ CK_C_GetTokenInfo C_GetTokenInfo;
+ CK_C_GetMechanismList C_GetMechanismList;
+ CK_C_GetMechanismInfo C_GetMechanismInfo;
+ CK_C_InitToken C_InitToken;
+ CK_C_InitPIN C_InitPIN;
+ CK_C_SetPIN C_SetPIN;
+ CK_C_OpenSession C_OpenSession;
+ CK_C_CloseSession C_CloseSession;
+ CK_C_CloseAllSessions C_CloseAllSessions;
+ CK_C_GetSessionInfo C_GetSessionInfo;
+ CK_C_GetOperationState C_GetOperationState;
+ CK_C_SetOperationState C_SetOperationState;
+ CK_C_Login C_Login;
+ CK_C_Logout C_Logout;
+ CK_C_CreateObject C_CreateObject;
+ CK_C_CopyObject C_CopyObject;
+ CK_C_DestroyObject C_DestroyObject;
+ CK_C_GetObjectSize C_GetObjectSize;
+ CK_C_GetAttributeValue C_GetAttributeValue;
+ CK_C_SetAttributeValue C_SetAttributeValue;
+ CK_C_FindObjectsInit C_FindObjectsInit;
+ CK_C_FindObjects C_FindObjects;
+ CK_C_FindObjectsFinal C_FindObjectsFinal;
+ CK_C_EncryptInit C_EncryptInit;
+ CK_C_Encrypt C_Encrypt;
+ CK_C_EncryptUpdate C_EncryptUpdate;
+ CK_C_EncryptFinal C_EncryptFinal;
+ CK_C_DecryptInit C_DecryptInit;
+ CK_C_Decrypt C_Decrypt;
+ CK_C_DecryptUpdate C_DecryptUpdate;
+ CK_C_DecryptFinal C_DecryptFinal;
+ CK_C_DigestInit C_DigestInit;
+ CK_C_Digest C_Digest;
+ CK_C_DigestUpdate C_DigestUpdate;
+ CK_C_DigestKey C_DigestKey;
+ CK_C_DigestFinal C_DigestFinal;
+ CK_C_SignInit C_SignInit;
+ CK_C_Sign C_Sign;
+ CK_C_SignUpdate C_SignUpdate;
+ CK_C_SignFinal C_SignFinal;
+ CK_C_SignRecoverInit C_SignRecoverInit;
+ CK_C_SignRecover C_SignRecover;
+ CK_C_VerifyInit C_VerifyInit;
+ CK_C_Verify C_Verify;
+ CK_C_VerifyUpdate C_VerifyUpdate;
+ CK_C_VerifyFinal C_VerifyFinal;
+ CK_C_VerifyRecoverInit C_VerifyRecoverInit;
+ CK_C_VerifyRecover C_VerifyRecover;
+ CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
+ CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
+ CK_C_SignEncryptUpdate C_SignEncryptUpdate;
+ CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
+ CK_C_GenerateKey C_GenerateKey;
+ CK_C_GenerateKeyPair C_GenerateKeyPair;
+ CK_C_WrapKey C_WrapKey;
+ CK_C_UnwrapKey C_UnwrapKey;
+ CK_C_DeriveKey C_DeriveKey;
+ CK_C_SeedRandom C_SeedRandom;
+ CK_C_GenerateRandom C_GenerateRandom;
+ CK_C_GetFunctionStatus C_GetFunctionStatus;
+ CK_C_CancelFunction C_CancelFunction;
+ CK_C_WaitForSlotEvent C_WaitForSlotEvent;
+};
-#undef ck_createmutex_t
-#undef ck_destroymutex_t
-#undef ck_lockmutex_t
-#undef ck_unlockmutex_t
-
-#undef ck_c_initialize_args
-#undef create_mutex
-#undef destroy_mutex
-#undef lock_mutex
-#undef unlock_mutex
-#undef reserved
-
-#endif /* CRYPTOKI_COMPAT */
/* System dependencies. */
#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)