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