xref: /dflybsd-src/crypto/openssh/pkcs11.h (revision 36e94dc5bac047676e52d6d94a07db1b31c653e3)
1*36e94dc5SPeter Avalos /* $OpenBSD: pkcs11.h,v 1.3 2013/11/26 19:15:09 deraadt Exp $ */
2856ea928SPeter Avalos /* pkcs11.h
3856ea928SPeter Avalos    Copyright 2006, 2007 g10 Code GmbH
4856ea928SPeter Avalos    Copyright 2006 Andreas Jellinghaus
5856ea928SPeter Avalos 
6856ea928SPeter Avalos    This file is free software; as a special exception the author gives
7856ea928SPeter Avalos    unlimited permission to copy and/or distribute it, with or without
8856ea928SPeter Avalos    modifications, as long as this notice is preserved.
9856ea928SPeter Avalos 
10856ea928SPeter Avalos    This file is distributed in the hope that it will be useful, but
11856ea928SPeter Avalos    WITHOUT ANY WARRANTY, to the extent permitted by law; without even
12856ea928SPeter Avalos    the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13856ea928SPeter Avalos    PURPOSE.  */
14856ea928SPeter Avalos 
15856ea928SPeter Avalos /* Please submit changes back to the Scute project at
16856ea928SPeter Avalos    http://www.scute.org/ (or send them to marcus@g10code.com), so that
17856ea928SPeter Avalos    they can be picked up by other projects from there as well.  */
18856ea928SPeter Avalos 
19856ea928SPeter Avalos /* This file is a modified implementation of the PKCS #11 standard by
20856ea928SPeter Avalos    RSA Security Inc.  It is mostly a drop-in replacement, with the
21856ea928SPeter Avalos    following change:
22856ea928SPeter Avalos 
23856ea928SPeter Avalos    This header file does not require any macro definitions by the user
24856ea928SPeter Avalos    (like CK_DEFINE_FUNCTION etc).  In fact, it defines those macros
25856ea928SPeter Avalos    for you (if useful, some are missing, let me know if you need
26856ea928SPeter Avalos    more).
27856ea928SPeter Avalos 
28856ea928SPeter Avalos    There is an additional API available that does comply better to the
29856ea928SPeter Avalos    GNU coding standard.  It can be switched on by defining
30856ea928SPeter Avalos    CRYPTOKI_GNU before including this header file.  For this, the
31856ea928SPeter Avalos    following changes are made to the specification:
32856ea928SPeter Avalos 
33856ea928SPeter Avalos    All structure types are changed to a "struct ck_foo" where CK_FOO
34856ea928SPeter Avalos    is the type name in PKCS #11.
35856ea928SPeter Avalos 
36856ea928SPeter Avalos    All non-structure types are changed to ck_foo_t where CK_FOO is the
37856ea928SPeter Avalos    lowercase version of the type name in PKCS #11.  The basic types
38856ea928SPeter Avalos    (CK_ULONG et al.) are removed without substitute.
39856ea928SPeter Avalos 
40856ea928SPeter Avalos    All members of structures are modified in the following way: Type
41856ea928SPeter Avalos    indication prefixes are removed, and underscore characters are
42856ea928SPeter Avalos    inserted before words.  Then the result is lowercased.
43856ea928SPeter Avalos 
44856ea928SPeter Avalos    Note that function names are still in the original case, as they
45856ea928SPeter Avalos    need for ABI compatibility.
46856ea928SPeter Avalos 
47856ea928SPeter Avalos    CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute.  Use
48856ea928SPeter Avalos    <stdbool.h>.
49856ea928SPeter Avalos 
50856ea928SPeter Avalos    If CRYPTOKI_COMPAT is defined before including this header file,
51856ea928SPeter Avalos    then none of the API changes above take place, and the API is the
52856ea928SPeter Avalos    one defined by the PKCS #11 standard.  */
53856ea928SPeter Avalos 
54856ea928SPeter Avalos #ifndef PKCS11_H
55856ea928SPeter Avalos #define PKCS11_H 1
56856ea928SPeter Avalos 
57856ea928SPeter Avalos #if defined(__cplusplus)
58856ea928SPeter Avalos extern "C" {
59856ea928SPeter Avalos #endif
60856ea928SPeter Avalos 
61856ea928SPeter Avalos 
62856ea928SPeter Avalos /* The version of cryptoki we implement.  The revision is changed with
63856ea928SPeter Avalos    each modification of this file.  If you do not use the "official"
64856ea928SPeter Avalos    version of this file, please consider deleting the revision macro
65856ea928SPeter Avalos    (you may use a macro with a different name to keep track of your
66856ea928SPeter Avalos    versions).  */
67856ea928SPeter Avalos #define CRYPTOKI_VERSION_MAJOR		2
68856ea928SPeter Avalos #define CRYPTOKI_VERSION_MINOR		20
69856ea928SPeter Avalos #define CRYPTOKI_VERSION_REVISION	6
70856ea928SPeter Avalos 
71856ea928SPeter Avalos 
72856ea928SPeter Avalos /* Compatibility interface is default, unless CRYPTOKI_GNU is
73856ea928SPeter Avalos    given.  */
74856ea928SPeter Avalos #ifndef CRYPTOKI_GNU
75856ea928SPeter Avalos #ifndef CRYPTOKI_COMPAT
76856ea928SPeter Avalos #define CRYPTOKI_COMPAT 1
77856ea928SPeter Avalos #endif
78856ea928SPeter Avalos #endif
79856ea928SPeter Avalos 
80856ea928SPeter Avalos /* System dependencies.  */
81856ea928SPeter Avalos 
82856ea928SPeter Avalos #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
83856ea928SPeter Avalos 
84856ea928SPeter Avalos /* There is a matching pop below.  */
85856ea928SPeter Avalos #pragma pack(push, cryptoki, 1)
86856ea928SPeter Avalos 
87856ea928SPeter Avalos #ifdef CRYPTOKI_EXPORTS
88856ea928SPeter Avalos #define CK_SPEC __declspec(dllexport)
89856ea928SPeter Avalos #else
90856ea928SPeter Avalos #define CK_SPEC __declspec(dllimport)
91856ea928SPeter Avalos #endif
92856ea928SPeter Avalos 
93856ea928SPeter Avalos #else
94856ea928SPeter Avalos 
95856ea928SPeter Avalos #define CK_SPEC
96856ea928SPeter Avalos 
97856ea928SPeter Avalos #endif
98856ea928SPeter Avalos 
99856ea928SPeter Avalos 
100856ea928SPeter Avalos #ifdef CRYPTOKI_COMPAT
101856ea928SPeter Avalos   /* If we are in compatibility mode, switch all exposed names to the
102856ea928SPeter Avalos      PKCS #11 variant.  There are corresponding #undefs below.  */
103856ea928SPeter Avalos 
104856ea928SPeter Avalos #define ck_flags_t CK_FLAGS
105856ea928SPeter Avalos #define ck_version _CK_VERSION
106856ea928SPeter Avalos 
107856ea928SPeter Avalos #define ck_info _CK_INFO
108856ea928SPeter Avalos #define cryptoki_version cryptokiVersion
109856ea928SPeter Avalos #define manufacturer_id manufacturerID
110856ea928SPeter Avalos #define library_description libraryDescription
111856ea928SPeter Avalos #define library_version libraryVersion
112856ea928SPeter Avalos 
113856ea928SPeter Avalos #define ck_notification_t CK_NOTIFICATION
114856ea928SPeter Avalos #define ck_slot_id_t CK_SLOT_ID
115856ea928SPeter Avalos 
116856ea928SPeter Avalos #define ck_slot_info _CK_SLOT_INFO
117856ea928SPeter Avalos #define slot_description slotDescription
118856ea928SPeter Avalos #define hardware_version hardwareVersion
119856ea928SPeter Avalos #define firmware_version firmwareVersion
120856ea928SPeter Avalos 
121856ea928SPeter Avalos #define ck_token_info _CK_TOKEN_INFO
122856ea928SPeter Avalos #define serial_number serialNumber
123856ea928SPeter Avalos #define max_session_count ulMaxSessionCount
124856ea928SPeter Avalos #define session_count ulSessionCount
125856ea928SPeter Avalos #define max_rw_session_count ulMaxRwSessionCount
126856ea928SPeter Avalos #define rw_session_count ulRwSessionCount
127856ea928SPeter Avalos #define max_pin_len ulMaxPinLen
128856ea928SPeter Avalos #define min_pin_len ulMinPinLen
129856ea928SPeter Avalos #define total_public_memory ulTotalPublicMemory
130856ea928SPeter Avalos #define free_public_memory ulFreePublicMemory
131856ea928SPeter Avalos #define total_private_memory ulTotalPrivateMemory
132856ea928SPeter Avalos #define free_private_memory ulFreePrivateMemory
133856ea928SPeter Avalos #define utc_time utcTime
134856ea928SPeter Avalos 
135856ea928SPeter Avalos #define ck_session_handle_t CK_SESSION_HANDLE
136856ea928SPeter Avalos #define ck_user_type_t CK_USER_TYPE
137856ea928SPeter Avalos #define ck_state_t CK_STATE
138856ea928SPeter Avalos 
139856ea928SPeter Avalos #define ck_session_info _CK_SESSION_INFO
140856ea928SPeter Avalos #define slot_id slotID
141856ea928SPeter Avalos #define device_error ulDeviceError
142856ea928SPeter Avalos 
143856ea928SPeter Avalos #define ck_object_handle_t CK_OBJECT_HANDLE
144856ea928SPeter Avalos #define ck_object_class_t CK_OBJECT_CLASS
145856ea928SPeter Avalos #define ck_hw_feature_type_t CK_HW_FEATURE_TYPE
146856ea928SPeter Avalos #define ck_key_type_t CK_KEY_TYPE
147856ea928SPeter Avalos #define ck_certificate_type_t CK_CERTIFICATE_TYPE
148856ea928SPeter Avalos #define ck_attribute_type_t CK_ATTRIBUTE_TYPE
149856ea928SPeter Avalos 
150856ea928SPeter Avalos #define ck_attribute _CK_ATTRIBUTE
151856ea928SPeter Avalos #define value pValue
152856ea928SPeter Avalos #define value_len ulValueLen
153856ea928SPeter Avalos 
154856ea928SPeter Avalos #define ck_date _CK_DATE
155856ea928SPeter Avalos 
156856ea928SPeter Avalos #define ck_mechanism_type_t CK_MECHANISM_TYPE
157856ea928SPeter Avalos 
158856ea928SPeter Avalos #define ck_mechanism _CK_MECHANISM
159856ea928SPeter Avalos #define parameter pParameter
160856ea928SPeter Avalos #define parameter_len ulParameterLen
161856ea928SPeter Avalos 
162856ea928SPeter Avalos #define ck_mechanism_info _CK_MECHANISM_INFO
163856ea928SPeter Avalos #define min_key_size ulMinKeySize
164856ea928SPeter Avalos #define max_key_size ulMaxKeySize
165856ea928SPeter Avalos 
166856ea928SPeter Avalos #define ck_rv_t CK_RV
167856ea928SPeter Avalos #define ck_notify_t CK_NOTIFY
168856ea928SPeter Avalos 
169856ea928SPeter Avalos #define ck_function_list _CK_FUNCTION_LIST
170856ea928SPeter Avalos 
171856ea928SPeter Avalos #define ck_createmutex_t CK_CREATEMUTEX
172856ea928SPeter Avalos #define ck_destroymutex_t CK_DESTROYMUTEX
173856ea928SPeter Avalos #define ck_lockmutex_t CK_LOCKMUTEX
174856ea928SPeter Avalos #define ck_unlockmutex_t CK_UNLOCKMUTEX
175856ea928SPeter Avalos 
176856ea928SPeter Avalos #define ck_c_initialize_args _CK_C_INITIALIZE_ARGS
177856ea928SPeter Avalos #define create_mutex CreateMutex
178856ea928SPeter Avalos #define destroy_mutex DestroyMutex
179856ea928SPeter Avalos #define lock_mutex LockMutex
180856ea928SPeter Avalos #define unlock_mutex UnlockMutex
181856ea928SPeter Avalos #define reserved pReserved
182856ea928SPeter Avalos 
183856ea928SPeter Avalos #endif	/* CRYPTOKI_COMPAT */
184856ea928SPeter Avalos 
185856ea928SPeter Avalos 
186856ea928SPeter Avalos 
187856ea928SPeter Avalos typedef unsigned long ck_flags_t;
188856ea928SPeter Avalos 
189856ea928SPeter Avalos struct ck_version
190856ea928SPeter Avalos {
191856ea928SPeter Avalos   unsigned char major;
192856ea928SPeter Avalos   unsigned char minor;
193856ea928SPeter Avalos };
194856ea928SPeter Avalos 
195856ea928SPeter Avalos 
196856ea928SPeter Avalos struct ck_info
197856ea928SPeter Avalos {
198856ea928SPeter Avalos   struct ck_version cryptoki_version;
199856ea928SPeter Avalos   unsigned char manufacturer_id[32];
200856ea928SPeter Avalos   ck_flags_t flags;
201856ea928SPeter Avalos   unsigned char library_description[32];
202856ea928SPeter Avalos   struct ck_version library_version;
203856ea928SPeter Avalos };
204856ea928SPeter Avalos 
205856ea928SPeter Avalos 
206856ea928SPeter Avalos typedef unsigned long ck_notification_t;
207856ea928SPeter Avalos 
208856ea928SPeter Avalos #define CKN_SURRENDER	(0)
209856ea928SPeter Avalos 
210856ea928SPeter Avalos 
211856ea928SPeter Avalos typedef unsigned long ck_slot_id_t;
212856ea928SPeter Avalos 
213856ea928SPeter Avalos 
214856ea928SPeter Avalos struct ck_slot_info
215856ea928SPeter Avalos {
216856ea928SPeter Avalos   unsigned char slot_description[64];
217856ea928SPeter Avalos   unsigned char manufacturer_id[32];
218856ea928SPeter Avalos   ck_flags_t flags;
219856ea928SPeter Avalos   struct ck_version hardware_version;
220856ea928SPeter Avalos   struct ck_version firmware_version;
221856ea928SPeter Avalos };
222856ea928SPeter Avalos 
223856ea928SPeter Avalos 
224856ea928SPeter Avalos #define CKF_TOKEN_PRESENT	(1 << 0)
225856ea928SPeter Avalos #define CKF_REMOVABLE_DEVICE	(1 << 1)
226856ea928SPeter Avalos #define CKF_HW_SLOT		(1 << 2)
227856ea928SPeter Avalos #define CKF_ARRAY_ATTRIBUTE	(1 << 30)
228856ea928SPeter Avalos 
229856ea928SPeter Avalos 
230856ea928SPeter Avalos struct ck_token_info
231856ea928SPeter Avalos {
232856ea928SPeter Avalos   unsigned char label[32];
233856ea928SPeter Avalos   unsigned char manufacturer_id[32];
234856ea928SPeter Avalos   unsigned char model[16];
235856ea928SPeter Avalos   unsigned char serial_number[16];
236856ea928SPeter Avalos   ck_flags_t flags;
237856ea928SPeter Avalos   unsigned long max_session_count;
238856ea928SPeter Avalos   unsigned long session_count;
239856ea928SPeter Avalos   unsigned long max_rw_session_count;
240856ea928SPeter Avalos   unsigned long rw_session_count;
241856ea928SPeter Avalos   unsigned long max_pin_len;
242856ea928SPeter Avalos   unsigned long min_pin_len;
243856ea928SPeter Avalos   unsigned long total_public_memory;
244856ea928SPeter Avalos   unsigned long free_public_memory;
245856ea928SPeter Avalos   unsigned long total_private_memory;
246856ea928SPeter Avalos   unsigned long free_private_memory;
247856ea928SPeter Avalos   struct ck_version hardware_version;
248856ea928SPeter Avalos   struct ck_version firmware_version;
249856ea928SPeter Avalos   unsigned char utc_time[16];
250856ea928SPeter Avalos };
251856ea928SPeter Avalos 
252856ea928SPeter Avalos 
253856ea928SPeter Avalos #define CKF_RNG					(1 << 0)
254856ea928SPeter Avalos #define CKF_WRITE_PROTECTED			(1 << 1)
255856ea928SPeter Avalos #define CKF_LOGIN_REQUIRED			(1 << 2)
256856ea928SPeter Avalos #define CKF_USER_PIN_INITIALIZED		(1 << 3)
257856ea928SPeter Avalos #define CKF_RESTORE_KEY_NOT_NEEDED		(1 << 5)
258856ea928SPeter Avalos #define CKF_CLOCK_ON_TOKEN			(1 << 6)
259856ea928SPeter Avalos #define CKF_PROTECTED_AUTHENTICATION_PATH	(1 << 8)
260856ea928SPeter Avalos #define CKF_DUAL_CRYPTO_OPERATIONS		(1 << 9)
261856ea928SPeter Avalos #define CKF_TOKEN_INITIALIZED			(1 << 10)
262856ea928SPeter Avalos #define CKF_SECONDARY_AUTHENTICATION		(1 << 11)
263856ea928SPeter Avalos #define CKF_USER_PIN_COUNT_LOW			(1 << 16)
264856ea928SPeter Avalos #define CKF_USER_PIN_FINAL_TRY			(1 << 17)
265856ea928SPeter Avalos #define CKF_USER_PIN_LOCKED			(1 << 18)
266856ea928SPeter Avalos #define CKF_USER_PIN_TO_BE_CHANGED		(1 << 19)
267856ea928SPeter Avalos #define CKF_SO_PIN_COUNT_LOW			(1 << 20)
268856ea928SPeter Avalos #define CKF_SO_PIN_FINAL_TRY			(1 << 21)
269856ea928SPeter Avalos #define CKF_SO_PIN_LOCKED			(1 << 22)
270856ea928SPeter Avalos #define CKF_SO_PIN_TO_BE_CHANGED		(1 << 23)
271856ea928SPeter Avalos 
272856ea928SPeter Avalos #define CK_UNAVAILABLE_INFORMATION	((unsigned long) -1)
273856ea928SPeter Avalos #define CK_EFFECTIVELY_INFINITE		(0)
274856ea928SPeter Avalos 
275856ea928SPeter Avalos 
276856ea928SPeter Avalos typedef unsigned long ck_session_handle_t;
277856ea928SPeter Avalos 
278856ea928SPeter Avalos #define CK_INVALID_HANDLE	(0)
279856ea928SPeter Avalos 
280856ea928SPeter Avalos 
281856ea928SPeter Avalos typedef unsigned long ck_user_type_t;
282856ea928SPeter Avalos 
283856ea928SPeter Avalos #define CKU_SO			(0)
284856ea928SPeter Avalos #define CKU_USER		(1)
285856ea928SPeter Avalos #define CKU_CONTEXT_SPECIFIC	(2)
286856ea928SPeter Avalos 
287856ea928SPeter Avalos 
288856ea928SPeter Avalos typedef unsigned long ck_state_t;
289856ea928SPeter Avalos 
290856ea928SPeter Avalos #define CKS_RO_PUBLIC_SESSION	(0)
291856ea928SPeter Avalos #define CKS_RO_USER_FUNCTIONS	(1)
292856ea928SPeter Avalos #define CKS_RW_PUBLIC_SESSION	(2)
293856ea928SPeter Avalos #define CKS_RW_USER_FUNCTIONS	(3)
294856ea928SPeter Avalos #define CKS_RW_SO_FUNCTIONS	(4)
295856ea928SPeter Avalos 
296856ea928SPeter Avalos 
297856ea928SPeter Avalos struct ck_session_info
298856ea928SPeter Avalos {
299856ea928SPeter Avalos   ck_slot_id_t slot_id;
300856ea928SPeter Avalos   ck_state_t state;
301856ea928SPeter Avalos   ck_flags_t flags;
302856ea928SPeter Avalos   unsigned long device_error;
303856ea928SPeter Avalos };
304856ea928SPeter Avalos 
305856ea928SPeter Avalos #define CKF_RW_SESSION		(1 << 1)
306856ea928SPeter Avalos #define CKF_SERIAL_SESSION	(1 << 2)
307856ea928SPeter Avalos 
308856ea928SPeter Avalos 
309856ea928SPeter Avalos typedef unsigned long ck_object_handle_t;
310856ea928SPeter Avalos 
311856ea928SPeter Avalos 
312856ea928SPeter Avalos typedef unsigned long ck_object_class_t;
313856ea928SPeter Avalos 
314856ea928SPeter Avalos #define CKO_DATA		(0)
315856ea928SPeter Avalos #define CKO_CERTIFICATE		(1)
316856ea928SPeter Avalos #define CKO_PUBLIC_KEY		(2)
317856ea928SPeter Avalos #define CKO_PRIVATE_KEY		(3)
318856ea928SPeter Avalos #define CKO_SECRET_KEY		(4)
319856ea928SPeter Avalos #define CKO_HW_FEATURE		(5)
320856ea928SPeter Avalos #define CKO_DOMAIN_PARAMETERS	(6)
321856ea928SPeter Avalos #define CKO_MECHANISM		(7)
322*36e94dc5SPeter Avalos #define CKO_VENDOR_DEFINED	(1U << 31)
323856ea928SPeter Avalos 
324856ea928SPeter Avalos 
325856ea928SPeter Avalos typedef unsigned long ck_hw_feature_type_t;
326856ea928SPeter Avalos 
327856ea928SPeter Avalos #define CKH_MONOTONIC_COUNTER	(1)
328856ea928SPeter Avalos #define CKH_CLOCK		(2)
329856ea928SPeter Avalos #define CKH_USER_INTERFACE	(3)
330*36e94dc5SPeter Avalos #define CKH_VENDOR_DEFINED	(1U << 31)
331856ea928SPeter Avalos 
332856ea928SPeter Avalos 
333856ea928SPeter Avalos typedef unsigned long ck_key_type_t;
334856ea928SPeter Avalos 
335856ea928SPeter Avalos #define CKK_RSA			(0)
336856ea928SPeter Avalos #define CKK_DSA			(1)
337856ea928SPeter Avalos #define CKK_DH			(2)
338856ea928SPeter Avalos #define CKK_ECDSA		(3)
339856ea928SPeter Avalos #define CKK_EC			(3)
340856ea928SPeter Avalos #define CKK_X9_42_DH		(4)
341856ea928SPeter Avalos #define CKK_KEA			(5)
342856ea928SPeter Avalos #define CKK_GENERIC_SECRET	(0x10)
343856ea928SPeter Avalos #define CKK_RC2			(0x11)
344856ea928SPeter Avalos #define CKK_RC4			(0x12)
345856ea928SPeter Avalos #define CKK_DES			(0x13)
346856ea928SPeter Avalos #define CKK_DES2		(0x14)
347856ea928SPeter Avalos #define CKK_DES3		(0x15)
348856ea928SPeter Avalos #define CKK_CAST		(0x16)
349856ea928SPeter Avalos #define CKK_CAST3		(0x17)
350856ea928SPeter Avalos #define CKK_CAST128		(0x18)
351856ea928SPeter Avalos #define CKK_RC5			(0x19)
352856ea928SPeter Avalos #define CKK_IDEA		(0x1a)
353856ea928SPeter Avalos #define CKK_SKIPJACK		(0x1b)
354856ea928SPeter Avalos #define CKK_BATON		(0x1c)
355856ea928SPeter Avalos #define CKK_JUNIPER		(0x1d)
356856ea928SPeter Avalos #define CKK_CDMF		(0x1e)
357856ea928SPeter Avalos #define CKK_AES			(0x1f)
358856ea928SPeter Avalos #define CKK_BLOWFISH		(0x20)
359856ea928SPeter Avalos #define CKK_TWOFISH		(0x21)
360*36e94dc5SPeter Avalos #define CKK_VENDOR_DEFINED	(1U << 31)
361856ea928SPeter Avalos 
362856ea928SPeter Avalos typedef unsigned long ck_certificate_type_t;
363856ea928SPeter Avalos 
364856ea928SPeter Avalos #define CKC_X_509		(0)
365856ea928SPeter Avalos #define CKC_X_509_ATTR_CERT	(1)
366856ea928SPeter Avalos #define CKC_WTLS		(2)
367*36e94dc5SPeter Avalos #define CKC_VENDOR_DEFINED	(1U << 31)
368856ea928SPeter Avalos 
369856ea928SPeter Avalos 
370856ea928SPeter Avalos typedef unsigned long ck_attribute_type_t;
371856ea928SPeter Avalos 
372856ea928SPeter Avalos #define CKA_CLASS			(0)
373856ea928SPeter Avalos #define CKA_TOKEN			(1)
374856ea928SPeter Avalos #define CKA_PRIVATE			(2)
375856ea928SPeter Avalos #define CKA_LABEL			(3)
376856ea928SPeter Avalos #define CKA_APPLICATION			(0x10)
377856ea928SPeter Avalos #define CKA_VALUE			(0x11)
378856ea928SPeter Avalos #define CKA_OBJECT_ID			(0x12)
379856ea928SPeter Avalos #define CKA_CERTIFICATE_TYPE		(0x80)
380856ea928SPeter Avalos #define CKA_ISSUER			(0x81)
381856ea928SPeter Avalos #define CKA_SERIAL_NUMBER		(0x82)
382856ea928SPeter Avalos #define CKA_AC_ISSUER			(0x83)
383856ea928SPeter Avalos #define CKA_OWNER			(0x84)
384856ea928SPeter Avalos #define CKA_ATTR_TYPES			(0x85)
385856ea928SPeter Avalos #define CKA_TRUSTED			(0x86)
386856ea928SPeter Avalos #define CKA_CERTIFICATE_CATEGORY	(0x87)
387856ea928SPeter Avalos #define CKA_JAVA_MIDP_SECURITY_DOMAIN	(0x88)
388856ea928SPeter Avalos #define CKA_URL				(0x89)
389856ea928SPeter Avalos #define CKA_HASH_OF_SUBJECT_PUBLIC_KEY	(0x8a)
390856ea928SPeter Avalos #define CKA_HASH_OF_ISSUER_PUBLIC_KEY	(0x8b)
391856ea928SPeter Avalos #define CKA_CHECK_VALUE			(0x90)
392856ea928SPeter Avalos #define CKA_KEY_TYPE			(0x100)
393856ea928SPeter Avalos #define CKA_SUBJECT			(0x101)
394856ea928SPeter Avalos #define CKA_ID				(0x102)
395856ea928SPeter Avalos #define CKA_SENSITIVE			(0x103)
396856ea928SPeter Avalos #define CKA_ENCRYPT			(0x104)
397856ea928SPeter Avalos #define CKA_DECRYPT			(0x105)
398856ea928SPeter Avalos #define CKA_WRAP			(0x106)
399856ea928SPeter Avalos #define CKA_UNWRAP			(0x107)
400856ea928SPeter Avalos #define CKA_SIGN			(0x108)
401856ea928SPeter Avalos #define CKA_SIGN_RECOVER		(0x109)
402856ea928SPeter Avalos #define CKA_VERIFY			(0x10a)
403856ea928SPeter Avalos #define CKA_VERIFY_RECOVER		(0x10b)
404856ea928SPeter Avalos #define CKA_DERIVE			(0x10c)
405856ea928SPeter Avalos #define CKA_START_DATE			(0x110)
406856ea928SPeter Avalos #define CKA_END_DATE			(0x111)
407856ea928SPeter Avalos #define CKA_MODULUS			(0x120)
408856ea928SPeter Avalos #define CKA_MODULUS_BITS		(0x121)
409856ea928SPeter Avalos #define CKA_PUBLIC_EXPONENT		(0x122)
410856ea928SPeter Avalos #define CKA_PRIVATE_EXPONENT		(0x123)
411856ea928SPeter Avalos #define CKA_PRIME_1			(0x124)
412856ea928SPeter Avalos #define CKA_PRIME_2			(0x125)
413856ea928SPeter Avalos #define CKA_EXPONENT_1			(0x126)
414856ea928SPeter Avalos #define CKA_EXPONENT_2			(0x127)
415856ea928SPeter Avalos #define CKA_COEFFICIENT			(0x128)
416856ea928SPeter Avalos #define CKA_PRIME			(0x130)
417856ea928SPeter Avalos #define CKA_SUBPRIME			(0x131)
418856ea928SPeter Avalos #define CKA_BASE			(0x132)
419856ea928SPeter Avalos #define CKA_PRIME_BITS			(0x133)
420856ea928SPeter Avalos #define CKA_SUB_PRIME_BITS		(0x134)
421856ea928SPeter Avalos #define CKA_VALUE_BITS			(0x160)
422856ea928SPeter Avalos #define CKA_VALUE_LEN			(0x161)
423856ea928SPeter Avalos #define CKA_EXTRACTABLE			(0x162)
424856ea928SPeter Avalos #define CKA_LOCAL			(0x163)
425856ea928SPeter Avalos #define CKA_NEVER_EXTRACTABLE		(0x164)
426856ea928SPeter Avalos #define CKA_ALWAYS_SENSITIVE		(0x165)
427856ea928SPeter Avalos #define CKA_KEY_GEN_MECHANISM		(0x166)
428856ea928SPeter Avalos #define CKA_MODIFIABLE			(0x170)
429856ea928SPeter Avalos #define CKA_ECDSA_PARAMS		(0x180)
430856ea928SPeter Avalos #define CKA_EC_PARAMS			(0x180)
431856ea928SPeter Avalos #define CKA_EC_POINT			(0x181)
432856ea928SPeter Avalos #define CKA_SECONDARY_AUTH		(0x200)
433856ea928SPeter Avalos #define CKA_AUTH_PIN_FLAGS		(0x201)
434856ea928SPeter Avalos #define CKA_ALWAYS_AUTHENTICATE		(0x202)
435856ea928SPeter Avalos #define CKA_WRAP_WITH_TRUSTED		(0x210)
436856ea928SPeter Avalos #define CKA_HW_FEATURE_TYPE		(0x300)
437856ea928SPeter Avalos #define CKA_RESET_ON_INIT		(0x301)
438856ea928SPeter Avalos #define CKA_HAS_RESET			(0x302)
439856ea928SPeter Avalos #define CKA_PIXEL_X			(0x400)
440856ea928SPeter Avalos #define CKA_PIXEL_Y			(0x401)
441856ea928SPeter Avalos #define CKA_RESOLUTION			(0x402)
442856ea928SPeter Avalos #define CKA_CHAR_ROWS			(0x403)
443856ea928SPeter Avalos #define CKA_CHAR_COLUMNS		(0x404)
444856ea928SPeter Avalos #define CKA_COLOR			(0x405)
445856ea928SPeter Avalos #define CKA_BITS_PER_PIXEL		(0x406)
446856ea928SPeter Avalos #define CKA_CHAR_SETS			(0x480)
447856ea928SPeter Avalos #define CKA_ENCODING_METHODS		(0x481)
448856ea928SPeter Avalos #define CKA_MIME_TYPES			(0x482)
449856ea928SPeter Avalos #define CKA_MECHANISM_TYPE		(0x500)
450856ea928SPeter Avalos #define CKA_REQUIRED_CMS_ATTRIBUTES	(0x501)
451856ea928SPeter Avalos #define CKA_DEFAULT_CMS_ATTRIBUTES	(0x502)
452856ea928SPeter Avalos #define CKA_SUPPORTED_CMS_ATTRIBUTES	(0x503)
453856ea928SPeter Avalos #define CKA_WRAP_TEMPLATE		(CKF_ARRAY_ATTRIBUTE | 0x211)
454856ea928SPeter Avalos #define CKA_UNWRAP_TEMPLATE		(CKF_ARRAY_ATTRIBUTE | 0x212)
455856ea928SPeter Avalos #define CKA_ALLOWED_MECHANISMS		(CKF_ARRAY_ATTRIBUTE | 0x600)
456*36e94dc5SPeter Avalos #define CKA_VENDOR_DEFINED		(1U << 31)
457856ea928SPeter Avalos 
458856ea928SPeter Avalos 
459856ea928SPeter Avalos struct ck_attribute
460856ea928SPeter Avalos {
461856ea928SPeter Avalos   ck_attribute_type_t type;
462856ea928SPeter Avalos   void *value;
463856ea928SPeter Avalos   unsigned long value_len;
464856ea928SPeter Avalos };
465856ea928SPeter Avalos 
466856ea928SPeter Avalos 
467856ea928SPeter Avalos struct ck_date
468856ea928SPeter Avalos {
469856ea928SPeter Avalos   unsigned char year[4];
470856ea928SPeter Avalos   unsigned char month[2];
471856ea928SPeter Avalos   unsigned char day[2];
472856ea928SPeter Avalos };
473856ea928SPeter Avalos 
474856ea928SPeter Avalos 
475856ea928SPeter Avalos typedef unsigned long ck_mechanism_type_t;
476856ea928SPeter Avalos 
477856ea928SPeter Avalos #define CKM_RSA_PKCS_KEY_PAIR_GEN	(0)
478856ea928SPeter Avalos #define CKM_RSA_PKCS			(1)
479856ea928SPeter Avalos #define CKM_RSA_9796			(2)
480856ea928SPeter Avalos #define CKM_RSA_X_509			(3)
481856ea928SPeter Avalos #define CKM_MD2_RSA_PKCS		(4)
482856ea928SPeter Avalos #define CKM_MD5_RSA_PKCS		(5)
483856ea928SPeter Avalos #define CKM_SHA1_RSA_PKCS		(6)
484856ea928SPeter Avalos #define CKM_RIPEMD128_RSA_PKCS		(7)
485856ea928SPeter Avalos #define CKM_RIPEMD160_RSA_PKCS		(8)
486856ea928SPeter Avalos #define CKM_RSA_PKCS_OAEP		(9)
487856ea928SPeter Avalos #define CKM_RSA_X9_31_KEY_PAIR_GEN	(0xa)
488856ea928SPeter Avalos #define CKM_RSA_X9_31			(0xb)
489856ea928SPeter Avalos #define CKM_SHA1_RSA_X9_31		(0xc)
490856ea928SPeter Avalos #define CKM_RSA_PKCS_PSS		(0xd)
491856ea928SPeter Avalos #define CKM_SHA1_RSA_PKCS_PSS		(0xe)
492856ea928SPeter Avalos #define CKM_DSA_KEY_PAIR_GEN		(0x10)
493856ea928SPeter Avalos #define	CKM_DSA				(0x11)
494856ea928SPeter Avalos #define CKM_DSA_SHA1			(0x12)
495856ea928SPeter Avalos #define CKM_DH_PKCS_KEY_PAIR_GEN	(0x20)
496856ea928SPeter Avalos #define CKM_DH_PKCS_DERIVE		(0x21)
497856ea928SPeter Avalos #define	CKM_X9_42_DH_KEY_PAIR_GEN	(0x30)
498856ea928SPeter Avalos #define CKM_X9_42_DH_DERIVE		(0x31)
499856ea928SPeter Avalos #define CKM_X9_42_DH_HYBRID_DERIVE	(0x32)
500856ea928SPeter Avalos #define CKM_X9_42_MQV_DERIVE		(0x33)
501856ea928SPeter Avalos #define CKM_SHA256_RSA_PKCS		(0x40)
502856ea928SPeter Avalos #define CKM_SHA384_RSA_PKCS		(0x41)
503856ea928SPeter Avalos #define CKM_SHA512_RSA_PKCS		(0x42)
504856ea928SPeter Avalos #define CKM_SHA256_RSA_PKCS_PSS		(0x43)
505856ea928SPeter Avalos #define CKM_SHA384_RSA_PKCS_PSS		(0x44)
506856ea928SPeter Avalos #define CKM_SHA512_RSA_PKCS_PSS		(0x45)
507856ea928SPeter Avalos #define CKM_RC2_KEY_GEN			(0x100)
508856ea928SPeter Avalos #define CKM_RC2_ECB			(0x101)
509856ea928SPeter Avalos #define	CKM_RC2_CBC			(0x102)
510856ea928SPeter Avalos #define	CKM_RC2_MAC			(0x103)
511856ea928SPeter Avalos #define CKM_RC2_MAC_GENERAL		(0x104)
512856ea928SPeter Avalos #define CKM_RC2_CBC_PAD			(0x105)
513856ea928SPeter Avalos #define CKM_RC4_KEY_GEN			(0x110)
514856ea928SPeter Avalos #define CKM_RC4				(0x111)
515856ea928SPeter Avalos #define CKM_DES_KEY_GEN			(0x120)
516856ea928SPeter Avalos #define CKM_DES_ECB			(0x121)
517856ea928SPeter Avalos #define CKM_DES_CBC			(0x122)
518856ea928SPeter Avalos #define CKM_DES_MAC			(0x123)
519856ea928SPeter Avalos #define CKM_DES_MAC_GENERAL		(0x124)
520856ea928SPeter Avalos #define CKM_DES_CBC_PAD			(0x125)
521856ea928SPeter Avalos #define CKM_DES2_KEY_GEN		(0x130)
522856ea928SPeter Avalos #define CKM_DES3_KEY_GEN		(0x131)
523856ea928SPeter Avalos #define CKM_DES3_ECB			(0x132)
524856ea928SPeter Avalos #define CKM_DES3_CBC			(0x133)
525856ea928SPeter Avalos #define CKM_DES3_MAC			(0x134)
526856ea928SPeter Avalos #define CKM_DES3_MAC_GENERAL		(0x135)
527856ea928SPeter Avalos #define CKM_DES3_CBC_PAD		(0x136)
528856ea928SPeter Avalos #define CKM_CDMF_KEY_GEN		(0x140)
529856ea928SPeter Avalos #define CKM_CDMF_ECB			(0x141)
530856ea928SPeter Avalos #define CKM_CDMF_CBC			(0x142)
531856ea928SPeter Avalos #define CKM_CDMF_MAC			(0x143)
532856ea928SPeter Avalos #define CKM_CDMF_MAC_GENERAL		(0x144)
533856ea928SPeter Avalos #define CKM_CDMF_CBC_PAD		(0x145)
534856ea928SPeter Avalos #define CKM_MD2				(0x200)
535856ea928SPeter Avalos #define CKM_MD2_HMAC			(0x201)
536856ea928SPeter Avalos #define CKM_MD2_HMAC_GENERAL		(0x202)
537856ea928SPeter Avalos #define CKM_MD5				(0x210)
538856ea928SPeter Avalos #define CKM_MD5_HMAC			(0x211)
539856ea928SPeter Avalos #define CKM_MD5_HMAC_GENERAL		(0x212)
540856ea928SPeter Avalos #define CKM_SHA_1			(0x220)
541856ea928SPeter Avalos #define CKM_SHA_1_HMAC			(0x221)
542856ea928SPeter Avalos #define CKM_SHA_1_HMAC_GENERAL		(0x222)
543856ea928SPeter Avalos #define CKM_RIPEMD128			(0x230)
544856ea928SPeter Avalos #define CKM_RIPEMD128_HMAC		(0x231)
545856ea928SPeter Avalos #define CKM_RIPEMD128_HMAC_GENERAL	(0x232)
546856ea928SPeter Avalos #define CKM_RIPEMD160			(0x240)
547856ea928SPeter Avalos #define CKM_RIPEMD160_HMAC		(0x241)
548856ea928SPeter Avalos #define CKM_RIPEMD160_HMAC_GENERAL	(0x242)
549856ea928SPeter Avalos #define CKM_SHA256			(0x250)
550856ea928SPeter Avalos #define CKM_SHA256_HMAC			(0x251)
551856ea928SPeter Avalos #define CKM_SHA256_HMAC_GENERAL		(0x252)
552856ea928SPeter Avalos #define CKM_SHA384			(0x260)
553856ea928SPeter Avalos #define CKM_SHA384_HMAC			(0x261)
554856ea928SPeter Avalos #define CKM_SHA384_HMAC_GENERAL		(0x262)
555856ea928SPeter Avalos #define CKM_SHA512			(0x270)
556856ea928SPeter Avalos #define CKM_SHA512_HMAC			(0x271)
557856ea928SPeter Avalos #define CKM_SHA512_HMAC_GENERAL		(0x272)
558856ea928SPeter Avalos #define CKM_CAST_KEY_GEN		(0x300)
559856ea928SPeter Avalos #define CKM_CAST_ECB			(0x301)
560856ea928SPeter Avalos #define CKM_CAST_CBC			(0x302)
561856ea928SPeter Avalos #define CKM_CAST_MAC			(0x303)
562856ea928SPeter Avalos #define CKM_CAST_MAC_GENERAL		(0x304)
563856ea928SPeter Avalos #define CKM_CAST_CBC_PAD		(0x305)
564856ea928SPeter Avalos #define CKM_CAST3_KEY_GEN		(0x310)
565856ea928SPeter Avalos #define CKM_CAST3_ECB			(0x311)
566856ea928SPeter Avalos #define CKM_CAST3_CBC			(0x312)
567856ea928SPeter Avalos #define CKM_CAST3_MAC			(0x313)
568856ea928SPeter Avalos #define CKM_CAST3_MAC_GENERAL		(0x314)
569856ea928SPeter Avalos #define CKM_CAST3_CBC_PAD		(0x315)
570856ea928SPeter Avalos #define CKM_CAST5_KEY_GEN		(0x320)
571856ea928SPeter Avalos #define CKM_CAST128_KEY_GEN		(0x320)
572856ea928SPeter Avalos #define CKM_CAST5_ECB			(0x321)
573856ea928SPeter Avalos #define CKM_CAST128_ECB			(0x321)
574856ea928SPeter Avalos #define CKM_CAST5_CBC			(0x322)
575856ea928SPeter Avalos #define CKM_CAST128_CBC			(0x322)
576856ea928SPeter Avalos #define CKM_CAST5_MAC			(0x323)
577856ea928SPeter Avalos #define	CKM_CAST128_MAC			(0x323)
578856ea928SPeter Avalos #define CKM_CAST5_MAC_GENERAL		(0x324)
579856ea928SPeter Avalos #define CKM_CAST128_MAC_GENERAL		(0x324)
580856ea928SPeter Avalos #define CKM_CAST5_CBC_PAD		(0x325)
581856ea928SPeter Avalos #define CKM_CAST128_CBC_PAD		(0x325)
582856ea928SPeter Avalos #define CKM_RC5_KEY_GEN			(0x330)
583856ea928SPeter Avalos #define CKM_RC5_ECB			(0x331)
584856ea928SPeter Avalos #define CKM_RC5_CBC			(0x332)
585856ea928SPeter Avalos #define CKM_RC5_MAC			(0x333)
586856ea928SPeter Avalos #define CKM_RC5_MAC_GENERAL		(0x334)
587856ea928SPeter Avalos #define CKM_RC5_CBC_PAD			(0x335)
588856ea928SPeter Avalos #define CKM_IDEA_KEY_GEN		(0x340)
589856ea928SPeter Avalos #define CKM_IDEA_ECB			(0x341)
590856ea928SPeter Avalos #define	CKM_IDEA_CBC			(0x342)
591856ea928SPeter Avalos #define CKM_IDEA_MAC			(0x343)
592856ea928SPeter Avalos #define CKM_IDEA_MAC_GENERAL		(0x344)
593856ea928SPeter Avalos #define CKM_IDEA_CBC_PAD		(0x345)
594856ea928SPeter Avalos #define CKM_GENERIC_SECRET_KEY_GEN	(0x350)
595856ea928SPeter Avalos #define CKM_CONCATENATE_BASE_AND_KEY	(0x360)
596856ea928SPeter Avalos #define CKM_CONCATENATE_BASE_AND_DATA	(0x362)
597856ea928SPeter Avalos #define CKM_CONCATENATE_DATA_AND_BASE	(0x363)
598856ea928SPeter Avalos #define CKM_XOR_BASE_AND_DATA		(0x364)
599856ea928SPeter Avalos #define CKM_EXTRACT_KEY_FROM_KEY	(0x365)
600856ea928SPeter Avalos #define CKM_SSL3_PRE_MASTER_KEY_GEN	(0x370)
601856ea928SPeter Avalos #define CKM_SSL3_MASTER_KEY_DERIVE	(0x371)
602856ea928SPeter Avalos #define CKM_SSL3_KEY_AND_MAC_DERIVE	(0x372)
603856ea928SPeter Avalos #define CKM_SSL3_MASTER_KEY_DERIVE_DH	(0x373)
604856ea928SPeter Avalos #define CKM_TLS_PRE_MASTER_KEY_GEN	(0x374)
605856ea928SPeter Avalos #define CKM_TLS_MASTER_KEY_DERIVE	(0x375)
606856ea928SPeter Avalos #define CKM_TLS_KEY_AND_MAC_DERIVE	(0x376)
607856ea928SPeter Avalos #define CKM_TLS_MASTER_KEY_DERIVE_DH	(0x377)
608856ea928SPeter Avalos #define CKM_SSL3_MD5_MAC		(0x380)
609856ea928SPeter Avalos #define CKM_SSL3_SHA1_MAC		(0x381)
610856ea928SPeter Avalos #define CKM_MD5_KEY_DERIVATION		(0x390)
611856ea928SPeter Avalos #define CKM_MD2_KEY_DERIVATION		(0x391)
612856ea928SPeter Avalos #define CKM_SHA1_KEY_DERIVATION		(0x392)
613856ea928SPeter Avalos #define CKM_PBE_MD2_DES_CBC		(0x3a0)
614856ea928SPeter Avalos #define CKM_PBE_MD5_DES_CBC		(0x3a1)
615856ea928SPeter Avalos #define CKM_PBE_MD5_CAST_CBC		(0x3a2)
616856ea928SPeter Avalos #define CKM_PBE_MD5_CAST3_CBC		(0x3a3)
617856ea928SPeter Avalos #define CKM_PBE_MD5_CAST5_CBC		(0x3a4)
618856ea928SPeter Avalos #define CKM_PBE_MD5_CAST128_CBC		(0x3a4)
619856ea928SPeter Avalos #define CKM_PBE_SHA1_CAST5_CBC		(0x3a5)
620856ea928SPeter Avalos #define CKM_PBE_SHA1_CAST128_CBC	(0x3a5)
621856ea928SPeter Avalos #define CKM_PBE_SHA1_RC4_128		(0x3a6)
622856ea928SPeter Avalos #define CKM_PBE_SHA1_RC4_40		(0x3a7)
623856ea928SPeter Avalos #define CKM_PBE_SHA1_DES3_EDE_CBC	(0x3a8)
624856ea928SPeter Avalos #define CKM_PBE_SHA1_DES2_EDE_CBC	(0x3a9)
625856ea928SPeter Avalos #define CKM_PBE_SHA1_RC2_128_CBC	(0x3aa)
626856ea928SPeter Avalos #define CKM_PBE_SHA1_RC2_40_CBC		(0x3ab)
627856ea928SPeter Avalos #define CKM_PKCS5_PBKD2			(0x3b0)
628856ea928SPeter Avalos #define CKM_PBA_SHA1_WITH_SHA1_HMAC	(0x3c0)
629856ea928SPeter Avalos #define CKM_KEY_WRAP_LYNKS		(0x400)
630856ea928SPeter Avalos #define CKM_KEY_WRAP_SET_OAEP		(0x401)
631856ea928SPeter Avalos #define CKM_SKIPJACK_KEY_GEN		(0x1000)
632856ea928SPeter Avalos #define CKM_SKIPJACK_ECB64		(0x1001)
633856ea928SPeter Avalos #define CKM_SKIPJACK_CBC64		(0x1002)
634856ea928SPeter Avalos #define CKM_SKIPJACK_OFB64		(0x1003)
635856ea928SPeter Avalos #define CKM_SKIPJACK_CFB64		(0x1004)
636856ea928SPeter Avalos #define CKM_SKIPJACK_CFB32		(0x1005)
637856ea928SPeter Avalos #define CKM_SKIPJACK_CFB16		(0x1006)
638856ea928SPeter Avalos #define CKM_SKIPJACK_CFB8		(0x1007)
639856ea928SPeter Avalos #define CKM_SKIPJACK_WRAP		(0x1008)
640856ea928SPeter Avalos #define CKM_SKIPJACK_PRIVATE_WRAP	(0x1009)
641856ea928SPeter Avalos #define CKM_SKIPJACK_RELAYX		(0x100a)
642856ea928SPeter Avalos #define CKM_KEA_KEY_PAIR_GEN		(0x1010)
643856ea928SPeter Avalos #define CKM_KEA_KEY_DERIVE		(0x1011)
644856ea928SPeter Avalos #define CKM_FORTEZZA_TIMESTAMP		(0x1020)
645856ea928SPeter Avalos #define CKM_BATON_KEY_GEN		(0x1030)
646856ea928SPeter Avalos #define CKM_BATON_ECB128		(0x1031)
647856ea928SPeter Avalos #define CKM_BATON_ECB96			(0x1032)
648856ea928SPeter Avalos #define CKM_BATON_CBC128		(0x1033)
649856ea928SPeter Avalos #define CKM_BATON_COUNTER		(0x1034)
650856ea928SPeter Avalos #define CKM_BATON_SHUFFLE		(0x1035)
651856ea928SPeter Avalos #define CKM_BATON_WRAP			(0x1036)
652856ea928SPeter Avalos #define CKM_ECDSA_KEY_PAIR_GEN		(0x1040)
653856ea928SPeter Avalos #define CKM_EC_KEY_PAIR_GEN		(0x1040)
654856ea928SPeter Avalos #define CKM_ECDSA			(0x1041)
655856ea928SPeter Avalos #define CKM_ECDSA_SHA1			(0x1042)
656856ea928SPeter Avalos #define CKM_ECDH1_DERIVE		(0x1050)
657856ea928SPeter Avalos #define CKM_ECDH1_COFACTOR_DERIVE	(0x1051)
658856ea928SPeter Avalos #define CKM_ECMQV_DERIVE		(0x1052)
659856ea928SPeter Avalos #define CKM_JUNIPER_KEY_GEN		(0x1060)
660856ea928SPeter Avalos #define CKM_JUNIPER_ECB128		(0x1061)
661856ea928SPeter Avalos #define CKM_JUNIPER_CBC128		(0x1062)
662856ea928SPeter Avalos #define CKM_JUNIPER_COUNTER		(0x1063)
663856ea928SPeter Avalos #define CKM_JUNIPER_SHUFFLE		(0x1064)
664856ea928SPeter Avalos #define CKM_JUNIPER_WRAP		(0x1065)
665856ea928SPeter Avalos #define CKM_FASTHASH			(0x1070)
666856ea928SPeter Avalos #define CKM_AES_KEY_GEN			(0x1080)
667856ea928SPeter Avalos #define CKM_AES_ECB			(0x1081)
668856ea928SPeter Avalos #define CKM_AES_CBC			(0x1082)
669856ea928SPeter Avalos #define CKM_AES_MAC			(0x1083)
670856ea928SPeter Avalos #define CKM_AES_MAC_GENERAL		(0x1084)
671856ea928SPeter Avalos #define CKM_AES_CBC_PAD			(0x1085)
672856ea928SPeter Avalos #define CKM_DSA_PARAMETER_GEN		(0x2000)
673856ea928SPeter Avalos #define CKM_DH_PKCS_PARAMETER_GEN	(0x2001)
674856ea928SPeter Avalos #define CKM_X9_42_DH_PARAMETER_GEN	(0x2002)
675*36e94dc5SPeter Avalos #define CKM_VENDOR_DEFINED		(1U << 31)
676856ea928SPeter Avalos 
677856ea928SPeter Avalos 
678856ea928SPeter Avalos struct ck_mechanism
679856ea928SPeter Avalos {
680856ea928SPeter Avalos   ck_mechanism_type_t mechanism;
681856ea928SPeter Avalos   void *parameter;
682856ea928SPeter Avalos   unsigned long parameter_len;
683856ea928SPeter Avalos };
684856ea928SPeter Avalos 
685856ea928SPeter Avalos 
686856ea928SPeter Avalos struct ck_mechanism_info
687856ea928SPeter Avalos {
688856ea928SPeter Avalos   unsigned long min_key_size;
689856ea928SPeter Avalos   unsigned long max_key_size;
690856ea928SPeter Avalos   ck_flags_t flags;
691856ea928SPeter Avalos };
692856ea928SPeter Avalos 
693856ea928SPeter Avalos #define CKF_HW			(1 << 0)
694856ea928SPeter Avalos #define CKF_ENCRYPT		(1 << 8)
695856ea928SPeter Avalos #define CKF_DECRYPT		(1 << 9)
696856ea928SPeter Avalos #define CKF_DIGEST		(1 << 10)
697856ea928SPeter Avalos #define CKF_SIGN		(1 << 11)
698856ea928SPeter Avalos #define CKF_SIGN_RECOVER	(1 << 12)
699856ea928SPeter Avalos #define CKF_VERIFY		(1 << 13)
700856ea928SPeter Avalos #define CKF_VERIFY_RECOVER	(1 << 14)
701856ea928SPeter Avalos #define CKF_GENERATE		(1 << 15)
702856ea928SPeter Avalos #define CKF_GENERATE_KEY_PAIR	(1 << 16)
703856ea928SPeter Avalos #define CKF_WRAP		(1 << 17)
704856ea928SPeter Avalos #define CKF_UNWRAP		(1 << 18)
705856ea928SPeter Avalos #define CKF_DERIVE		(1 << 19)
706*36e94dc5SPeter Avalos #define CKF_EXTENSION		(1U << 31)
707856ea928SPeter Avalos 
708856ea928SPeter Avalos 
709856ea928SPeter Avalos /* Flags for C_WaitForSlotEvent.  */
710856ea928SPeter Avalos #define CKF_DONT_BLOCK				(1)
711856ea928SPeter Avalos 
712856ea928SPeter Avalos 
713856ea928SPeter Avalos typedef unsigned long ck_rv_t;
714856ea928SPeter Avalos 
715856ea928SPeter Avalos 
716856ea928SPeter Avalos typedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session,
717856ea928SPeter Avalos 				ck_notification_t event, void *application);
718856ea928SPeter Avalos 
719856ea928SPeter Avalos /* Forward reference.  */
720856ea928SPeter Avalos struct ck_function_list;
721856ea928SPeter Avalos 
722856ea928SPeter Avalos #define _CK_DECLARE_FUNCTION(name, args)	\
723856ea928SPeter Avalos typedef ck_rv_t (*CK_ ## name) args;		\
724856ea928SPeter Avalos ck_rv_t CK_SPEC name args
725856ea928SPeter Avalos 
726856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Initialize, (void *init_args));
727856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Finalize, (void *reserved));
728856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info));
729856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetFunctionList,
730856ea928SPeter Avalos 		      (struct ck_function_list **function_list));
731856ea928SPeter Avalos 
732856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetSlotList,
733856ea928SPeter Avalos 		      (unsigned char token_present, ck_slot_id_t *slot_list,
734856ea928SPeter Avalos 		       unsigned long *count));
735856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetSlotInfo,
736856ea928SPeter Avalos 		      (ck_slot_id_t slot_id, struct ck_slot_info *info));
737856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetTokenInfo,
738856ea928SPeter Avalos 		      (ck_slot_id_t slot_id, struct ck_token_info *info));
739856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_WaitForSlotEvent,
740856ea928SPeter Avalos 		      (ck_flags_t flags, ck_slot_id_t *slot, void *reserved));
741856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetMechanismList,
742856ea928SPeter Avalos 		      (ck_slot_id_t slot_id,
743856ea928SPeter Avalos 		       ck_mechanism_type_t *mechanism_list,
744856ea928SPeter Avalos 		       unsigned long *count));
745856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetMechanismInfo,
746856ea928SPeter Avalos 		      (ck_slot_id_t slot_id, ck_mechanism_type_t type,
747856ea928SPeter Avalos 		       struct ck_mechanism_info *info));
748856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_InitToken,
749856ea928SPeter Avalos 		      (ck_slot_id_t slot_id, unsigned char *pin,
750856ea928SPeter Avalos 		       unsigned long pin_len, unsigned char *label));
751856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_InitPIN,
752856ea928SPeter Avalos 		      (ck_session_handle_t session, unsigned char *pin,
753856ea928SPeter Avalos 		       unsigned long pin_len));
754856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SetPIN,
755856ea928SPeter Avalos 		      (ck_session_handle_t session, unsigned char *old_pin,
756856ea928SPeter Avalos 		       unsigned long old_len, unsigned char *new_pin,
757856ea928SPeter Avalos 		       unsigned long new_len));
758856ea928SPeter Avalos 
759856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_OpenSession,
760856ea928SPeter Avalos 		      (ck_slot_id_t slot_id, ck_flags_t flags,
761856ea928SPeter Avalos 		       void *application, ck_notify_t notify,
762856ea928SPeter Avalos 		       ck_session_handle_t *session));
763856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session));
764856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id));
765856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetSessionInfo,
766856ea928SPeter Avalos 		      (ck_session_handle_t session,
767856ea928SPeter Avalos 		       struct ck_session_info *info));
768856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetOperationState,
769856ea928SPeter Avalos 		      (ck_session_handle_t session,
770856ea928SPeter Avalos 		       unsigned char *operation_state,
771856ea928SPeter Avalos 		       unsigned long *operation_state_len));
772856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SetOperationState,
773856ea928SPeter Avalos 		      (ck_session_handle_t session,
774856ea928SPeter Avalos 		       unsigned char *operation_state,
775856ea928SPeter Avalos 		       unsigned long operation_state_len,
776856ea928SPeter Avalos 		       ck_object_handle_t encryption_key,
777856ea928SPeter Avalos 		       ck_object_handle_t authentiation_key));
778856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Login,
779856ea928SPeter Avalos 		      (ck_session_handle_t session, ck_user_type_t user_type,
780856ea928SPeter Avalos 		       unsigned char *pin, unsigned long pin_len));
781856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session));
782856ea928SPeter Avalos 
783856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CreateObject,
784856ea928SPeter Avalos 		      (ck_session_handle_t session,
785856ea928SPeter Avalos 		       struct ck_attribute *templ,
786856ea928SPeter Avalos 		       unsigned long count, ck_object_handle_t *object));
787856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CopyObject,
788856ea928SPeter Avalos 		      (ck_session_handle_t session, ck_object_handle_t object,
789856ea928SPeter Avalos 		       struct ck_attribute *templ, unsigned long count,
790856ea928SPeter Avalos 		       ck_object_handle_t *new_object));
791856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DestroyObject,
792856ea928SPeter Avalos 		      (ck_session_handle_t session,
793856ea928SPeter Avalos 		       ck_object_handle_t object));
794856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetObjectSize,
795856ea928SPeter Avalos 		      (ck_session_handle_t session,
796856ea928SPeter Avalos 		       ck_object_handle_t object,
797856ea928SPeter Avalos 		       unsigned long *size));
798856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetAttributeValue,
799856ea928SPeter Avalos 		      (ck_session_handle_t session,
800856ea928SPeter Avalos 		       ck_object_handle_t object,
801856ea928SPeter Avalos 		       struct ck_attribute *templ,
802856ea928SPeter Avalos 		       unsigned long count));
803856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SetAttributeValue,
804856ea928SPeter Avalos 		      (ck_session_handle_t session,
805856ea928SPeter Avalos 		       ck_object_handle_t object,
806856ea928SPeter Avalos 		       struct ck_attribute *templ,
807856ea928SPeter Avalos 		       unsigned long count));
808856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_FindObjectsInit,
809856ea928SPeter Avalos 		      (ck_session_handle_t session,
810856ea928SPeter Avalos 		       struct ck_attribute *templ,
811856ea928SPeter Avalos 		       unsigned long count));
812856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_FindObjects,
813856ea928SPeter Avalos 		      (ck_session_handle_t session,
814856ea928SPeter Avalos 		       ck_object_handle_t *object,
815856ea928SPeter Avalos 		       unsigned long max_object_count,
816856ea928SPeter Avalos 		       unsigned long *object_count));
817856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_FindObjectsFinal,
818856ea928SPeter Avalos 		      (ck_session_handle_t session));
819856ea928SPeter Avalos 
820856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_EncryptInit,
821856ea928SPeter Avalos 		      (ck_session_handle_t session,
822856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
823856ea928SPeter Avalos 		       ck_object_handle_t key));
824856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Encrypt,
825856ea928SPeter Avalos 		      (ck_session_handle_t session,
826856ea928SPeter Avalos 		       unsigned char *data, unsigned long data_len,
827856ea928SPeter Avalos 		       unsigned char *encrypted_data,
828856ea928SPeter Avalos 		       unsigned long *encrypted_data_len));
829856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_EncryptUpdate,
830856ea928SPeter Avalos 		      (ck_session_handle_t session,
831856ea928SPeter Avalos 		       unsigned char *part, unsigned long part_len,
832856ea928SPeter Avalos 		       unsigned char *encrypted_part,
833856ea928SPeter Avalos 		       unsigned long *encrypted_part_len));
834856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_EncryptFinal,
835856ea928SPeter Avalos 		      (ck_session_handle_t session,
836856ea928SPeter Avalos 		       unsigned char *last_encrypted_part,
837856ea928SPeter Avalos 		       unsigned long *last_encrypted_part_len));
838856ea928SPeter Avalos 
839856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptInit,
840856ea928SPeter Avalos 		      (ck_session_handle_t session,
841856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
842856ea928SPeter Avalos 		       ck_object_handle_t key));
843856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Decrypt,
844856ea928SPeter Avalos 		      (ck_session_handle_t session,
845856ea928SPeter Avalos 		       unsigned char *encrypted_data,
846856ea928SPeter Avalos 		       unsigned long encrypted_data_len,
847856ea928SPeter Avalos 		       unsigned char *data, unsigned long *data_len));
848856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptUpdate,
849856ea928SPeter Avalos 		      (ck_session_handle_t session,
850856ea928SPeter Avalos 		       unsigned char *encrypted_part,
851856ea928SPeter Avalos 		       unsigned long encrypted_part_len,
852856ea928SPeter Avalos 		       unsigned char *part, unsigned long *part_len));
853856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptFinal,
854856ea928SPeter Avalos 		      (ck_session_handle_t session,
855856ea928SPeter Avalos 		       unsigned char *last_part,
856856ea928SPeter Avalos 		       unsigned long *last_part_len));
857856ea928SPeter Avalos 
858856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestInit,
859856ea928SPeter Avalos 		      (ck_session_handle_t session,
860856ea928SPeter Avalos 		       struct ck_mechanism *mechanism));
861856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Digest,
862856ea928SPeter Avalos 		      (ck_session_handle_t session,
863856ea928SPeter Avalos 		       unsigned char *data, unsigned long data_len,
864856ea928SPeter Avalos 		       unsigned char *digest,
865856ea928SPeter Avalos 		       unsigned long *digest_len));
866856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestUpdate,
867856ea928SPeter Avalos 		      (ck_session_handle_t session,
868856ea928SPeter Avalos 		       unsigned char *part, unsigned long part_len));
869856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestKey,
870856ea928SPeter Avalos 		      (ck_session_handle_t session, ck_object_handle_t key));
871856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestFinal,
872856ea928SPeter Avalos 		      (ck_session_handle_t session,
873856ea928SPeter Avalos 		       unsigned char *digest,
874856ea928SPeter Avalos 		       unsigned long *digest_len));
875856ea928SPeter Avalos 
876856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignInit,
877856ea928SPeter Avalos 		      (ck_session_handle_t session,
878856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
879856ea928SPeter Avalos 		       ck_object_handle_t key));
880856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Sign,
881856ea928SPeter Avalos 		      (ck_session_handle_t session,
882856ea928SPeter Avalos 		       unsigned char *data, unsigned long data_len,
883856ea928SPeter Avalos 		       unsigned char *signature,
884856ea928SPeter Avalos 		       unsigned long *signature_len));
885856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignUpdate,
886856ea928SPeter Avalos 		      (ck_session_handle_t session,
887856ea928SPeter Avalos 		       unsigned char *part, unsigned long part_len));
888856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignFinal,
889856ea928SPeter Avalos 		      (ck_session_handle_t session,
890856ea928SPeter Avalos 		       unsigned char *signature,
891856ea928SPeter Avalos 		       unsigned long *signature_len));
892856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignRecoverInit,
893856ea928SPeter Avalos 		      (ck_session_handle_t session,
894856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
895856ea928SPeter Avalos 		       ck_object_handle_t key));
896856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignRecover,
897856ea928SPeter Avalos 		      (ck_session_handle_t session,
898856ea928SPeter Avalos 		       unsigned char *data, unsigned long data_len,
899856ea928SPeter Avalos 		       unsigned char *signature,
900856ea928SPeter Avalos 		       unsigned long *signature_len));
901856ea928SPeter Avalos 
902856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyInit,
903856ea928SPeter Avalos 		      (ck_session_handle_t session,
904856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
905856ea928SPeter Avalos 		       ck_object_handle_t key));
906856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_Verify,
907856ea928SPeter Avalos 		      (ck_session_handle_t session,
908856ea928SPeter Avalos 		       unsigned char *data, unsigned long data_len,
909856ea928SPeter Avalos 		       unsigned char *signature,
910856ea928SPeter Avalos 		       unsigned long signature_len));
911856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyUpdate,
912856ea928SPeter Avalos 		      (ck_session_handle_t session,
913856ea928SPeter Avalos 		       unsigned char *part, unsigned long part_len));
914856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyFinal,
915856ea928SPeter Avalos 		      (ck_session_handle_t session,
916856ea928SPeter Avalos 		       unsigned char *signature,
917856ea928SPeter Avalos 		       unsigned long signature_len));
918856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyRecoverInit,
919856ea928SPeter Avalos 		      (ck_session_handle_t session,
920856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
921856ea928SPeter Avalos 		       ck_object_handle_t key));
922856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_VerifyRecover,
923856ea928SPeter Avalos 		      (ck_session_handle_t session,
924856ea928SPeter Avalos 		       unsigned char *signature,
925856ea928SPeter Avalos 		       unsigned long signature_len,
926856ea928SPeter Avalos 		       unsigned char *data,
927856ea928SPeter Avalos 		       unsigned long *data_len));
928856ea928SPeter Avalos 
929856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DigestEncryptUpdate,
930856ea928SPeter Avalos 		      (ck_session_handle_t session,
931856ea928SPeter Avalos 		       unsigned char *part, unsigned long part_len,
932856ea928SPeter Avalos 		       unsigned char *encrypted_part,
933856ea928SPeter Avalos 		       unsigned long *encrypted_part_len));
934856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptDigestUpdate,
935856ea928SPeter Avalos 		      (ck_session_handle_t session,
936856ea928SPeter Avalos 		       unsigned char *encrypted_part,
937856ea928SPeter Avalos 		       unsigned long encrypted_part_len,
938856ea928SPeter Avalos 		       unsigned char *part,
939856ea928SPeter Avalos 		       unsigned long *part_len));
940856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SignEncryptUpdate,
941856ea928SPeter Avalos 		      (ck_session_handle_t session,
942856ea928SPeter Avalos 		       unsigned char *part, unsigned long part_len,
943856ea928SPeter Avalos 		       unsigned char *encrypted_part,
944856ea928SPeter Avalos 		       unsigned long *encrypted_part_len));
945856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate,
946856ea928SPeter Avalos 		      (ck_session_handle_t session,
947856ea928SPeter Avalos 		       unsigned char *encrypted_part,
948856ea928SPeter Avalos 		       unsigned long encrypted_part_len,
949856ea928SPeter Avalos 		       unsigned char *part,
950856ea928SPeter Avalos 		       unsigned long *part_len));
951856ea928SPeter Avalos 
952856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GenerateKey,
953856ea928SPeter Avalos 		      (ck_session_handle_t session,
954856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
955856ea928SPeter Avalos 		       struct ck_attribute *templ,
956856ea928SPeter Avalos 		       unsigned long count,
957856ea928SPeter Avalos 		       ck_object_handle_t *key));
958856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GenerateKeyPair,
959856ea928SPeter Avalos 		      (ck_session_handle_t session,
960856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
961856ea928SPeter Avalos 		       struct ck_attribute *public_key_template,
962856ea928SPeter Avalos 		       unsigned long public_key_attribute_count,
963856ea928SPeter Avalos 		       struct ck_attribute *private_key_template,
964856ea928SPeter Avalos 		       unsigned long private_key_attribute_count,
965856ea928SPeter Avalos 		       ck_object_handle_t *public_key,
966856ea928SPeter Avalos 		       ck_object_handle_t *private_key));
967856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_WrapKey,
968856ea928SPeter Avalos 		      (ck_session_handle_t session,
969856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
970856ea928SPeter Avalos 		       ck_object_handle_t wrapping_key,
971856ea928SPeter Avalos 		       ck_object_handle_t key,
972856ea928SPeter Avalos 		       unsigned char *wrapped_key,
973856ea928SPeter Avalos 		       unsigned long *wrapped_key_len));
974856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_UnwrapKey,
975856ea928SPeter Avalos 		      (ck_session_handle_t session,
976856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
977856ea928SPeter Avalos 		       ck_object_handle_t unwrapping_key,
978856ea928SPeter Avalos 		       unsigned char *wrapped_key,
979856ea928SPeter Avalos 		       unsigned long wrapped_key_len,
980856ea928SPeter Avalos 		       struct ck_attribute *templ,
981856ea928SPeter Avalos 		       unsigned long attribute_count,
982856ea928SPeter Avalos 		       ck_object_handle_t *key));
983856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_DeriveKey,
984856ea928SPeter Avalos 		      (ck_session_handle_t session,
985856ea928SPeter Avalos 		       struct ck_mechanism *mechanism,
986856ea928SPeter Avalos 		       ck_object_handle_t base_key,
987856ea928SPeter Avalos 		       struct ck_attribute *templ,
988856ea928SPeter Avalos 		       unsigned long attribute_count,
989856ea928SPeter Avalos 		       ck_object_handle_t *key));
990856ea928SPeter Avalos 
991856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_SeedRandom,
992856ea928SPeter Avalos 		      (ck_session_handle_t session, unsigned char *seed,
993856ea928SPeter Avalos 		       unsigned long seed_len));
994856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GenerateRandom,
995856ea928SPeter Avalos 		      (ck_session_handle_t session,
996856ea928SPeter Avalos 		       unsigned char *random_data,
997856ea928SPeter Avalos 		       unsigned long random_len));
998856ea928SPeter Avalos 
999856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session));
1000856ea928SPeter Avalos _CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session));
1001856ea928SPeter Avalos 
1002856ea928SPeter Avalos 
1003856ea928SPeter Avalos struct ck_function_list
1004856ea928SPeter Avalos {
1005856ea928SPeter Avalos   struct ck_version version;
1006856ea928SPeter Avalos   CK_C_Initialize C_Initialize;
1007856ea928SPeter Avalos   CK_C_Finalize C_Finalize;
1008856ea928SPeter Avalos   CK_C_GetInfo C_GetInfo;
1009856ea928SPeter Avalos   CK_C_GetFunctionList C_GetFunctionList;
1010856ea928SPeter Avalos   CK_C_GetSlotList C_GetSlotList;
1011856ea928SPeter Avalos   CK_C_GetSlotInfo C_GetSlotInfo;
1012856ea928SPeter Avalos   CK_C_GetTokenInfo C_GetTokenInfo;
1013856ea928SPeter Avalos   CK_C_GetMechanismList C_GetMechanismList;
1014856ea928SPeter Avalos   CK_C_GetMechanismInfo C_GetMechanismInfo;
1015856ea928SPeter Avalos   CK_C_InitToken C_InitToken;
1016856ea928SPeter Avalos   CK_C_InitPIN C_InitPIN;
1017856ea928SPeter Avalos   CK_C_SetPIN C_SetPIN;
1018856ea928SPeter Avalos   CK_C_OpenSession C_OpenSession;
1019856ea928SPeter Avalos   CK_C_CloseSession C_CloseSession;
1020856ea928SPeter Avalos   CK_C_CloseAllSessions C_CloseAllSessions;
1021856ea928SPeter Avalos   CK_C_GetSessionInfo C_GetSessionInfo;
1022856ea928SPeter Avalos   CK_C_GetOperationState C_GetOperationState;
1023856ea928SPeter Avalos   CK_C_SetOperationState C_SetOperationState;
1024856ea928SPeter Avalos   CK_C_Login C_Login;
1025856ea928SPeter Avalos   CK_C_Logout C_Logout;
1026856ea928SPeter Avalos   CK_C_CreateObject C_CreateObject;
1027856ea928SPeter Avalos   CK_C_CopyObject C_CopyObject;
1028856ea928SPeter Avalos   CK_C_DestroyObject C_DestroyObject;
1029856ea928SPeter Avalos   CK_C_GetObjectSize C_GetObjectSize;
1030856ea928SPeter Avalos   CK_C_GetAttributeValue C_GetAttributeValue;
1031856ea928SPeter Avalos   CK_C_SetAttributeValue C_SetAttributeValue;
1032856ea928SPeter Avalos   CK_C_FindObjectsInit C_FindObjectsInit;
1033856ea928SPeter Avalos   CK_C_FindObjects C_FindObjects;
1034856ea928SPeter Avalos   CK_C_FindObjectsFinal C_FindObjectsFinal;
1035856ea928SPeter Avalos   CK_C_EncryptInit C_EncryptInit;
1036856ea928SPeter Avalos   CK_C_Encrypt C_Encrypt;
1037856ea928SPeter Avalos   CK_C_EncryptUpdate C_EncryptUpdate;
1038856ea928SPeter Avalos   CK_C_EncryptFinal C_EncryptFinal;
1039856ea928SPeter Avalos   CK_C_DecryptInit C_DecryptInit;
1040856ea928SPeter Avalos   CK_C_Decrypt C_Decrypt;
1041856ea928SPeter Avalos   CK_C_DecryptUpdate C_DecryptUpdate;
1042856ea928SPeter Avalos   CK_C_DecryptFinal C_DecryptFinal;
1043856ea928SPeter Avalos   CK_C_DigestInit C_DigestInit;
1044856ea928SPeter Avalos   CK_C_Digest C_Digest;
1045856ea928SPeter Avalos   CK_C_DigestUpdate C_DigestUpdate;
1046856ea928SPeter Avalos   CK_C_DigestKey C_DigestKey;
1047856ea928SPeter Avalos   CK_C_DigestFinal C_DigestFinal;
1048856ea928SPeter Avalos   CK_C_SignInit C_SignInit;
1049856ea928SPeter Avalos   CK_C_Sign C_Sign;
1050856ea928SPeter Avalos   CK_C_SignUpdate C_SignUpdate;
1051856ea928SPeter Avalos   CK_C_SignFinal C_SignFinal;
1052856ea928SPeter Avalos   CK_C_SignRecoverInit C_SignRecoverInit;
1053856ea928SPeter Avalos   CK_C_SignRecover C_SignRecover;
1054856ea928SPeter Avalos   CK_C_VerifyInit C_VerifyInit;
1055856ea928SPeter Avalos   CK_C_Verify C_Verify;
1056856ea928SPeter Avalos   CK_C_VerifyUpdate C_VerifyUpdate;
1057856ea928SPeter Avalos   CK_C_VerifyFinal C_VerifyFinal;
1058856ea928SPeter Avalos   CK_C_VerifyRecoverInit C_VerifyRecoverInit;
1059856ea928SPeter Avalos   CK_C_VerifyRecover C_VerifyRecover;
1060856ea928SPeter Avalos   CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
1061856ea928SPeter Avalos   CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
1062856ea928SPeter Avalos   CK_C_SignEncryptUpdate C_SignEncryptUpdate;
1063856ea928SPeter Avalos   CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
1064856ea928SPeter Avalos   CK_C_GenerateKey C_GenerateKey;
1065856ea928SPeter Avalos   CK_C_GenerateKeyPair C_GenerateKeyPair;
1066856ea928SPeter Avalos   CK_C_WrapKey C_WrapKey;
1067856ea928SPeter Avalos   CK_C_UnwrapKey C_UnwrapKey;
1068856ea928SPeter Avalos   CK_C_DeriveKey C_DeriveKey;
1069856ea928SPeter Avalos   CK_C_SeedRandom C_SeedRandom;
1070856ea928SPeter Avalos   CK_C_GenerateRandom C_GenerateRandom;
1071856ea928SPeter Avalos   CK_C_GetFunctionStatus C_GetFunctionStatus;
1072856ea928SPeter Avalos   CK_C_CancelFunction C_CancelFunction;
1073856ea928SPeter Avalos   CK_C_WaitForSlotEvent C_WaitForSlotEvent;
1074856ea928SPeter Avalos };
1075856ea928SPeter Avalos 
1076856ea928SPeter Avalos 
1077856ea928SPeter Avalos typedef ck_rv_t (*ck_createmutex_t) (void **mutex);
1078856ea928SPeter Avalos typedef ck_rv_t (*ck_destroymutex_t) (void *mutex);
1079856ea928SPeter Avalos typedef ck_rv_t (*ck_lockmutex_t) (void *mutex);
1080856ea928SPeter Avalos typedef ck_rv_t (*ck_unlockmutex_t) (void *mutex);
1081856ea928SPeter Avalos 
1082856ea928SPeter Avalos 
1083856ea928SPeter Avalos struct ck_c_initialize_args
1084856ea928SPeter Avalos {
1085856ea928SPeter Avalos   ck_createmutex_t create_mutex;
1086856ea928SPeter Avalos   ck_destroymutex_t destroy_mutex;
1087856ea928SPeter Avalos   ck_lockmutex_t lock_mutex;
1088856ea928SPeter Avalos   ck_unlockmutex_t unlock_mutex;
1089856ea928SPeter Avalos   ck_flags_t flags;
1090856ea928SPeter Avalos   void *reserved;
1091856ea928SPeter Avalos };
1092856ea928SPeter Avalos 
1093856ea928SPeter Avalos 
1094856ea928SPeter Avalos #define CKF_LIBRARY_CANT_CREATE_OS_THREADS	(1 << 0)
1095856ea928SPeter Avalos #define CKF_OS_LOCKING_OK			(1 << 1)
1096856ea928SPeter Avalos 
1097856ea928SPeter Avalos #define CKR_OK					(0)
1098856ea928SPeter Avalos #define CKR_CANCEL				(1)
1099856ea928SPeter Avalos #define CKR_HOST_MEMORY				(2)
1100856ea928SPeter Avalos #define CKR_SLOT_ID_INVALID			(3)
1101856ea928SPeter Avalos #define CKR_GENERAL_ERROR			(5)
1102856ea928SPeter Avalos #define CKR_FUNCTION_FAILED			(6)
1103856ea928SPeter Avalos #define CKR_ARGUMENTS_BAD			(7)
1104856ea928SPeter Avalos #define CKR_NO_EVENT				(8)
1105856ea928SPeter Avalos #define CKR_NEED_TO_CREATE_THREADS		(9)
1106856ea928SPeter Avalos #define CKR_CANT_LOCK				(0xa)
1107856ea928SPeter Avalos #define CKR_ATTRIBUTE_READ_ONLY			(0x10)
1108856ea928SPeter Avalos #define CKR_ATTRIBUTE_SENSITIVE			(0x11)
1109856ea928SPeter Avalos #define CKR_ATTRIBUTE_TYPE_INVALID		(0x12)
1110856ea928SPeter Avalos #define CKR_ATTRIBUTE_VALUE_INVALID		(0x13)
1111856ea928SPeter Avalos #define CKR_DATA_INVALID			(0x20)
1112856ea928SPeter Avalos #define CKR_DATA_LEN_RANGE			(0x21)
1113856ea928SPeter Avalos #define CKR_DEVICE_ERROR			(0x30)
1114856ea928SPeter Avalos #define CKR_DEVICE_MEMORY			(0x31)
1115856ea928SPeter Avalos #define CKR_DEVICE_REMOVED			(0x32)
1116856ea928SPeter Avalos #define CKR_ENCRYPTED_DATA_INVALID		(0x40)
1117856ea928SPeter Avalos #define CKR_ENCRYPTED_DATA_LEN_RANGE		(0x41)
1118856ea928SPeter Avalos #define CKR_FUNCTION_CANCELED			(0x50)
1119856ea928SPeter Avalos #define CKR_FUNCTION_NOT_PARALLEL		(0x51)
1120856ea928SPeter Avalos #define CKR_FUNCTION_NOT_SUPPORTED		(0x54)
1121856ea928SPeter Avalos #define CKR_KEY_HANDLE_INVALID			(0x60)
1122856ea928SPeter Avalos #define CKR_KEY_SIZE_RANGE			(0x62)
1123856ea928SPeter Avalos #define CKR_KEY_TYPE_INCONSISTENT		(0x63)
1124856ea928SPeter Avalos #define CKR_KEY_NOT_NEEDED			(0x64)
1125856ea928SPeter Avalos #define CKR_KEY_CHANGED				(0x65)
1126856ea928SPeter Avalos #define CKR_KEY_NEEDED				(0x66)
1127856ea928SPeter Avalos #define CKR_KEY_INDIGESTIBLE			(0x67)
1128856ea928SPeter Avalos #define CKR_KEY_FUNCTION_NOT_PERMITTED		(0x68)
1129856ea928SPeter Avalos #define CKR_KEY_NOT_WRAPPABLE			(0x69)
1130856ea928SPeter Avalos #define CKR_KEY_UNEXTRACTABLE			(0x6a)
1131856ea928SPeter Avalos #define CKR_MECHANISM_INVALID			(0x70)
1132856ea928SPeter Avalos #define CKR_MECHANISM_PARAM_INVALID		(0x71)
1133856ea928SPeter Avalos #define CKR_OBJECT_HANDLE_INVALID		(0x82)
1134856ea928SPeter Avalos #define CKR_OPERATION_ACTIVE			(0x90)
1135856ea928SPeter Avalos #define CKR_OPERATION_NOT_INITIALIZED		(0x91)
1136856ea928SPeter Avalos #define CKR_PIN_INCORRECT			(0xa0)
1137856ea928SPeter Avalos #define CKR_PIN_INVALID				(0xa1)
1138856ea928SPeter Avalos #define CKR_PIN_LEN_RANGE			(0xa2)
1139856ea928SPeter Avalos #define CKR_PIN_EXPIRED				(0xa3)
1140856ea928SPeter Avalos #define CKR_PIN_LOCKED				(0xa4)
1141856ea928SPeter Avalos #define CKR_SESSION_CLOSED			(0xb0)
1142856ea928SPeter Avalos #define CKR_SESSION_COUNT			(0xb1)
1143856ea928SPeter Avalos #define CKR_SESSION_HANDLE_INVALID		(0xb3)
1144856ea928SPeter Avalos #define CKR_SESSION_PARALLEL_NOT_SUPPORTED	(0xb4)
1145856ea928SPeter Avalos #define CKR_SESSION_READ_ONLY			(0xb5)
1146856ea928SPeter Avalos #define CKR_SESSION_EXISTS			(0xb6)
1147856ea928SPeter Avalos #define CKR_SESSION_READ_ONLY_EXISTS		(0xb7)
1148856ea928SPeter Avalos #define CKR_SESSION_READ_WRITE_SO_EXISTS	(0xb8)
1149856ea928SPeter Avalos #define CKR_SIGNATURE_INVALID			(0xc0)
1150856ea928SPeter Avalos #define CKR_SIGNATURE_LEN_RANGE			(0xc1)
1151856ea928SPeter Avalos #define CKR_TEMPLATE_INCOMPLETE			(0xd0)
1152856ea928SPeter Avalos #define CKR_TEMPLATE_INCONSISTENT		(0xd1)
1153856ea928SPeter Avalos #define CKR_TOKEN_NOT_PRESENT			(0xe0)
1154856ea928SPeter Avalos #define CKR_TOKEN_NOT_RECOGNIZED		(0xe1)
1155856ea928SPeter Avalos #define CKR_TOKEN_WRITE_PROTECTED		(0xe2)
1156856ea928SPeter Avalos #define	CKR_UNWRAPPING_KEY_HANDLE_INVALID	(0xf0)
1157856ea928SPeter Avalos #define CKR_UNWRAPPING_KEY_SIZE_RANGE		(0xf1)
1158856ea928SPeter Avalos #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT	(0xf2)
1159856ea928SPeter Avalos #define CKR_USER_ALREADY_LOGGED_IN		(0x100)
1160856ea928SPeter Avalos #define CKR_USER_NOT_LOGGED_IN			(0x101)
1161856ea928SPeter Avalos #define CKR_USER_PIN_NOT_INITIALIZED		(0x102)
1162856ea928SPeter Avalos #define CKR_USER_TYPE_INVALID			(0x103)
1163856ea928SPeter Avalos #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN	(0x104)
1164856ea928SPeter Avalos #define CKR_USER_TOO_MANY_TYPES			(0x105)
1165856ea928SPeter Avalos #define CKR_WRAPPED_KEY_INVALID			(0x110)
1166856ea928SPeter Avalos #define CKR_WRAPPED_KEY_LEN_RANGE		(0x112)
1167856ea928SPeter Avalos #define CKR_WRAPPING_KEY_HANDLE_INVALID		(0x113)
1168856ea928SPeter Avalos #define CKR_WRAPPING_KEY_SIZE_RANGE		(0x114)
1169856ea928SPeter Avalos #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT	(0x115)
1170856ea928SPeter Avalos #define CKR_RANDOM_SEED_NOT_SUPPORTED		(0x120)
1171856ea928SPeter Avalos #define CKR_RANDOM_NO_RNG			(0x121)
1172856ea928SPeter Avalos #define CKR_DOMAIN_PARAMS_INVALID		(0x130)
1173856ea928SPeter Avalos #define CKR_BUFFER_TOO_SMALL			(0x150)
1174856ea928SPeter Avalos #define CKR_SAVED_STATE_INVALID			(0x160)
1175856ea928SPeter Avalos #define CKR_INFORMATION_SENSITIVE		(0x170)
1176856ea928SPeter Avalos #define CKR_STATE_UNSAVEABLE			(0x180)
1177856ea928SPeter Avalos #define CKR_CRYPTOKI_NOT_INITIALIZED		(0x190)
1178856ea928SPeter Avalos #define CKR_CRYPTOKI_ALREADY_INITIALIZED	(0x191)
1179856ea928SPeter Avalos #define CKR_MUTEX_BAD				(0x1a0)
1180856ea928SPeter Avalos #define CKR_MUTEX_NOT_LOCKED			(0x1a1)
1181856ea928SPeter Avalos #define CKR_FUNCTION_REJECTED			(0x200)
1182*36e94dc5SPeter Avalos #define CKR_VENDOR_DEFINED			(1U << 31)
1183856ea928SPeter Avalos 
1184856ea928SPeter Avalos 
1185856ea928SPeter Avalos 
1186856ea928SPeter Avalos /* Compatibility layer.  */
1187856ea928SPeter Avalos 
1188856ea928SPeter Avalos #ifdef CRYPTOKI_COMPAT
1189856ea928SPeter Avalos 
1190856ea928SPeter Avalos #undef CK_DEFINE_FUNCTION
1191856ea928SPeter Avalos #define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name
1192856ea928SPeter Avalos 
1193856ea928SPeter Avalos /* For NULL.  */
1194856ea928SPeter Avalos #include <stddef.h>
1195856ea928SPeter Avalos 
1196856ea928SPeter Avalos typedef unsigned char CK_BYTE;
1197856ea928SPeter Avalos typedef unsigned char CK_CHAR;
1198856ea928SPeter Avalos typedef unsigned char CK_UTF8CHAR;
1199856ea928SPeter Avalos typedef unsigned char CK_BBOOL;
1200856ea928SPeter Avalos typedef unsigned long int CK_ULONG;
1201856ea928SPeter Avalos typedef long int CK_LONG;
1202856ea928SPeter Avalos typedef CK_BYTE *CK_BYTE_PTR;
1203856ea928SPeter Avalos typedef CK_CHAR *CK_CHAR_PTR;
1204856ea928SPeter Avalos typedef CK_UTF8CHAR *CK_UTF8CHAR_PTR;
1205856ea928SPeter Avalos typedef CK_ULONG *CK_ULONG_PTR;
1206856ea928SPeter Avalos typedef void *CK_VOID_PTR;
1207856ea928SPeter Avalos typedef void **CK_VOID_PTR_PTR;
1208856ea928SPeter Avalos #define CK_FALSE 0
1209856ea928SPeter Avalos #define CK_TRUE 1
1210856ea928SPeter Avalos #ifndef CK_DISABLE_TRUE_FALSE
1211856ea928SPeter Avalos #ifndef FALSE
1212856ea928SPeter Avalos #define FALSE 0
1213856ea928SPeter Avalos #endif
1214856ea928SPeter Avalos #ifndef TRUE
1215856ea928SPeter Avalos #define TRUE 1
1216856ea928SPeter Avalos #endif
1217856ea928SPeter Avalos #endif
1218856ea928SPeter Avalos 
1219856ea928SPeter Avalos typedef struct ck_version CK_VERSION;
1220856ea928SPeter Avalos typedef struct ck_version *CK_VERSION_PTR;
1221856ea928SPeter Avalos 
1222856ea928SPeter Avalos typedef struct ck_info CK_INFO;
1223856ea928SPeter Avalos typedef struct ck_info *CK_INFO_PTR;
1224856ea928SPeter Avalos 
1225856ea928SPeter Avalos typedef ck_slot_id_t *CK_SLOT_ID_PTR;
1226856ea928SPeter Avalos 
1227856ea928SPeter Avalos typedef struct ck_slot_info CK_SLOT_INFO;
1228856ea928SPeter Avalos typedef struct ck_slot_info *CK_SLOT_INFO_PTR;
1229856ea928SPeter Avalos 
1230856ea928SPeter Avalos typedef struct ck_token_info CK_TOKEN_INFO;
1231856ea928SPeter Avalos typedef struct ck_token_info *CK_TOKEN_INFO_PTR;
1232856ea928SPeter Avalos 
1233856ea928SPeter Avalos typedef ck_session_handle_t *CK_SESSION_HANDLE_PTR;
1234856ea928SPeter Avalos 
1235856ea928SPeter Avalos typedef struct ck_session_info CK_SESSION_INFO;
1236856ea928SPeter Avalos typedef struct ck_session_info *CK_SESSION_INFO_PTR;
1237856ea928SPeter Avalos 
1238856ea928SPeter Avalos typedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR;
1239856ea928SPeter Avalos 
1240856ea928SPeter Avalos typedef ck_object_class_t *CK_OBJECT_CLASS_PTR;
1241856ea928SPeter Avalos 
1242856ea928SPeter Avalos typedef struct ck_attribute CK_ATTRIBUTE;
1243856ea928SPeter Avalos typedef struct ck_attribute *CK_ATTRIBUTE_PTR;
1244856ea928SPeter Avalos 
1245856ea928SPeter Avalos typedef struct ck_date CK_DATE;
1246856ea928SPeter Avalos typedef struct ck_date *CK_DATE_PTR;
1247856ea928SPeter Avalos 
1248856ea928SPeter Avalos typedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR;
1249856ea928SPeter Avalos 
1250856ea928SPeter Avalos typedef struct ck_mechanism CK_MECHANISM;
1251856ea928SPeter Avalos typedef struct ck_mechanism *CK_MECHANISM_PTR;
1252856ea928SPeter Avalos 
1253856ea928SPeter Avalos typedef struct ck_mechanism_info CK_MECHANISM_INFO;
1254856ea928SPeter Avalos typedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR;
1255856ea928SPeter Avalos 
1256856ea928SPeter Avalos typedef struct ck_function_list CK_FUNCTION_LIST;
1257856ea928SPeter Avalos typedef struct ck_function_list *CK_FUNCTION_LIST_PTR;
1258856ea928SPeter Avalos typedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR;
1259856ea928SPeter Avalos 
1260856ea928SPeter Avalos typedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS;
1261856ea928SPeter Avalos typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR;
1262856ea928SPeter Avalos 
1263856ea928SPeter Avalos #define NULL_PTR NULL
1264856ea928SPeter Avalos 
1265856ea928SPeter Avalos /* Delete the helper macros defined at the top of the file.  */
1266856ea928SPeter Avalos #undef ck_flags_t
1267856ea928SPeter Avalos #undef ck_version
1268856ea928SPeter Avalos 
1269856ea928SPeter Avalos #undef ck_info
1270856ea928SPeter Avalos #undef cryptoki_version
1271856ea928SPeter Avalos #undef manufacturer_id
1272856ea928SPeter Avalos #undef library_description
1273856ea928SPeter Avalos #undef library_version
1274856ea928SPeter Avalos 
1275856ea928SPeter Avalos #undef ck_notification_t
1276856ea928SPeter Avalos #undef ck_slot_id_t
1277856ea928SPeter Avalos 
1278856ea928SPeter Avalos #undef ck_slot_info
1279856ea928SPeter Avalos #undef slot_description
1280856ea928SPeter Avalos #undef hardware_version
1281856ea928SPeter Avalos #undef firmware_version
1282856ea928SPeter Avalos 
1283856ea928SPeter Avalos #undef ck_token_info
1284856ea928SPeter Avalos #undef serial_number
1285856ea928SPeter Avalos #undef max_session_count
1286856ea928SPeter Avalos #undef session_count
1287856ea928SPeter Avalos #undef max_rw_session_count
1288856ea928SPeter Avalos #undef rw_session_count
1289856ea928SPeter Avalos #undef max_pin_len
1290856ea928SPeter Avalos #undef min_pin_len
1291856ea928SPeter Avalos #undef total_public_memory
1292856ea928SPeter Avalos #undef free_public_memory
1293856ea928SPeter Avalos #undef total_private_memory
1294856ea928SPeter Avalos #undef free_private_memory
1295856ea928SPeter Avalos #undef utc_time
1296856ea928SPeter Avalos 
1297856ea928SPeter Avalos #undef ck_session_handle_t
1298856ea928SPeter Avalos #undef ck_user_type_t
1299856ea928SPeter Avalos #undef ck_state_t
1300856ea928SPeter Avalos 
1301856ea928SPeter Avalos #undef ck_session_info
1302856ea928SPeter Avalos #undef slot_id
1303856ea928SPeter Avalos #undef device_error
1304856ea928SPeter Avalos 
1305856ea928SPeter Avalos #undef ck_object_handle_t
1306856ea928SPeter Avalos #undef ck_object_class_t
1307856ea928SPeter Avalos #undef ck_hw_feature_type_t
1308856ea928SPeter Avalos #undef ck_key_type_t
1309856ea928SPeter Avalos #undef ck_certificate_type_t
1310856ea928SPeter Avalos #undef ck_attribute_type_t
1311856ea928SPeter Avalos 
1312856ea928SPeter Avalos #undef ck_attribute
1313856ea928SPeter Avalos #undef value
1314856ea928SPeter Avalos #undef value_len
1315856ea928SPeter Avalos 
1316856ea928SPeter Avalos #undef ck_date
1317856ea928SPeter Avalos 
1318856ea928SPeter Avalos #undef ck_mechanism_type_t
1319856ea928SPeter Avalos 
1320856ea928SPeter Avalos #undef ck_mechanism
1321856ea928SPeter Avalos #undef parameter
1322856ea928SPeter Avalos #undef parameter_len
1323856ea928SPeter Avalos 
1324856ea928SPeter Avalos #undef ck_mechanism_info
1325856ea928SPeter Avalos #undef min_key_size
1326856ea928SPeter Avalos #undef max_key_size
1327856ea928SPeter Avalos 
1328856ea928SPeter Avalos #undef ck_rv_t
1329856ea928SPeter Avalos #undef ck_notify_t
1330856ea928SPeter Avalos 
1331856ea928SPeter Avalos #undef ck_function_list
1332856ea928SPeter Avalos 
1333856ea928SPeter Avalos #undef ck_createmutex_t
1334856ea928SPeter Avalos #undef ck_destroymutex_t
1335856ea928SPeter Avalos #undef ck_lockmutex_t
1336856ea928SPeter Avalos #undef ck_unlockmutex_t
1337856ea928SPeter Avalos 
1338856ea928SPeter Avalos #undef ck_c_initialize_args
1339856ea928SPeter Avalos #undef create_mutex
1340856ea928SPeter Avalos #undef destroy_mutex
1341856ea928SPeter Avalos #undef lock_mutex
1342856ea928SPeter Avalos #undef unlock_mutex
1343856ea928SPeter Avalos #undef reserved
1344856ea928SPeter Avalos 
1345856ea928SPeter Avalos #endif	/* CRYPTOKI_COMPAT */
1346856ea928SPeter Avalos 
1347856ea928SPeter Avalos 
1348856ea928SPeter Avalos /* System dependencies.  */
1349856ea928SPeter Avalos #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
1350856ea928SPeter Avalos #pragma pack(pop, cryptoki)
1351856ea928SPeter Avalos #endif
1352856ea928SPeter Avalos 
1353856ea928SPeter Avalos #if defined(__cplusplus)
1354856ea928SPeter Avalos }
1355856ea928SPeter Avalos #endif
1356856ea928SPeter Avalos 
1357856ea928SPeter Avalos #endif	/* PKCS11_H */
1358