FreeRDP
Loading...
Searching...
No Matches
pkcs11.h
1/* This file is in the Public Domain */
2
3#pragma once
4/*
5#ifndef _PD_PKCS11_
6#define _PD_PKCS11_
7*/
8
9#define CRYPTOKI_VERSION_MAJOR 3
10#define CRYPTOKI_VERSION_MINOR 1
11#define CRYPTOKI_VERSION_AMENDMENT 0
12
13/* Basic types */
14typedef unsigned char CK_BBOOL;
15typedef unsigned char CK_BYTE;
16typedef unsigned char CK_CHAR;
17typedef unsigned char CK_UTF8CHAR;
18typedef unsigned long int CK_ULONG;
19
20typedef CK_BBOOL * CK_BBOOL_PTR;
21typedef CK_BYTE * CK_BYTE_PTR;
22typedef CK_CHAR * CK_CHAR_PTR;
23typedef CK_UTF8CHAR * CK_UTF8CHAR_PTR;
24typedef CK_ULONG * CK_ULONG_PTR;
25
26/* Basic defines */
27#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202003L)) || defined(__cplusplus)
28#define NULL_PTR nullptr
29#else
30#define NULL_PTR ((void *)0)
31#endif
32typedef void * CK_VOID_PTR;
33typedef void ** CK_VOID_PTR_PTR;
34
35#define CK_EFFECTIVELY_INFINITE 0UL
36#define CK_UNAVAILABLE_INFORMATION ~0UL
37#define CK_INVALID_HANDLE 0UL
38#define CK_TRUE 1
39#define CK_FALSE 0
40
41/* CK_ types in alphabetical order */
42#define ULONGDEF(__name__) \
43typedef CK_ULONG __name__; \
44typedef __name__ * __name__ ## _PTR;
45
46ULONGDEF(CK_ATTRIBUTE_TYPE)
47ULONGDEF(CK_CERTIFICATE_CATEGORY)
48ULONGDEF(CK_CERTIFICATE_TYPE)
49ULONGDEF(CK_EC_KDF_TYPE)
50ULONGDEF(CK_EXTRACT_PARAMS)
51ULONGDEF(CK_FLAGS)
52ULONGDEF(CK_GENERATOR_FUNCTION)
53ULONGDEF(CK_HSS_LEVELS)
54ULONGDEF(CK_HW_FEATURE_TYPE)
55ULONGDEF(CK_JAVA_MIDP_SECURITY_DOMAIN)
56ULONGDEF(CK_KEY_TYPE)
57ULONGDEF(CK_LMS_TYPE)
58ULONGDEF(CK_LMOTS_TYPE)
59ULONGDEF(CK_MAC_GENERAL_PARAMS)
60ULONGDEF(CK_MECHANISM_TYPE)
61ULONGDEF(CK_NOTIFICATION)
62ULONGDEF(CK_OBJECT_CLASS)
63ULONGDEF(CK_OBJECT_HANDLE)
64ULONGDEF(CK_OTP_PARAM_TYPE)
65ULONGDEF(CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE)
66ULONGDEF(CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE)
67ULONGDEF(CK_PRF_DATA_TYPE)
68ULONGDEF(CK_PROFILE_ID)
69ULONGDEF(CK_RC2_PARAMS)
70ULONGDEF(CK_RSA_PKCS_MGF_TYPE)
71ULONGDEF(CK_RSA_PKCS_OAEP_SOURCE_TYPE)
72ULONGDEF(CK_RV)
73ULONGDEF(CK_SESSION_HANDLE)
74ULONGDEF(CK_SLOT_ID)
75ULONGDEF(CK_SP800_108_DKM_LENGTH_METHOD)
76ULONGDEF(CK_STATE)
77ULONGDEF(CK_USER_TYPE)
78ULONGDEF(CK_X2RATCHET_KDF_TYPE)
79ULONGDEF(CK_X3DH_KDF_TYPE)
80ULONGDEF(CK_X9_42_DH_KDF_TYPE)
81ULONGDEF(CK_XEDDSA_HASH_TYPE)
82
83/* domain specific values and constants */
84
85/* CK (certificate) */
86#define CK_CERTIFICATE_CATEGORY_UNSPECIFIED 0UL
87#define CK_CERTIFICATE_CATEGORY_TOKEN_USER 1UL
88#define CK_CERTIFICATE_CATEGORY_AUTHORITY 2UL
89#define CK_CERTIFICATE_CATEGORY_OTHER_ENTITY 3UL
90
91/* CK (OTP) */
92#define CK_OTP_VALUE 0UL
93#define CK_OTP_PIN 1UL
94#define CK_OTP_CHALLENGE 2UL
95#define CK_OTP_TIME 3UL
96#define CK_OTP_COUNTER 4UL
97#define CK_OTP_FLAGS 5UL
98#define CK_OTP_OUTPUT_LENGTH 6UL
99#define CK_OTP_OUTPUT_FORMAT 7UL
100
101/* CK (OTP format) */
102#define CK_OTP_FORMAT_DECIMAL 0UL
103#define CK_OTP_FORMAT_HEXADECIMAL 1UL
104#define CK_OTP_FORMAT_ALPHANUMERIC 2UL
105#define CK_OTP_FORMAT_BINARY 3UL
106
107/* CK (OTP requirement) */
108#define CK_OTP_PARAM_IGNORED 0UL
109#define CK_OTP_PARAM_OPTIONAL 1UL
110#define CK_OTP_PARAM_MANDATORY 2UL
111
112/* CK (security) */
113#define CK_SECURITY_DOMAIN_UNSPECIFIED 0UL
114#define CK_SECURITY_DOMAIN_MANUFACTURER 1UL
115#define CK_SECURITY_DOMAIN_OPERATOR 2UL
116#define CK_SECURITY_DOMAIN_THIRD_PARTY 3UL
117
118/* CK (SP800 KDF) */
119#define CK_SP800_108_ITERATION_VARIABLE 0x00000001UL
120#define CK_SP800_108_OPTIONAL_COUNTER 0x00000002UL
121#define CK_SP800_108_COUNTER 0x00000002UL
122#define CK_SP800_108_DKM_LENGTH 0x00000003UL
123#define CK_SP800_108_BYTE_ARRAY 0x00000004UL
124
125/* CK (SP800 DKM) */
126#define CK_SP800_108_DKM_LENGTH_SUM_OF_KEYS 0x00000001UL
127#define CK_SP800_108_DKM_LENGTH_SUM_OF_SEGMENTS 0x00000002UL
128
129/* CKA */
130#define CKA_CLASS 0x00000000UL
131#define CKA_TOKEN 0x00000001UL
132#define CKA_PRIVATE 0x00000002UL
133#define CKA_LABEL 0x00000003UL
134#define CKA_UNIQUE_ID 0x00000004UL
135#define CKA_APPLICATION 0x00000010UL
136#define CKA_VALUE 0x00000011UL
137#define CKA_OBJECT_ID 0x00000012UL
138#define CKA_CERTIFICATE_TYPE 0x00000080UL
139#define CKA_ISSUER 0x00000081UL
140#define CKA_SERIAL_NUMBER 0x00000082UL
141#define CKA_AC_ISSUER 0x00000083UL
142#define CKA_OWNER 0x00000084UL
143#define CKA_ATTR_TYPES 0x00000085UL
144#define CKA_TRUSTED 0x00000086UL
145#define CKA_CERTIFICATE_CATEGORY 0x00000087UL
146#define CKA_JAVA_MIDP_SECURITY_DOMAIN 0x00000088UL
147#define CKA_URL 0x00000089UL
148#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY 0x0000008AUL
149#define CKA_HASH_OF_ISSUER_PUBLIC_KEY 0x0000008BUL
150#define CKA_NAME_HASH_ALGORITHM 0x0000008CUL
151#define CKA_CHECK_VALUE 0x00000090UL
152#define CKA_KEY_TYPE 0x00000100UL
153#define CKA_SUBJECT 0x00000101UL
154#define CKA_ID 0x00000102UL
155#define CKA_SENSITIVE 0x00000103UL
156#define CKA_ENCRYPT 0x00000104UL
157#define CKA_DECRYPT 0x00000105UL
158#define CKA_WRAP 0x00000106UL
159#define CKA_UNWRAP 0x00000107UL
160#define CKA_SIGN 0x00000108UL
161#define CKA_SIGN_RECOVER 0x00000109UL
162#define CKA_VERIFY 0x0000010AUL
163#define CKA_VERIFY_RECOVER 0x0000010BUL
164#define CKA_DERIVE 0x0000010CUL
165#define CKA_START_DATE 0x00000110UL
166#define CKA_END_DATE 0x00000111UL
167#define CKA_MODULUS 0x00000120UL
168#define CKA_MODULUS_BITS 0x00000121UL
169#define CKA_PUBLIC_EXPONENT 0x00000122UL
170#define CKA_PRIVATE_EXPONENT 0x00000123UL
171#define CKA_PRIME_1 0x00000124UL
172#define CKA_PRIME_2 0x00000125UL
173#define CKA_EXPONENT_1 0x00000126UL
174#define CKA_EXPONENT_2 0x00000127UL
175#define CKA_COEFFICIENT 0x00000128UL
176#define CKA_PUBLIC_KEY_INFO 0x00000129UL
177#define CKA_PRIME 0x00000130UL
178#define CKA_SUBPRIME 0x00000131UL
179#define CKA_BASE 0x00000132UL
180#define CKA_PRIME_BITS 0x00000133UL
181#define CKA_SUBPRIME_BITS 0x00000134UL
182#define CKA_SUB_PRIME_BITS 0x00000134UL
183#define CKA_VALUE_BITS 0x00000160UL
184#define CKA_VALUE_LEN 0x00000161UL
185#define CKA_EXTRACTABLE 0x00000162UL
186#define CKA_LOCAL 0x00000163UL
187#define CKA_NEVER_EXTRACTABLE 0x00000164UL
188#define CKA_ALWAYS_SENSITIVE 0x00000165UL
189#define CKA_KEY_GEN_MECHANISM 0x00000166UL
190#define CKA_MODIFIABLE 0x00000170UL
191#define CKA_COPYABLE 0x00000171UL
192#define CKA_DESTROYABLE 0x00000172UL
193#define CKA_EC_PARAMS 0x00000180UL
194#define CKA_EC_POINT 0x00000181UL
195#define CKA_ALWAYS_AUTHENTICATE 0x00000202UL
196#define CKA_WRAP_WITH_TRUSTED 0x00000210UL
197#define CKA_OTP_FORMAT 0x00000220UL
198#define CKA_OTP_LENGTH 0x00000221UL
199#define CKA_OTP_TIME_INTERVAL 0x00000222UL
200#define CKA_OTP_USER_FRIENDLY_MODE 0x00000223UL
201#define CKA_OTP_CHALLENGE_REQUIREMENT 0x00000224UL
202#define CKA_OTP_TIME_REQUIREMENT 0x00000225UL
203#define CKA_OTP_COUNTER_REQUIREMENT 0x00000226UL
204#define CKA_OTP_PIN_REQUIREMENT 0x00000227UL
205#define CKA_OTP_COUNTER 0x0000022EUL
206#define CKA_OTP_TIME 0x0000022FUL
207#define CKA_OTP_USER_IDENTIFIER 0x0000022AUL
208#define CKA_OTP_SERVICE_IDENTIFIER 0x0000022BUL
209#define CKA_OTP_SERVICE_LOGO 0x0000022CUL
210#define CKA_OTP_SERVICE_LOGO_TYPE 0x0000022DUL
211#define CKA_GOSTR3410_PARAMS 0x00000250UL
212#define CKA_GOSTR3411_PARAMS 0x00000251UL
213#define CKA_GOST28147_PARAMS 0x00000252UL
214#define CKA_HW_FEATURE_TYPE 0x00000300UL
215#define CKA_RESET_ON_INIT 0x00000301UL
216#define CKA_HAS_RESET 0x00000302UL
217#define CKA_PIXEL_X 0x00000400UL
218#define CKA_PIXEL_Y 0x00000401UL
219#define CKA_RESOLUTION 0x00000402UL
220#define CKA_CHAR_ROWS 0x00000403UL
221#define CKA_CHAR_COLUMNS 0x00000404UL
222#define CKA_COLOR 0x00000405UL
223#define CKA_BITS_PER_PIXEL 0x00000406UL
224#define CKA_CHAR_SETS 0x00000480UL
225#define CKA_ENCODING_METHODS 0x00000481UL
226#define CKA_MIME_TYPES 0x00000482UL
227#define CKA_MECHANISM_TYPE 0x00000500UL
228#define CKA_REQUIRED_CMS_ATTRIBUTES 0x00000501UL
229#define CKA_DEFAULT_CMS_ATTRIBUTES 0x00000502UL
230#define CKA_SUPPORTED_CMS_ATTRIBUTES 0x00000503UL
231#define CKA_PROFILE_ID 0x00000601UL
232#define CKA_X2RATCHET_BAG 0x00000602UL
233#define CKA_X2RATCHET_BAGSIZE 0x00000603UL
234#define CKA_X2RATCHET_BOBS1STMSG 0x00000604UL
235#define CKA_X2RATCHET_CKR 0x00000605UL
236#define CKA_X2RATCHET_CKS 0x00000606UL
237#define CKA_X2RATCHET_DHP 0x00000607UL
238#define CKA_X2RATCHET_DHR 0x00000608UL
239#define CKA_X2RATCHET_DHS 0x00000609UL
240#define CKA_X2RATCHET_HKR 0x0000060AUL
241#define CKA_X2RATCHET_HKS 0x0000060BUL
242#define CKA_X2RATCHET_ISALICE 0x0000060CUL
243#define CKA_X2RATCHET_NHKR 0x0000060DUL
244#define CKA_X2RATCHET_NHKS 0x0000060EUL
245#define CKA_X2RATCHET_NR 0x0000060FUL
246#define CKA_X2RATCHET_NS 0x00000610UL
247#define CKA_X2RATCHET_PNS 0x00000611UL
248#define CKA_X2RATCHET_RK 0x00000612UL
249#define CKA_HSS_LEVELS 0x00000617UL
250#define CKA_HSS_LMS_TYPE 0x00000618UL
251#define CKA_HSS_LMOTS_TYPE 0x00000619UL
252#define CKA_HSS_LMS_TYPES 0x0000061AUL
253#define CKA_HSS_LMOTS_TYPES 0x0000061BUL
254#define CKA_HSS_KEYS_REMAINING 0x0000061CUL
255#define CKA_VENDOR_DEFINED 0x80000000UL
256/* Array attributes */
257#define CKA_WRAP_TEMPLATE 0x40000211UL
258#define CKA_UNWRAP_TEMPLATE 0x40000212UL
259#define CKA_DERIVE_TEMPLATE 0x40000213UL
260#define CKA_ALLOWED_MECHANISMS 0x40000600UL
261/* Deprecated */
262#ifdef PKCS11_DEPRECATED
263#define CKA_ECDSA_PARAMS 0x00000180UL
264#define CKA_SECONDARY_AUTH 0x00000200UL
265#define CKA_AUTH_PIN_FLAGS 0x00000201UL
266#endif
267
268/* CKC */
269#define CKC_X_509 0x00000000UL
270#define CKC_X_509_ATTR_CERT 0x00000001UL
271#define CKC_WTLS 0x00000002UL
272#define CKC_VENDOR_DEFINED 0x80000000UL
273
274/* CKD */
275#define CKD_NULL 0x00000001UL
276#define CKD_SHA1_KDF 0x00000002UL
277#define CKD_SHA1_KDF_ASN1 0x00000003UL
278#define CKD_SHA1_KDF_CONCATENATE 0x00000004UL
279#define CKD_SHA224_KDF 0x00000005UL
280#define CKD_SHA256_KDF 0x00000006UL
281#define CKD_SHA384_KDF 0x00000007UL
282#define CKD_SHA512_KDF 0x00000008UL
283#define CKD_CPDIVERSIFY_KDF 0x00000009UL
284#define CKD_SHA3_224_KDF 0x0000000AUL
285#define CKD_SHA3_256_KDF 0x0000000BUL
286#define CKD_SHA3_384_KDF 0x0000000CUL
287#define CKD_SHA3_512_KDF 0x0000000DUL
288#define CKD_SHA1_KDF_SP800 0x0000000EUL
289#define CKD_SHA224_KDF_SP800 0x0000000FUL
290#define CKD_SHA256_KDF_SP800 0x00000010UL
291#define CKD_SHA384_KDF_SP800 0x00000011UL
292#define CKD_SHA512_KDF_SP800 0x00000012UL
293#define CKD_SHA3_224_KDF_SP800 0x00000013UL
294#define CKD_SHA3_256_KDF_SP800 0x00000014UL
295#define CKD_SHA3_384_KDF_SP800 0x00000015UL
296#define CKD_SHA3_512_KDF_SP800 0x00000016UL
297#define CKD_BLAKE2B_160_KDF 0x00000017UL
298#define CKD_BLAKE2B_256_KDF 0x00000018UL
299#define CKD_BLAKE2B_384_KDF 0x00000019UL
300#define CKD_BLAKE2B_512_KDF 0x0000001AUL
301
302/* CFK (array attributes) */
303#define CKF_ARRAY_ATTRIBUTE 0x40000000UL
304
305/* CKF (capabilities) */
306#define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001UL
307#define CKF_OS_LOCKING_OK 0x00000002UL
308
309/* CKF (HKDF) */
310#define CKF_HKDF_SALT_NULL 0x00000001UL
311#define CKF_HKDF_SALT_DATA 0x00000002UL
312#define CKF_HKDF_SALT_KEY 0x00000004UL
313
314/* CKF (interface) */
315#define CKF_INTERFACE_FORK_SAFE 0x00000001UL
316
317/* CKF (mechanism) */
318#define CKF_HW 0x00000001UL
319#define CKF_MESSAGE_ENCRYPT 0x00000002UL
320#define CKF_MESSAGE_DECRYPT 0x00000004UL
321#define CKF_MESSAGE_SIGN 0x00000008UL
322#define CKF_MESSAGE_VERIFY 0x00000010UL
323#define CKF_MULTI_MESSAGE 0x00000020UL
324#define CKF_MULTI_MESSGE 0x00000020UL
325#define CKF_FIND_OBJECTS 0x00000040UL
326#define CKF_ENCRYPT 0x00000100UL
327#define CKF_DECRYPT 0x00000200UL
328#define CKF_DIGEST 0x00000400UL
329#define CKF_SIGN 0x00000800UL
330#define CKF_SIGN_RECOVER 0x00001000UL
331#define CKF_VERIFY 0x00002000UL
332#define CKF_VERIFY_RECOVER 0x00004000UL
333#define CKF_GENERATE 0x00008000UL
334#define CKF_GENERATE_KEY_PAIR 0x00010000UL
335#define CKF_WRAP 0x00020000UL
336#define CKF_UNWRAP 0x00040000UL
337#define CKF_DERIVE 0x00080000UL
338#define CKF_EC_F_P 0x00100000UL
339#define CKF_EC_F_2M 0x00200000UL
340#define CKF_EC_ECPARAMETERS 0x00400000UL
341#define CKF_EC_OID 0x00800000UL
342#define CKF_EC_UNCOMPRESS 0x01000000UL
343#define CKF_EC_COMPRESS 0x02000000UL
344#define CKF_EC_CURVENAME 0x04000000UL
345#define CKF_EXTENSION 0x80000000UL
346/* Deprecated */
347#ifdef PKCS11_DEPRECATED
348#define CKF_EC_NAMEDCURVE 0x00800000U
349#endif
350
351/* CKF (message) */
352#define CKF_END_OF_MESSAGE 0x00000001UL
353
354/* CKF (OTP) */
355#define CKF_NEXT_OTP 0x00000001UL
356#define CKF_EXCLUDE_TIME 0x00000002UL
357#define CKF_EXCLUDE_COUNTER 0x00000004UL
358#define CKF_EXCLUDE_CHALLENGE 0x00000008UL
359#define CKF_EXCLUDE_PIN 0x00000010UL
360#define CKF_USER_FRIENDLY_OTP 0x00000020UL
361
362/* CKF (parameters to functions) */
363#define CKF_DONT_BLOCK 1
364
365/* CKF (session) */
366#define CKF_RW_SESSION 0x00000002UL
367#define CKF_SERIAL_SESSION 0x00000004UL
368
369/* CFK (slot) */
370#define CKF_TOKEN_PRESENT 0x00000001UL
371#define CKF_REMOVABLE_DEVICE 0x00000002UL
372#define CKF_HW_SLOT 0x00000004UL
373
374/* CKF (token) */
375#define CKF_RNG 0x00000001UL
376#define CKF_WRITE_PROTECTED 0x00000002UL
377#define CKF_LOGIN_REQUIRED 0x00000004UL
378#define CKF_USER_PIN_INITIALIZED 0x00000008UL
379#define CKF_RESTORE_KEY_NOT_NEEDED 0x00000020UL
380#define CKF_CLOCK_ON_TOKEN 0x00000040UL
381#define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100UL
382#define CKF_DUAL_CRYPTO_OPERATIONS 0x00000200UL
383#define CKF_TOKEN_INITIALIZED 0x00000400UL
384#define CKF_SECONDARY_AUTHENTICATION 0x00000800UL
385#define CKF_USER_PIN_COUNT_LOW 0x00010000UL
386#define CKF_USER_PIN_FINAL_TRY 0x00020000UL
387#define CKF_USER_PIN_LOCKED 0x00040000UL
388#define CKF_USER_PIN_TO_BE_CHANGED 0x00080000UL
389#define CKF_SO_PIN_COUNT_LOW 0x00100000UL
390#define CKF_SO_PIN_FINAL_TRY 0x00200000UL
391#define CKF_SO_PIN_LOCKED 0x00400000UL
392#define CKF_SO_PIN_TO_BE_CHANGED 0x00800000UL
393#define CKF_ERROR_STATE 0x01000000UL
394
395/* CKG (GCM) */
396#define CKG_NO_GENERATE 0x00000000UL
397#define CKG_GENERATE 0x00000001UL
398#define CKG_GENERATE_COUNTER 0x00000002UL
399#define CKG_GENERATE_RANDOM 0x00000003UL
400#define CKG_GENERATE_COUNTER_XOR 0x00000004UL
401
402/* CKG (MFG) */
403#define CKG_MGF1_SHA1 0x00000001UL
404#define CKG_MGF1_SHA256 0x00000002UL
405#define CKG_MGF1_SHA384 0x00000003UL
406#define CKG_MGF1_SHA512 0x00000004UL
407#define CKG_MGF1_SHA224 0x00000005UL
408#define CKG_MGF1_SHA3_224 0x00000006UL
409#define CKG_MGF1_SHA3_256 0x00000007UL
410#define CKG_MGF1_SHA3_384 0x00000008UL
411#define CKG_MGF1_SHA3_512 0x00000009UL
412
413/* CKH */
414#define CKH_MONOTONIC_COUNTER 0x00000001UL
415#define CKH_CLOCK 0x00000002UL
416#define CKH_USER_INTERFACE 0x00000003UL
417#define CKH_VENDOR_DEFINED 0x80000000UL
418
419/* CKK */
420#define CKK_RSA 0x00000000UL
421#define CKK_DSA 0x00000001UL
422#define CKK_DH 0x00000002UL
423#define CKK_EC 0x00000003UL
424#define CKK_X9_42_DH 0x00000004UL
425#define CKK_KEA 0x00000005UL
426#define CKK_GENERIC_SECRET 0x00000010UL
427#define CKK_RC2 0x00000011UL
428#define CKK_RC4 0x00000012UL
429#define CKK_DES 0x00000013UL
430#define CKK_DES2 0x00000014UL
431#define CKK_DES3 0x00000015UL
432#define CKK_CAST 0x00000016UL
433#define CKK_CAST3 0x00000017UL
434#define CKK_CAST128 0x00000018UL
435#define CKK_RC5 0x00000019UL
436#define CKK_IDEA 0x0000001AUL
437#define CKK_SKIPJACK 0x0000001BUL
438#define CKK_BATON 0x0000001CUL
439#define CKK_JUNIPER 0x0000001DUL
440#define CKK_CDMF 0x0000001EUL
441#define CKK_AES 0x0000001FUL
442#define CKK_BLOWFISH 0x00000020UL
443#define CKK_TWOFISH 0x00000021UL
444#define CKK_SECURID 0x00000022UL
445#define CKK_HOTP 0x00000023UL
446#define CKK_ACTI 0x00000024UL
447#define CKK_CAMELLIA 0x00000025UL
448#define CKK_ARIA 0x00000026UL
449#define CKK_MD5_HMAC 0x00000027UL
450#define CKK_SHA_1_HMAC 0x00000028UL
451#define CKK_RIPEMD128_HMAC 0x00000029UL
452#define CKK_RIPEMD160_HMAC 0x0000002AUL
453#define CKK_SHA256_HMAC 0x0000002BUL
454#define CKK_SHA384_HMAC 0x0000002CUL
455#define CKK_SHA512_HMAC 0x0000002DUL
456#define CKK_SHA224_HMAC 0x0000002EUL
457#define CKK_SEED 0x0000002FUL
458#define CKK_GOSTR3410 0x00000030UL
459#define CKK_GOSTR3411 0x00000031UL
460#define CKK_GOST28147 0x00000032UL
461#define CKK_CHACHA20 0x00000033UL
462#define CKK_POLY1305 0x00000034UL
463#define CKK_AES_XTS 0x00000035UL
464#define CKK_SHA3_224_HMAC 0x00000036UL
465#define CKK_SHA3_256_HMAC 0x00000037UL
466#define CKK_SHA3_384_HMAC 0x00000038UL
467#define CKK_SHA3_512_HMAC 0x00000039UL
468#define CKK_BLAKE2B_160_HMAC 0x0000003AUL
469#define CKK_BLAKE2B_256_HMAC 0x0000003BUL
470#define CKK_BLAKE2B_384_HMAC 0x0000003CUL
471#define CKK_BLAKE2B_512_HMAC 0x0000003DUL
472#define CKK_SALSA20 0x0000003EUL
473#define CKK_X2RATCHET 0x0000003FUL
474#define CKK_EC_EDWARDS 0x00000040UL
475#define CKK_EC_MONTGOMERY 0x00000041UL
476#define CKK_HKDF 0x00000042UL
477#define CKK_SHA512_224_HMAC 0x00000043UL
478#define CKK_SHA512_256_HMAC 0x00000044UL
479#define CKK_SHA512_T_HMAC 0x00000045UL
480#define CKK_HSS 0x00000046UL
481#define CKK_VENDOR_DEFINED 0x80000000UL
482/* Deprecated */
483#ifdef PKCS11_DEPRECATED
484#define CKK_ECDSA 0x00000003UL
485#define CKK_CAST5 0x00000018UL
486#endif
487
488/* CKM */
489#define CKM_RSA_PKCS_KEY_PAIR_GEN 0x00000000UL
490#define CKM_RSA_PKCS 0x00000001UL
491#define CKM_RSA_9796 0x00000002UL
492#define CKM_RSA_X_509 0x00000003UL
493#define CKM_MD2_RSA_PKCS 0x00000004UL
494#define CKM_MD5_RSA_PKCS 0x00000005UL
495#define CKM_SHA1_RSA_PKCS 0x00000006UL
496#define CKM_RIPEMD128_RSA_PKCS 0x00000007UL
497#define CKM_RIPEMD160_RSA_PKCS 0x00000008UL
498#define CKM_RSA_PKCS_OAEP 0x00000009UL
499#define CKM_RSA_X9_31_KEY_PAIR_GEN 0x0000000AUL
500#define CKM_RSA_X9_31 0x0000000BUL
501#define CKM_SHA1_RSA_X9_31 0x0000000CUL
502#define CKM_RSA_PKCS_PSS 0x0000000DUL
503#define CKM_SHA1_RSA_PKCS_PSS 0x0000000EUL
504#define CKM_DSA_KEY_PAIR_GEN 0x00000010UL
505#define CKM_DSA 0x00000011UL
506#define CKM_DSA_SHA1 0x00000012UL
507#define CKM_DSA_SHA224 0x00000013UL
508#define CKM_DSA_SHA256 0x00000014UL
509#define CKM_DSA_SHA384 0x00000015UL
510#define CKM_DSA_SHA512 0x00000016UL
511#define CKM_DSA_SHA3_224 0x00000018UL
512#define CKM_DSA_SHA3_256 0x00000019UL
513#define CKM_DSA_SHA3_384 0x0000001AUL
514#define CKM_DSA_SHA3_512 0x0000001BUL
515#define CKM_DH_PKCS_KEY_PAIR_GEN 0x00000020UL
516#define CKM_DH_PKCS_DERIVE 0x00000021UL
517#define CKM_X9_42_DH_KEY_PAIR_GEN 0x00000030UL
518#define CKM_X9_42_DH_DERIVE 0x00000031UL
519#define CKM_X9_42_DH_HYBRID_DERIVE 0x00000032UL
520#define CKM_X9_42_MQV_DERIVE 0x00000033UL
521#define CKM_SHA256_RSA_PKCS 0x00000040UL
522#define CKM_SHA384_RSA_PKCS 0x00000041UL
523#define CKM_SHA512_RSA_PKCS 0x00000042UL
524#define CKM_SHA256_RSA_PKCS_PSS 0x00000043UL
525#define CKM_SHA384_RSA_PKCS_PSS 0x00000044UL
526#define CKM_SHA512_RSA_PKCS_PSS 0x00000045UL
527#define CKM_SHA224_RSA_PKCS 0x00000046UL
528#define CKM_SHA224_RSA_PKCS_PSS 0x00000047UL
529#define CKM_SHA512_224 0x00000048UL
530#define CKM_SHA512_224_HMAC 0x00000049UL
531#define CKM_SHA512_224_HMAC_GENERAL 0x0000004AUL
532#define CKM_SHA512_224_KEY_DERIVATION 0x0000004BUL
533#define CKM_SHA512_256 0x0000004CUL
534#define CKM_SHA512_256_HMAC 0x0000004DUL
535#define CKM_SHA512_256_HMAC_GENERAL 0x0000004EUL
536#define CKM_SHA512_256_KEY_DERIVATION 0x0000004FUL
537#define CKM_SHA512_T 0x00000050UL
538#define CKM_SHA512_T_HMAC 0x00000051UL
539#define CKM_SHA512_T_HMAC_GENERAL 0x00000052UL
540#define CKM_SHA512_T_KEY_DERIVATION 0x00000053UL
541#define CKM_SHA3_256_RSA_PKCS 0x00000060UL
542#define CKM_SHA3_384_RSA_PKCS 0x00000061UL
543#define CKM_SHA3_512_RSA_PKCS 0x00000062UL
544#define CKM_SHA3_256_RSA_PKCS_PSS 0x00000063UL
545#define CKM_SHA3_384_RSA_PKCS_PSS 0x00000064UL
546#define CKM_SHA3_512_RSA_PKCS_PSS 0x00000065UL
547#define CKM_SHA3_224_RSA_PKCS 0x00000066UL
548#define CKM_SHA3_224_RSA_PKCS_PSS 0x00000067UL
549#define CKM_RC2_KEY_GEN 0x00000100UL
550#define CKM_RC2_ECB 0x00000101UL
551#define CKM_RC2_CBC 0x00000102UL
552#define CKM_RC2_MAC 0x00000103UL
553#define CKM_RC2_MAC_GENERAL 0x00000104UL
554#define CKM_RC2_CBC_PAD 0x00000105UL
555#define CKM_RC4_KEY_GEN 0x00000110UL
556#define CKM_RC4 0x00000111UL
557#define CKM_DES_KEY_GEN 0x00000120UL
558#define CKM_DES_ECB 0x00000121UL
559#define CKM_DES_CBC 0x00000122UL
560#define CKM_DES_MAC 0x00000123UL
561#define CKM_DES_MAC_GENERAL 0x00000124UL
562#define CKM_DES_CBC_PAD 0x00000125UL
563#define CKM_DES2_KEY_GEN 0x00000130UL
564#define CKM_DES3_KEY_GEN 0x00000131UL
565#define CKM_DES3_ECB 0x00000132UL
566#define CKM_DES3_CBC 0x00000133UL
567#define CKM_DES3_MAC 0x00000134UL
568#define CKM_DES3_MAC_GENERAL 0x00000135UL
569#define CKM_DES3_CBC_PAD 0x00000136UL
570#define CKM_DES3_CMAC_GENERAL 0x00000137UL
571#define CKM_DES3_CMAC 0x00000138UL
572#define CKM_CDMF_KEY_GEN 0x00000140UL
573#define CKM_CDMF_ECB 0x00000141UL
574#define CKM_CDMF_CBC 0x00000142UL
575#define CKM_CDMF_MAC 0x00000143UL
576#define CKM_CDMF_MAC_GENERAL 0x00000144UL
577#define CKM_CDMF_CBC_PAD 0x00000145UL
578#define CKM_DES_OFB64 0x00000150UL
579#define CKM_DES_OFB8 0x00000151UL
580#define CKM_DES_CFB64 0x00000152UL
581#define CKM_DES_CFB8 0x00000153UL
582#define CKM_MD2 0x00000200UL
583#define CKM_MD2_HMAC 0x00000201UL
584#define CKM_MD2_HMAC_GENERAL 0x00000202UL
585#define CKM_MD5 0x00000210UL
586#define CKM_MD5_HMAC 0x00000211UL
587#define CKM_MD5_HMAC_GENERAL 0x00000212UL
588#define CKM_SHA_1 0x00000220UL
589#define CKM_SHA_1_HMAC 0x00000221UL
590#define CKM_SHA_1_HMAC_GENERAL 0x00000222UL
591#define CKM_RIPEMD128 0x00000230UL
592#define CKM_RIPEMD128_HMAC 0x00000231UL
593#define CKM_RIPEMD128_HMAC_GENERAL 0x00000232UL
594#define CKM_RIPEMD160 0x00000240UL
595#define CKM_RIPEMD160_HMAC 0x00000241UL
596#define CKM_RIPEMD160_HMAC_GENERAL 0x00000242UL
597#define CKM_SHA256 0x00000250UL
598#define CKM_SHA256_HMAC 0x00000251UL
599#define CKM_SHA256_HMAC_GENERAL 0x00000252UL
600#define CKM_SHA224 0x00000255UL
601#define CKM_SHA224_HMAC 0x00000256UL
602#define CKM_SHA224_HMAC_GENERAL 0x00000257UL
603#define CKM_SHA384 0x00000260UL
604#define CKM_SHA384_HMAC 0x00000261UL
605#define CKM_SHA384_HMAC_GENERAL 0x00000262UL
606#define CKM_SHA512 0x00000270UL
607#define CKM_SHA512_HMAC 0x00000271UL
608#define CKM_SHA512_HMAC_GENERAL 0x00000272UL
609#define CKM_SECURID_KEY_GEN 0x00000280UL
610#define CKM_SECURID 0x00000282UL
611#define CKM_HOTP_KEY_GEN 0x00000290UL
612#define CKM_HOTP 0x00000291UL
613#define CKM_ACTI 0x000002A0UL
614#define CKM_ACTI_KEY_GEN 0x000002A1UL
615#define CKM_SHA3_256 0x000002B0UL
616#define CKM_SHA3_256_HMAC 0x000002B1UL
617#define CKM_SHA3_256_HMAC_GENERAL 0x000002B2UL
618#define CKM_SHA3_256_KEY_GEN 0x000002B3UL
619#define CKM_SHA3_224 0x000002B5UL
620#define CKM_SHA3_224_HMAC 0x000002B6UL
621#define CKM_SHA3_224_HMAC_GENERAL 0x000002B7UL
622#define CKM_SHA3_224_KEY_GEN 0x000002B8UL
623#define CKM_SHA3_384 0x000002C0UL
624#define CKM_SHA3_384_HMAC 0x000002C1UL
625#define CKM_SHA3_384_HMAC_GENERAL 0x000002C2UL
626#define CKM_SHA3_384_KEY_GEN 0x000002C3UL
627#define CKM_SHA3_512 0x000002D0UL
628#define CKM_SHA3_512_HMAC 0x000002D1UL
629#define CKM_SHA3_512_HMAC_GENERAL 0x000002D2UL
630#define CKM_SHA3_512_KEY_GEN 0x000002D3UL
631#define CKM_CAST_KEY_GEN 0x00000300UL
632#define CKM_CAST_ECB 0x00000301UL
633#define CKM_CAST_CBC 0x00000302UL
634#define CKM_CAST_MAC 0x00000303UL
635#define CKM_CAST_MAC_GENERAL 0x00000304UL
636#define CKM_CAST_CBC_PAD 0x00000305UL
637#define CKM_CAST3_KEY_GEN 0x00000310UL
638#define CKM_CAST3_ECB 0x00000311UL
639#define CKM_CAST3_CBC 0x00000312UL
640#define CKM_CAST3_MAC 0x00000313UL
641#define CKM_CAST3_MAC_GENERAL 0x00000314UL
642#define CKM_CAST3_CBC_PAD 0x00000315UL
643#define CKM_CAST128_KEY_GEN 0x00000320UL
644#define CKM_CAST5_ECB 0x00000321UL
645#define CKM_CAST128_ECB 0x00000321UL
646#define CKM_CAST128_MAC 0x00000323UL
647#define CKM_CAST128_CBC 0x00000322UL
648#define CKM_CAST128_MAC_GENERAL 0x00000324UL
649#define CKM_CAST128_CBC_PAD 0x00000325UL
650#define CKM_RC5_KEY_GEN 0x00000330UL
651#define CKM_RC5_ECB 0x00000331UL
652#define CKM_RC5_CBC 0x00000332UL
653#define CKM_RC5_MAC 0x00000333UL
654#define CKM_RC5_MAC_GENERAL 0x00000334UL
655#define CKM_RC5_CBC_PAD 0x00000335UL
656#define CKM_IDEA_KEY_GEN 0x00000340UL
657#define CKM_IDEA_ECB 0x00000341UL
658#define CKM_IDEA_CBC 0x00000342UL
659#define CKM_IDEA_MAC 0x00000343UL
660#define CKM_IDEA_MAC_GENERAL 0x00000344UL
661#define CKM_IDEA_CBC_PAD 0x00000345UL
662#define CKM_GENERIC_SECRET_KEY_GEN 0x00000350UL
663#define CKM_CONCATENATE_BASE_AND_KEY 0x00000360UL
664#define CKM_CONCATENATE_BASE_AND_DATA 0x00000362UL
665#define CKM_CONCATENATE_DATA_AND_BASE 0x00000363UL
666#define CKM_XOR_BASE_AND_DATA 0x00000364UL
667#define CKM_EXTRACT_KEY_FROM_KEY 0x00000365UL
668#define CKM_SSL3_PRE_MASTER_KEY_GEN 0x00000370UL
669#define CKM_SSL3_MASTER_KEY_DERIVE 0x00000371UL
670#define CKM_SSL3_KEY_AND_MAC_DERIVE 0x00000372UL
671#define CKM_SSL3_MASTER_KEY_DERIVE_DH 0x00000373UL
672#define CKM_TLS_PRE_MASTER_KEY_GEN 0x00000374UL
673#define CKM_TLS_MASTER_KEY_DERIVE 0x00000375UL
674#define CKM_TLS_KEY_AND_MAC_DERIVE 0x00000376UL
675#define CKM_TLS_MASTER_KEY_DERIVE_DH 0x00000377UL
676#define CKM_TLS_PRF 0x00000378UL
677#define CKM_SSL3_MD5_MAC 0x00000380UL
678#define CKM_SSL3_SHA1_MAC 0x00000381UL
679#define CKM_MD5_KEY_DERIVATION 0x00000390UL
680#define CKM_MD2_KEY_DERIVATION 0x00000391UL
681#define CKM_SHA1_KEY_DERIVATION 0x00000392UL
682#define CKM_SHA256_KEY_DERIVATION 0x00000393UL
683#define CKM_SHA384_KEY_DERIVATION 0x00000394UL
684#define CKM_SHA512_KEY_DERIVATION 0x00000395UL
685#define CKM_SHA224_KEY_DERIVATION 0x00000396UL
686#define CKM_SHA3_256_KEY_DERIVATION 0x00000397UL
687#define CKM_SHA3_256_KEY_DERIVE 0x00000397UL
688#define CKM_SHA3_224_KEY_DERIVATION 0x00000398UL
689#define CKM_SHA3_224_KEY_DERIVE 0x00000398UL
690#define CKM_SHA3_384_KEY_DERIVATION 0x00000399UL
691#define CKM_SHA3_384_KEY_DERIVE 0x00000399UL
692#define CKM_SHA3_512_KEY_DERIVATION 0x0000039AUL
693#define CKM_SHA3_512_KEY_DERIVE 0x0000039AUL
694#define CKM_SHAKE_128_KEY_DERIVATION 0x0000039BUL
695#define CKM_SHAKE_128_KEY_DERIVE 0x0000039BUL
696#define CKM_SHAKE_256_KEY_DERIVATION 0x0000039CUL
697#define CKM_SHAKE_256_KEY_DERIVE 0x0000039CUL
698#define CKM_PBE_MD2_DES_CBC 0x000003A0UL
699#define CKM_PBE_MD5_DES_CBC 0x000003A1UL
700#define CKM_PBE_MD5_CAST_CBC 0x000003A2UL
701#define CKM_PBE_MD5_CAST3_CBC 0x000003A3UL
702#define CKM_PBE_MD5_CAST128_CBC 0x000003A4UL
703#define CKM_PBE_SHA1_CAST128_CBC 0x000003A5UL
704#define CKM_PBE_SHA1_RC4_128 0x000003A6UL
705#define CKM_PBE_SHA1_RC4_40 0x000003A7UL
706#define CKM_PBE_SHA1_DES3_EDE_CBC 0x000003A8UL
707#define CKM_PBE_SHA1_DES2_EDE_CBC 0x000003A9UL
708#define CKM_PBE_SHA1_RC2_128_CBC 0x000003AAUL
709#define CKM_PBE_SHA1_RC2_40_CBC 0x000003ABUL
710#define CKM_PKCS5_PBKD2 0x000003B0UL
711#define CKM_PBA_SHA1_WITH_SHA1_HMAC 0x000003C0UL
712#define CKM_WTLS_PRE_MASTER_KEY_GEN 0x000003D0UL
713#define CKM_WTLS_MASTER_KEY_DERIVE 0x000003D1UL
714#define CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC 0x000003D2UL
715#define CKM_WTLS_PRF 0x000003D3UL
716#define CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE 0x000003D4UL
717#define CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE 0x000003D5UL
718#define CKM_TLS10_MAC_SERVER 0x000003D6UL
719#define CKM_TLS10_MAC_CLIENT 0x000003D7UL
720#define CKM_TLS12_MAC 0x000003D8UL
721#define CKM_TLS12_KDF 0x000003D9UL
722#define CKM_TLS12_MASTER_KEY_DERIVE 0x000003E0UL
723#define CKM_TLS12_KEY_AND_MAC_DERIVE 0x000003E1UL
724#define CKM_TLS12_MASTER_KEY_DERIVE_DH 0x000003E2UL
725#define CKM_TLS12_KEY_SAFE_DERIVE 0x000003E3UL
726#define CKM_TLS_MAC 0x000003E4UL
727#define CKM_TLS_KDF 0x000003E5UL
728#define CKM_KEY_WRAP_LYNKS 0x00000400UL
729#define CKM_KEY_WRAP_SET_OAEP 0x00000401UL
730#define CKM_CMS_SIG 0x00000500UL
731#define CKM_KIP_DERIVE 0x00000510UL
732#define CKM_KIP_WRAP 0x00000511UL
733#define CKM_KIP_MAC 0x00000512UL
734#define CKM_CAMELLIA_KEY_GEN 0x00000550UL
735#define CKM_CAMELLIA_ECB 0x00000551UL
736#define CKM_CAMELLIA_CBC 0x00000552UL
737#define CKM_CAMELLIA_MAC 0x00000553UL
738#define CKM_CAMELLIA_MAC_GENERAL 0x00000554UL
739#define CKM_CAMELLIA_CBC_PAD 0x00000555UL
740#define CKM_CAMELLIA_ECB_ENCRYPT_DATA 0x00000556UL
741#define CKM_CAMELLIA_CBC_ENCRYPT_DATA 0x00000557UL
742#define CKM_CAMELLIA_CTR 0x00000558UL
743#define CKM_ARIA_KEY_GEN 0x00000560UL
744#define CKM_ARIA_ECB 0x00000561UL
745#define CKM_ARIA_CBC 0x00000562UL
746#define CKM_ARIA_MAC 0x00000563UL
747#define CKM_ARIA_MAC_GENERAL 0x00000564UL
748#define CKM_ARIA_CBC_PAD 0x00000565UL
749#define CKM_ARIA_ECB_ENCRYPT_DATA 0x00000566UL
750#define CKM_ARIA_CBC_ENCRYPT_DATA 0x00000567UL
751#define CKM_SEED_KEY_GEN 0x00000650UL
752#define CKM_SEED_ECB 0x00000651UL
753#define CKM_SEED_CBC 0x00000652UL
754#define CKM_SEED_MAC 0x00000653UL
755#define CKM_SEED_MAC_GENERAL 0x00000654UL
756#define CKM_SEED_CBC_PAD 0x00000655UL
757#define CKM_SEED_ECB_ENCRYPT_DATA 0x00000656UL
758#define CKM_SEED_CBC_ENCRYPT_DATA 0x00000657UL
759#define CKM_SKIPJACK_KEY_GEN 0x00001000UL
760#define CKM_SKIPJACK_ECB64 0x00001001UL
761#define CKM_SKIPJACK_CBC64 0x00001002UL
762#define CKM_SKIPJACK_OFB64 0x00001003UL
763#define CKM_SKIPJACK_CFB64 0x00001004UL
764#define CKM_SKIPJACK_CFB32 0x00001005UL
765#define CKM_SKIPJACK_CFB16 0x00001006UL
766#define CKM_SKIPJACK_CFB8 0x00001007UL
767#define CKM_SKIPJACK_WRAP 0x00001008UL
768#define CKM_SKIPJACK_PRIVATE_WRAP 0x00001009UL
769#define CKM_SKIPJACK_RELAYX 0x0000100AUL
770#define CKM_KEA_KEY_PAIR_GEN 0x00001010UL
771#define CKM_KEA_KEY_DERIVE 0x00001011UL
772#define CKM_KEA_DERIVE 0x00001012UL
773#define CKM_FORTEZZA_TIMESTAMP 0x00001020UL
774#define CKM_BATON_KEY_GEN 0x00001030UL
775#define CKM_BATON_ECB128 0x00001031UL
776#define CKM_BATON_ECB96 0x00001032UL
777#define CKM_BATON_CBC128 0x00001033UL
778#define CKM_BATON_COUNTER 0x00001034UL
779#define CKM_BATON_SHUFFLE 0x00001035UL
780#define CKM_BATON_WRAP 0x00001036UL
781#define CKM_EC_KEY_PAIR_GEN 0x00001040UL
782#define CKM_ECDSA 0x00001041UL
783#define CKM_ECDSA_SHA1 0x00001042UL
784#define CKM_ECDSA_SHA224 0x00001043UL
785#define CKM_ECDSA_SHA256 0x00001044UL
786#define CKM_ECDSA_SHA384 0x00001045UL
787#define CKM_ECDSA_SHA512 0x00001046UL
788#define CKM_EC_KEY_PAIR_GEN_W_EXTRA_BITS 0x0000140BUL
789#define CKM_ECDH1_DERIVE 0x00001050UL
790#define CKM_ECDH1_COFACTOR_DERIVE 0x00001051UL
791#define CKM_ECMQV_DERIVE 0x00001052UL
792#define CKM_ECDH_AES_KEY_WRAP 0x00001053UL
793#define CKM_RSA_AES_KEY_WRAP 0x00001054UL
794#define CKM_JUNIPER_KEY_GEN 0x00001060UL
795#define CKM_JUNIPER_ECB128 0x00001061UL
796#define CKM_JUNIPER_CBC128 0x00001062UL
797#define CKM_JUNIPER_COUNTER 0x00001063UL
798#define CKM_JUNIPER_SHUFFLE 0x00001064UL
799#define CKM_JUNIPER_WRAP 0x00001065UL
800#define CKM_FASTHASH 0x00001070UL
801#define CKM_AES_XTS 0x00001071UL
802#define CKM_AES_XTS_KEY_GEN 0x00001072UL
803#define CKM_AES_KEY_GEN 0x00001080UL
804#define CKM_AES_ECB 0x00001081UL
805#define CKM_AES_CBC 0x00001082UL
806#define CKM_AES_MAC 0x00001083UL
807#define CKM_AES_MAC_GENERAL 0x00001084UL
808#define CKM_AES_CBC_PAD 0x00001085UL
809#define CKM_AES_CTR 0x00001086UL
810#define CKM_AES_GCM 0x00001087UL
811#define CKM_AES_CCM 0x00001088UL
812#define CKM_AES_CTS 0x00001089UL
813#define CKM_AES_CMAC 0x0000108AUL
814#define CKM_AES_CMAC_GENERAL 0x0000108BUL
815#define CKM_AES_XCBC_MAC 0x0000108CUL
816#define CKM_AES_XCBC_MAC_96 0x0000108DUL
817#define CKM_AES_GMAC 0x0000108EUL
818#define CKM_BLOWFISH_KEY_GEN 0x00001090UL
819#define CKM_BLOWFISH_CBC 0x00001091UL
820#define CKM_TWOFISH_KEY_GEN 0x00001092UL
821#define CKM_TWOFISH_CBC 0x00001093UL
822#define CKM_BLOWFISH_CBC_PAD 0x00001094UL
823#define CKM_TWOFISH_CBC_PAD 0x00001095UL
824#define CKM_DES_ECB_ENCRYPT_DATA 0x00001100UL
825#define CKM_DES_CBC_ENCRYPT_DATA 0x00001101UL
826#define CKM_DES3_ECB_ENCRYPT_DATA 0x00001102UL
827#define CKM_DES3_CBC_ENCRYPT_DATA 0x00001103UL
828#define CKM_AES_ECB_ENCRYPT_DATA 0x00001104UL
829#define CKM_AES_CBC_ENCRYPT_DATA 0x00001105UL
830#define CKM_GOSTR3410_KEY_PAIR_GEN 0x00001200UL
831#define CKM_GOSTR3410 0x00001201UL
832#define CKM_GOSTR3410_WITH_GOSTR3411 0x00001202UL
833#define CKM_GOSTR3410_KEY_WRAP 0x00001203UL
834#define CKM_GOSTR3410_DERIVE 0x00001204UL
835#define CKM_GOSTR3411 0x00001210UL
836#define CKM_GOSTR3411_HMAC 0x00001211UL
837#define CKM_GOST28147_KEY_GEN 0x00001220UL
838#define CKM_GOST28147_ECB 0x00001221UL
839#define CKM_GOST28147 0x00001222UL
840#define CKM_GOST28147_MAC 0x00001223UL
841#define CKM_GOST28147_KEY_WRAP 0x00001224UL
842#define CKM_CHACHA20_KEY_GEN 0x00001225UL
843#define CKM_CHACHA20 0x00001226UL
844#define CKM_POLY1305_KEY_GEN 0x00001227UL
845#define CKM_POLY1305 0x00001228UL
846#define CKM_DSA_PARAMETER_GEN 0x00002000UL
847#define CKM_DH_PKCS_PARAMETER_GEN 0x00002001UL
848#define CKM_X9_42_DH_PARAMETER_GEN 0x00002002UL
849#define CKM_DSA_PROBABILISTIC_PARAMETER_GEN 0x00002003UL
850#define CKM_DSA_PROBABLISTIC_PARAMETER_GEN 0x00002003UL
851#define CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN 0x00002004UL
852#define CKM_DSA_FIPS_G_GEN 0x00002005UL
853#define CKM_AES_OFB 0x00002104UL
854#define CKM_AES_CFB64 0x00002105UL
855#define CKM_AES_CFB8 0x00002106UL
856#define CKM_AES_CFB128 0x00002107UL
857#define CKM_AES_CFB1 0x00002108UL
858#define CKM_AES_KEY_WRAP 0x00002109UL
859#define CKM_AES_KEY_WRAP_PAD 0x0000210AUL
860#define CKM_AES_KEY_WRAP_KWP 0x0000210BUL
861#define CKM_AES_KEY_WRAP_PKCS7 0x0000210CUL
862#define CKM_RSA_PKCS_TPM_1_1 0x00004001UL
863#define CKM_RSA_PKCS_OAEP_TPM_1_1 0x00004002UL
864#define CKM_SHA_1_KEY_GEN 0x00004003UL
865#define CKM_SHA224_KEY_GEN 0x00004004UL
866#define CKM_SHA256_KEY_GEN 0x00004005UL
867#define CKM_SHA384_KEY_GEN 0x00004006UL
868#define CKM_SHA512_KEY_GEN 0x00004007UL
869#define CKM_SHA512_224_KEY_GEN 0x00004008UL
870#define CKM_SHA512_256_KEY_GEN 0x00004009UL
871#define CKM_SHA512_T_KEY_GEN 0x0000400AUL
872#define CKM_NULL 0x0000400BUL
873#define CKM_BLAKE2B_160 0x0000400CUL
874#define CKM_BLAKE2B_160_HMAC 0x0000400DUL
875#define CKM_BLAKE2B_160_HMAC_GENERAL 0x0000400EUL
876#define CKM_BLAKE2B_160_KEY_DERIVE 0x0000400FUL
877#define CKM_BLAKE2B_160_KEY_GEN 0x00004010UL
878#define CKM_BLAKE2B_256 0x00004011UL
879#define CKM_BLAKE2B_256_HMAC 0x00004012UL
880#define CKM_BLAKE2B_256_HMAC_GENERAL 0x00004013UL
881#define CKM_BLAKE2B_256_KEY_DERIVE 0x00004014UL
882#define CKM_BLAKE2B_256_KEY_GEN 0x00004015UL
883#define CKM_BLAKE2B_384 0x00004016UL
884#define CKM_BLAKE2B_384_HMAC 0x00004017UL
885#define CKM_BLAKE2B_384_HMAC_GENERAL 0x00004018UL
886#define CKM_BLAKE2B_384_KEY_DERIVE 0x00004019UL
887#define CKM_BLAKE2B_384_KEY_GEN 0x0000401AUL
888#define CKM_BLAKE2B_512 0x0000401BUL
889#define CKM_BLAKE2B_512_HMAC 0x0000401CUL
890#define CKM_BLAKE2B_512_HMAC_GENERAL 0x0000401DUL
891#define CKM_BLAKE2B_512_KEY_DERIVE 0x0000401EUL
892#define CKM_BLAKE2B_512_KEY_GEN 0x0000401FUL
893#define CKM_SALSA20 0x00004020UL
894#define CKM_CHACHA20_POLY1305 0x00004021UL
895#define CKM_SALSA20_POLY1305 0x00004022UL
896#define CKM_X3DH_INITIALIZE 0x00004023UL
897#define CKM_X3DH_RESPOND 0x00004024UL
898#define CKM_X2RATCHET_INITIALIZE 0x00004025UL
899#define CKM_X2RATCHET_RESPOND 0x00004026UL
900#define CKM_X2RATCHET_ENCRYPT 0x00004027UL
901#define CKM_X2RATCHET_DECRYPT 0x00004028UL
902#define CKM_XEDDSA 0x00004029UL
903#define CKM_HKDF_DERIVE 0x0000402AUL
904#define CKM_HKDF_DATA 0x0000402BUL
905#define CKM_HKDF_KEY_GEN 0x0000402CUL
906#define CKM_SALSA20_KEY_GEN 0x0000402DUL
907#define CKM_ECDSA_SHA3_224 0x00001047UL
908#define CKM_ECDSA_SHA3_256 0x00001048UL
909#define CKM_ECDSA_SHA3_384 0x00001049UL
910#define CKM_ECDSA_SHA3_512 0x0000104AUL
911#define CKM_EC_EDWARDS_KEY_PAIR_GEN 0x00001055UL
912#define CKM_EC_MONTGOMERY_KEY_PAIR_GEN 0x00001056UL
913#define CKM_EDDSA 0x00001057UL
914#define CKM_SP800_108_COUNTER_KDF 0x000003ACUL
915#define CKM_SP800_108_FEEDBACK_KDF 0x000003ADUL
916#define CKM_SP800_108_DOUBLE_PIPELINE_KDF 0x000003AEUL
917#define CKM_IKE2_PRF_PLUS_DERIVE 0x0000402EUL
918#define CKM_IKE_PRF_DERIVE 0x0000402FUL
919#define CKM_IKE1_PRF_DERIVE 0x00004030UL
920#define CKM_IKE1_EXTENDED_DERIVE 0x00004031UL
921#define CKM_HSS_KEY_PAIR_GEN 0x00004032UL
922#define CKM_HSS 0x00004033UL
923#define CKM_VENDOR_DEFINED 0x80000000UL
924/* Deprecated */
925#ifdef PKCS11_DEPRECATED
926#define CKM_CAST5_KEY_GEN 0x00000320UL
927#define CKM_CAST5_CBC 0x00000322UL
928#define CKM_CAST5_MAC 0x00000323UL
929#define CKM_CAST5_MAC_GENERAL 0x00000324UL
930#define CKM_CAST5_CBC_PAD 0x00000325UL
931#define CKM_PBE_MD5_CAST5_CBC 0x000003A4UL
932#define CKM_PBE_SHA1_CAST5_CBC 0x000003A5UL
933#define CKM_ECDSA_KEY_PAIR_GEN 0x00001040UL
934#endif
935
936/* CKN */
937#define CKN_SURRENDER 0UL
938#define CKN_OTP_CHANGED 1UL
939
940/* CKO */
941#define CKO_DATA 0x00000000UL
942#define CKO_CERTIFICATE 0x00000001UL
943#define CKO_PUBLIC_KEY 0x00000002UL
944#define CKO_PRIVATE_KEY 0x00000003UL
945#define CKO_SECRET_KEY 0x00000004UL
946#define CKO_HW_FEATURE 0x00000005UL
947#define CKO_DOMAIN_PARAMETERS 0x00000006UL
948#define CKO_MECHANISM 0x00000007UL
949#define CKO_OTP_KEY 0x00000008UL
950#define CKO_PROFILE 0x00000009UL
951#define CKO_VENDOR_DEFINED 0x80000000UL
952
953/* CKP (profile) */
954#define CKP_INVALID_ID 0x00000000UL
955#define CKP_BASELINE_PROVIDER 0x00000001UL
956#define CKP_EXTENDED_PROVIDER 0x00000002UL
957#define CKP_AUTHENTICATION_TOKEN 0x00000003UL
958#define CKP_PUBLIC_CERTIFICATES_TOKEN 0x00000004UL
959#define CKP_COMPLETE_PROVIDER 0x00000005UL
960#define CKP_HKDF_TLS_TOKEN 0x00000006UL
961#define CKP_VENDOR_DEFINED 0x80000000UL
962
963/* CKP (PBKD2) */
964#define CKP_PKCS5_PBKD2_HMAC_SHA1 0x00000001UL
965#define CKP_PKCS5_PBKD2_HMAC_GOSTR3411 0x00000002UL
966#define CKP_PKCS5_PBKD2_HMAC_SHA224 0x00000003UL
967#define CKP_PKCS5_PBKD2_HMAC_SHA256 0x00000004UL
968#define CKP_PKCS5_PBKD2_HMAC_SHA384 0x00000005UL
969#define CKP_PKCS5_PBKD2_HMAC_SHA512 0x00000006UL
970#define CKP_PKCS5_PBKD2_HMAC_SHA512_224 0x00000007UL
971#define CKP_PKCS5_PBKD2_HMAC_SHA512_256 0x00000008UL
972
973/* CKR */
974#define CKR_OK 0x00000000UL
975#define CKR_CANCEL 0x00000001UL
976#define CKR_HOST_MEMORY 0x00000002UL
977#define CKR_SLOT_ID_INVALID 0x00000003UL
978#define CKR_GENERAL_ERROR 0x00000005UL
979#define CKR_FUNCTION_FAILED 0x00000006UL
980#define CKR_ARGUMENTS_BAD 0x00000007UL
981#define CKR_NO_EVENT 0x00000008UL
982#define CKR_NEED_TO_CREATE_THREADS 0x00000009UL
983#define CKR_CANT_LOCK 0x0000000AUL
984#define CKR_ATTRIBUTE_READ_ONLY 0x00000010UL
985#define CKR_ATTRIBUTE_SENSITIVE 0x00000011UL
986#define CKR_ATTRIBUTE_TYPE_INVALID 0x00000012UL
987#define CKR_ATTRIBUTE_VALUE_INVALID 0x00000013UL
988#define CKR_ACTION_PROHIBITED 0x0000001BUL
989#define CKR_DATA_INVALID 0x00000020UL
990#define CKR_DATA_LEN_RANGE 0x00000021UL
991#define CKR_DEVICE_ERROR 0x00000030UL
992#define CKR_DEVICE_MEMORY 0x00000031UL
993#define CKR_DEVICE_REMOVED 0x00000032UL
994#define CKR_ENCRYPTED_DATA_INVALID 0x00000040UL
995#define CKR_ENCRYPTED_DATA_LEN_RANGE 0x00000041UL
996#define CKR_AEAD_DECRYPT_FAILED 0x00000042UL
997#define CKR_FUNCTION_CANCELED 0x00000050UL
998#define CKR_FUNCTION_NOT_PARALLEL 0x00000051UL
999#define CKR_FUNCTION_NOT_SUPPORTED 0x00000054UL
1000#define CKR_KEY_HANDLE_INVALID 0x00000060UL
1001#define CKR_KEY_SIZE_RANGE 0x00000062UL
1002#define CKR_KEY_TYPE_INCONSISTENT 0x00000063UL
1003#define CKR_KEY_NOT_NEEDED 0x00000064UL
1004#define CKR_KEY_CHANGED 0x00000065UL
1005#define CKR_KEY_NEEDED 0x00000066UL
1006#define CKR_KEY_INDIGESTIBLE 0x00000067UL
1007#define CKR_KEY_FUNCTION_NOT_PERMITTED 0x00000068UL
1008#define CKR_KEY_NOT_WRAPPABLE 0x00000069UL
1009#define CKR_KEY_UNEXTRACTABLE 0x0000006AUL
1010#define CKR_MECHANISM_INVALID 0x00000070UL
1011#define CKR_MECHANISM_PARAM_INVALID 0x00000071UL
1012#define CKR_OBJECT_HANDLE_INVALID 0x00000082UL
1013#define CKR_OPERATION_ACTIVE 0x00000090UL
1014#define CKR_OPERATION_NOT_INITIALIZED 0x00000091UL
1015#define CKR_PIN_INCORRECT 0x000000A0UL
1016#define CKR_PIN_INVALID 0x000000A1UL
1017#define CKR_PIN_LEN_RANGE 0x000000A2UL
1018#define CKR_PIN_EXPIRED 0x000000A3UL
1019#define CKR_PIN_LOCKED 0x000000A4UL
1020#define CKR_SESSION_CLOSED 0x000000B0UL
1021#define CKR_SESSION_COUNT 0x000000B1UL
1022#define CKR_SESSION_HANDLE_INVALID 0x000000B3UL
1023#define CKR_SESSION_PARALLEL_NOT_SUPPORTED 0x000000B4UL
1024#define CKR_SESSION_READ_ONLY 0x000000B5UL
1025#define CKR_SESSION_EXISTS 0x000000B6UL
1026#define CKR_SESSION_READ_ONLY_EXISTS 0x000000B7UL
1027#define CKR_SESSION_READ_WRITE_SO_EXISTS 0x000000B8UL
1028#define CKR_SIGNATURE_INVALID 0x000000C0UL
1029#define CKR_SIGNATURE_LEN_RANGE 0x000000C1UL
1030#define CKR_TEMPLATE_INCOMPLETE 0x000000D0UL
1031#define CKR_TEMPLATE_INCONSISTENT 0x000000D1UL
1032#define CKR_TOKEN_NOT_PRESENT 0x000000E0UL
1033#define CKR_TOKEN_NOT_RECOGNIZED 0x000000E1UL
1034#define CKR_TOKEN_WRITE_PROTECTED 0x000000E2UL
1035#define CKR_UNWRAPPING_KEY_HANDLE_INVALID 0x000000F0UL
1036#define CKR_UNWRAPPING_KEY_SIZE_RANGE 0x000000F1UL
1037#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT 0x000000F2UL
1038#define CKR_USER_ALREADY_LOGGED_IN 0x00000100UL
1039#define CKR_USER_NOT_LOGGED_IN 0x00000101UL
1040#define CKR_USER_PIN_NOT_INITIALIZED 0x00000102UL
1041#define CKR_USER_TYPE_INVALID 0x00000103UL
1042#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000104UL
1043#define CKR_USER_TOO_MANY_TYPES 0x00000105UL
1044#define CKR_WRAPPED_KEY_INVALID 0x00000110UL
1045#define CKR_WRAPPED_KEY_LEN_RANGE 0x00000112UL
1046#define CKR_WRAPPING_KEY_HANDLE_INVALID 0x00000113UL
1047#define CKR_WRAPPING_KEY_SIZE_RANGE 0x00000114UL
1048#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT 0x00000115UL
1049#define CKR_RANDOM_SEED_NOT_SUPPORTED 0x00000120UL
1050#define CKR_RANDOM_NO_RNG 0x00000121UL
1051#define CKR_DOMAIN_PARAMS_INVALID 0x00000130UL
1052#define CKR_CURVE_NOT_SUPPORTED 0x00000140UL
1053#define CKR_BUFFER_TOO_SMALL 0x00000150UL
1054#define CKR_SAVED_STATE_INVALID 0x00000160UL
1055#define CKR_INFORMATION_SENSITIVE 0x00000170UL
1056#define CKR_STATE_UNSAVEABLE 0x00000180UL
1057#define CKR_CRYPTOKI_NOT_INITIALIZED 0x00000190UL
1058#define CKR_CRYPTOKI_ALREADY_INITIALIZED 0x00000191UL
1059#define CKR_MUTEX_BAD 0x000001A0UL
1060#define CKR_MUTEX_NOT_LOCKED 0x000001A1UL
1061#define CKR_NEW_PIN_MODE 0x000001B0UL
1062#define CKR_NEXT_OTP 0x000001B1UL
1063#define CKR_EXCEEDED_MAX_ITERATIONS 0x000001B5UL
1064#define CKR_FIPS_SELF_TEST_FAILED 0x000001B6UL
1065#define CKR_LIBRARY_LOAD_FAILED 0x000001B7UL
1066#define CKR_PIN_TOO_WEAK 0x000001B8UL
1067#define CKR_PUBLIC_KEY_INVALID 0x000001B9UL
1068#define CKR_FUNCTION_REJECTED 0x00000200UL
1069#define CKR_TOKEN_RESOURCE_EXCEEDED 0x00000201UL
1070#define CKR_OPERATION_CANCEL_FAILED 0x00000202UL
1071#define CKR_KEY_EXHAUSTED 0x00000203UL
1072#define CKR_VENDOR_DEFINED 0x80000000UL
1073
1074
1075/* CKS */
1076#define CKS_RO_PUBLIC_SESSION 0UL
1077#define CKS_RO_USER_FUNCTIONS 1UL
1078#define CKS_RW_PUBLIC_SESSION 2UL
1079#define CKS_RW_USER_FUNCTIONS 3UL
1080#define CKS_RW_SO_FUNCTIONS 4UL
1081
1082/* CKU */
1083#define CKU_SO 0UL
1084#define CKU_USER 1UL
1085#define CKU_CONTEXT_SPECIFIC 2UL
1086
1087/* CKZ (data) */
1088#define CKZ_DATA_SPECIFIED 0x00000001UL
1089
1090/* CKZ (salt) */
1091#define CKZ_SALT_SPECIFIED 0x00000001UL
1092
1093/* Sundry structures type definition in alphabetical order */
1094#define STRUCTDEF(__name__) \
1095struct __name__; \
1096typedef struct __name__ __name__; \
1097typedef struct __name__ * __name__ ## _PTR; \
1098typedef struct __name__ ** __name__ ## _PTR_PTR;
1099
1100STRUCTDEF(CK_ATTRIBUTE)
1101STRUCTDEF(CK_C_INITIALIZE_ARGS)
1102STRUCTDEF(CK_DATE)
1103STRUCTDEF(CK_DERIVED_KEY)
1104STRUCTDEF(CK_FUNCTION_LIST)
1105STRUCTDEF(CK_FUNCTION_LIST_3_0)
1106STRUCTDEF(CK_INFO)
1107STRUCTDEF(CK_INTERFACE)
1108STRUCTDEF(CK_MECHANISM)
1109STRUCTDEF(CK_MECHANISM_INFO)
1110STRUCTDEF(CK_SESSION_INFO)
1111STRUCTDEF(CK_SLOT_INFO)
1112STRUCTDEF(CK_TOKEN_INFO)
1113STRUCTDEF(CK_VERSION)
1114
1115/* Function type definitions */
1116typedef CK_RV (* CK_NOTIFY)(CK_SESSION_HANDLE, CK_NOTIFICATION, void *);
1117typedef CK_RV (* CK_CREATEMUTEX)(void **);
1118typedef CK_RV (* CK_DESTROYMUTEX)(void *);
1119typedef CK_RV (* CK_LOCKMUTEX)(void *);
1120typedef CK_RV (* CK_UNLOCKMUTEX)(void *);
1121
1122/* General Structure definitions */
1124 CK_ATTRIBUTE_TYPE type;
1125 void * pValue;
1126 CK_ULONG ulValueLen;
1127};
1128
1130 CK_CREATEMUTEX CreateMutex;
1131 CK_DESTROYMUTEX DestroyMutex;
1132 CK_LOCKMUTEX LockMutex;
1133 CK_UNLOCKMUTEX UnlockMutex;
1134 CK_FLAGS flags;
1135 void * pReserved;
1136};
1137
1138struct CK_DATE{
1139 CK_CHAR year[4];
1140 CK_CHAR month[2];
1141 CK_CHAR day[2];
1142};
1143
1145{
1146 CK_ATTRIBUTE * pTemplate;
1147 CK_ULONG ulAttributeCount;
1148 CK_OBJECT_HANDLE * phKey;
1149};
1150
1152 CK_BYTE major;
1153 CK_BYTE minor;
1154};
1155
1156struct CK_INFO {
1157 struct CK_VERSION cryptokiVersion;
1158 CK_UTF8CHAR manufacturerID[32];
1159 CK_FLAGS flags;
1160 CK_UTF8CHAR libraryDescription[32];
1161 struct CK_VERSION libraryVersion;
1162};
1163
1165 CK_CHAR * pInterfaceName;
1166 void * pFunctionList;
1167 CK_FLAGS flags;
1168};
1169
1171 CK_MECHANISM_TYPE mechanism;
1172 void * pParameter;
1173 CK_ULONG ulParameterLen;
1174};
1175
1177 CK_ULONG ulMinKeySize;
1178 CK_ULONG ulMaxKeySize;
1179 CK_FLAGS flags;
1180};
1181
1183 CK_SLOT_ID slotID;
1184 CK_STATE state;
1185 CK_FLAGS flags;
1186 CK_ULONG ulDeviceError;
1187};
1188
1190 CK_UTF8CHAR slotDescription[64];
1191 CK_UTF8CHAR manufacturerID[32];
1192 CK_FLAGS flags;
1193 CK_VERSION hardwareVersion;
1194 CK_VERSION firmwareVersion;
1195};
1196
1198 CK_UTF8CHAR label[32];
1199 CK_UTF8CHAR manufacturerID[32];
1200 CK_UTF8CHAR model[16];
1201 CK_CHAR serialNumber[16];
1202 CK_FLAGS flags;
1203 CK_ULONG ulMaxSessionCount;
1204 CK_ULONG ulSessionCount;
1205 CK_ULONG ulMaxRwSessionCount;
1206 CK_ULONG ulRwSessionCount;
1207 CK_ULONG ulMaxPinLen;
1208 CK_ULONG ulMinPinLen;
1209 CK_ULONG ulTotalPublicMemory;
1210 CK_ULONG ulFreePublicMemory;
1211 CK_ULONG ulTotalPrivateMemory;
1212 CK_ULONG ulFreePrivateMemory;
1213 CK_VERSION hardwareVersion;
1214 CK_VERSION firmwareVersion;
1215 CK_CHAR utcTime[16];
1216};
1217
1218/* Param Structure definitions in alphabetical order */
1220STRUCTDEF(CK_AES_CCM_PARAMS)
1221STRUCTDEF(CK_AES_CTR_PARAMS)
1222STRUCTDEF(CK_AES_GCM_PARAMS)
1225STRUCTDEF(CK_CAMELLIA_CTR_PARAMS)
1226STRUCTDEF(CK_CCM_MESSAGE_PARAMS)
1227STRUCTDEF(CK_CCM_PARAMS)
1228STRUCTDEF(CK_CHACHA20_PARAMS)
1229STRUCTDEF(CK_CMS_SIG_PARAMS)
1233STRUCTDEF(CK_ECDH1_DERIVE_PARAMS)
1234STRUCTDEF(CK_ECDH2_DERIVE_PARAMS)
1235STRUCTDEF(CK_ECMQV_DERIVE_PARAMS)
1236STRUCTDEF(CK_EDDSA_PARAMS)
1237STRUCTDEF(CK_GCM_MESSAGE_PARAMS)
1238STRUCTDEF(CK_GCM_PARAMS)
1241STRUCTDEF(CK_HKDF_PARAMS)
1242STRUCTDEF(CK_IKE_PRF_DERIVE_PARAMS)
1246STRUCTDEF(CK_KEA_DERIVE_PARAMS)
1249STRUCTDEF(CK_KIP_PARAMS)
1250STRUCTDEF(CK_OTP_PARAM)
1251STRUCTDEF(CK_OTP_PARAMS)
1252STRUCTDEF(CK_OTP_SIGNATURE_INFO)
1253STRUCTDEF(CK_PBE_PARAMS)
1254STRUCTDEF(CK_PKCS5_PBKD2_PARAMS)
1255STRUCTDEF(CK_PKCS5_PBKD2_PARAMS2)
1256STRUCTDEF(CK_PRF_DATA_PARAM)
1257STRUCTDEF(CK_RC2_CBC_PARAMS)
1259STRUCTDEF(CK_RC5_CBC_PARAMS)
1261STRUCTDEF(CK_RC5_PARAMS)
1263STRUCTDEF(CK_RSA_PKCS_OAEP_PARAMS)
1264STRUCTDEF(CK_RSA_PKCS_PSS_PARAMS)
1267STRUCTDEF(CK_SALSA20_PARAMS)
1274STRUCTDEF(CK_SP800_108_KDF_PARAMS)
1277STRUCTDEF(CK_X3DH_INITIATE_PARAMS)
1278STRUCTDEF(CK_X3DH_RESPOND_PARAMS)
1282STRUCTDEF(CK_XEDDSA_PARAMS)
1283STRUCTDEF(specifiedParams)
1284
1286 CK_BYTE iv[16];
1287 CK_BYTE * pData;
1288 CK_ULONG length;
1289};
1290
1292 CK_ULONG ulDataLen;
1293 CK_BYTE * pNonce;
1294 CK_ULONG ulNonceLen;
1295 CK_BYTE * pAAD;
1296 CK_ULONG ulAADLen;
1297 CK_ULONG ulMACLen;
1298};
1299
1301 CK_ULONG ulCounterBits;
1302 CK_BYTE cb[16];
1303};
1304
1306 CK_BYTE * pIv;
1307 CK_ULONG ulIvLen;
1308 CK_ULONG ulIvBits;
1309 CK_BYTE * pAAD;
1310 CK_ULONG ulAADLen;
1311 CK_ULONG ulTagBits;
1312};
1313
1315 CK_BYTE iv[16];
1316 CK_BYTE * pData;
1317 CK_ULONG length;
1318};
1319
1321 CK_BYTE iv[16];
1322 CK_BYTE * pData;
1323 CK_ULONG length;
1324};
1325
1327 CK_ULONG ulCounterBits;
1328 CK_BYTE cb[16];
1329};
1330
1332 CK_ULONG ulDataLen;
1333 CK_BYTE * pNonce;
1334 CK_ULONG ulNonceLen;
1335 CK_ULONG ulNonceFixedBits;
1336 CK_GENERATOR_FUNCTION nonceGenerator;
1337 CK_BYTE * pMAC;
1338 CK_ULONG ulMACLen;
1339};
1340
1342 CK_ULONG ulDataLen;
1343 CK_BYTE * pNonce;
1344 CK_ULONG ulNonceLen;
1345 CK_BYTE * pAAD;
1346 CK_ULONG ulAADLen;
1347 CK_ULONG ulMACLen;
1348};
1349
1351 CK_BYTE * pBlockCounter;
1352 CK_ULONG blockCounterBits;
1353 CK_BYTE * pNonce;
1354 CK_ULONG ulNonceBits;
1355};
1356
1358 CK_OBJECT_HANDLE certificateHandle;
1359 CK_MECHANISM * pSigningMechanism;
1360 CK_MECHANISM * pDigestMechanism;
1361 CK_UTF8CHAR * pContentType;
1362 CK_BYTE * pRequestedAttributes;
1363 CK_ULONG ulRequestedAttributesLen;
1364 CK_BYTE * pRequiredAttributes;
1365 CK_ULONG ulRequiredAttributesLen;
1366};
1367
1369 CK_BYTE iv[8];
1370 CK_BYTE * pData;
1371 CK_ULONG length;
1372};
1373
1375 CK_MECHANISM_TYPE hash;
1376 CK_BYTE * pSeed;
1377 CK_ULONG ulSeedLen;
1378 CK_ULONG ulIndex;
1379};
1380
1382 CK_ULONG ulAESKeyBits;
1383 CK_EC_KDF_TYPE kdf;
1384 CK_ULONG ulSharedDataLen;
1385 CK_BYTE * pSharedData;
1386};
1387
1389 CK_EC_KDF_TYPE kdf;
1390 CK_ULONG ulSharedDataLen;
1391 CK_BYTE * pSharedData;
1392 CK_ULONG ulPublicDataLen;
1393 CK_BYTE * pPublicData;
1394};
1395
1397 CK_EC_KDF_TYPE kdf;
1398 CK_ULONG ulSharedDataLen;
1399 CK_BYTE * pSharedData;
1400 CK_ULONG ulPublicDataLen;
1401 CK_BYTE * pPublicData;
1402 CK_ULONG ulPrivateDataLen;
1403 CK_OBJECT_HANDLE hPrivateData;
1404 CK_ULONG ulPublicDataLen2;
1405 CK_BYTE * pPublicData2;
1406};
1407
1409 CK_EC_KDF_TYPE kdf;
1410 CK_ULONG ulSharedDataLen;
1411 CK_BYTE * pSharedData;
1412 CK_ULONG ulPublicDataLen;
1413 CK_BYTE * pPublicData;
1414 CK_ULONG ulPrivateDataLen;
1415 CK_OBJECT_HANDLE hPrivateData;
1416 CK_ULONG ulPublicDataLen2;
1417 CK_BYTE * pPublicData2;
1418 CK_OBJECT_HANDLE publicKey;
1419};
1420
1422 CK_BBOOL phFlag;
1423 CK_ULONG ulContextDataLen;
1424 CK_BYTE * pContextData;
1425};
1426
1428 CK_BYTE * pIv;
1429 CK_ULONG ulIvLen;
1430 CK_ULONG ulIvFixedBits;
1431 CK_GENERATOR_FUNCTION ivGenerator;
1432 CK_BYTE * pTag;
1433 CK_ULONG ulTagBits;
1434};
1435
1437 CK_BYTE * pIv;
1438 CK_ULONG ulIvLen;
1439 CK_ULONG ulIvBits;
1440 CK_BYTE * pAAD;
1441 CK_ULONG ulAADLen;
1442 CK_ULONG ulTagBits;
1443};
1444
1446 CK_EC_KDF_TYPE kdf;
1447 CK_BYTE * pPublicData;
1448 CK_ULONG ulPublicDataLen;
1449 CK_BYTE * pUKM;
1450 CK_ULONG ulUKMLen;
1451};
1452
1454 CK_BYTE * pWrapOID;
1455 CK_ULONG ulWrapOIDLen;
1456 CK_BYTE * pUKM;
1457 CK_ULONG ulUKMLen;
1458 CK_OBJECT_HANDLE hKey;
1459};
1460
1462 CK_BBOOL bExtract;
1463 CK_BBOOL bExpand;
1464 CK_MECHANISM_TYPE prfHashMechanism;
1465 CK_ULONG ulSaltType;
1466 CK_BYTE * pSalt;
1467 CK_ULONG ulSaltLen;
1468 CK_OBJECT_HANDLE hSaltKey;
1469 CK_BYTE * pInfo;
1470 CK_ULONG ulInfoLen;
1471};
1472
1474 CK_MECHANISM_TYPE prfMechanism;
1475 CK_BBOOL bDataAsKey;
1476 CK_BBOOL bRekey;
1477 CK_BYTE * pNi;
1478 CK_ULONG ulNiLen;
1479 CK_BYTE * pNr;
1480 CK_ULONG ulNrLen;
1481 CK_OBJECT_HANDLE hNewKey;
1482};
1483
1485 CK_MECHANISM_TYPE prfMechanism;
1486 CK_BBOOL bHasKeygxy;
1487 CK_OBJECT_HANDLE hKeygxy;
1488 CK_BYTE * pExtraData;
1489 CK_ULONG ulExtraDataLen;
1490};
1491
1493 CK_MECHANISM_TYPE prfMechanism;
1494 CK_BBOOL bHasPrevKey;
1495 CK_OBJECT_HANDLE hKeygxy;
1496 CK_OBJECT_HANDLE hPrevKey;
1497 CK_BYTE * pCKYi;
1498 CK_ULONG ulCKYiLen;
1499 CK_BYTE * pCKYr;
1500 CK_ULONG ulCKYrLen;
1501 CK_BYTE keyNumber;
1502};
1503
1505 CK_MECHANISM_TYPE prfMechanism;
1506 CK_BBOOL bHasSeedKey;
1507 CK_OBJECT_HANDLE hSeedKey;
1508 CK_BYTE * pSeedData;
1509 CK_ULONG ulSeedDataLen;
1510};
1511
1513 CK_BBOOL isSender;
1514 CK_ULONG ulRandomLen;
1515 CK_BYTE * RandomA;
1516 CK_BYTE * RandomB;
1517 CK_ULONG ulPublicDataLen;
1518 CK_BYTE * PublicData;
1519};
1520
1522 CK_BYTE * pData;
1523 CK_ULONG ulLen;
1524};
1525
1527 CK_BYTE bBC;
1528 CK_BYTE * pX;
1529 CK_ULONG ulXLen;
1530};
1531
1533 CK_MECHANISM * pMechanism;
1534 CK_OBJECT_HANDLE hKey;
1535 CK_BYTE * pSeed;
1536 CK_ULONG ulSeedLen;
1537};
1538
1540 CK_OTP_PARAM_TYPE type;
1541 void * pValue;
1542 CK_ULONG ulValueLen;
1543};
1544
1546 CK_OTP_PARAM * pParams;
1547 CK_ULONG ulCount;
1548};
1549
1551 CK_OTP_PARAM * pParams;
1552 CK_ULONG ulCount;
1553};
1554
1556 CK_BYTE * pInitVector;
1557 CK_UTF8CHAR * pPassword;
1558 CK_ULONG ulPasswordLen;
1559 CK_BYTE * pSalt;
1560 CK_ULONG ulSaltLen;
1561 CK_ULONG ulIteration;
1562};
1563
1565 CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;
1566 void * pSaltSourceData;
1567 CK_ULONG ulSaltSourceDataLen;
1568 CK_ULONG iterations;
1569 CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
1570 void * pPrfData;
1571 CK_ULONG ulPrfDataLen;
1572 CK_UTF8CHAR * pPassword;
1573 CK_ULONG * ulPasswordLen;
1574};
1575
1577 CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;
1578 void * pSaltSourceData;
1579 CK_ULONG ulSaltSourceDataLen;
1580 CK_ULONG iterations;
1581 CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
1582 void * pPrfData;
1583 CK_ULONG ulPrfDataLen;
1584 CK_UTF8CHAR * pPassword;
1585 CK_ULONG ulPasswordLen;
1586};
1587
1589 CK_PRF_DATA_TYPE type;
1590 void * pValue;
1591 CK_ULONG ulValueLen;
1592};
1593
1595 CK_ULONG ulEffectiveBits;
1596 CK_BYTE iv[8];
1597};
1598
1600 CK_ULONG ulEffectiveBits;
1601 CK_ULONG ulMacLength;
1602};
1603
1605 CK_ULONG ulWordsize;
1606 CK_ULONG ulRounds;
1607 CK_BYTE * pIv;
1608 CK_ULONG ulIvLen;
1609};
1610
1612 CK_ULONG ulWordsize;
1613 CK_ULONG ulRounds;
1614 CK_ULONG ulMacLength;
1615};
1616
1618 CK_ULONG ulWordsize;
1619 CK_ULONG ulRounds;
1620};
1621
1623 CK_ULONG ulAESKeyBits;
1624 CK_RSA_PKCS_OAEP_PARAMS * pOAEPParams;
1625};
1626
1628 CK_MECHANISM_TYPE hashAlg;
1629 CK_RSA_PKCS_MGF_TYPE mgf;
1630 CK_RSA_PKCS_OAEP_SOURCE_TYPE source;
1631 void * pSourceData;
1632 CK_ULONG ulSourceDataLen;
1633};
1634
1636 CK_MECHANISM_TYPE hashAlg;
1637 CK_RSA_PKCS_MGF_TYPE mgf;
1638 CK_ULONG sLen;
1639};
1640
1642 CK_BYTE * pNonce;
1643 CK_ULONG ulNonceLen;
1644 CK_BYTE * pTag;
1645};
1646
1648 CK_BYTE * pNonce;
1649 CK_ULONG ulNonceLen;
1650 CK_BYTE * pAAD;
1651 CK_ULONG ulAADLen;
1652};
1653
1655 CK_BYTE * pBlockCounter;
1656 CK_BYTE * pNonce;
1657 CK_ULONG ulNonceBits;
1658};
1659
1661 CK_BYTE iv[16];
1662 CK_BYTE * pData;
1663 CK_ULONG length;
1664};
1665
1667 CK_ULONG ulPasswordLen;
1668 CK_BYTE * pPassword;
1669 CK_ULONG ulPublicDataLen;
1670 CK_BYTE * pPublicData;
1671 CK_ULONG ulPAndGLen;
1672 CK_ULONG ulQLen;
1673 CK_ULONG ulRandomLen;
1674 CK_BYTE * pRandomA;
1675 CK_BYTE * pPrimeP;
1676 CK_BYTE * pBaseG;
1677 CK_BYTE * pSubprimeQ;
1678};
1679
1681 CK_ULONG ulOldWrappedXLen;
1682 CK_BYTE * pOldWrappedX;
1683 CK_ULONG ulOldPasswordLen;
1684 CK_BYTE * pOldPassword;
1685 CK_ULONG ulOldPublicDataLen;
1686 CK_BYTE * pOldPublicData;
1687 CK_ULONG ulOldRandomLen;
1688 CK_BYTE * pOldRandomA;
1689 CK_ULONG ulNewPasswordLen;
1690 CK_BYTE * pNewPassword;
1691 CK_ULONG ulNewPublicDataLen;
1692 CK_BYTE * pNewPublicData;
1693 CK_ULONG ulNewRandomLen;
1694 CK_BYTE * pNewRandomA;
1695};
1696
1698 CK_BBOOL bLittleEndian;
1699 CK_ULONG ulWidthInBits;
1700};
1701
1703 CK_SP800_108_DKM_LENGTH_METHOD dkmLengthMethod;
1704 CK_BBOOL bLittleEndian;
1705 CK_ULONG ulWidthInBits;
1706};
1707
1708typedef CK_MECHANISM_TYPE CK_SP800_108_PRF_TYPE;
1709
1711{
1712 CK_SP800_108_PRF_TYPE prfType;
1713 CK_ULONG ulNumberOfDataParams;
1714 CK_PRF_DATA_PARAM * pDataParams;
1715 CK_ULONG ulIVLen;
1716 CK_BYTE * pIV;
1717 CK_ULONG ulAdditionalDerivedKeys;
1718 CK_DERIVED_KEY * pAdditionalDerivedKeys;
1719};
1720
1722{
1723 CK_SP800_108_PRF_TYPE prfType;
1724 CK_ULONG ulNumberOfDataParams;
1725 CK_PRF_DATA_PARAM * pDataParams;
1726 CK_ULONG ulAdditionalDerivedKeys;
1727 CK_DERIVED_KEY * pAdditionalDerivedKeys;
1728};
1729
1731 CK_BYTE * sk;
1732 CK_OBJECT_HANDLE peer_public_prekey;
1733 CK_OBJECT_HANDLE peer_public_identity;
1734 CK_OBJECT_HANDLE own_public_identity;
1735 CK_BBOOL bEncryptedHeader;
1736 CK_ULONG eCurve;
1737 CK_MECHANISM_TYPE aeadMechanism;
1738 CK_X2RATCHET_KDF_TYPE kdfMechanism;
1739};
1740
1742 CK_BYTE * sk;
1743 CK_OBJECT_HANDLE own_prekey;
1744 CK_OBJECT_HANDLE initiator_identity;
1745 CK_OBJECT_HANDLE own_public_identity;
1746 CK_BBOOL bEncryptedHeader;
1747 CK_ULONG eCurve;
1748 CK_MECHANISM_TYPE aeadMechanism;
1749 CK_X2RATCHET_KDF_TYPE kdfMechanism;
1750};
1751
1753 CK_X3DH_KDF_TYPE kdf;
1754 CK_OBJECT_HANDLE pPeer_identity;
1755 CK_OBJECT_HANDLE pPeer_prekey;
1756 CK_BYTE * pPrekey_signature;
1757 CK_BYTE * pOnetime_key;
1758 CK_OBJECT_HANDLE pOwn_identity;
1759 CK_OBJECT_HANDLE pOwn_ephemeral;
1760};
1761
1763 CK_X3DH_KDF_TYPE kdf;
1764 CK_BYTE * pIdentity_id;
1765 CK_BYTE * pPrekey_id;
1766 CK_BYTE * pOnetime_id;
1767 CK_OBJECT_HANDLE pInitiator_identity;
1768 CK_BYTE * pInitiator_ephemeral;
1769};
1770
1772 CK_X9_42_DH_KDF_TYPE kdf;
1773 CK_ULONG ulOtherInfoLen;
1774 CK_BYTE * pOtherInfo;
1775 CK_ULONG ulPublicDataLen;
1776 CK_BYTE * pPublicData;
1777};
1778
1780 CK_X9_42_DH_KDF_TYPE kdf;
1781 CK_ULONG ulOtherInfoLen;
1782 CK_BYTE * pOtherInfo;
1783 CK_ULONG ulPublicDataLen;
1784 CK_BYTE * pPublicData;
1785 CK_ULONG ulPrivateDataLen;
1786 CK_OBJECT_HANDLE hPrivateData;
1787 CK_ULONG ulPublicDataLen2;
1788 CK_BYTE * pPublicData2;
1789};
1790
1792 CK_X9_42_DH_KDF_TYPE kdf;
1793 CK_ULONG ulOtherInfoLen;
1794 CK_BYTE * OtherInfo;
1795 CK_ULONG ulPublicDataLen;
1796 CK_BYTE * PublicData;
1797 CK_ULONG ulPrivateDataLen;
1798 CK_OBJECT_HANDLE hPrivateData;
1799 CK_ULONG ulPublicDataLen2;
1800 CK_BYTE * PublicData2;
1801 CK_OBJECT_HANDLE publicKey;
1802};
1803
1805 CK_XEDDSA_HASH_TYPE hash;
1806};
1807
1809 CK_HSS_LEVELS levels;
1810 CK_LMS_TYPE lm_type[8];
1811 CK_LMOTS_TYPE lm_ots_type[8];
1812};
1813
1814/* TLS related structure definitions */
1815STRUCTDEF(CK_SSL3_KEY_MAT_OUT)
1816STRUCTDEF(CK_SSL3_KEY_MAT_PARAMS)
1818STRUCTDEF(CK_SSL3_RANDOM_DATA)
1819STRUCTDEF(CK_TLS_KDF_PARAMS)
1820STRUCTDEF(CK_TLS_MAC_PARAMS)
1821STRUCTDEF(CK_TLS_PRF_PARAMS)
1822STRUCTDEF(CK_TLS12_KEY_MAT_PARAMS)
1824STRUCTDEF(CK_WTLS_KEY_MAT_OUT)
1825STRUCTDEF(CK_WTLS_KEY_MAT_PARAMS)
1827STRUCTDEF(CK_WTLS_PRF_PARAMS)
1828STRUCTDEF(CK_WTLS_RANDOM_DATA)
1829
1831 CK_OBJECT_HANDLE hClientMacSecret;
1832 CK_OBJECT_HANDLE hServerMacSecret;
1833 CK_OBJECT_HANDLE hClientKey;
1834 CK_OBJECT_HANDLE hServerKey;
1835 CK_BYTE * pIVClient;
1836 CK_BYTE * pIVServer;
1837};
1838
1840 CK_BYTE * pClientRandom;
1841 CK_ULONG ulClientRandomLen;
1842 CK_BYTE * pServerRandom;
1843 CK_ULONG ulServerRandomLen;
1844};
1845
1847 CK_ULONG ulMacSizeInBits;
1848 CK_ULONG ulKeySizeInBits;
1849 CK_ULONG ulIVSizeInBits;
1850 CK_BBOOL bIsExport;
1851 CK_SSL3_RANDOM_DATA RandomInfo;
1852 CK_SSL3_KEY_MAT_OUT * pReturnedKeyMaterial;
1853};
1854
1856 CK_SSL3_RANDOM_DATA RandomInfo;
1857 CK_VERSION * pVersion;
1858};
1859
1861 CK_MECHANISM_TYPE prfMechanism;
1862 CK_BYTE * pLabel;
1863 CK_ULONG ulLabelLength;
1864 CK_SSL3_RANDOM_DATA RandomInfo;
1865 CK_BYTE * pContextData;
1866 CK_ULONG ulContextDataLength;
1867};
1868
1870 CK_MECHANISM_TYPE prfHashMechanism;
1871 CK_ULONG ulMacLength;
1872 CK_ULONG ulServerOrClient;
1873};
1874
1876 CK_BYTE * pSeed;
1877 CK_ULONG ulSeedLen;
1878 CK_BYTE * pLabel;
1879 CK_ULONG ulLabelLen;
1880 CK_BYTE * pOutput;
1881 CK_ULONG * pulOutputLen;
1882};
1883
1885 CK_ULONG ulMacSizeInBits;
1886 CK_ULONG ulKeySizeInBits;
1887 CK_ULONG ulIVSizeInBits;
1888 CK_BBOOL bIsExport;
1889 CK_SSL3_RANDOM_DATA RandomInfo;
1890 CK_SSL3_KEY_MAT_OUT * pReturnedKeyMaterial;
1891 CK_MECHANISM_TYPE prfHashMechanism;
1892};
1893
1895 CK_SSL3_RANDOM_DATA RandomInfo;
1896 CK_VERSION * pVersion;
1897 CK_MECHANISM_TYPE prfHashMechanism;
1898};
1899
1901 CK_OBJECT_HANDLE hMacSecret;
1902 CK_OBJECT_HANDLE hKey;
1903 CK_BYTE * pIV;
1904};
1905
1907 CK_BYTE * pClientRandom;
1908 CK_ULONG ulClientRandomLen;
1909 CK_BYTE * pServerRandom;
1910 CK_ULONG ulServerRandomLen;
1911};
1912
1914 CK_MECHANISM_TYPE DigestMechanism;
1915 CK_ULONG ulMacSizeInBits;
1916 CK_ULONG ulKeySizeInBits;
1917 CK_ULONG ulIVSizeInBits;
1918 CK_ULONG ulSequenceNumber;
1919 CK_BBOOL bIsExport;
1920 CK_WTLS_RANDOM_DATA RandomInfo;
1921 CK_WTLS_KEY_MAT_OUT * pReturnedKeyMaterial;
1922};
1923
1925 CK_MECHANISM_TYPE DigestMechanism;
1926 CK_WTLS_RANDOM_DATA RandomInfo;
1927 CK_BYTE * pVersion;
1928};
1929
1931 CK_MECHANISM_TYPE DigestMechanism;
1932 CK_BYTE * pSeed;
1933 CK_ULONG ulSeedLen;
1934 CK_BYTE * pLabel;
1935 CK_ULONG ulLabelLen;
1936 CK_BYTE * pOutput;
1937 CK_ULONG * pulOutputLen;
1938};
1939
1940/* PKCS11 Functions */
1941extern CK_RV C_Initialize(void *);
1942extern CK_RV C_Finalize(void *);
1943extern CK_RV C_GetInfo(CK_INFO *);
1944extern CK_RV C_GetFunctionList(CK_FUNCTION_LIST **);
1945extern CK_RV C_GetSlotList(CK_BBOOL, CK_SLOT_ID *, CK_ULONG *);
1946extern CK_RV C_GetSlotInfo(CK_SLOT_ID, CK_SLOT_INFO *);
1947extern CK_RV C_GetTokenInfo(CK_SLOT_ID, CK_TOKEN_INFO *);
1948extern CK_RV C_GetMechanismList(CK_SLOT_ID, CK_MECHANISM_TYPE *, CK_ULONG *);
1949extern CK_RV C_GetMechanismInfo(CK_SLOT_ID, CK_MECHANISM_TYPE,
1951extern CK_RV C_InitToken(CK_SLOT_ID, CK_UTF8CHAR *, CK_ULONG, CK_UTF8CHAR *);
1952extern CK_RV C_InitPIN(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG);
1953extern CK_RV C_SetPIN(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG, CK_UTF8CHAR *,
1954 CK_ULONG);
1955extern CK_RV C_OpenSession(CK_SLOT_ID, CK_FLAGS, void *, CK_NOTIFY,
1956 CK_SESSION_HANDLE *);
1957extern CK_RV C_CloseSession(CK_SESSION_HANDLE);
1958extern CK_RV C_CloseAllSessions(CK_SLOT_ID);
1959extern CK_RV C_GetSessionInfo(CK_SESSION_HANDLE, CK_SESSION_INFO *);
1960extern CK_RV C_GetOperationState(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
1961extern CK_RV C_SetOperationState(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
1962 CK_OBJECT_HANDLE, CK_OBJECT_HANDLE);
1963extern CK_RV C_Login(CK_SESSION_HANDLE, CK_USER_TYPE, CK_UTF8CHAR *, CK_ULONG);
1964extern CK_RV C_Logout(CK_SESSION_HANDLE);
1965extern CK_RV C_CreateObject(CK_SESSION_HANDLE, CK_ATTRIBUTE *, CK_ULONG,
1966 CK_OBJECT_HANDLE *);
1967extern CK_RV C_CopyObject(CK_SESSION_HANDLE, CK_OBJECT_HANDLE, CK_ATTRIBUTE *,
1968 CK_ULONG, CK_OBJECT_HANDLE *);
1969extern CK_RV C_DestroyObject(CK_SESSION_HANDLE, CK_OBJECT_HANDLE);
1970extern CK_RV C_GetObjectSize(CK_SESSION_HANDLE, CK_OBJECT_HANDLE, CK_ULONG *);
1971extern CK_RV C_GetAttributeValue(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
1972 CK_ATTRIBUTE *, CK_ULONG);
1973extern CK_RV C_SetAttributeValue(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
1974 CK_ATTRIBUTE *, CK_ULONG);
1975extern CK_RV C_FindObjectsInit(CK_SESSION_HANDLE, CK_ATTRIBUTE *, CK_ULONG);
1976extern CK_RV C_FindObjects(CK_SESSION_HANDLE, CK_OBJECT_HANDLE *, CK_ULONG,
1977 CK_ULONG *);
1978extern CK_RV C_FindObjectsFinal(CK_SESSION_HANDLE);
1979extern CK_RV C_EncryptInit(CK_SESSION_HANDLE, CK_MECHANISM *,
1980 CK_OBJECT_HANDLE);
1981extern CK_RV C_Encrypt(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
1982 CK_ULONG *);
1983extern CK_RV C_EncryptUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
1984 CK_BYTE *, CK_ULONG *);
1985extern CK_RV C_EncryptFinal(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
1986extern CK_RV C_DecryptInit(CK_SESSION_HANDLE, CK_MECHANISM *,
1987 CK_OBJECT_HANDLE);
1988extern CK_RV C_Decrypt(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
1989 CK_ULONG *);
1990extern CK_RV C_DecryptUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
1991 CK_BYTE *, CK_ULONG *);
1992extern CK_RV C_DecryptFinal(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
1993extern CK_RV C_DigestInit(CK_SESSION_HANDLE, CK_MECHANISM *);
1994extern CK_RV C_Digest(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
1995 CK_ULONG *);
1996extern CK_RV C_DigestUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
1997extern CK_RV C_DigestKey(CK_SESSION_HANDLE, CK_OBJECT_HANDLE);
1998extern CK_RV C_DigestFinal(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
1999extern CK_RV C_SignInit(CK_SESSION_HANDLE, CK_MECHANISM *, CK_OBJECT_HANDLE);
2000extern CK_RV C_Sign(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
2001 CK_ULONG *);
2002extern CK_RV C_SignUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2003extern CK_RV C_SignFinal(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
2004extern CK_RV C_SignRecoverInit(CK_SESSION_HANDLE, CK_MECHANISM *,
2005 CK_OBJECT_HANDLE);
2006extern CK_RV C_SignRecover(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
2007 CK_ULONG *);
2008extern CK_RV C_VerifyInit(CK_SESSION_HANDLE, CK_MECHANISM *,
2009 CK_OBJECT_HANDLE);
2010extern CK_RV C_Verify(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
2011 CK_ULONG);
2012extern CK_RV C_VerifyUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2013extern CK_RV C_VerifyFinal(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2014extern CK_RV C_VerifyRecoverInit(CK_SESSION_HANDLE, CK_MECHANISM *,
2015 CK_OBJECT_HANDLE);
2016extern CK_RV C_VerifyRecover(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2017 CK_BYTE *, CK_ULONG *);
2018extern CK_RV C_DigestEncryptUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2019 CK_BYTE *, CK_ULONG *);
2020extern CK_RV C_DecryptDigestUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2021 CK_BYTE *, CK_ULONG *);
2022extern CK_RV C_SignEncryptUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2023 CK_BYTE *, CK_ULONG *);
2024extern CK_RV C_DecryptVerifyUpdate(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2025 CK_BYTE *, CK_ULONG *);
2026extern CK_RV C_GenerateKey(CK_SESSION_HANDLE, CK_MECHANISM *, CK_ATTRIBUTE *,
2027 CK_ULONG, CK_OBJECT_HANDLE *);
2028extern CK_RV C_GenerateKeyPair(CK_SESSION_HANDLE, CK_MECHANISM *,
2029 CK_ATTRIBUTE *, CK_ULONG, CK_ATTRIBUTE *,
2030 CK_ULONG, CK_OBJECT_HANDLE *,
2031 CK_OBJECT_HANDLE *);
2032extern CK_RV C_WrapKey(CK_SESSION_HANDLE, CK_MECHANISM *, CK_OBJECT_HANDLE,
2033 CK_OBJECT_HANDLE, CK_BYTE *, CK_ULONG *);
2034extern CK_RV C_UnwrapKey(CK_SESSION_HANDLE, CK_MECHANISM *, CK_OBJECT_HANDLE,
2035 CK_BYTE *, CK_ULONG *, CK_ATTRIBUTE *, CK_ULONG,
2036 CK_OBJECT_HANDLE *);
2037extern CK_RV C_DeriveKey(CK_SESSION_HANDLE, CK_MECHANISM *, CK_OBJECT_HANDLE,
2038 CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
2039extern CK_RV C_SeedRandom(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2040extern CK_RV C_GenerateRandom(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2041extern CK_RV C_GetFunctionStatus(CK_SESSION_HANDLE);
2042extern CK_RV C_CancelFunction(CK_SESSION_HANDLE);
2043extern CK_RV C_WaitForSlotEvent(CK_FLAGS, CK_SLOT_ID *, void *);
2044extern CK_RV C_GetInterfaceList(CK_INTERFACE *, CK_ULONG *);
2045extern CK_RV C_GetInterface(CK_UTF8CHAR *, CK_VERSION *, CK_INTERFACE **,
2046 CK_FLAGS);
2047extern CK_RV C_LoginUser(CK_SESSION_HANDLE, CK_USER_TYPE, CK_UTF8CHAR *,
2048 CK_ULONG, CK_UTF8CHAR *, CK_ULONG);
2049extern CK_RV C_SessionCancel(CK_SESSION_HANDLE, CK_FLAGS);
2050extern CK_RV C_MessageEncryptInit(CK_SESSION_HANDLE, CK_MECHANISM *,
2051 CK_OBJECT_HANDLE);
2052extern CK_RV C_EncryptMessage(CK_SESSION_HANDLE, void *, CK_ULONG, CK_BYTE *,
2053 CK_ULONG, CK_BYTE *, CK_ULONG, CK_BYTE *,
2054 CK_ULONG *);
2055extern CK_RV C_EncryptMessageBegin(CK_SESSION_HANDLE, void *, CK_ULONG,
2056 CK_BYTE *, CK_ULONG);
2057extern CK_RV C_EncryptMessageNext(CK_SESSION_HANDLE, void *, CK_ULONG,
2058 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *,
2059 CK_FLAGS);
2060extern CK_RV C_MessageEncryptFinal(CK_SESSION_HANDLE);
2061extern CK_RV C_MessageDecryptInit(CK_SESSION_HANDLE, CK_MECHANISM *,
2062 CK_OBJECT_HANDLE);
2063extern CK_RV C_DecryptMessage(CK_SESSION_HANDLE, void *, CK_ULONG, CK_BYTE *,
2064 CK_ULONG, CK_BYTE *, CK_ULONG, CK_BYTE *,
2065 CK_ULONG *);
2066extern CK_RV C_DecryptMessageBegin(CK_SESSION_HANDLE, void *, CK_ULONG,
2067 CK_BYTE *, CK_ULONG);
2068extern CK_RV C_DecryptMessageNext(CK_SESSION_HANDLE, void *, CK_ULONG,
2069 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *,
2070 CK_FLAGS);
2071extern CK_RV C_MessageDecryptFinal(CK_SESSION_HANDLE);
2072extern CK_RV C_MessageSignInit(CK_SESSION_HANDLE, CK_MECHANISM *,
2073 CK_OBJECT_HANDLE);
2074extern CK_RV C_SignMessage(CK_SESSION_HANDLE, void *, CK_ULONG, CK_BYTE *,
2075 CK_ULONG, CK_BYTE *, CK_ULONG *);
2076extern CK_RV C_SignMessageBegin(CK_SESSION_HANDLE, void *, CK_ULONG);
2077extern CK_RV C_SignMessageNext(CK_SESSION_HANDLE, void *, CK_ULONG,
2078 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
2079extern CK_RV C_MessageSignFinal(CK_SESSION_HANDLE);
2080extern CK_RV C_MessageVerifyInit(CK_SESSION_HANDLE, CK_MECHANISM *,
2081 CK_OBJECT_HANDLE);
2082extern CK_RV C_VerifyMessage(CK_SESSION_HANDLE, void *, CK_ULONG, CK_BYTE *,
2083 CK_ULONG, CK_BYTE *, CK_ULONG);
2084extern CK_RV C_VerifyMessageBegin(CK_SESSION_HANDLE, void *, CK_ULONG);
2085extern CK_RV C_VerifyMessageNext(CK_SESSION_HANDLE, void *, CK_ULONG,
2086 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG);
2087extern CK_RV C_MessageVerifyFinal(CK_SESSION_HANDLE);
2088
2089typedef CK_RV (* CK_C_Initialize)(void *);
2090typedef CK_RV (* CK_C_Finalize)(void *);
2091typedef CK_RV (* CK_C_GetInfo)(CK_INFO *);
2092typedef CK_RV (* CK_C_GetFunctionList)(CK_FUNCTION_LIST **);
2093typedef CK_RV (* CK_C_GetSlotList)(CK_BBOOL, CK_SLOT_ID *, CK_ULONG *);
2094typedef CK_RV (* CK_C_GetSlotInfo)(CK_SLOT_ID, CK_SLOT_INFO *);
2095typedef CK_RV (* CK_C_GetTokenInfo)(CK_SLOT_ID, CK_TOKEN_INFO *);
2096typedef CK_RV (* CK_C_GetMechanismList)(CK_SLOT_ID, CK_MECHANISM_TYPE *,
2097 CK_ULONG *);
2098typedef CK_RV (* CK_C_GetMechanismInfo)(CK_SLOT_ID, CK_MECHANISM_TYPE,
2100typedef CK_RV (* CK_C_InitToken)(CK_SLOT_ID, CK_UTF8CHAR *, CK_ULONG,
2101 CK_UTF8CHAR *);
2102typedef CK_RV (* CK_C_InitPIN)(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG);
2103typedef CK_RV (* CK_C_SetPIN)(CK_SESSION_HANDLE, CK_UTF8CHAR *, CK_ULONG,
2104 CK_UTF8CHAR *, CK_ULONG);
2105typedef CK_RV (* CK_C_OpenSession)(CK_SLOT_ID, CK_FLAGS, void *, CK_NOTIFY,
2106 CK_SESSION_HANDLE *);
2107typedef CK_RV (* CK_C_CloseSession)(CK_SESSION_HANDLE);
2108typedef CK_RV (* CK_C_CloseAllSessions)(CK_SLOT_ID);
2109typedef CK_RV (* CK_C_GetSessionInfo)(CK_SESSION_HANDLE, CK_SESSION_INFO *);
2110typedef CK_RV (* CK_C_GetOperationState)(CK_SESSION_HANDLE, CK_BYTE *,
2111 CK_ULONG *);
2112typedef CK_RV (* CK_C_SetOperationState)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2113 CK_OBJECT_HANDLE, CK_OBJECT_HANDLE);
2114typedef CK_RV (* CK_C_Login)(CK_SESSION_HANDLE, CK_USER_TYPE, CK_UTF8CHAR *,
2115 CK_ULONG);
2116typedef CK_RV (* CK_C_Logout)(CK_SESSION_HANDLE);
2117typedef CK_RV (* CK_C_CreateObject)(CK_SESSION_HANDLE, CK_ATTRIBUTE *, CK_ULONG,
2118 CK_OBJECT_HANDLE *);
2119typedef CK_RV (* CK_C_CopyObject)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
2120 CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
2121typedef CK_RV (* CK_C_DestroyObject)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE);
2122typedef CK_RV (* CK_C_GetObjectSize)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
2123 CK_ULONG *);
2124typedef CK_RV (* CK_C_GetAttributeValue)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
2125 CK_ATTRIBUTE *, CK_ULONG);
2126typedef CK_RV (* CK_C_SetAttributeValue)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE,
2127 CK_ATTRIBUTE *, CK_ULONG);
2128typedef CK_RV (* CK_C_FindObjectsInit)(CK_SESSION_HANDLE, CK_ATTRIBUTE *,
2129 CK_ULONG);
2130typedef CK_RV (* CK_C_FindObjects)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE *,
2131 CK_ULONG, CK_ULONG *);
2132typedef CK_RV (* CK_C_FindObjectsFinal)(CK_SESSION_HANDLE);
2133typedef CK_RV (* CK_C_EncryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2134 CK_OBJECT_HANDLE);
2135typedef CK_RV (* CK_C_Encrypt)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2136 CK_BYTE *, CK_ULONG *);
2137typedef CK_RV (* CK_C_EncryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2138 CK_BYTE *, CK_ULONG *);
2139typedef CK_RV (* CK_C_EncryptFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
2140typedef CK_RV (* CK_C_DecryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2141 CK_OBJECT_HANDLE);
2142typedef CK_RV (* CK_C_Decrypt)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2143 CK_BYTE *, CK_ULONG *);
2144typedef CK_RV (* CK_C_DecryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2145 CK_BYTE *, CK_ULONG *);
2146typedef CK_RV (* CK_C_DecryptFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
2147typedef CK_RV (* CK_C_DigestInit)(CK_SESSION_HANDLE, CK_MECHANISM *);
2148typedef CK_RV (* CK_C_Digest)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
2149 CK_ULONG *);
2150typedef CK_RV (* CK_C_DigestUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2151typedef CK_RV (* CK_C_DigestKey)(CK_SESSION_HANDLE, CK_OBJECT_HANDLE);
2152typedef CK_RV (* CK_C_DigestFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
2153typedef CK_RV (* CK_C_SignInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2154 CK_OBJECT_HANDLE);
2155typedef CK_RV (* CK_C_Sign)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
2156 CK_ULONG *);
2157typedef CK_RV (* CK_C_SignUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2158typedef CK_RV (* CK_C_SignFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG *);
2159typedef CK_RV (* CK_C_SignRecoverInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2160 CK_OBJECT_HANDLE);
2161typedef CK_RV (* CK_C_SignRecover)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2162 CK_BYTE *, CK_ULONG *);
2163typedef CK_RV (* CK_C_VerifyInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2164 CK_OBJECT_HANDLE);
2165typedef CK_RV (* CK_C_Verify)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG, CK_BYTE *,
2166 CK_ULONG);
2167typedef CK_RV (* CK_C_VerifyUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2168typedef CK_RV (* CK_C_VerifyFinal)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2169typedef CK_RV (* CK_C_VerifyRecoverInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2170 CK_OBJECT_HANDLE);
2171typedef CK_RV (* CK_C_VerifyRecover)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2172 CK_BYTE *, CK_ULONG *);
2173typedef CK_RV (* CK_C_DigestEncryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *,
2174 CK_ULONG, CK_BYTE *, CK_ULONG *);
2175typedef CK_RV (* CK_C_DecryptDigestUpdate)(CK_SESSION_HANDLE, CK_BYTE *,
2176 CK_ULONG, CK_BYTE *, CK_ULONG *);
2177typedef CK_RV (* CK_C_SignEncryptUpdate)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG,
2178 CK_BYTE *, CK_ULONG *);
2179typedef CK_RV (* CK_C_DecryptVerifyUpdate)(CK_SESSION_HANDLE, CK_BYTE *,
2180 CK_ULONG, CK_BYTE *, CK_ULONG *);
2181typedef CK_RV (* CK_C_GenerateKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
2182 CK_ATTRIBUTE *, CK_ULONG,
2183 CK_OBJECT_HANDLE *);
2184typedef CK_RV (* CK_C_GenerateKeyPair)(CK_SESSION_HANDLE, CK_MECHANISM *,
2185 CK_ATTRIBUTE *, CK_ULONG, CK_ATTRIBUTE *,
2186 CK_ULONG, CK_OBJECT_HANDLE *,
2187 CK_OBJECT_HANDLE *);
2188typedef CK_RV (* CK_C_WrapKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
2189 CK_OBJECT_HANDLE, CK_OBJECT_HANDLE, CK_BYTE *,
2190 CK_ULONG *);
2191typedef CK_RV (* CK_C_UnwrapKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
2192 CK_OBJECT_HANDLE, CK_BYTE *, CK_ULONG,
2193 CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
2194typedef CK_RV (* CK_C_DeriveKey)(CK_SESSION_HANDLE, CK_MECHANISM *,
2195 CK_OBJECT_HANDLE, CK_ATTRIBUTE *, CK_ULONG,
2196 CK_OBJECT_HANDLE *);
2197typedef CK_RV (* CK_C_SeedRandom)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2198typedef CK_RV (* CK_C_GenerateRandom)(CK_SESSION_HANDLE, CK_BYTE *, CK_ULONG);
2199typedef CK_RV (* CK_C_GetFunctionStatus)(CK_SESSION_HANDLE);
2200typedef CK_RV (* CK_C_CancelFunction)(CK_SESSION_HANDLE);
2201typedef CK_RV (* CK_C_WaitForSlotEvent)(CK_FLAGS, CK_SLOT_ID *, void *);
2202typedef CK_RV (* CK_C_GetInterfaceList)(CK_INTERFACE *, CK_ULONG *);
2203typedef CK_RV (* CK_C_GetInterface)(CK_UTF8CHAR *, CK_VERSION *,
2204 CK_INTERFACE **, CK_FLAGS);
2205typedef CK_RV (* CK_C_LoginUser)(CK_SESSION_HANDLE, CK_USER_TYPE, CK_UTF8CHAR *,
2206 CK_ULONG, CK_UTF8CHAR *, CK_ULONG);
2207typedef CK_RV (* CK_C_SessionCancel)(CK_SESSION_HANDLE, CK_FLAGS);
2208typedef CK_RV (* CK_C_MessageEncryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2209 CK_OBJECT_HANDLE);
2210typedef CK_RV (* CK_C_EncryptMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
2211 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG,
2212 CK_BYTE *, CK_ULONG *);
2213typedef CK_RV (* CK_C_EncryptMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG,
2214 CK_BYTE *, CK_ULONG);
2215typedef CK_RV (* CK_C_EncryptMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
2216 CK_BYTE *, CK_ULONG, CK_BYTE *,
2217 CK_ULONG *, CK_FLAGS);
2218typedef CK_RV (* CK_C_MessageEncryptFinal)(CK_SESSION_HANDLE);
2219typedef CK_RV (* CK_C_MessageDecryptInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2220 CK_OBJECT_HANDLE);
2221typedef CK_RV (* CK_C_DecryptMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
2222 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG,
2223 CK_BYTE *, CK_ULONG *);
2224typedef CK_RV (* CK_C_DecryptMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG,
2225 CK_BYTE *, CK_ULONG);
2226typedef CK_RV (* CK_C_DecryptMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
2227 CK_BYTE *, CK_ULONG, CK_BYTE *,
2228 CK_ULONG *, CK_FLAGS);
2229typedef CK_RV (* CK_C_MessageDecryptFinal)(CK_SESSION_HANDLE);
2230typedef CK_RV (* CK_C_MessageSignInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2231 CK_OBJECT_HANDLE);
2232typedef CK_RV (* CK_C_SignMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
2233 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
2234typedef CK_RV (* CK_C_SignMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG);
2235typedef CK_RV (* CK_C_SignMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
2236 CK_BYTE *, CK_ULONG, CK_BYTE *,
2237 CK_ULONG *);
2238typedef CK_RV (* CK_C_MessageSignFinal)(CK_SESSION_HANDLE);
2239typedef CK_RV (* CK_C_MessageVerifyInit)(CK_SESSION_HANDLE, CK_MECHANISM *,
2240 CK_OBJECT_HANDLE);
2241typedef CK_RV (* CK_C_VerifyMessage)(CK_SESSION_HANDLE, void *, CK_ULONG,
2242 CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG);
2243typedef CK_RV (* CK_C_VerifyMessageBegin)(CK_SESSION_HANDLE, void *, CK_ULONG);
2244typedef CK_RV (* CK_C_VerifyMessageNext)(CK_SESSION_HANDLE, void *, CK_ULONG,
2245 CK_BYTE *, CK_ULONG, CK_BYTE *,
2246 CK_ULONG);
2247typedef CK_RV (* CK_C_MessageVerifyFinal)(CK_SESSION_HANDLE);
2248
2250 CK_VERSION version;
2251 CK_C_Initialize C_Initialize;
2252 CK_C_Finalize C_Finalize;
2253 CK_C_GetInfo C_GetInfo;
2254 CK_C_GetFunctionList C_GetFunctionList;
2255 CK_C_GetSlotList C_GetSlotList;
2256 CK_C_GetSlotInfo C_GetSlotInfo;
2257 CK_C_GetTokenInfo C_GetTokenInfo;
2258 CK_C_GetMechanismList C_GetMechanismList;
2259 CK_C_GetMechanismInfo C_GetMechanismInfo;
2260 CK_C_InitToken C_InitToken;
2261 CK_C_InitPIN C_InitPIN;
2262 CK_C_SetPIN C_SetPIN;
2263 CK_C_OpenSession C_OpenSession;
2264 CK_C_CloseSession C_CloseSession;
2265 CK_C_CloseAllSessions C_CloseAllSessions;
2266 CK_C_GetSessionInfo C_GetSessionInfo;
2267 CK_C_GetOperationState C_GetOperationState;
2268 CK_C_SetOperationState C_SetOperationState;
2269 CK_C_Login C_Login;
2270 CK_C_Logout C_Logout;
2271 CK_C_CreateObject C_CreateObject;
2272 CK_C_CopyObject C_CopyObject;
2273 CK_C_DestroyObject C_DestroyObject;
2274 CK_C_GetObjectSize C_GetObjectSize;
2275 CK_C_GetAttributeValue C_GetAttributeValue;
2276 CK_C_SetAttributeValue C_SetAttributeValue;
2277 CK_C_FindObjectsInit C_FindObjectsInit;
2278 CK_C_FindObjects C_FindObjects;
2279 CK_C_FindObjectsFinal C_FindObjectsFinal;
2280 CK_C_EncryptInit C_EncryptInit;
2281 CK_C_Encrypt C_Encrypt;
2282 CK_C_EncryptUpdate C_EncryptUpdate;
2283 CK_C_EncryptFinal C_EncryptFinal;
2284 CK_C_DecryptInit C_DecryptInit;
2285 CK_C_Decrypt C_Decrypt;
2286 CK_C_DecryptUpdate C_DecryptUpdate;
2287 CK_C_DecryptFinal C_DecryptFinal;
2288 CK_C_DigestInit C_DigestInit;
2289 CK_C_Digest C_Digest;
2290 CK_C_DigestUpdate C_DigestUpdate;
2291 CK_C_DigestKey C_DigestKey;
2292 CK_C_DigestFinal C_DigestFinal;
2293 CK_C_SignInit C_SignInit;
2294 CK_C_Sign C_Sign;
2295 CK_C_SignUpdate C_SignUpdate;
2296 CK_C_SignFinal C_SignFinal;
2297 CK_C_SignRecoverInit C_SignRecoverInit;
2298 CK_C_SignRecover C_SignRecover;
2299 CK_C_VerifyInit C_VerifyInit;
2300 CK_C_Verify C_Verify;
2301 CK_C_VerifyUpdate C_VerifyUpdate;
2302 CK_C_VerifyFinal C_VerifyFinal;
2303 CK_C_VerifyRecoverInit C_VerifyRecoverInit;
2304 CK_C_VerifyRecover C_VerifyRecover;
2305 CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
2306 CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
2307 CK_C_SignEncryptUpdate C_SignEncryptUpdate;
2308 CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
2309 CK_C_GenerateKey C_GenerateKey;
2310 CK_C_GenerateKeyPair C_GenerateKeyPair;
2311 CK_C_WrapKey C_WrapKey;
2312 CK_C_UnwrapKey C_UnwrapKey;
2313 CK_C_DeriveKey C_DeriveKey;
2314 CK_C_SeedRandom C_SeedRandom;
2315 CK_C_GenerateRandom C_GenerateRandom;
2316 CK_C_GetFunctionStatus C_GetFunctionStatus;
2317 CK_C_CancelFunction C_CancelFunction;
2318 CK_C_WaitForSlotEvent C_WaitForSlotEvent;
2319 CK_C_GetInterfaceList C_GetInterfaceList;
2320 CK_C_GetInterface C_GetInterface;
2321 CK_C_LoginUser C_LoginUser;
2322 CK_C_SessionCancel C_SessionCancel;
2323 CK_C_MessageEncryptInit C_MessageEncryptInit;
2324 CK_C_EncryptMessage C_EncryptMessage;
2325 CK_C_EncryptMessageBegin C_EncryptMessageBegin;
2326 CK_C_EncryptMessageNext C_EncryptMessageNext;
2327 CK_C_MessageEncryptFinal C_MessageEncryptFinal;
2328 CK_C_MessageDecryptInit C_MessageDecryptInit;
2329 CK_C_DecryptMessage C_DecryptMessage;
2330 CK_C_DecryptMessageBegin C_DecryptMessageBegin;
2331 CK_C_DecryptMessageNext C_DecryptMessageNext;
2332 CK_C_MessageDecryptFinal C_MessageDecryptFinal;
2333 CK_C_MessageSignInit C_MessageSignInit;
2334 CK_C_SignMessage C_SignMessage;
2335 CK_C_SignMessageBegin C_SignMessageBegin;
2336 CK_C_SignMessageNext C_SignMessageNext;
2337 CK_C_MessageSignFinal C_MessageSignFinal;
2338 CK_C_MessageVerifyInit C_MessageVerifyInit;
2339 CK_C_VerifyMessage C_VerifyMessage;
2340 CK_C_VerifyMessageBegin C_VerifyMessageBegin;
2341 CK_C_VerifyMessageNext C_VerifyMessageNext;
2342 CK_C_MessageVerifyFinal C_MessageVerifyFinal;
2343};
2344
2346 CK_VERSION version;
2347 CK_C_Initialize C_Initialize;
2348 CK_C_Finalize C_Finalize;
2349 CK_C_GetInfo C_GetInfo;
2350 CK_C_GetFunctionList C_GetFunctionList;
2351 CK_C_GetSlotList C_GetSlotList;
2352 CK_C_GetSlotInfo C_GetSlotInfo;
2353 CK_C_GetTokenInfo C_GetTokenInfo;
2354 CK_C_GetMechanismList C_GetMechanismList;
2355 CK_C_GetMechanismInfo C_GetMechanismInfo;
2356 CK_C_InitToken C_InitToken;
2357 CK_C_InitPIN C_InitPIN;
2358 CK_C_SetPIN C_SetPIN;
2359 CK_C_OpenSession C_OpenSession;
2360 CK_C_CloseSession C_CloseSession;
2361 CK_C_CloseAllSessions C_CloseAllSessions;
2362 CK_C_GetSessionInfo C_GetSessionInfo;
2363 CK_C_GetOperationState C_GetOperationState;
2364 CK_C_SetOperationState C_SetOperationState;
2365 CK_C_Login C_Login;
2366 CK_C_Logout C_Logout;
2367 CK_C_CreateObject C_CreateObject;
2368 CK_C_CopyObject C_CopyObject;
2369 CK_C_DestroyObject C_DestroyObject;
2370 CK_C_GetObjectSize C_GetObjectSize;
2371 CK_C_GetAttributeValue C_GetAttributeValue;
2372 CK_C_SetAttributeValue C_SetAttributeValue;
2373 CK_C_FindObjectsInit C_FindObjectsInit;
2374 CK_C_FindObjects C_FindObjects;
2375 CK_C_FindObjectsFinal C_FindObjectsFinal;
2376 CK_C_EncryptInit C_EncryptInit;
2377 CK_C_Encrypt C_Encrypt;
2378 CK_C_EncryptUpdate C_EncryptUpdate;
2379 CK_C_EncryptFinal C_EncryptFinal;
2380 CK_C_DecryptInit C_DecryptInit;
2381 CK_C_Decrypt C_Decrypt;
2382 CK_C_DecryptUpdate C_DecryptUpdate;
2383 CK_C_DecryptFinal C_DecryptFinal;
2384 CK_C_DigestInit C_DigestInit;
2385 CK_C_Digest C_Digest;
2386 CK_C_DigestUpdate C_DigestUpdate;
2387 CK_C_DigestKey C_DigestKey;
2388 CK_C_DigestFinal C_DigestFinal;
2389 CK_C_SignInit C_SignInit;
2390 CK_C_Sign C_Sign;
2391 CK_C_SignUpdate C_SignUpdate;
2392 CK_C_SignFinal C_SignFinal;
2393 CK_C_SignRecoverInit C_SignRecoverInit;
2394 CK_C_SignRecover C_SignRecover;
2395 CK_C_VerifyInit C_VerifyInit;
2396 CK_C_Verify C_Verify;
2397 CK_C_VerifyUpdate C_VerifyUpdate;
2398 CK_C_VerifyFinal C_VerifyFinal;
2399 CK_C_VerifyRecoverInit C_VerifyRecoverInit;
2400 CK_C_VerifyRecover C_VerifyRecover;
2401 CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
2402 CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
2403 CK_C_SignEncryptUpdate C_SignEncryptUpdate;
2404 CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
2405 CK_C_GenerateKey C_GenerateKey;
2406 CK_C_GenerateKeyPair C_GenerateKeyPair;
2407 CK_C_WrapKey C_WrapKey;
2408 CK_C_UnwrapKey C_UnwrapKey;
2409 CK_C_DeriveKey C_DeriveKey;
2410 CK_C_SeedRandom C_SeedRandom;
2411 CK_C_GenerateRandom C_GenerateRandom;
2412 CK_C_GetFunctionStatus C_GetFunctionStatus;
2413 CK_C_CancelFunction C_CancelFunction;
2414 CK_C_WaitForSlotEvent C_WaitForSlotEvent;
2415};
2416
2417
2418//#endif