xref: /minix3/crypto/external/bsd/heimdal/dist/lib/hx509/ref/pkcs11.h (revision ebfedea0ce5bbe81e252ddf32d732e40fb633fae)
1*ebfedea0SLionel Sambuc /*	$NetBSD: pkcs11.h,v 1.1.1.1 2011/04/13 18:15:28 elric Exp $	*/
2*ebfedea0SLionel Sambuc 
3*ebfedea0SLionel Sambuc /* pkcs11.h
4*ebfedea0SLionel Sambuc    Copyright 2006, 2007 g10 Code GmbH
5*ebfedea0SLionel Sambuc    Copyright 2006 Andreas Jellinghaus
6*ebfedea0SLionel Sambuc 
7*ebfedea0SLionel Sambuc    This file is free software; as a special exception the author gives
8*ebfedea0SLionel Sambuc    unlimited permission to copy and/or distribute it, with or without
9*ebfedea0SLionel Sambuc    modifications, as long as this notice is preserved.
10*ebfedea0SLionel Sambuc 
11*ebfedea0SLionel Sambuc    This file is distributed in the hope that it will be useful, but
12*ebfedea0SLionel Sambuc    WITHOUT ANY WARRANTY, to the extent permitted by law; without even
13*ebfedea0SLionel Sambuc    the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14*ebfedea0SLionel Sambuc    PURPOSE.  */
15*ebfedea0SLionel Sambuc 
16*ebfedea0SLionel Sambuc /* Please submit changes back to the Scute project at
17*ebfedea0SLionel Sambuc    http://www.scute.org/ (or send them to marcus@g10code.com), so that
18*ebfedea0SLionel Sambuc    they can be picked up by other projects from there as well.  */
19*ebfedea0SLionel Sambuc 
20*ebfedea0SLionel Sambuc /* This file is a modified implementation of the PKCS #11 standard by
21*ebfedea0SLionel Sambuc    RSA Security Inc.  It is mostly a drop-in replacement, with the
22*ebfedea0SLionel Sambuc    following change:
23*ebfedea0SLionel Sambuc 
24*ebfedea0SLionel Sambuc    This header file does not require any macro definitions by the user
25*ebfedea0SLionel Sambuc    (like CK_DEFINE_FUNCTION etc).  In fact, it defines those macros
26*ebfedea0SLionel Sambuc    for you (if useful, some are missing, let me know if you need
27*ebfedea0SLionel Sambuc    more).
28*ebfedea0SLionel Sambuc 
29*ebfedea0SLionel Sambuc    There is an additional API available that does comply better to the
30*ebfedea0SLionel Sambuc    GNU coding standard.  It can be switched on by defining
31*ebfedea0SLionel Sambuc    CRYPTOKI_GNU before including this header file.  For this, the
32*ebfedea0SLionel Sambuc    following changes are made to the specification:
33*ebfedea0SLionel Sambuc 
34*ebfedea0SLionel Sambuc    All structure types are changed to a "struct ck_foo" where CK_FOO
35*ebfedea0SLionel Sambuc    is the type name in PKCS #11.
36*ebfedea0SLionel Sambuc 
37*ebfedea0SLionel Sambuc    All non-structure types are changed to ck_foo_t where CK_FOO is the
38*ebfedea0SLionel Sambuc    lowercase version of the type name in PKCS #11.  The basic types
39*ebfedea0SLionel Sambuc    (CK_ULONG et al.) are removed without substitute.
40*ebfedea0SLionel Sambuc 
41*ebfedea0SLionel Sambuc    All members of structures are modified in the following way: Type
42*ebfedea0SLionel Sambuc    indication prefixes are removed, and underscore characters are
43*ebfedea0SLionel Sambuc    inserted before words.  Then the result is lowercased.
44*ebfedea0SLionel Sambuc 
45*ebfedea0SLionel Sambuc    Note that function names are still in the original case, as they
46*ebfedea0SLionel Sambuc    need for ABI compatibility.
47*ebfedea0SLionel Sambuc 
48*ebfedea0SLionel Sambuc    CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute.  Use
49*ebfedea0SLionel Sambuc    <stdbool.h>.
50*ebfedea0SLionel Sambuc 
51*ebfedea0SLionel Sambuc    If CRYPTOKI_COMPAT is defined before including this header file,
52*ebfedea0SLionel Sambuc    then none of the API changes above take place, and the API is the
53*ebfedea0SLionel Sambuc    one defined by the PKCS #11 standard.  */
54*ebfedea0SLionel Sambuc 
55*ebfedea0SLionel Sambuc #ifndef PKCS11_H
56*ebfedea0SLionel Sambuc #define PKCS11_H 1
57*ebfedea0SLionel Sambuc 
58*ebfedea0SLionel Sambuc #if defined(__cplusplus)
59*ebfedea0SLionel Sambuc extern "C" {
60*ebfedea0SLionel Sambuc #endif
61*ebfedea0SLionel Sambuc 
62*ebfedea0SLionel Sambuc 
63*ebfedea0SLionel Sambuc /* The version of cryptoki we implement.  The revision is changed with
64*ebfedea0SLionel Sambuc    each modification of this file.  If you do not use the "official"
65*ebfedea0SLionel Sambuc    version of this file, please consider deleting the revision macro
66*ebfedea0SLionel Sambuc    (you may use a macro with a different name to keep track of your
67*ebfedea0SLionel Sambuc    versions).  */
68*ebfedea0SLionel Sambuc #define CRYPTOKI_VERSION_MAJOR		2
69*ebfedea0SLionel Sambuc #define CRYPTOKI_VERSION_MINOR		20
70*ebfedea0SLionel Sambuc #define CRYPTOKI_VERSION_REVISION	6
71*ebfedea0SLionel Sambuc 
72*ebfedea0SLionel Sambuc 
73*ebfedea0SLionel Sambuc /* Compatibility interface is default, unless CRYPTOKI_GNU is
74*ebfedea0SLionel Sambuc    given.  */
75*ebfedea0SLionel Sambuc #ifndef CRYPTOKI_GNU
76*ebfedea0SLionel Sambuc #ifndef CRYPTOKI_COMPAT
77*ebfedea0SLionel Sambuc #define CRYPTOKI_COMPAT 1
78*ebfedea0SLionel Sambuc #endif
79*ebfedea0SLionel Sambuc #endif
80*ebfedea0SLionel Sambuc 
81*ebfedea0SLionel Sambuc /* System dependencies.  */
82*ebfedea0SLionel Sambuc 
83*ebfedea0SLionel Sambuc #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
84*ebfedea0SLionel Sambuc 
85*ebfedea0SLionel Sambuc /* There is a matching pop below.  */
86*ebfedea0SLionel Sambuc #pragma pack(push, cryptoki, 1)
87*ebfedea0SLionel Sambuc 
88*ebfedea0SLionel Sambuc #ifdef CRYPTOKI_EXPORTS
89*ebfedea0SLionel Sambuc #define CK_SPEC __declspec(dllexport)
90*ebfedea0SLionel Sambuc #else
91*ebfedea0SLionel Sambuc #define CK_SPEC __declspec(dllimport)
92*ebfedea0SLionel Sambuc #endif
93*ebfedea0SLionel Sambuc 
94*ebfedea0SLionel Sambuc #else
95*ebfedea0SLionel Sambuc 
96*ebfedea0SLionel Sambuc #define CK_SPEC
97*ebfedea0SLionel Sambuc 
98*ebfedea0SLionel Sambuc #endif
99*ebfedea0SLionel Sambuc 
100*ebfedea0SLionel Sambuc 
101*ebfedea0SLionel Sambuc #ifdef CRYPTOKI_COMPAT
102*ebfedea0SLionel Sambuc   /* If we are in compatibility mode, switch all exposed names to the
103*ebfedea0SLionel Sambuc      PKCS #11 variant.  There are corresponding #undefs below.  */
104*ebfedea0SLionel Sambuc 
105*ebfedea0SLionel Sambuc #define ck_flags_t CK_FLAGS
106*ebfedea0SLionel Sambuc #define ck_version _CK_VERSION
107*ebfedea0SLionel Sambuc 
108*ebfedea0SLionel Sambuc #define ck_info _CK_INFO
109*ebfedea0SLionel Sambuc #define cryptoki_version cryptokiVersion
110*ebfedea0SLionel Sambuc #define manufacturer_id manufacturerID
111*ebfedea0SLionel Sambuc #define library_description libraryDescription
112*ebfedea0SLionel Sambuc #define library_version libraryVersion
113*ebfedea0SLionel Sambuc 
114*ebfedea0SLionel Sambuc #define ck_notification_t CK_NOTIFICATION
115*ebfedea0SLionel Sambuc #define ck_slot_id_t CK_SLOT_ID
116*ebfedea0SLionel Sambuc 
117*ebfedea0SLionel Sambuc #define ck_slot_info _CK_SLOT_INFO
118*ebfedea0SLionel Sambuc #define slot_description slotDescription
119*ebfedea0SLionel Sambuc #define hardware_version hardwareVersion
120*ebfedea0SLionel Sambuc #define firmware_version firmwareVersion
121*ebfedea0SLionel Sambuc 
122*ebfedea0SLionel Sambuc #define ck_token_info _CK_TOKEN_INFO
123*ebfedea0SLionel Sambuc #define serial_number serialNumber
124*ebfedea0SLionel Sambuc #define max_session_count ulMaxSessionCount
125*ebfedea0SLionel Sambuc #define session_count ulSessionCount
126*ebfedea0SLionel Sambuc #define max_rw_session_count ulMaxRwSessionCount
127*ebfedea0SLionel Sambuc #define rw_session_count ulRwSessionCount
128*ebfedea0SLionel Sambuc #define max_pin_len ulMaxPinLen
129*ebfedea0SLionel Sambuc #define min_pin_len ulMinPinLen
130*ebfedea0SLionel Sambuc #define total_public_memory ulTotalPublicMemory
131*ebfedea0SLionel Sambuc #define free_public_memory ulFreePublicMemory
132*ebfedea0SLionel Sambuc #define total_private_memory ulTotalPrivateMemory
133*ebfedea0SLionel Sambuc #define free_private_memory ulFreePrivateMemory
134*ebfedea0SLionel Sambuc #define utc_time utcTime
135*ebfedea0SLionel Sambuc 
136*ebfedea0SLionel Sambuc #define ck_session_handle_t CK_SESSION_HANDLE
137*ebfedea0SLionel Sambuc #define ck_user_type_t CK_USER_TYPE
138*ebfedea0SLionel Sambuc #define ck_state_t CK_STATE
139*ebfedea0SLionel Sambuc 
140*ebfedea0SLionel Sambuc #define ck_session_info _CK_SESSION_INFO
141*ebfedea0SLionel Sambuc #define slot_id slotID
142*ebfedea0SLionel Sambuc #define device_error ulDeviceError
143*ebfedea0SLionel Sambuc 
144*ebfedea0SLionel Sambuc #define ck_object_handle_t CK_OBJECT_HANDLE
145*ebfedea0SLionel Sambuc #define ck_object_class_t CK_OBJECT_CLASS
146*ebfedea0SLionel Sambuc #define ck_hw_feature_type_t CK_HW_FEATURE_TYPE
147*ebfedea0SLionel Sambuc #define ck_key_type_t CK_KEY_TYPE
148*ebfedea0SLionel Sambuc #define ck_certificate_type_t CK_CERTIFICATE_TYPE
149*ebfedea0SLionel Sambuc #define ck_attribute_type_t CK_ATTRIBUTE_TYPE
150*ebfedea0SLionel Sambuc 
151*ebfedea0SLionel Sambuc #define ck_attribute _CK_ATTRIBUTE
152*ebfedea0SLionel Sambuc #define value pValue
153*ebfedea0SLionel Sambuc #define value_len ulValueLen
154*ebfedea0SLionel Sambuc 
155*ebfedea0SLionel Sambuc #define ck_date _CK_DATE
156*ebfedea0SLionel Sambuc 
157*ebfedea0SLionel Sambuc #define ck_mechanism_type_t CK_MECHANISM_TYPE
158*ebfedea0SLionel Sambuc 
159*ebfedea0SLionel Sambuc #define ck_mechanism _CK_MECHANISM
160*ebfedea0SLionel Sambuc #define parameter pParameter
161*ebfedea0SLionel Sambuc #define parameter_len ulParameterLen
162*ebfedea0SLionel Sambuc 
163*ebfedea0SLionel Sambuc #define ck_mechanism_info _CK_MECHANISM_INFO
164*ebfedea0SLionel Sambuc #define min_key_size ulMinKeySize
165*ebfedea0SLionel Sambuc #define max_key_size ulMaxKeySize
166*ebfedea0SLionel Sambuc 
167*ebfedea0SLionel Sambuc #define ck_rv_t CK_RV
168*ebfedea0SLionel Sambuc #define ck_notify_t CK_NOTIFY
169*ebfedea0SLionel Sambuc 
170*ebfedea0SLionel Sambuc #define ck_function_list _CK_FUNCTION_LIST
171*ebfedea0SLionel Sambuc 
172*ebfedea0SLionel Sambuc #define ck_createmutex_t CK_CREATEMUTEX
173*ebfedea0SLionel Sambuc #define ck_destroymutex_t CK_DESTROYMUTEX
174*ebfedea0SLionel Sambuc #define ck_lockmutex_t CK_LOCKMUTEX
175*ebfedea0SLionel Sambuc #define ck_unlockmutex_t CK_UNLOCKMUTEX
176*ebfedea0SLionel Sambuc 
177*ebfedea0SLionel Sambuc #define ck_c_initialize_args _CK_C_INITIALIZE_ARGS
178*ebfedea0SLionel Sambuc #define create_mutex CreateMutex
179*ebfedea0SLionel Sambuc #define destroy_mutex DestroyMutex
180*ebfedea0SLionel Sambuc #define lock_mutex LockMutex
181*ebfedea0SLionel Sambuc #define unlock_mutex UnlockMutex
182*ebfedea0SLionel Sambuc #define reserved pReserved
183*ebfedea0SLionel Sambuc 
184*ebfedea0SLionel Sambuc #endif	/* CRYPTOKI_COMPAT */
185*ebfedea0SLionel Sambuc 
186*ebfedea0SLionel Sambuc 
187*ebfedea0SLionel Sambuc 
188*ebfedea0SLionel Sambuc typedef unsigned long ck_flags_t;
189*ebfedea0SLionel Sambuc 
190*ebfedea0SLionel Sambuc struct ck_version
191*ebfedea0SLionel Sambuc {
192*ebfedea0SLionel Sambuc   unsigned char major;
193*ebfedea0SLionel Sambuc   unsigned char minor;
194*ebfedea0SLionel Sambuc };
195*ebfedea0SLionel Sambuc 
196*ebfedea0SLionel Sambuc 
197*ebfedea0SLionel Sambuc struct ck_info
198*ebfedea0SLionel Sambuc {
199*ebfedea0SLionel Sambuc   struct ck_version cryptoki_version;
200*ebfedea0SLionel Sambuc   unsigned char manufacturer_id[32];
201*ebfedea0SLionel Sambuc   ck_flags_t flags;
202*ebfedea0SLionel Sambuc   unsigned char library_description[32];
203*ebfedea0SLionel Sambuc   struct ck_version library_version;
204*ebfedea0SLionel Sambuc };
205*ebfedea0SLionel Sambuc 
206*ebfedea0SLionel Sambuc 
207*ebfedea0SLionel Sambuc typedef unsigned long ck_notification_t;
208*ebfedea0SLionel Sambuc 
209*ebfedea0SLionel Sambuc #define CKN_SURRENDER	(0)
210*ebfedea0SLionel Sambuc 
211*ebfedea0SLionel Sambuc 
212*ebfedea0SLionel Sambuc typedef unsigned long ck_slot_id_t;
213*ebfedea0SLionel Sambuc 
214*ebfedea0SLionel Sambuc 
215*ebfedea0SLionel Sambuc struct ck_slot_info
216*ebfedea0SLionel Sambuc {
217*ebfedea0SLionel Sambuc   unsigned char slot_description[64];
218*ebfedea0SLionel Sambuc   unsigned char manufacturer_id[32];
219*ebfedea0SLionel Sambuc   ck_flags_t flags;
220*ebfedea0SLionel Sambuc   struct ck_version hardware_version;
221*ebfedea0SLionel Sambuc   struct ck_version firmware_version;
222*ebfedea0SLionel Sambuc };
223*ebfedea0SLionel Sambuc 
224*ebfedea0SLionel Sambuc 
225*ebfedea0SLionel Sambuc #define CKF_TOKEN_PRESENT	(1 << 0)
226*ebfedea0SLionel Sambuc #define CKF_REMOVABLE_DEVICE	(1 << 1)
227*ebfedea0SLionel Sambuc #define CKF_HW_SLOT		(1 << 2)
228*ebfedea0SLionel Sambuc #define CKF_ARRAY_ATTRIBUTE	(1 << 30)
229*ebfedea0SLionel Sambuc 
230*ebfedea0SLionel Sambuc 
231*ebfedea0SLionel Sambuc struct ck_token_info
232*ebfedea0SLionel Sambuc {
233*ebfedea0SLionel Sambuc   unsigned char label[32];
234*ebfedea0SLionel Sambuc   unsigned char manufacturer_id[32];
235*ebfedea0SLionel Sambuc   unsigned char model[16];
236*ebfedea0SLionel Sambuc   unsigned char serial_number[16];
237*ebfedea0SLionel Sambuc   ck_flags_t flags;
238*ebfedea0SLionel Sambuc   unsigned long max_session_count;
239*ebfedea0SLionel Sambuc   unsigned long session_count;
240*ebfedea0SLionel Sambuc   unsigned long max_rw_session_count;
241*ebfedea0SLionel Sambuc   unsigned long rw_session_count;
242*ebfedea0SLionel Sambuc   unsigned long max_pin_len;
243*ebfedea0SLionel Sambuc   unsigned long min_pin_len;
244*ebfedea0SLionel Sambuc   unsigned long total_public_memory;
245*ebfedea0SLionel Sambuc   unsigned long free_public_memory;
246*ebfedea0SLionel Sambuc   unsigned long total_private_memory;
247*ebfedea0SLionel Sambuc   unsigned long free_private_memory;
248*ebfedea0SLionel Sambuc   struct ck_version hardware_version;
249*ebfedea0SLionel Sambuc   struct ck_version firmware_version;
250*ebfedea0SLionel Sambuc   unsigned char utc_time[16];
251*ebfedea0SLionel Sambuc };
252*ebfedea0SLionel Sambuc 
253*ebfedea0SLionel Sambuc 
254*ebfedea0SLionel Sambuc #define CKF_RNG					(1 << 0)
255*ebfedea0SLionel Sambuc #define CKF_WRITE_PROTECTED			(1 << 1)
256*ebfedea0SLionel Sambuc #define CKF_LOGIN_REQUIRED			(1 << 2)
257*ebfedea0SLionel Sambuc #define CKF_USER_PIN_INITIALIZED		(1 << 3)
258*ebfedea0SLionel Sambuc #define CKF_RESTORE_KEY_NOT_NEEDED		(1 << 5)
259*ebfedea0SLionel Sambuc #define CKF_CLOCK_ON_TOKEN			(1 << 6)
260*ebfedea0SLionel Sambuc #define CKF_PROTECTED_AUTHENTICATION_PATH	(1 << 8)
261*ebfedea0SLionel Sambuc #define CKF_DUAL_CRYPTO_OPERATIONS		(1 << 9)
262*ebfedea0SLionel Sambuc #define CKF_TOKEN_INITIALIZED			(1 << 10)
263*ebfedea0SLionel Sambuc #define CKF_SECONDARY_AUTHENTICATION		(1 << 11)
264*ebfedea0SLionel Sambuc #define CKF_USER_PIN_COUNT_LOW			(1 << 16)
265*ebfedea0SLionel Sambuc #define CKF_USER_PIN_FINAL_TRY			(1 << 17)
266*ebfedea0SLionel Sambuc #define CKF_USER_PIN_LOCKED			(1 << 18)
267*ebfedea0SLionel Sambuc #define CKF_USER_PIN_TO_BE_CHANGED		(1 << 19)
268*ebfedea0SLionel Sambuc #define CKF_SO_PIN_COUNT_LOW			(1 << 20)
269*ebfedea0SLionel Sambuc #define CKF_SO_PIN_FINAL_TRY			(1 << 21)
270*ebfedea0SLionel Sambuc #define CKF_SO_PIN_LOCKED			(1 << 22)
271*ebfedea0SLionel Sambuc #define CKF_SO_PIN_TO_BE_CHANGED		(1 << 23)
272*ebfedea0SLionel Sambuc 
273*ebfedea0SLionel Sambuc #define CK_UNAVAILABLE_INFORMATION	((unsigned long) -1)
274*ebfedea0SLionel Sambuc #define CK_EFFECTIVELY_INFINITE		(0)
275*ebfedea0SLionel Sambuc 
276*ebfedea0SLionel Sambuc 
277*ebfedea0SLionel Sambuc typedef unsigned long ck_session_handle_t;
278*ebfedea0SLionel Sambuc 
279*ebfedea0SLionel Sambuc #define CK_INVALID_HANDLE	(0)
280*ebfedea0SLionel Sambuc 
281*ebfedea0SLionel Sambuc 
282*ebfedea0SLionel Sambuc typedef unsigned long ck_user_type_t;
283*ebfedea0SLionel Sambuc 
284*ebfedea0SLionel Sambuc #define CKU_SO			(0)
285*ebfedea0SLionel Sambuc #define CKU_USER		(1)
286*ebfedea0SLionel Sambuc #define CKU_CONTEXT_SPECIFIC	(2)
287*ebfedea0SLionel Sambuc 
288*ebfedea0SLionel Sambuc 
289*ebfedea0SLionel Sambuc typedef unsigned long ck_state_t;
290*ebfedea0SLionel Sambuc 
291*ebfedea0SLionel Sambuc #define CKS_RO_PUBLIC_SESSION	(0)
292*ebfedea0SLionel Sambuc #define CKS_RO_USER_FUNCTIONS	(1)
293*ebfedea0SLionel Sambuc #define CKS_RW_PUBLIC_SESSION	(2)
294*ebfedea0SLionel Sambuc #define CKS_RW_USER_FUNCTIONS	(3)
295*ebfedea0SLionel Sambuc #define CKS_RW_SO_FUNCTIONS	(4)
296*ebfedea0SLionel Sambuc 
297*ebfedea0SLionel Sambuc 
298*ebfedea0SLionel Sambuc struct ck_session_info
299*ebfedea0SLionel Sambuc {
300*ebfedea0SLionel Sambuc   ck_slot_id_t slot_id;
301*ebfedea0SLionel Sambuc   ck_state_t state;
302*ebfedea0SLionel Sambuc   ck_flags_t flags;
303*ebfedea0SLionel Sambuc   unsigned long device_error;
304*ebfedea0SLionel Sambuc };
305*ebfedea0SLionel Sambuc 
306*ebfedea0SLionel Sambuc #define CKF_RW_SESSION		(1 << 1)
307*ebfedea0SLionel Sambuc #define CKF_SERIAL_SESSION	(1 << 2)
308*ebfedea0SLionel Sambuc 
309*ebfedea0SLionel Sambuc 
310*ebfedea0SLionel Sambuc typedef unsigned long ck_object_handle_t;
311*ebfedea0SLionel Sambuc 
312*ebfedea0SLionel Sambuc 
313*ebfedea0SLionel Sambuc typedef unsigned long ck_object_class_t;
314*ebfedea0SLionel Sambuc 
315*ebfedea0SLionel Sambuc #define CKO_DATA		(0)
316*ebfedea0SLionel Sambuc #define CKO_CERTIFICATE		(1)
317*ebfedea0SLionel Sambuc #define CKO_PUBLIC_KEY		(2)
318*ebfedea0SLionel Sambuc #define CKO_PRIVATE_KEY		(3)
319*ebfedea0SLionel Sambuc #define CKO_SECRET_KEY		(4)
320*ebfedea0SLionel Sambuc #define CKO_HW_FEATURE		(5)
321*ebfedea0SLionel Sambuc #define CKO_DOMAIN_PARAMETERS	(6)
322*ebfedea0SLionel Sambuc #define CKO_MECHANISM		(7)
323*ebfedea0SLionel Sambuc #define CKO_VENDOR_DEFINED	((unsigned long) (1 << 31))
324*ebfedea0SLionel Sambuc 
325*ebfedea0SLionel Sambuc 
326*ebfedea0SLionel Sambuc typedef unsigned long ck_hw_feature_type_t;
327*ebfedea0SLionel Sambuc 
328*ebfedea0SLionel Sambuc #define CKH_MONOTONIC_COUNTER	(1)
329*ebfedea0SLionel Sambuc #define CKH_CLOCK		(2)
330*ebfedea0SLionel Sambuc #define CKH_USER_INTERFACE	(3)
331*ebfedea0SLionel Sambuc #define CKH_VENDOR_DEFINED	((unsigned long) (1 << 31))
332*ebfedea0SLionel Sambuc 
333*ebfedea0SLionel Sambuc 
334*ebfedea0SLionel Sambuc typedef unsigned long ck_key_type_t;
335*ebfedea0SLionel Sambuc 
336*ebfedea0SLionel Sambuc #define CKK_RSA			(0)
337*ebfedea0SLionel Sambuc #define CKK_DSA			(1)
338*ebfedea0SLionel Sambuc #define CKK_DH			(2)
339*ebfedea0SLionel Sambuc #define CKK_ECDSA		(3)
340*ebfedea0SLionel Sambuc #define CKK_EC			(3)
341*ebfedea0SLionel Sambuc #define CKK_X9_42_DH		(4)
342*ebfedea0SLionel Sambuc #define CKK_KEA			(5)
343*ebfedea0SLionel Sambuc #define CKK_GENERIC_SECRET	(0x10)
344*ebfedea0SLionel Sambuc #define CKK_RC2			(0x11)
345*ebfedea0SLionel Sambuc #define CKK_RC4			(0x12)
346*ebfedea0SLionel Sambuc #define CKK_DES			(0x13)
347*ebfedea0SLionel Sambuc #define CKK_DES2		(0x14)
348*ebfedea0SLionel Sambuc #define CKK_DES3		(0x15)
349*ebfedea0SLionel Sambuc #define CKK_CAST		(0x16)
350*ebfedea0SLionel Sambuc #define CKK_CAST3		(0x17)
351*ebfedea0SLionel Sambuc #define CKK_CAST128		(0x18)
352*ebfedea0SLionel Sambuc #define CKK_RC5			(0x19)
353*ebfedea0SLionel Sambuc #define CKK_IDEA		(0x1a)
354*ebfedea0SLionel Sambuc #define CKK_SKIPJACK		(0x1b)
355*ebfedea0SLionel Sambuc #define CKK_BATON		(0x1c)
356*ebfedea0SLionel Sambuc #define CKK_JUNIPER		(0x1d)
357*ebfedea0SLionel Sambuc #define CKK_CDMF		(0x1e)
358*ebfedea0SLionel Sambuc #define CKK_AES			(0x1f)
359*ebfedea0SLionel Sambuc #define CKK_BLOWFISH		(0x20)
360*ebfedea0SLionel Sambuc #define CKK_TWOFISH		(0x21)
361*ebfedea0SLionel Sambuc #define CKK_VENDOR_DEFINED	((unsigned long) (1 << 31))
362*ebfedea0SLionel Sambuc 
363*ebfedea0SLionel Sambuc 
364*ebfedea0SLionel Sambuc typedef unsigned long ck_certificate_type_t;
365*ebfedea0SLionel Sambuc 
366*ebfedea0SLionel Sambuc #define CKC_X_509		(0)
367*ebfedea0SLionel Sambuc #define CKC_X_509_ATTR_CERT	(1)
368*ebfedea0SLionel Sambuc #define CKC_WTLS		(2)
369*ebfedea0SLionel Sambuc #define CKC_VENDOR_DEFINED	((unsigned long) (1 << 31))
370*ebfedea0SLionel Sambuc 
371*ebfedea0SLionel Sambuc 
372*ebfedea0SLionel Sambuc typedef unsigned long ck_attribute_type_t;
373*ebfedea0SLionel Sambuc 
374*ebfedea0SLionel Sambuc #define CKA_CLASS			(0)
375*ebfedea0SLionel Sambuc #define CKA_TOKEN			(1)
376*ebfedea0SLionel Sambuc #define CKA_PRIVATE			(2)
377*ebfedea0SLionel Sambuc #define CKA_LABEL			(3)
378*ebfedea0SLionel Sambuc #define CKA_APPLICATION			(0x10)
379*ebfedea0SLionel Sambuc #define CKA_VALUE			(0x11)
380*ebfedea0SLionel Sambuc #define CKA_OBJECT_ID			(0x12)
381*ebfedea0SLionel Sambuc #define CKA_CERTIFICATE_TYPE		(0x80)
382*ebfedea0SLionel Sambuc #define CKA_ISSUER			(0x81)
383*ebfedea0SLionel Sambuc #define CKA_SERIAL_NUMBER		(0x82)
384*ebfedea0SLionel Sambuc #define CKA_AC_ISSUER			(0x83)
385*ebfedea0SLionel Sambuc #define CKA_OWNER			(0x84)
386*ebfedea0SLionel Sambuc #define CKA_ATTR_TYPES			(0x85)
387*ebfedea0SLionel Sambuc #define CKA_TRUSTED			(0x86)
388*ebfedea0SLionel Sambuc #define CKA_CERTIFICATE_CATEGORY	(0x87)
389*ebfedea0SLionel Sambuc #define CKA_JAVA_MIDP_SECURITY_DOMAIN	(0x88)
390*ebfedea0SLionel Sambuc #define CKA_URL				(0x89)
391*ebfedea0SLionel Sambuc #define CKA_HASH_OF_SUBJECT_PUBLIC_KEY	(0x8a)
392*ebfedea0SLionel Sambuc #define CKA_HASH_OF_ISSUER_PUBLIC_KEY	(0x8b)
393*ebfedea0SLionel Sambuc #define CKA_CHECK_VALUE			(0x90)
394*ebfedea0SLionel Sambuc #define CKA_KEY_TYPE			(0x100)
395*ebfedea0SLionel Sambuc #define CKA_SUBJECT			(0x101)
396*ebfedea0SLionel Sambuc #define CKA_ID				(0x102)
397*ebfedea0SLionel Sambuc #define CKA_SENSITIVE			(0x103)
398*ebfedea0SLionel Sambuc #define CKA_ENCRYPT			(0x104)
399*ebfedea0SLionel Sambuc #define CKA_DECRYPT			(0x105)
400*ebfedea0SLionel Sambuc #define CKA_WRAP			(0x106)
401*ebfedea0SLionel Sambuc #define CKA_UNWRAP			(0x107)
402*ebfedea0SLionel Sambuc #define CKA_SIGN			(0x108)
403*ebfedea0SLionel Sambuc #define CKA_SIGN_RECOVER		(0x109)
404*ebfedea0SLionel Sambuc #define CKA_VERIFY			(0x10a)
405*ebfedea0SLionel Sambuc #define CKA_VERIFY_RECOVER		(0x10b)
406*ebfedea0SLionel Sambuc #define CKA_DERIVE			(0x10c)
407*ebfedea0SLionel Sambuc #define CKA_START_DATE			(0x110)
408*ebfedea0SLionel Sambuc #define CKA_END_DATE			(0x111)
409*ebfedea0SLionel Sambuc #define CKA_MODULUS			(0x120)
410*ebfedea0SLionel Sambuc #define CKA_MODULUS_BITS		(0x121)
411*ebfedea0SLionel Sambuc #define CKA_PUBLIC_EXPONENT		(0x122)
412*ebfedea0SLionel Sambuc #define CKA_PRIVATE_EXPONENT		(0x123)
413*ebfedea0SLionel Sambuc #define CKA_PRIME_1			(0x124)
414*ebfedea0SLionel Sambuc #define CKA_PRIME_2			(0x125)
415*ebfedea0SLionel Sambuc #define CKA_EXPONENT_1			(0x126)
416*ebfedea0SLionel Sambuc #define CKA_EXPONENT_2			(0x127)
417*ebfedea0SLionel Sambuc #define CKA_COEFFICIENT			(0x128)
418*ebfedea0SLionel Sambuc #define CKA_PRIME			(0x130)
419*ebfedea0SLionel Sambuc #define CKA_SUBPRIME			(0x131)
420*ebfedea0SLionel Sambuc #define CKA_BASE			(0x132)
421*ebfedea0SLionel Sambuc #define CKA_PRIME_BITS			(0x133)
422*ebfedea0SLionel Sambuc #define CKA_SUB_PRIME_BITS		(0x134)
423*ebfedea0SLionel Sambuc #define CKA_VALUE_BITS			(0x160)
424*ebfedea0SLionel Sambuc #define CKA_VALUE_LEN			(0x161)
425*ebfedea0SLionel Sambuc #define CKA_EXTRACTABLE			(0x162)
426*ebfedea0SLionel Sambuc #define CKA_LOCAL			(0x163)
427*ebfedea0SLionel Sambuc #define CKA_NEVER_EXTRACTABLE		(0x164)
428*ebfedea0SLionel Sambuc #define CKA_ALWAYS_SENSITIVE		(0x165)
429*ebfedea0SLionel Sambuc #define CKA_KEY_GEN_MECHANISM		(0x166)
430*ebfedea0SLionel Sambuc #define CKA_MODIFIABLE			(0x170)
431*ebfedea0SLionel Sambuc #define CKA_ECDSA_PARAMS		(0x180)
432*ebfedea0SLionel Sambuc #define CKA_EC_PARAMS			(0x180)
433*ebfedea0SLionel Sambuc #define CKA_EC_POINT			(0x181)
434*ebfedea0SLionel Sambuc #define CKA_SECONDARY_AUTH		(0x200)
435*ebfedea0SLionel Sambuc #define CKA_AUTH_PIN_FLAGS		(0x201)
436*ebfedea0SLionel Sambuc #define CKA_ALWAYS_AUTHENTICATE		(0x202)
437*ebfedea0SLionel Sambuc #define CKA_WRAP_WITH_TRUSTED		(0x210)
438*ebfedea0SLionel Sambuc #define CKA_HW_FEATURE_TYPE		(0x300)
439*ebfedea0SLionel Sambuc #define CKA_RESET_ON_INIT		(0x301)
440*ebfedea0SLionel Sambuc #define CKA_HAS_RESET			(0x302)
441*ebfedea0SLionel Sambuc #define CKA_PIXEL_X			(0x400)
442*ebfedea0SLionel Sambuc #define CKA_PIXEL_Y			(0x401)
443*ebfedea0SLionel Sambuc #define CKA_RESOLUTION			(0x402)
444*ebfedea0SLionel Sambuc #define CKA_CHAR_ROWS			(0x403)
445*ebfedea0SLionel Sambuc #define CKA_CHAR_COLUMNS		(0x404)
446*ebfedea0SLionel Sambuc #define CKA_COLOR			(0x405)
447*ebfedea0SLionel Sambuc #define CKA_BITS_PER_PIXEL		(0x406)
448*ebfedea0SLionel Sambuc #define CKA_CHAR_SETS			(0x480)
449*ebfedea0SLionel Sambuc #define CKA_ENCODING_METHODS		(0x481)
450*ebfedea0SLionel Sambuc #define CKA_MIME_TYPES			(0x482)
451*ebfedea0SLionel Sambuc #define CKA_MECHANISM_TYPE		(0x500)
452*ebfedea0SLionel Sambuc #define CKA_REQUIRED_CMS_ATTRIBUTES	(0x501)
453*ebfedea0SLionel Sambuc #define CKA_DEFAULT_CMS_ATTRIBUTES	(0x502)
454*ebfedea0SLionel Sambuc #define CKA_SUPPORTED_CMS_ATTRIBUTES	(0x503)
455*ebfedea0SLionel Sambuc #define CKA_WRAP_TEMPLATE		(CKF_ARRAY_ATTRIBUTE | 0x211)
456*ebfedea0SLionel Sambuc #define CKA_UNWRAP_TEMPLATE		(CKF_ARRAY_ATTRIBUTE | 0x212)
457*ebfedea0SLionel Sambuc #define CKA_ALLOWED_MECHANISMS		(CKF_ARRAY_ATTRIBUTE | 0x600)
458*ebfedea0SLionel Sambuc #define CKA_VENDOR_DEFINED		((unsigned long) (1 << 31))
459*ebfedea0SLionel Sambuc 
460*ebfedea0SLionel Sambuc 
461*ebfedea0SLionel Sambuc struct ck_attribute
462*ebfedea0SLionel Sambuc {
463*ebfedea0SLionel Sambuc   ck_attribute_type_t type;
464*ebfedea0SLionel Sambuc   void *value;
465*ebfedea0SLionel Sambuc   unsigned long value_len;
466*ebfedea0SLionel Sambuc };
467*ebfedea0SLionel Sambuc 
468*ebfedea0SLionel Sambuc 
469*ebfedea0SLionel Sambuc struct ck_date
470*ebfedea0SLionel Sambuc {
471*ebfedea0SLionel Sambuc   unsigned char year[4];
472*ebfedea0SLionel Sambuc   unsigned char month[2];
473*ebfedea0SLionel Sambuc   unsigned char day[2];
474*ebfedea0SLionel Sambuc };
475*ebfedea0SLionel Sambuc 
476*ebfedea0SLionel Sambuc 
477*ebfedea0SLionel Sambuc typedef unsigned long ck_mechanism_type_t;
478*ebfedea0SLionel Sambuc 
479*ebfedea0SLionel Sambuc #define CKM_RSA_PKCS_KEY_PAIR_GEN	(0)
480*ebfedea0SLionel Sambuc #define CKM_RSA_PKCS			(1)
481*ebfedea0SLionel Sambuc #define CKM_RSA_9796			(2)
482*ebfedea0SLionel Sambuc #define CKM_RSA_X_509			(3)
483*ebfedea0SLionel Sambuc #define CKM_MD2_RSA_PKCS		(4)
484*ebfedea0SLionel Sambuc #define CKM_MD5_RSA_PKCS		(5)
485*ebfedea0SLionel Sambuc #define CKM_SHA1_RSA_PKCS		(6)
486*ebfedea0SLionel Sambuc #define CKM_RIPEMD128_RSA_PKCS		(7)
487*ebfedea0SLionel Sambuc #define CKM_RIPEMD160_RSA_PKCS		(8)
488*ebfedea0SLionel Sambuc #define CKM_RSA_PKCS_OAEP		(9)
489*ebfedea0SLionel Sambuc #define CKM_RSA_X9_31_KEY_PAIR_GEN	(0xa)
490*ebfedea0SLionel Sambuc #define CKM_RSA_X9_31			(0xb)
491*ebfedea0SLionel Sambuc #define CKM_SHA1_RSA_X9_31		(0xc)
492*ebfedea0SLionel Sambuc #define CKM_RSA_PKCS_PSS		(0xd)
493*ebfedea0SLionel Sambuc #define CKM_SHA1_RSA_PKCS_PSS		(0xe)
494*ebfedea0SLionel Sambuc #define CKM_DSA_KEY_PAIR_GEN		(0x10)
495*ebfedea0SLionel Sambuc #define	CKM_DSA				(0x11)
496*ebfedea0SLionel Sambuc #define CKM_DSA_SHA1			(0x12)
497*ebfedea0SLionel Sambuc #define CKM_DH_PKCS_KEY_PAIR_GEN	(0x20)
498*ebfedea0SLionel Sambuc #define CKM_DH_PKCS_DERIVE		(0x21)
499*ebfedea0SLionel Sambuc #define	CKM_X9_42_DH_KEY_PAIR_GEN	(0x30)
500*ebfedea0SLionel Sambuc #define CKM_X9_42_DH_DERIVE		(0x31)
501*ebfedea0SLionel Sambuc #define CKM_X9_42_DH_HYBRID_DERIVE	(0x32)
502*ebfedea0SLionel Sambuc #define CKM_X9_42_MQV_DERIVE		(0x33)
503*ebfedea0SLionel Sambuc #define CKM_SHA256_RSA_PKCS		(0x40)
504*ebfedea0SLionel Sambuc #define CKM_SHA384_RSA_PKCS		(0x41)
505*ebfedea0SLionel Sambuc #define CKM_SHA512_RSA_PKCS		(0x42)
506*ebfedea0SLionel Sambuc #define CKM_SHA256_RSA_PKCS_PSS		(0x43)
507*ebfedea0SLionel Sambuc #define CKM_SHA384_RSA_PKCS_PSS		(0x44)
508*ebfedea0SLionel Sambuc #define CKM_SHA512_RSA_PKCS_PSS		(0x45)
509*ebfedea0SLionel Sambuc #define CKM_RC2_KEY_GEN			(0x100)
510*ebfedea0SLionel Sambuc #define CKM_RC2_ECB			(0x101)
511*ebfedea0SLionel Sambuc #define	CKM_RC2_CBC			(0x102)
512*ebfedea0SLionel Sambuc #define	CKM_RC2_MAC			(0x103)
513*ebfedea0SLionel Sambuc #define CKM_RC2_MAC_GENERAL		(0x104)
514*ebfedea0SLionel Sambuc #define CKM_RC2_CBC_PAD			(0x105)
515*ebfedea0SLionel Sambuc #define CKM_RC4_KEY_GEN			(0x110)
516*ebfedea0SLionel Sambuc #define CKM_RC4				(0x111)
517*ebfedea0SLionel Sambuc #define CKM_DES_KEY_GEN			(0x120)
518*ebfedea0SLionel Sambuc #define CKM_DES_ECB			(0x121)
519*ebfedea0SLionel Sambuc #define CKM_DES_CBC			(0x122)
520*ebfedea0SLionel Sambuc #define CKM_DES_MAC			(0x123)
521*ebfedea0SLionel Sambuc #define CKM_DES_MAC_GENERAL		(0x124)
522*ebfedea0SLionel Sambuc #define CKM_DES_CBC_PAD			(0x125)
523*ebfedea0SLionel Sambuc #define CKM_DES2_KEY_GEN		(0x130)
524*ebfedea0SLionel Sambuc #define CKM_DES3_KEY_GEN		(0x131)
525*ebfedea0SLionel Sambuc #define CKM_DES3_ECB			(0x132)
526*ebfedea0SLionel Sambuc #define CKM_DES3_CBC			(0x133)
527*ebfedea0SLionel Sambuc #define CKM_DES3_MAC			(0x134)
528*ebfedea0SLionel Sambuc #define CKM_DES3_MAC_GENERAL		(0x135)
529*ebfedea0SLionel Sambuc #define CKM_DES3_CBC_PAD		(0x136)
530*ebfedea0SLionel Sambuc #define CKM_CDMF_KEY_GEN		(0x140)
531*ebfedea0SLionel Sambuc #define CKM_CDMF_ECB			(0x141)
532*ebfedea0SLionel Sambuc #define CKM_CDMF_CBC			(0x142)
533*ebfedea0SLionel Sambuc #define CKM_CDMF_MAC			(0x143)
534*ebfedea0SLionel Sambuc #define CKM_CDMF_MAC_GENERAL		(0x144)
535*ebfedea0SLionel Sambuc #define CKM_CDMF_CBC_PAD		(0x145)
536*ebfedea0SLionel Sambuc #define CKM_MD2				(0x200)
537*ebfedea0SLionel Sambuc #define CKM_MD2_HMAC			(0x201)
538*ebfedea0SLionel Sambuc #define CKM_MD2_HMAC_GENERAL		(0x202)
539*ebfedea0SLionel Sambuc #define CKM_MD5				(0x210)
540*ebfedea0SLionel Sambuc #define CKM_MD5_HMAC			(0x211)
541*ebfedea0SLionel Sambuc #define CKM_MD5_HMAC_GENERAL		(0x212)
542*ebfedea0SLionel Sambuc #define CKM_SHA_1			(0x220)
543*ebfedea0SLionel Sambuc #define CKM_SHA_1_HMAC			(0x221)
544*ebfedea0SLionel Sambuc #define CKM_SHA_1_HMAC_GENERAL		(0x222)
545*ebfedea0SLionel Sambuc #define CKM_RIPEMD128			(0x230)
546*ebfedea0SLionel Sambuc #define CKM_RIPEMD128_HMAC		(0x231)
547*ebfedea0SLionel Sambuc #define CKM_RIPEMD128_HMAC_GENERAL	(0x232)
548*ebfedea0SLionel Sambuc #define CKM_RIPEMD160			(0x240)
549*ebfedea0SLionel Sambuc #define CKM_RIPEMD160_HMAC		(0x241)
550*ebfedea0SLionel Sambuc #define CKM_RIPEMD160_HMAC_GENERAL	(0x242)
551*ebfedea0SLionel Sambuc #define CKM_SHA256			(0x250)
552*ebfedea0SLionel Sambuc #define CKM_SHA256_HMAC			(0x251)
553*ebfedea0SLionel Sambuc #define CKM_SHA256_HMAC_GENERAL		(0x252)
554*ebfedea0SLionel Sambuc #define CKM_SHA384			(0x260)
555*ebfedea0SLionel Sambuc #define CKM_SHA384_HMAC			(0x261)
556*ebfedea0SLionel Sambuc #define CKM_SHA384_HMAC_GENERAL		(0x262)
557*ebfedea0SLionel Sambuc #define CKM_SHA512			(0x270)
558*ebfedea0SLionel Sambuc #define CKM_SHA512_HMAC			(0x271)
559*ebfedea0SLionel Sambuc #define CKM_SHA512_HMAC_GENERAL		(0x272)
560*ebfedea0SLionel Sambuc #define CKM_CAST_KEY_GEN		(0x300)
561*ebfedea0SLionel Sambuc #define CKM_CAST_ECB			(0x301)
562*ebfedea0SLionel Sambuc #define CKM_CAST_CBC			(0x302)
563*ebfedea0SLionel Sambuc #define CKM_CAST_MAC			(0x303)
564*ebfedea0SLionel Sambuc #define CKM_CAST_MAC_GENERAL		(0x304)
565*ebfedea0SLionel Sambuc #define CKM_CAST_CBC_PAD		(0x305)
566*ebfedea0SLionel Sambuc #define CKM_CAST3_KEY_GEN		(0x310)
567*ebfedea0SLionel Sambuc #define CKM_CAST3_ECB			(0x311)
568*ebfedea0SLionel Sambuc #define CKM_CAST3_CBC			(0x312)
569*ebfedea0SLionel Sambuc #define CKM_CAST3_MAC			(0x313)
570*ebfedea0SLionel Sambuc #define CKM_CAST3_MAC_GENERAL		(0x314)
571*ebfedea0SLionel Sambuc #define CKM_CAST3_CBC_PAD		(0x315)
572*ebfedea0SLionel Sambuc #define CKM_CAST5_KEY_GEN		(0x320)
573*ebfedea0SLionel Sambuc #define CKM_CAST128_KEY_GEN		(0x320)
574*ebfedea0SLionel Sambuc #define CKM_CAST5_ECB			(0x321)
575*ebfedea0SLionel Sambuc #define CKM_CAST128_ECB			(0x321)
576*ebfedea0SLionel Sambuc #define CKM_CAST5_CBC			(0x322)
577*ebfedea0SLionel Sambuc #define CKM_CAST128_CBC			(0x322)
578*ebfedea0SLionel Sambuc #define CKM_CAST5_MAC			(0x323)
579*ebfedea0SLionel Sambuc #define	CKM_CAST128_MAC			(0x323)
580*ebfedea0SLionel Sambuc #define CKM_CAST5_MAC_GENERAL		(0x324)
581*ebfedea0SLionel Sambuc #define CKM_CAST128_MAC_GENERAL		(0x324)
582*ebfedea0SLionel Sambuc #define CKM_CAST5_CBC_PAD		(0x325)
583*ebfedea0SLionel Sambuc #define CKM_CAST128_CBC_PAD		(0x325)
584*ebfedea0SLionel Sambuc #define CKM_RC5_KEY_GEN			(0x330)
585*ebfedea0SLionel Sambuc #define CKM_RC5_ECB			(0x331)
586*ebfedea0SLionel Sambuc #define CKM_RC5_CBC			(0x332)
587*ebfedea0SLionel Sambuc #define CKM_RC5_MAC			(0x333)
588*ebfedea0SLionel Sambuc #define CKM_RC5_MAC_GENERAL		(0x334)
589*ebfedea0SLionel Sambuc #define CKM_RC5_CBC_PAD			(0x335)
590*ebfedea0SLionel Sambuc #define CKM_IDEA_KEY_GEN		(0x340)
591*ebfedea0SLionel Sambuc #define CKM_IDEA_ECB			(0x341)
592*ebfedea0SLionel Sambuc #define	CKM_IDEA_CBC			(0x342)
593*ebfedea0SLionel Sambuc #define CKM_IDEA_MAC			(0x343)
594*ebfedea0SLionel Sambuc #define CKM_IDEA_MAC_GENERAL		(0x344)
595*ebfedea0SLionel Sambuc #define CKM_IDEA_CBC_PAD		(0x345)
596*ebfedea0SLionel Sambuc #define CKM_GENERIC_SECRET_KEY_GEN	(0x350)
597*ebfedea0SLionel Sambuc #define CKM_CONCATENATE_BASE_AND_KEY	(0x360)
598*ebfedea0SLionel Sambuc #define CKM_CONCATENATE_BASE_AND_DATA	(0x362)
599*ebfedea0SLionel Sambuc #define CKM_CONCATENATE_DATA_AND_BASE	(0x363)
600*ebfedea0SLionel Sambuc #define CKM_XOR_BASE_AND_DATA		(0x364)
601*ebfedea0SLionel Sambuc #define CKM_EXTRACT_KEY_FROM_KEY	(0x365)
602*ebfedea0SLionel Sambuc #define CKM_SSL3_PRE_MASTER_KEY_GEN	(0x370)
603*ebfedea0SLionel Sambuc #define CKM_SSL3_MASTER_KEY_DERIVE	(0x371)
604*ebfedea0SLionel Sambuc #define CKM_SSL3_KEY_AND_MAC_DERIVE	(0x372)
605*ebfedea0SLionel Sambuc #define CKM_SSL3_MASTER_KEY_DERIVE_DH	(0x373)
606*ebfedea0SLionel Sambuc #define CKM_TLS_PRE_MASTER_KEY_GEN	(0x374)
607*ebfedea0SLionel Sambuc #define CKM_TLS_MASTER_KEY_DERIVE	(0x375)
608*ebfedea0SLionel Sambuc #define CKM_TLS_KEY_AND_MAC_DERIVE	(0x376)
609*ebfedea0SLionel Sambuc #define CKM_TLS_MASTER_KEY_DERIVE_DH	(0x377)
610*ebfedea0SLionel Sambuc #define CKM_SSL3_MD5_MAC		(0x380)
611*ebfedea0SLionel Sambuc #define CKM_SSL3_SHA1_MAC		(0x381)
612*ebfedea0SLionel Sambuc #define CKM_MD5_KEY_DERIVATION		(0x390)
613*ebfedea0SLionel Sambuc #define CKM_MD2_KEY_DERIVATION		(0x391)
614*ebfedea0SLionel Sambuc #define CKM_SHA1_KEY_DERIVATION		(0x392)
615*ebfedea0SLionel Sambuc #define CKM_PBE_MD2_DES_CBC		(0x3a0)
616*ebfedea0SLionel Sambuc #define CKM_PBE_MD5_DES_CBC		(0x3a1)
617*ebfedea0SLionel Sambuc #define CKM_PBE_MD5_CAST_CBC		(0x3a2)
618*ebfedea0SLionel Sambuc #define CKM_PBE_MD5_CAST3_CBC		(0x3a3)
619*ebfedea0SLionel Sambuc #define CKM_PBE_MD5_CAST5_CBC		(0x3a4)
620*ebfedea0SLionel Sambuc #define CKM_PBE_MD5_CAST128_CBC		(0x3a4)
621*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_CAST5_CBC		(0x3a5)
622*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_CAST128_CBC	(0x3a5)
623*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_RC4_128		(0x3a6)
624*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_RC4_40		(0x3a7)
625*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_DES3_EDE_CBC	(0x3a8)
626*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_DES2_EDE_CBC	(0x3a9)
627*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_RC2_128_CBC	(0x3aa)
628*ebfedea0SLionel Sambuc #define CKM_PBE_SHA1_RC2_40_CBC		(0x3ab)
629*ebfedea0SLionel Sambuc #define CKM_PKCS5_PBKD2			(0x3b0)
630*ebfedea0SLionel Sambuc #define CKM_PBA_SHA1_WITH_SHA1_HMAC	(0x3c0)
631*ebfedea0SLionel Sambuc #define CKM_KEY_WRAP_LYNKS		(0x400)
632*ebfedea0SLionel Sambuc #define CKM_KEY_WRAP_SET_OAEP		(0x401)
633*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_KEY_GEN		(0x1000)
634*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_ECB64		(0x1001)
635*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_CBC64		(0x1002)
636*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_OFB64		(0x1003)
637*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_CFB64		(0x1004)
638*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_CFB32		(0x1005)
639*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_CFB16		(0x1006)
640*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_CFB8		(0x1007)
641*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_WRAP		(0x1008)
642*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_PRIVATE_WRAP	(0x1009)
643*ebfedea0SLionel Sambuc #define CKM_SKIPJACK_RELAYX		(0x100a)
644*ebfedea0SLionel Sambuc #define CKM_KEA_KEY_PAIR_GEN		(0x1010)
645*ebfedea0SLionel Sambuc #define CKM_KEA_KEY_DERIVE		(0x1011)
646*ebfedea0SLionel Sambuc #define CKM_FORTEZZA_TIMESTAMP		(0x1020)
647*ebfedea0SLionel Sambuc #define CKM_BATON_KEY_GEN		(0x1030)
648*ebfedea0SLionel Sambuc #define CKM_BATON_ECB128		(0x1031)
649*ebfedea0SLionel Sambuc #define CKM_BATON_ECB96			(0x1032)
650*ebfedea0SLionel Sambuc #define CKM_BATON_CBC128		(0x1033)
651*ebfedea0SLionel Sambuc #define CKM_BATON_COUNTER		(0x1034)
652*ebfedea0SLionel Sambuc #define CKM_BATON_SHUFFLE		(0x1035)
653*ebfedea0SLionel Sambuc #define CKM_BATON_WRAP			(0x1036)
654*ebfedea0SLionel Sambuc #define CKM_ECDSA_KEY_PAIR_GEN		(0x1040)
655*ebfedea0SLionel Sambuc #define CKM_EC_KEY_PAIR_GEN		(0x1040)
656*ebfedea0SLionel Sambuc #define CKM_ECDSA			(0x1041)
657*ebfedea0SLionel Sambuc #define CKM_ECDSA_SHA1			(0x1042)
658*ebfedea0SLionel Sambuc #define CKM_ECDH1_DERIVE		(0x1050)
659*ebfedea0SLionel Sambuc #define CKM_ECDH1_COFACTOR_DERIVE	(0x1051)
660*ebfedea0SLionel Sambuc #define CKM_ECMQV_DERIVE		(0x1052)
661*ebfedea0SLionel Sambuc #define CKM_JUNIPER_KEY_GEN		(0x1060)
662*ebfedea0SLionel Sambuc #define CKM_JUNIPER_ECB128		(0x1061)
663*ebfedea0SLionel Sambuc #define CKM_JUNIPER_CBC128		(0x1062)
664*ebfedea0SLionel Sambuc #define CKM_JUNIPER_COUNTER		(0x1063)
665*ebfedea0SLionel Sambuc #define CKM_JUNIPER_SHUFFLE		(0x1064)
666*ebfedea0SLionel Sambuc #define CKM_JUNIPER_WRAP		(0x1065)
667*ebfedea0SLionel Sambuc #define CKM_FASTHASH			(0x1070)
668*ebfedea0SLionel Sambuc #define CKM_AES_KEY_GEN			(0x1080)
669*ebfedea0SLionel Sambuc #define CKM_AES_ECB			(0x1081)
670*ebfedea0SLionel Sambuc #define CKM_AES_CBC			(0x1082)
671*ebfedea0SLionel Sambuc #define CKM_AES_MAC			(0x1083)
672*ebfedea0SLionel Sambuc #define CKM_AES_MAC_GENERAL		(0x1084)
673*ebfedea0SLionel Sambuc #define CKM_AES_CBC_PAD			(0x1085)
674*ebfedea0SLionel Sambuc #define CKM_DSA_PARAMETER_GEN		(0x2000)
675*ebfedea0SLionel Sambuc #define CKM_DH_PKCS_PARAMETER_GEN	(0x2001)
676*ebfedea0SLionel Sambuc #define CKM_X9_42_DH_PARAMETER_GEN	(0x2002)
677*ebfedea0SLionel Sambuc #define CKM_VENDOR_DEFINED		((unsigned long) (1 << 31))
678*ebfedea0SLionel Sambuc 
679*ebfedea0SLionel Sambuc 
680*ebfedea0SLionel Sambuc struct ck_mechanism
681*ebfedea0SLionel Sambuc {
682*ebfedea0SLionel Sambuc   ck_mechanism_type_t mechanism;
683*ebfedea0SLionel Sambuc   void *parameter;
684*ebfedea0SLionel Sambuc   unsigned long parameter_len;
685*ebfedea0SLionel Sambuc };
686*ebfedea0SLionel Sambuc 
687*ebfedea0SLionel Sambuc 
688*ebfedea0SLionel Sambuc struct ck_mechanism_info
689*ebfedea0SLionel Sambuc {
690*ebfedea0SLionel Sambuc   unsigned long min_key_size;
691*ebfedea0SLionel Sambuc   unsigned long max_key_size;
692*ebfedea0SLionel Sambuc   ck_flags_t flags;
693*ebfedea0SLionel Sambuc };
694*ebfedea0SLionel Sambuc 
695*ebfedea0SLionel Sambuc #define CKF_HW			(1 << 0)
696*ebfedea0SLionel Sambuc #define CKF_ENCRYPT		(1 << 8)
697*ebfedea0SLionel Sambuc #define CKF_DECRYPT		(1 << 9)
698*ebfedea0SLionel Sambuc #define CKF_DIGEST		(1 << 10)
699*ebfedea0SLionel Sambuc #define CKF_SIGN		(1 << 11)
700*ebfedea0SLionel Sambuc #define CKF_SIGN_RECOVER	(1 << 12)
701*ebfedea0SLionel Sambuc #define CKF_VERIFY		(1 << 13)
702*ebfedea0SLionel Sambuc #define CKF_VERIFY_RECOVER	(1 << 14)
703*ebfedea0SLionel Sambuc #define CKF_GENERATE		(1 << 15)
704*ebfedea0SLionel Sambuc #define CKF_GENERATE_KEY_PAIR	(1 << 16)
705*ebfedea0SLionel Sambuc #define CKF_WRAP		(1 << 17)
706*ebfedea0SLionel Sambuc #define CKF_UNWRAP		(1 << 18)
707*ebfedea0SLionel Sambuc #define CKF_DERIVE		(1 << 19)
708*ebfedea0SLionel Sambuc #define CKF_EXTENSION		((unsigned long) (1 << 31))
709*ebfedea0SLionel Sambuc 
710*ebfedea0SLionel Sambuc 
711*ebfedea0SLionel Sambuc /* Flags for C_WaitForSlotEvent.  */
712*ebfedea0SLionel Sambuc #define CKF_DONT_BLOCK				(1)
713*ebfedea0SLionel Sambuc 
714*ebfedea0SLionel Sambuc 
715*ebfedea0SLionel Sambuc typedef unsigned long ck_rv_t;
716*ebfedea0SLionel Sambuc 
717*ebfedea0SLionel Sambuc 
718*ebfedea0SLionel Sambuc typedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session,
719*ebfedea0SLionel Sambuc 				ck_notification_t event, void *application);
720*ebfedea0SLionel Sambuc 
721*ebfedea0SLionel Sambuc /* Forward reference.  */
722*ebfedea0SLionel Sambuc struct ck_function_list;
723*ebfedea0SLionel Sambuc 
724*ebfedea0SLionel Sambuc #define _CK_DECLARE_FUNCTION(name, args)	\
725*ebfedea0SLionel Sambuc typedef ck_rv_t (*CK_ ## name) args;		\
726*ebfedea0SLionel Sambuc ck_rv_t CK_SPEC name args
727*ebfedea0SLionel Sambuc 
728*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Initialize, (void *init_args));
729*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Finalize, (void *reserved));
730*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info));
731*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetFunctionList,
732*ebfedea0SLionel Sambuc 		      (struct ck_function_list **function_list));
733*ebfedea0SLionel Sambuc 
734*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetSlotList,
735*ebfedea0SLionel Sambuc 		      (unsigned char token_present, ck_slot_id_t *slot_list,
736*ebfedea0SLionel Sambuc 		       unsigned long *count));
737*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetSlotInfo,
738*ebfedea0SLionel Sambuc 		      (ck_slot_id_t slot_id, struct ck_slot_info *info));
739*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetTokenInfo,
740*ebfedea0SLionel Sambuc 		      (ck_slot_id_t slot_id, struct ck_token_info *info));
741*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_WaitForSlotEvent,
742*ebfedea0SLionel Sambuc 		      (ck_flags_t flags, ck_slot_id_t *slot, void *reserved));
743*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetMechanismList,
744*ebfedea0SLionel Sambuc 		      (ck_slot_id_t slot_id,
745*ebfedea0SLionel Sambuc 		       ck_mechanism_type_t *mechanism_list,
746*ebfedea0SLionel Sambuc 		       unsigned long *count));
747*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetMechanismInfo,
748*ebfedea0SLionel Sambuc 		      (ck_slot_id_t slot_id, ck_mechanism_type_t type,
749*ebfedea0SLionel Sambuc 		       struct ck_mechanism_info *info));
750*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_InitToken,
751*ebfedea0SLionel Sambuc 		      (ck_slot_id_t slot_id, unsigned char *pin,
752*ebfedea0SLionel Sambuc 		       unsigned long pin_len, unsigned char *label));
753*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_InitPIN,
754*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session, unsigned char *pin,
755*ebfedea0SLionel Sambuc 		       unsigned long pin_len));
756*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SetPIN,
757*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session, unsigned char *old_pin,
758*ebfedea0SLionel Sambuc 		       unsigned long old_len, unsigned char *new_pin,
759*ebfedea0SLionel Sambuc 		       unsigned long new_len));
760*ebfedea0SLionel Sambuc 
761*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_OpenSession,
762*ebfedea0SLionel Sambuc 		      (ck_slot_id_t slot_id, ck_flags_t flags,
763*ebfedea0SLionel Sambuc 		       void *application, ck_notify_t notify,
764*ebfedea0SLionel Sambuc 		       ck_session_handle_t *session));
765*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session));
766*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id));
767*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetSessionInfo,
768*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
769*ebfedea0SLionel Sambuc 		       struct ck_session_info *info));
770*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetOperationState,
771*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
772*ebfedea0SLionel Sambuc 		       unsigned char *operation_state,
773*ebfedea0SLionel Sambuc 		       unsigned long *operation_state_len));
774*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SetOperationState,
775*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
776*ebfedea0SLionel Sambuc 		       unsigned char *operation_state,
777*ebfedea0SLionel Sambuc 		       unsigned long operation_state_len,
778*ebfedea0SLionel Sambuc 		       ck_object_handle_t encryption_key,
779*ebfedea0SLionel Sambuc 		       ck_object_handle_t authentiation_key));
780*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Login,
781*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session, ck_user_type_t user_type,
782*ebfedea0SLionel Sambuc 		       unsigned char *pin, unsigned long pin_len));
783*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session));
784*ebfedea0SLionel Sambuc 
785*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_CreateObject,
786*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
787*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ,
788*ebfedea0SLionel Sambuc 		       unsigned long count, ck_object_handle_t *object));
789*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_CopyObject,
790*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session, ck_object_handle_t object,
791*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ, unsigned long count,
792*ebfedea0SLionel Sambuc 		       ck_object_handle_t *new_object));
793*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DestroyObject,
794*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
795*ebfedea0SLionel Sambuc 		       ck_object_handle_t object));
796*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetObjectSize,
797*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
798*ebfedea0SLionel Sambuc 		       ck_object_handle_t object,
799*ebfedea0SLionel Sambuc 		       unsigned long *size));
800*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetAttributeValue,
801*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
802*ebfedea0SLionel Sambuc 		       ck_object_handle_t object,
803*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ,
804*ebfedea0SLionel Sambuc 		       unsigned long count));
805*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SetAttributeValue,
806*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
807*ebfedea0SLionel Sambuc 		       ck_object_handle_t object,
808*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ,
809*ebfedea0SLionel Sambuc 		       unsigned long count));
810*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_FindObjectsInit,
811*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
812*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ,
813*ebfedea0SLionel Sambuc 		       unsigned long count));
814*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_FindObjects,
815*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
816*ebfedea0SLionel Sambuc 		       ck_object_handle_t *object,
817*ebfedea0SLionel Sambuc 		       unsigned long max_object_count,
818*ebfedea0SLionel Sambuc 		       unsigned long *object_count));
819*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_FindObjectsFinal,
820*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session));
821*ebfedea0SLionel Sambuc 
822*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_EncryptInit,
823*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
824*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
825*ebfedea0SLionel Sambuc 		       ck_object_handle_t key));
826*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Encrypt,
827*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
828*ebfedea0SLionel Sambuc 		       unsigned char *data, unsigned long data_len,
829*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_data,
830*ebfedea0SLionel Sambuc 		       unsigned long *encrypted_data_len));
831*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_EncryptUpdate,
832*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
833*ebfedea0SLionel Sambuc 		       unsigned char *part, unsigned long part_len,
834*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_part,
835*ebfedea0SLionel Sambuc 		       unsigned long *encrypted_part_len));
836*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_EncryptFinal,
837*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
838*ebfedea0SLionel Sambuc 		       unsigned char *last_encrypted_part,
839*ebfedea0SLionel Sambuc 		       unsigned long *last_encrypted_part_len));
840*ebfedea0SLionel Sambuc 
841*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DecryptInit,
842*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
843*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
844*ebfedea0SLionel Sambuc 		       ck_object_handle_t key));
845*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Decrypt,
846*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
847*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_data,
848*ebfedea0SLionel Sambuc 		       unsigned long encrypted_data_len,
849*ebfedea0SLionel Sambuc 		       unsigned char *data, unsigned long *data_len));
850*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DecryptUpdate,
851*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
852*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_part,
853*ebfedea0SLionel Sambuc 		       unsigned long encrypted_part_len,
854*ebfedea0SLionel Sambuc 		       unsigned char *part, unsigned long *part_len));
855*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DecryptFinal,
856*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
857*ebfedea0SLionel Sambuc 		       unsigned char *last_part,
858*ebfedea0SLionel Sambuc 		       unsigned long *last_part_len));
859*ebfedea0SLionel Sambuc 
860*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DigestInit,
861*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
862*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism));
863*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Digest,
864*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
865*ebfedea0SLionel Sambuc 		       unsigned char *data, unsigned long data_len,
866*ebfedea0SLionel Sambuc 		       unsigned char *digest,
867*ebfedea0SLionel Sambuc 		       unsigned long *digest_len));
868*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DigestUpdate,
869*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
870*ebfedea0SLionel Sambuc 		       unsigned char *part, unsigned long part_len));
871*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DigestKey,
872*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session, ck_object_handle_t key));
873*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DigestFinal,
874*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
875*ebfedea0SLionel Sambuc 		       unsigned char *digest,
876*ebfedea0SLionel Sambuc 		       unsigned long *digest_len));
877*ebfedea0SLionel Sambuc 
878*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SignInit,
879*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
880*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
881*ebfedea0SLionel Sambuc 		       ck_object_handle_t key));
882*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Sign,
883*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
884*ebfedea0SLionel Sambuc 		       unsigned char *data, unsigned long data_len,
885*ebfedea0SLionel Sambuc 		       unsigned char *signature,
886*ebfedea0SLionel Sambuc 		       unsigned long *signature_len));
887*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SignUpdate,
888*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
889*ebfedea0SLionel Sambuc 		       unsigned char *part, unsigned long part_len));
890*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SignFinal,
891*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
892*ebfedea0SLionel Sambuc 		       unsigned char *signature,
893*ebfedea0SLionel Sambuc 		       unsigned long *signature_len));
894*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SignRecoverInit,
895*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
896*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
897*ebfedea0SLionel Sambuc 		       ck_object_handle_t key));
898*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SignRecover,
899*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
900*ebfedea0SLionel Sambuc 		       unsigned char *data, unsigned long data_len,
901*ebfedea0SLionel Sambuc 		       unsigned char *signature,
902*ebfedea0SLionel Sambuc 		       unsigned long *signature_len));
903*ebfedea0SLionel Sambuc 
904*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_VerifyInit,
905*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
906*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
907*ebfedea0SLionel Sambuc 		       ck_object_handle_t key));
908*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_Verify,
909*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
910*ebfedea0SLionel Sambuc 		       unsigned char *data, unsigned long data_len,
911*ebfedea0SLionel Sambuc 		       unsigned char *signature,
912*ebfedea0SLionel Sambuc 		       unsigned long signature_len));
913*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_VerifyUpdate,
914*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
915*ebfedea0SLionel Sambuc 		       unsigned char *part, unsigned long part_len));
916*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_VerifyFinal,
917*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
918*ebfedea0SLionel Sambuc 		       unsigned char *signature,
919*ebfedea0SLionel Sambuc 		       unsigned long signature_len));
920*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_VerifyRecoverInit,
921*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
922*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
923*ebfedea0SLionel Sambuc 		       ck_object_handle_t key));
924*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_VerifyRecover,
925*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
926*ebfedea0SLionel Sambuc 		       unsigned char *signature,
927*ebfedea0SLionel Sambuc 		       unsigned long signature_len,
928*ebfedea0SLionel Sambuc 		       unsigned char *data,
929*ebfedea0SLionel Sambuc 		       unsigned long *data_len));
930*ebfedea0SLionel Sambuc 
931*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DigestEncryptUpdate,
932*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
933*ebfedea0SLionel Sambuc 		       unsigned char *part, unsigned long part_len,
934*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_part,
935*ebfedea0SLionel Sambuc 		       unsigned long *encrypted_part_len));
936*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DecryptDigestUpdate,
937*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
938*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_part,
939*ebfedea0SLionel Sambuc 		       unsigned long encrypted_part_len,
940*ebfedea0SLionel Sambuc 		       unsigned char *part,
941*ebfedea0SLionel Sambuc 		       unsigned long *part_len));
942*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SignEncryptUpdate,
943*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
944*ebfedea0SLionel Sambuc 		       unsigned char *part, unsigned long part_len,
945*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_part,
946*ebfedea0SLionel Sambuc 		       unsigned long *encrypted_part_len));
947*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate,
948*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
949*ebfedea0SLionel Sambuc 		       unsigned char *encrypted_part,
950*ebfedea0SLionel Sambuc 		       unsigned long encrypted_part_len,
951*ebfedea0SLionel Sambuc 		       unsigned char *part,
952*ebfedea0SLionel Sambuc 		       unsigned long *part_len));
953*ebfedea0SLionel Sambuc 
954*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GenerateKey,
955*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
956*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
957*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ,
958*ebfedea0SLionel Sambuc 		       unsigned long count,
959*ebfedea0SLionel Sambuc 		       ck_object_handle_t *key));
960*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GenerateKeyPair,
961*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
962*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
963*ebfedea0SLionel Sambuc 		       struct ck_attribute *public_key_template,
964*ebfedea0SLionel Sambuc 		       unsigned long public_key_attribute_count,
965*ebfedea0SLionel Sambuc 		       struct ck_attribute *private_key_template,
966*ebfedea0SLionel Sambuc 		       unsigned long private_key_attribute_count,
967*ebfedea0SLionel Sambuc 		       ck_object_handle_t *public_key,
968*ebfedea0SLionel Sambuc 		       ck_object_handle_t *private_key));
969*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_WrapKey,
970*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
971*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
972*ebfedea0SLionel Sambuc 		       ck_object_handle_t wrapping_key,
973*ebfedea0SLionel Sambuc 		       ck_object_handle_t key,
974*ebfedea0SLionel Sambuc 		       unsigned char *wrapped_key,
975*ebfedea0SLionel Sambuc 		       unsigned long *wrapped_key_len));
976*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_UnwrapKey,
977*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
978*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
979*ebfedea0SLionel Sambuc 		       ck_object_handle_t unwrapping_key,
980*ebfedea0SLionel Sambuc 		       unsigned char *wrapped_key,
981*ebfedea0SLionel Sambuc 		       unsigned long wrapped_key_len,
982*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ,
983*ebfedea0SLionel Sambuc 		       unsigned long attribute_count,
984*ebfedea0SLionel Sambuc 		       ck_object_handle_t *key));
985*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_DeriveKey,
986*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
987*ebfedea0SLionel Sambuc 		       struct ck_mechanism *mechanism,
988*ebfedea0SLionel Sambuc 		       ck_object_handle_t base_key,
989*ebfedea0SLionel Sambuc 		       struct ck_attribute *templ,
990*ebfedea0SLionel Sambuc 		       unsigned long attribute_count,
991*ebfedea0SLionel Sambuc 		       ck_object_handle_t *key));
992*ebfedea0SLionel Sambuc 
993*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_SeedRandom,
994*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session, unsigned char *seed,
995*ebfedea0SLionel Sambuc 		       unsigned long seed_len));
996*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GenerateRandom,
997*ebfedea0SLionel Sambuc 		      (ck_session_handle_t session,
998*ebfedea0SLionel Sambuc 		       unsigned char *random_data,
999*ebfedea0SLionel Sambuc 		       unsigned long random_len));
1000*ebfedea0SLionel Sambuc 
1001*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session));
1002*ebfedea0SLionel Sambuc _CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session));
1003*ebfedea0SLionel Sambuc 
1004*ebfedea0SLionel Sambuc 
1005*ebfedea0SLionel Sambuc struct ck_function_list
1006*ebfedea0SLionel Sambuc {
1007*ebfedea0SLionel Sambuc   struct ck_version version;
1008*ebfedea0SLionel Sambuc   CK_C_Initialize C_Initialize;
1009*ebfedea0SLionel Sambuc   CK_C_Finalize C_Finalize;
1010*ebfedea0SLionel Sambuc   CK_C_GetInfo C_GetInfo;
1011*ebfedea0SLionel Sambuc   CK_C_GetFunctionList C_GetFunctionList;
1012*ebfedea0SLionel Sambuc   CK_C_GetSlotList C_GetSlotList;
1013*ebfedea0SLionel Sambuc   CK_C_GetSlotInfo C_GetSlotInfo;
1014*ebfedea0SLionel Sambuc   CK_C_GetTokenInfo C_GetTokenInfo;
1015*ebfedea0SLionel Sambuc   CK_C_GetMechanismList C_GetMechanismList;
1016*ebfedea0SLionel Sambuc   CK_C_GetMechanismInfo C_GetMechanismInfo;
1017*ebfedea0SLionel Sambuc   CK_C_InitToken C_InitToken;
1018*ebfedea0SLionel Sambuc   CK_C_InitPIN C_InitPIN;
1019*ebfedea0SLionel Sambuc   CK_C_SetPIN C_SetPIN;
1020*ebfedea0SLionel Sambuc   CK_C_OpenSession C_OpenSession;
1021*ebfedea0SLionel Sambuc   CK_C_CloseSession C_CloseSession;
1022*ebfedea0SLionel Sambuc   CK_C_CloseAllSessions C_CloseAllSessions;
1023*ebfedea0SLionel Sambuc   CK_C_GetSessionInfo C_GetSessionInfo;
1024*ebfedea0SLionel Sambuc   CK_C_GetOperationState C_GetOperationState;
1025*ebfedea0SLionel Sambuc   CK_C_SetOperationState C_SetOperationState;
1026*ebfedea0SLionel Sambuc   CK_C_Login C_Login;
1027*ebfedea0SLionel Sambuc   CK_C_Logout C_Logout;
1028*ebfedea0SLionel Sambuc   CK_C_CreateObject C_CreateObject;
1029*ebfedea0SLionel Sambuc   CK_C_CopyObject C_CopyObject;
1030*ebfedea0SLionel Sambuc   CK_C_DestroyObject C_DestroyObject;
1031*ebfedea0SLionel Sambuc   CK_C_GetObjectSize C_GetObjectSize;
1032*ebfedea0SLionel Sambuc   CK_C_GetAttributeValue C_GetAttributeValue;
1033*ebfedea0SLionel Sambuc   CK_C_SetAttributeValue C_SetAttributeValue;
1034*ebfedea0SLionel Sambuc   CK_C_FindObjectsInit C_FindObjectsInit;
1035*ebfedea0SLionel Sambuc   CK_C_FindObjects C_FindObjects;
1036*ebfedea0SLionel Sambuc   CK_C_FindObjectsFinal C_FindObjectsFinal;
1037*ebfedea0SLionel Sambuc   CK_C_EncryptInit C_EncryptInit;
1038*ebfedea0SLionel Sambuc   CK_C_Encrypt C_Encrypt;
1039*ebfedea0SLionel Sambuc   CK_C_EncryptUpdate C_EncryptUpdate;
1040*ebfedea0SLionel Sambuc   CK_C_EncryptFinal C_EncryptFinal;
1041*ebfedea0SLionel Sambuc   CK_C_DecryptInit C_DecryptInit;
1042*ebfedea0SLionel Sambuc   CK_C_Decrypt C_Decrypt;
1043*ebfedea0SLionel Sambuc   CK_C_DecryptUpdate C_DecryptUpdate;
1044*ebfedea0SLionel Sambuc   CK_C_DecryptFinal C_DecryptFinal;
1045*ebfedea0SLionel Sambuc   CK_C_DigestInit C_DigestInit;
1046*ebfedea0SLionel Sambuc   CK_C_Digest C_Digest;
1047*ebfedea0SLionel Sambuc   CK_C_DigestUpdate C_DigestUpdate;
1048*ebfedea0SLionel Sambuc   CK_C_DigestKey C_DigestKey;
1049*ebfedea0SLionel Sambuc   CK_C_DigestFinal C_DigestFinal;
1050*ebfedea0SLionel Sambuc   CK_C_SignInit C_SignInit;
1051*ebfedea0SLionel Sambuc   CK_C_Sign C_Sign;
1052*ebfedea0SLionel Sambuc   CK_C_SignUpdate C_SignUpdate;
1053*ebfedea0SLionel Sambuc   CK_C_SignFinal C_SignFinal;
1054*ebfedea0SLionel Sambuc   CK_C_SignRecoverInit C_SignRecoverInit;
1055*ebfedea0SLionel Sambuc   CK_C_SignRecover C_SignRecover;
1056*ebfedea0SLionel Sambuc   CK_C_VerifyInit C_VerifyInit;
1057*ebfedea0SLionel Sambuc   CK_C_Verify C_Verify;
1058*ebfedea0SLionel Sambuc   CK_C_VerifyUpdate C_VerifyUpdate;
1059*ebfedea0SLionel Sambuc   CK_C_VerifyFinal C_VerifyFinal;
1060*ebfedea0SLionel Sambuc   CK_C_VerifyRecoverInit C_VerifyRecoverInit;
1061*ebfedea0SLionel Sambuc   CK_C_VerifyRecover C_VerifyRecover;
1062*ebfedea0SLionel Sambuc   CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
1063*ebfedea0SLionel Sambuc   CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
1064*ebfedea0SLionel Sambuc   CK_C_SignEncryptUpdate C_SignEncryptUpdate;
1065*ebfedea0SLionel Sambuc   CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
1066*ebfedea0SLionel Sambuc   CK_C_GenerateKey C_GenerateKey;
1067*ebfedea0SLionel Sambuc   CK_C_GenerateKeyPair C_GenerateKeyPair;
1068*ebfedea0SLionel Sambuc   CK_C_WrapKey C_WrapKey;
1069*ebfedea0SLionel Sambuc   CK_C_UnwrapKey C_UnwrapKey;
1070*ebfedea0SLionel Sambuc   CK_C_DeriveKey C_DeriveKey;
1071*ebfedea0SLionel Sambuc   CK_C_SeedRandom C_SeedRandom;
1072*ebfedea0SLionel Sambuc   CK_C_GenerateRandom C_GenerateRandom;
1073*ebfedea0SLionel Sambuc   CK_C_GetFunctionStatus C_GetFunctionStatus;
1074*ebfedea0SLionel Sambuc   CK_C_CancelFunction C_CancelFunction;
1075*ebfedea0SLionel Sambuc   CK_C_WaitForSlotEvent C_WaitForSlotEvent;
1076*ebfedea0SLionel Sambuc };
1077*ebfedea0SLionel Sambuc 
1078*ebfedea0SLionel Sambuc 
1079*ebfedea0SLionel Sambuc typedef ck_rv_t (*ck_createmutex_t) (void **mutex);
1080*ebfedea0SLionel Sambuc typedef ck_rv_t (*ck_destroymutex_t) (void *mutex);
1081*ebfedea0SLionel Sambuc typedef ck_rv_t (*ck_lockmutex_t) (void *mutex);
1082*ebfedea0SLionel Sambuc typedef ck_rv_t (*ck_unlockmutex_t) (void *mutex);
1083*ebfedea0SLionel Sambuc 
1084*ebfedea0SLionel Sambuc 
1085*ebfedea0SLionel Sambuc struct ck_c_initialize_args
1086*ebfedea0SLionel Sambuc {
1087*ebfedea0SLionel Sambuc   ck_createmutex_t create_mutex;
1088*ebfedea0SLionel Sambuc   ck_destroymutex_t destroy_mutex;
1089*ebfedea0SLionel Sambuc   ck_lockmutex_t lock_mutex;
1090*ebfedea0SLionel Sambuc   ck_unlockmutex_t unlock_mutex;
1091*ebfedea0SLionel Sambuc   ck_flags_t flags;
1092*ebfedea0SLionel Sambuc   void *reserved;
1093*ebfedea0SLionel Sambuc };
1094*ebfedea0SLionel Sambuc 
1095*ebfedea0SLionel Sambuc 
1096*ebfedea0SLionel Sambuc #define CKF_LIBRARY_CANT_CREATE_OS_THREADS	(1 << 0)
1097*ebfedea0SLionel Sambuc #define CKF_OS_LOCKING_OK			(1 << 1)
1098*ebfedea0SLionel Sambuc 
1099*ebfedea0SLionel Sambuc #define CKR_OK					(0)
1100*ebfedea0SLionel Sambuc #define CKR_CANCEL				(1)
1101*ebfedea0SLionel Sambuc #define CKR_HOST_MEMORY				(2)
1102*ebfedea0SLionel Sambuc #define CKR_SLOT_ID_INVALID			(3)
1103*ebfedea0SLionel Sambuc #define CKR_GENERAL_ERROR			(5)
1104*ebfedea0SLionel Sambuc #define CKR_FUNCTION_FAILED			(6)
1105*ebfedea0SLionel Sambuc #define CKR_ARGUMENTS_BAD			(7)
1106*ebfedea0SLionel Sambuc #define CKR_NO_EVENT				(8)
1107*ebfedea0SLionel Sambuc #define CKR_NEED_TO_CREATE_THREADS		(9)
1108*ebfedea0SLionel Sambuc #define CKR_CANT_LOCK				(0xa)
1109*ebfedea0SLionel Sambuc #define CKR_ATTRIBUTE_READ_ONLY			(0x10)
1110*ebfedea0SLionel Sambuc #define CKR_ATTRIBUTE_SENSITIVE			(0x11)
1111*ebfedea0SLionel Sambuc #define CKR_ATTRIBUTE_TYPE_INVALID		(0x12)
1112*ebfedea0SLionel Sambuc #define CKR_ATTRIBUTE_VALUE_INVALID		(0x13)
1113*ebfedea0SLionel Sambuc #define CKR_DATA_INVALID			(0x20)
1114*ebfedea0SLionel Sambuc #define CKR_DATA_LEN_RANGE			(0x21)
1115*ebfedea0SLionel Sambuc #define CKR_DEVICE_ERROR			(0x30)
1116*ebfedea0SLionel Sambuc #define CKR_DEVICE_MEMORY			(0x31)
1117*ebfedea0SLionel Sambuc #define CKR_DEVICE_REMOVED			(0x32)
1118*ebfedea0SLionel Sambuc #define CKR_ENCRYPTED_DATA_INVALID		(0x40)
1119*ebfedea0SLionel Sambuc #define CKR_ENCRYPTED_DATA_LEN_RANGE		(0x41)
1120*ebfedea0SLionel Sambuc #define CKR_FUNCTION_CANCELED			(0x50)
1121*ebfedea0SLionel Sambuc #define CKR_FUNCTION_NOT_PARALLEL		(0x51)
1122*ebfedea0SLionel Sambuc #define CKR_FUNCTION_NOT_SUPPORTED		(0x54)
1123*ebfedea0SLionel Sambuc #define CKR_KEY_HANDLE_INVALID			(0x60)
1124*ebfedea0SLionel Sambuc #define CKR_KEY_SIZE_RANGE			(0x62)
1125*ebfedea0SLionel Sambuc #define CKR_KEY_TYPE_INCONSISTENT		(0x63)
1126*ebfedea0SLionel Sambuc #define CKR_KEY_NOT_NEEDED			(0x64)
1127*ebfedea0SLionel Sambuc #define CKR_KEY_CHANGED				(0x65)
1128*ebfedea0SLionel Sambuc #define CKR_KEY_NEEDED				(0x66)
1129*ebfedea0SLionel Sambuc #define CKR_KEY_INDIGESTIBLE			(0x67)
1130*ebfedea0SLionel Sambuc #define CKR_KEY_FUNCTION_NOT_PERMITTED		(0x68)
1131*ebfedea0SLionel Sambuc #define CKR_KEY_NOT_WRAPPABLE			(0x69)
1132*ebfedea0SLionel Sambuc #define CKR_KEY_UNEXTRACTABLE			(0x6a)
1133*ebfedea0SLionel Sambuc #define CKR_MECHANISM_INVALID			(0x70)
1134*ebfedea0SLionel Sambuc #define CKR_MECHANISM_PARAM_INVALID		(0x71)
1135*ebfedea0SLionel Sambuc #define CKR_OBJECT_HANDLE_INVALID		(0x82)
1136*ebfedea0SLionel Sambuc #define CKR_OPERATION_ACTIVE			(0x90)
1137*ebfedea0SLionel Sambuc #define CKR_OPERATION_NOT_INITIALIZED		(0x91)
1138*ebfedea0SLionel Sambuc #define CKR_PIN_INCORRECT			(0xa0)
1139*ebfedea0SLionel Sambuc #define CKR_PIN_INVALID				(0xa1)
1140*ebfedea0SLionel Sambuc #define CKR_PIN_LEN_RANGE			(0xa2)
1141*ebfedea0SLionel Sambuc #define CKR_PIN_EXPIRED				(0xa3)
1142*ebfedea0SLionel Sambuc #define CKR_PIN_LOCKED				(0xa4)
1143*ebfedea0SLionel Sambuc #define CKR_SESSION_CLOSED			(0xb0)
1144*ebfedea0SLionel Sambuc #define CKR_SESSION_COUNT			(0xb1)
1145*ebfedea0SLionel Sambuc #define CKR_SESSION_HANDLE_INVALID		(0xb3)
1146*ebfedea0SLionel Sambuc #define CKR_SESSION_PARALLEL_NOT_SUPPORTED	(0xb4)
1147*ebfedea0SLionel Sambuc #define CKR_SESSION_READ_ONLY			(0xb5)
1148*ebfedea0SLionel Sambuc #define CKR_SESSION_EXISTS			(0xb6)
1149*ebfedea0SLionel Sambuc #define CKR_SESSION_READ_ONLY_EXISTS		(0xb7)
1150*ebfedea0SLionel Sambuc #define CKR_SESSION_READ_WRITE_SO_EXISTS	(0xb8)
1151*ebfedea0SLionel Sambuc #define CKR_SIGNATURE_INVALID			(0xc0)
1152*ebfedea0SLionel Sambuc #define CKR_SIGNATURE_LEN_RANGE			(0xc1)
1153*ebfedea0SLionel Sambuc #define CKR_TEMPLATE_INCOMPLETE			(0xd0)
1154*ebfedea0SLionel Sambuc #define CKR_TEMPLATE_INCONSISTENT		(0xd1)
1155*ebfedea0SLionel Sambuc #define CKR_TOKEN_NOT_PRESENT			(0xe0)
1156*ebfedea0SLionel Sambuc #define CKR_TOKEN_NOT_RECOGNIZED		(0xe1)
1157*ebfedea0SLionel Sambuc #define CKR_TOKEN_WRITE_PROTECTED		(0xe2)
1158*ebfedea0SLionel Sambuc #define	CKR_UNWRAPPING_KEY_HANDLE_INVALID	(0xf0)
1159*ebfedea0SLionel Sambuc #define CKR_UNWRAPPING_KEY_SIZE_RANGE		(0xf1)
1160*ebfedea0SLionel Sambuc #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT	(0xf2)
1161*ebfedea0SLionel Sambuc #define CKR_USER_ALREADY_LOGGED_IN		(0x100)
1162*ebfedea0SLionel Sambuc #define CKR_USER_NOT_LOGGED_IN			(0x101)
1163*ebfedea0SLionel Sambuc #define CKR_USER_PIN_NOT_INITIALIZED		(0x102)
1164*ebfedea0SLionel Sambuc #define CKR_USER_TYPE_INVALID			(0x103)
1165*ebfedea0SLionel Sambuc #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN	(0x104)
1166*ebfedea0SLionel Sambuc #define CKR_USER_TOO_MANY_TYPES			(0x105)
1167*ebfedea0SLionel Sambuc #define CKR_WRAPPED_KEY_INVALID			(0x110)
1168*ebfedea0SLionel Sambuc #define CKR_WRAPPED_KEY_LEN_RANGE		(0x112)
1169*ebfedea0SLionel Sambuc #define CKR_WRAPPING_KEY_HANDLE_INVALID		(0x113)
1170*ebfedea0SLionel Sambuc #define CKR_WRAPPING_KEY_SIZE_RANGE		(0x114)
1171*ebfedea0SLionel Sambuc #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT	(0x115)
1172*ebfedea0SLionel Sambuc #define CKR_RANDOM_SEED_NOT_SUPPORTED		(0x120)
1173*ebfedea0SLionel Sambuc #define CKR_RANDOM_NO_RNG			(0x121)
1174*ebfedea0SLionel Sambuc #define CKR_DOMAIN_PARAMS_INVALID		(0x130)
1175*ebfedea0SLionel Sambuc #define CKR_BUFFER_TOO_SMALL			(0x150)
1176*ebfedea0SLionel Sambuc #define CKR_SAVED_STATE_INVALID			(0x160)
1177*ebfedea0SLionel Sambuc #define CKR_INFORMATION_SENSITIVE		(0x170)
1178*ebfedea0SLionel Sambuc #define CKR_STATE_UNSAVEABLE			(0x180)
1179*ebfedea0SLionel Sambuc #define CKR_CRYPTOKI_NOT_INITIALIZED		(0x190)
1180*ebfedea0SLionel Sambuc #define CKR_CRYPTOKI_ALREADY_INITIALIZED	(0x191)
1181*ebfedea0SLionel Sambuc #define CKR_MUTEX_BAD				(0x1a0)
1182*ebfedea0SLionel Sambuc #define CKR_MUTEX_NOT_LOCKED			(0x1a1)
1183*ebfedea0SLionel Sambuc #define CKR_FUNCTION_REJECTED			(0x200)
1184*ebfedea0SLionel Sambuc #define CKR_VENDOR_DEFINED			((unsigned long) (1 << 31))
1185*ebfedea0SLionel Sambuc 
1186*ebfedea0SLionel Sambuc 
1187*ebfedea0SLionel Sambuc 
1188*ebfedea0SLionel Sambuc /* Compatibility layer.  */
1189*ebfedea0SLionel Sambuc 
1190*ebfedea0SLionel Sambuc #ifdef CRYPTOKI_COMPAT
1191*ebfedea0SLionel Sambuc 
1192*ebfedea0SLionel Sambuc #undef CK_DEFINE_FUNCTION
1193*ebfedea0SLionel Sambuc #define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name
1194*ebfedea0SLionel Sambuc 
1195*ebfedea0SLionel Sambuc /* For NULL.  */
1196*ebfedea0SLionel Sambuc #include <stddef.h>
1197*ebfedea0SLionel Sambuc 
1198*ebfedea0SLionel Sambuc typedef unsigned char CK_BYTE;
1199*ebfedea0SLionel Sambuc typedef unsigned char CK_CHAR;
1200*ebfedea0SLionel Sambuc typedef unsigned char CK_UTF8CHAR;
1201*ebfedea0SLionel Sambuc typedef unsigned char CK_BBOOL;
1202*ebfedea0SLionel Sambuc typedef unsigned long int CK_ULONG;
1203*ebfedea0SLionel Sambuc typedef long int CK_LONG;
1204*ebfedea0SLionel Sambuc typedef CK_BYTE *CK_BYTE_PTR;
1205*ebfedea0SLionel Sambuc typedef CK_CHAR *CK_CHAR_PTR;
1206*ebfedea0SLionel Sambuc typedef CK_UTF8CHAR *CK_UTF8CHAR_PTR;
1207*ebfedea0SLionel Sambuc typedef CK_ULONG *CK_ULONG_PTR;
1208*ebfedea0SLionel Sambuc typedef void *CK_VOID_PTR;
1209*ebfedea0SLionel Sambuc typedef void **CK_VOID_PTR_PTR;
1210*ebfedea0SLionel Sambuc #define CK_FALSE 0
1211*ebfedea0SLionel Sambuc #define CK_TRUE 1
1212*ebfedea0SLionel Sambuc #ifndef CK_DISABLE_TRUE_FALSE
1213*ebfedea0SLionel Sambuc #ifndef FALSE
1214*ebfedea0SLionel Sambuc #define FALSE 0
1215*ebfedea0SLionel Sambuc #endif
1216*ebfedea0SLionel Sambuc #ifndef TRUE
1217*ebfedea0SLionel Sambuc #define TRUE 1
1218*ebfedea0SLionel Sambuc #endif
1219*ebfedea0SLionel Sambuc #endif
1220*ebfedea0SLionel Sambuc 
1221*ebfedea0SLionel Sambuc typedef struct ck_version CK_VERSION;
1222*ebfedea0SLionel Sambuc typedef struct ck_version *CK_VERSION_PTR;
1223*ebfedea0SLionel Sambuc 
1224*ebfedea0SLionel Sambuc typedef struct ck_info CK_INFO;
1225*ebfedea0SLionel Sambuc typedef struct ck_info *CK_INFO_PTR;
1226*ebfedea0SLionel Sambuc 
1227*ebfedea0SLionel Sambuc typedef ck_slot_id_t *CK_SLOT_ID_PTR;
1228*ebfedea0SLionel Sambuc 
1229*ebfedea0SLionel Sambuc typedef struct ck_slot_info CK_SLOT_INFO;
1230*ebfedea0SLionel Sambuc typedef struct ck_slot_info *CK_SLOT_INFO_PTR;
1231*ebfedea0SLionel Sambuc 
1232*ebfedea0SLionel Sambuc typedef struct ck_token_info CK_TOKEN_INFO;
1233*ebfedea0SLionel Sambuc typedef struct ck_token_info *CK_TOKEN_INFO_PTR;
1234*ebfedea0SLionel Sambuc 
1235*ebfedea0SLionel Sambuc typedef ck_session_handle_t *CK_SESSION_HANDLE_PTR;
1236*ebfedea0SLionel Sambuc 
1237*ebfedea0SLionel Sambuc typedef struct ck_session_info CK_SESSION_INFO;
1238*ebfedea0SLionel Sambuc typedef struct ck_session_info *CK_SESSION_INFO_PTR;
1239*ebfedea0SLionel Sambuc 
1240*ebfedea0SLionel Sambuc typedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR;
1241*ebfedea0SLionel Sambuc 
1242*ebfedea0SLionel Sambuc typedef ck_object_class_t *CK_OBJECT_CLASS_PTR;
1243*ebfedea0SLionel Sambuc 
1244*ebfedea0SLionel Sambuc typedef struct ck_attribute CK_ATTRIBUTE;
1245*ebfedea0SLionel Sambuc typedef struct ck_attribute *CK_ATTRIBUTE_PTR;
1246*ebfedea0SLionel Sambuc 
1247*ebfedea0SLionel Sambuc typedef struct ck_date CK_DATE;
1248*ebfedea0SLionel Sambuc typedef struct ck_date *CK_DATE_PTR;
1249*ebfedea0SLionel Sambuc 
1250*ebfedea0SLionel Sambuc typedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR;
1251*ebfedea0SLionel Sambuc 
1252*ebfedea0SLionel Sambuc typedef struct ck_mechanism CK_MECHANISM;
1253*ebfedea0SLionel Sambuc typedef struct ck_mechanism *CK_MECHANISM_PTR;
1254*ebfedea0SLionel Sambuc 
1255*ebfedea0SLionel Sambuc typedef struct ck_mechanism_info CK_MECHANISM_INFO;
1256*ebfedea0SLionel Sambuc typedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR;
1257*ebfedea0SLionel Sambuc 
1258*ebfedea0SLionel Sambuc typedef struct ck_function_list CK_FUNCTION_LIST;
1259*ebfedea0SLionel Sambuc typedef struct ck_function_list *CK_FUNCTION_LIST_PTR;
1260*ebfedea0SLionel Sambuc typedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR;
1261*ebfedea0SLionel Sambuc 
1262*ebfedea0SLionel Sambuc typedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS;
1263*ebfedea0SLionel Sambuc typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR;
1264*ebfedea0SLionel Sambuc 
1265*ebfedea0SLionel Sambuc #define NULL_PTR NULL
1266*ebfedea0SLionel Sambuc 
1267*ebfedea0SLionel Sambuc /* Delete the helper macros defined at the top of the file.  */
1268*ebfedea0SLionel Sambuc #undef ck_flags_t
1269*ebfedea0SLionel Sambuc #undef ck_version
1270*ebfedea0SLionel Sambuc 
1271*ebfedea0SLionel Sambuc #undef ck_info
1272*ebfedea0SLionel Sambuc #undef cryptoki_version
1273*ebfedea0SLionel Sambuc #undef manufacturer_id
1274*ebfedea0SLionel Sambuc #undef library_description
1275*ebfedea0SLionel Sambuc #undef library_version
1276*ebfedea0SLionel Sambuc 
1277*ebfedea0SLionel Sambuc #undef ck_notification_t
1278*ebfedea0SLionel Sambuc #undef ck_slot_id_t
1279*ebfedea0SLionel Sambuc 
1280*ebfedea0SLionel Sambuc #undef ck_slot_info
1281*ebfedea0SLionel Sambuc #undef slot_description
1282*ebfedea0SLionel Sambuc #undef hardware_version
1283*ebfedea0SLionel Sambuc #undef firmware_version
1284*ebfedea0SLionel Sambuc 
1285*ebfedea0SLionel Sambuc #undef ck_token_info
1286*ebfedea0SLionel Sambuc #undef serial_number
1287*ebfedea0SLionel Sambuc #undef max_session_count
1288*ebfedea0SLionel Sambuc #undef session_count
1289*ebfedea0SLionel Sambuc #undef max_rw_session_count
1290*ebfedea0SLionel Sambuc #undef rw_session_count
1291*ebfedea0SLionel Sambuc #undef max_pin_len
1292*ebfedea0SLionel Sambuc #undef min_pin_len
1293*ebfedea0SLionel Sambuc #undef total_public_memory
1294*ebfedea0SLionel Sambuc #undef free_public_memory
1295*ebfedea0SLionel Sambuc #undef total_private_memory
1296*ebfedea0SLionel Sambuc #undef free_private_memory
1297*ebfedea0SLionel Sambuc #undef utc_time
1298*ebfedea0SLionel Sambuc 
1299*ebfedea0SLionel Sambuc #undef ck_session_handle_t
1300*ebfedea0SLionel Sambuc #undef ck_user_type_t
1301*ebfedea0SLionel Sambuc #undef ck_state_t
1302*ebfedea0SLionel Sambuc 
1303*ebfedea0SLionel Sambuc #undef ck_session_info
1304*ebfedea0SLionel Sambuc #undef slot_id
1305*ebfedea0SLionel Sambuc #undef device_error
1306*ebfedea0SLionel Sambuc 
1307*ebfedea0SLionel Sambuc #undef ck_object_handle_t
1308*ebfedea0SLionel Sambuc #undef ck_object_class_t
1309*ebfedea0SLionel Sambuc #undef ck_hw_feature_type_t
1310*ebfedea0SLionel Sambuc #undef ck_key_type_t
1311*ebfedea0SLionel Sambuc #undef ck_certificate_type_t
1312*ebfedea0SLionel Sambuc #undef ck_attribute_type_t
1313*ebfedea0SLionel Sambuc 
1314*ebfedea0SLionel Sambuc #undef ck_attribute
1315*ebfedea0SLionel Sambuc #undef value
1316*ebfedea0SLionel Sambuc #undef value_len
1317*ebfedea0SLionel Sambuc 
1318*ebfedea0SLionel Sambuc #undef ck_date
1319*ebfedea0SLionel Sambuc 
1320*ebfedea0SLionel Sambuc #undef ck_mechanism_type_t
1321*ebfedea0SLionel Sambuc 
1322*ebfedea0SLionel Sambuc #undef ck_mechanism
1323*ebfedea0SLionel Sambuc #undef parameter
1324*ebfedea0SLionel Sambuc #undef parameter_len
1325*ebfedea0SLionel Sambuc 
1326*ebfedea0SLionel Sambuc #undef ck_mechanism_info
1327*ebfedea0SLionel Sambuc #undef min_key_size
1328*ebfedea0SLionel Sambuc #undef max_key_size
1329*ebfedea0SLionel Sambuc 
1330*ebfedea0SLionel Sambuc #undef ck_rv_t
1331*ebfedea0SLionel Sambuc #undef ck_notify_t
1332*ebfedea0SLionel Sambuc 
1333*ebfedea0SLionel Sambuc #undef ck_function_list
1334*ebfedea0SLionel Sambuc 
1335*ebfedea0SLionel Sambuc #undef ck_createmutex_t
1336*ebfedea0SLionel Sambuc #undef ck_destroymutex_t
1337*ebfedea0SLionel Sambuc #undef ck_lockmutex_t
1338*ebfedea0SLionel Sambuc #undef ck_unlockmutex_t
1339*ebfedea0SLionel Sambuc 
1340*ebfedea0SLionel Sambuc #undef ck_c_initialize_args
1341*ebfedea0SLionel Sambuc #undef create_mutex
1342*ebfedea0SLionel Sambuc #undef destroy_mutex
1343*ebfedea0SLionel Sambuc #undef lock_mutex
1344*ebfedea0SLionel Sambuc #undef unlock_mutex
1345*ebfedea0SLionel Sambuc #undef reserved
1346*ebfedea0SLionel Sambuc 
1347*ebfedea0SLionel Sambuc #endif	/* CRYPTOKI_COMPAT */
1348*ebfedea0SLionel Sambuc 
1349*ebfedea0SLionel Sambuc 
1350*ebfedea0SLionel Sambuc /* System dependencies.  */
1351*ebfedea0SLionel Sambuc #if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
1352*ebfedea0SLionel Sambuc #pragma pack(pop, cryptoki)
1353*ebfedea0SLionel Sambuc #endif
1354*ebfedea0SLionel Sambuc 
1355*ebfedea0SLionel Sambuc #if defined(__cplusplus)
1356*ebfedea0SLionel Sambuc }
1357*ebfedea0SLionel Sambuc #endif
1358*ebfedea0SLionel Sambuc 
1359*ebfedea0SLionel Sambuc #endif	/* PKCS11_H */
1360