11305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* $OpenBSD: pkcs11.h,v 1.2 2010/02/24 06:12:53 djm Exp $ */
21305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* pkcs11.h
31305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   Copyright 2006, 2007 g10 Code GmbH
41305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   Copyright 2006 Andreas Jellinghaus
51305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
61305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   This file is free software; as a special exception the author gives
71305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   unlimited permission to copy and/or distribute it, with or without
81305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   modifications, as long as this notice is preserved.
91305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   This file is distributed in the hope that it will be useful, but
111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   WITHOUT ANY WARRANTY, to the extent permitted by law; without even
121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   PURPOSE.  */
141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Please submit changes back to the Scute project at
161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   http://www.scute.org/ (or send them to marcus@g10code.com), so that
171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   they can be picked up by other projects from there as well.  */
181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* This file is a modified implementation of the PKCS #11 standard by
201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   RSA Security Inc.  It is mostly a drop-in replacement, with the
211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   following change:
221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   This header file does not require any macro definitions by the user
241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   (like CK_DEFINE_FUNCTION etc).  In fact, it defines those macros
251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   for you (if useful, some are missing, let me know if you need
261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   more).
271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   There is an additional API available that does comply better to the
291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   GNU coding standard.  It can be switched on by defining
301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   CRYPTOKI_GNU before including this header file.  For this, the
311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   following changes are made to the specification:
321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   All structure types are changed to a "struct ck_foo" where CK_FOO
341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   is the type name in PKCS #11.
351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   All non-structure types are changed to ck_foo_t where CK_FOO is the
371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   lowercase version of the type name in PKCS #11.  The basic types
381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   (CK_ULONG et al.) are removed without substitute.
391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   All members of structures are modified in the following way: Type
411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   indication prefixes are removed, and underscore characters are
421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   inserted before words.  Then the result is lowercased.
431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   Note that function names are still in the original case, as they
451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   need for ABI compatibility.
461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute.  Use
481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   <stdbool.h>.
491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   If CRYPTOKI_COMPAT is defined before including this header file,
511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   then none of the API changes above take place, and the API is the
521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   one defined by the PKCS #11 standard.  */
531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef PKCS11_H
551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define PKCS11_H 1
561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if defined(__cplusplus)
581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodextern "C" {
591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* The version of cryptoki we implement.  The revision is changed with
631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   each modification of this file.  If you do not use the "official"
641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   version of this file, please consider deleting the revision macro
651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   (you may use a macro with a different name to keep track of your
661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   versions).  */
671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CRYPTOKI_VERSION_MAJOR		2
681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CRYPTOKI_VERSION_MINOR		20
691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CRYPTOKI_VERSION_REVISION	6
701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Compatibility interface is default, unless CRYPTOKI_GNU is
731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood   given.  */
741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef CRYPTOKI_GNU
751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef CRYPTOKI_COMPAT
761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CRYPTOKI_COMPAT 1
771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* System dependencies.  */
811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* There is a matching pop below.  */
851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#pragma pack(push, cryptoki, 1)
861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifdef CRYPTOKI_EXPORTS
881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_SPEC __declspec(dllexport)
891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#else
901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_SPEC __declspec(dllimport)
911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#else
941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_SPEC
961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifdef CRYPTOKI_COMPAT
1011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  /* If we are in compatibility mode, switch all exposed names to the
1021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood     PKCS #11 variant.  There are corresponding #undefs below.  */
1031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_flags_t CK_FLAGS
1051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_version _CK_VERSION
1061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_info _CK_INFO
1081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define cryptoki_version cryptokiVersion
1091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define manufacturer_id manufacturerID
1101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define library_description libraryDescription
1111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define library_version libraryVersion
1121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_notification_t CK_NOTIFICATION
1141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_slot_id_t CK_SLOT_ID
1151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_slot_info _CK_SLOT_INFO
1171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define slot_description slotDescription
1181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define hardware_version hardwareVersion
1191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define firmware_version firmwareVersion
1201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_token_info _CK_TOKEN_INFO
1221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define serial_number serialNumber
1231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define max_session_count ulMaxSessionCount
1241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define session_count ulSessionCount
1251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define max_rw_session_count ulMaxRwSessionCount
1261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define rw_session_count ulRwSessionCount
1271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define max_pin_len ulMaxPinLen
1281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define min_pin_len ulMinPinLen
1291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define total_public_memory ulTotalPublicMemory
1301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define free_public_memory ulFreePublicMemory
1311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define total_private_memory ulTotalPrivateMemory
1321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define free_private_memory ulFreePrivateMemory
1331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define utc_time utcTime
1341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_session_handle_t CK_SESSION_HANDLE
1361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_user_type_t CK_USER_TYPE
1371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_state_t CK_STATE
1381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_session_info _CK_SESSION_INFO
1401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define slot_id slotID
1411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define device_error ulDeviceError
1421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_object_handle_t CK_OBJECT_HANDLE
1441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_object_class_t CK_OBJECT_CLASS
1451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_hw_feature_type_t CK_HW_FEATURE_TYPE
1461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_key_type_t CK_KEY_TYPE
1471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_certificate_type_t CK_CERTIFICATE_TYPE
1481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_attribute_type_t CK_ATTRIBUTE_TYPE
1491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_attribute _CK_ATTRIBUTE
1511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define value pValue
1521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define value_len ulValueLen
1531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_date _CK_DATE
1551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_mechanism_type_t CK_MECHANISM_TYPE
1571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_mechanism _CK_MECHANISM
1591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define parameter pParameter
1601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define parameter_len ulParameterLen
1611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_mechanism_info _CK_MECHANISM_INFO
1631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define min_key_size ulMinKeySize
1641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define max_key_size ulMaxKeySize
1651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_rv_t CK_RV
1671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_notify_t CK_NOTIFY
1681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_function_list _CK_FUNCTION_LIST
1701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_createmutex_t CK_CREATEMUTEX
1721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_destroymutex_t CK_DESTROYMUTEX
1731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_lockmutex_t CK_LOCKMUTEX
1741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_unlockmutex_t CK_UNLOCKMUTEX
1751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define ck_c_initialize_args _CK_C_INITIALIZE_ARGS
1771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define create_mutex CreateMutex
1781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define destroy_mutex DestroyMutex
1791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define lock_mutex LockMutex
1801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define unlock_mutex UnlockMutex
1811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define reserved pReserved
1821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif	/* CRYPTOKI_COMPAT */
1841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_flags_t;
1881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_version
1901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
1911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char major;
1921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char minor;
1931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
1941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
1961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_info
1971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
1981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  struct ck_version cryptoki_version;
1991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char manufacturer_id[32];
2001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_flags_t flags;
2011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char library_description[32];
2021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  struct ck_version library_version;
2031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
2041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_notification_t;
2071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKN_SURRENDER	(0)
2091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_slot_id_t;
2121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_slot_info
2151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
2161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char slot_description[64];
2171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char manufacturer_id[32];
2181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_flags_t flags;
2191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  struct ck_version hardware_version;
2201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  struct ck_version firmware_version;
2211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
2221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_TOKEN_PRESENT	(1 << 0)
2251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_REMOVABLE_DEVICE	(1 << 1)
2261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_HW_SLOT		(1 << 2)
2271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_ARRAY_ATTRIBUTE	(1 << 30)
2281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_token_info
2311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
2321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char label[32];
2331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char manufacturer_id[32];
2341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char model[16];
2351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char serial_number[16];
2361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_flags_t flags;
2371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long max_session_count;
2381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long session_count;
2391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long max_rw_session_count;
2401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long rw_session_count;
2411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long max_pin_len;
2421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long min_pin_len;
2431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long total_public_memory;
2441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long free_public_memory;
2451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long total_private_memory;
2461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long free_private_memory;
2471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  struct ck_version hardware_version;
2481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  struct ck_version firmware_version;
2491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char utc_time[16];
2501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
2511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_RNG					(1 << 0)
2541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_WRITE_PROTECTED			(1 << 1)
2551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_LOGIN_REQUIRED			(1 << 2)
2561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_USER_PIN_INITIALIZED		(1 << 3)
2571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_RESTORE_KEY_NOT_NEEDED		(1 << 5)
2581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_CLOCK_ON_TOKEN			(1 << 6)
2591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_PROTECTED_AUTHENTICATION_PATH	(1 << 8)
2601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_DUAL_CRYPTO_OPERATIONS		(1 << 9)
2611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_TOKEN_INITIALIZED			(1 << 10)
2621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SECONDARY_AUTHENTICATION		(1 << 11)
2631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_USER_PIN_COUNT_LOW			(1 << 16)
2641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_USER_PIN_FINAL_TRY			(1 << 17)
2651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_USER_PIN_LOCKED			(1 << 18)
2661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_USER_PIN_TO_BE_CHANGED		(1 << 19)
2671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SO_PIN_COUNT_LOW			(1 << 20)
2681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SO_PIN_FINAL_TRY			(1 << 21)
2691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SO_PIN_LOCKED			(1 << 22)
2701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SO_PIN_TO_BE_CHANGED		(1 << 23)
2711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_UNAVAILABLE_INFORMATION	((unsigned long) -1)
2731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_EFFECTIVELY_INFINITE		(0)
2741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_session_handle_t;
2771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_INVALID_HANDLE	(0)
2791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_user_type_t;
2821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKU_SO			(0)
2841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKU_USER		(1)
2851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKU_CONTEXT_SPECIFIC	(2)
2861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_state_t;
2891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKS_RO_PUBLIC_SESSION	(0)
2911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKS_RO_USER_FUNCTIONS	(1)
2921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKS_RW_PUBLIC_SESSION	(2)
2931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKS_RW_USER_FUNCTIONS	(3)
2941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKS_RW_SO_FUNCTIONS	(4)
2951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
2971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_session_info
2981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
2991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_slot_id_t slot_id;
3001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_state_t state;
3011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_flags_t flags;
3021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long device_error;
3031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
3041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_RW_SESSION		(1 << 1)
3061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SERIAL_SESSION	(1 << 2)
3071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_object_handle_t;
3101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_object_class_t;
3131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_DATA		(0)
3151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_CERTIFICATE		(1)
3161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_PUBLIC_KEY		(2)
3171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_PRIVATE_KEY		(3)
3181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_SECRET_KEY		(4)
3191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_HW_FEATURE		(5)
3201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_DOMAIN_PARAMETERS	(6)
3211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_MECHANISM		(7)
3221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKO_VENDOR_DEFINED	((unsigned long) (1 << 31))
3231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_hw_feature_type_t;
3261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKH_MONOTONIC_COUNTER	(1)
3281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKH_CLOCK		(2)
3291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKH_USER_INTERFACE	(3)
3301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKH_VENDOR_DEFINED	((unsigned long) (1 << 31))
3311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_key_type_t;
3341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_RSA			(0)
3361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_DSA			(1)
3371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_DH			(2)
3381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_ECDSA		(3)
3391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_EC			(3)
3401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_X9_42_DH		(4)
3411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_KEA			(5)
3421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_GENERIC_SECRET	(0x10)
3431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_RC2			(0x11)
3441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_RC4			(0x12)
3451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_DES			(0x13)
3461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_DES2		(0x14)
3471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_DES3		(0x15)
3481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_CAST		(0x16)
3491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_CAST3		(0x17)
3501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_CAST128		(0x18)
3511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_RC5			(0x19)
3521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_IDEA		(0x1a)
3531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_SKIPJACK		(0x1b)
3541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_BATON		(0x1c)
3551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_JUNIPER		(0x1d)
3561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_CDMF		(0x1e)
3571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_AES			(0x1f)
3581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_BLOWFISH		(0x20)
3591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_TWOFISH		(0x21)
3601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKK_VENDOR_DEFINED	((unsigned long) (1 << 31))
3611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_certificate_type_t;
3631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKC_X_509		(0)
3651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKC_X_509_ATTR_CERT	(1)
3661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKC_WTLS		(2)
3671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKC_VENDOR_DEFINED	((unsigned long) (1 << 31))
3681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_attribute_type_t;
3711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
3721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_CLASS			(0)
3731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_TOKEN			(1)
3741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PRIVATE			(2)
3751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_LABEL			(3)
3761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_APPLICATION			(0x10)
3771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_VALUE			(0x11)
3781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_OBJECT_ID			(0x12)
3791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_CERTIFICATE_TYPE		(0x80)
3801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ISSUER			(0x81)
3811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SERIAL_NUMBER		(0x82)
3821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_AC_ISSUER			(0x83)
3831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_OWNER			(0x84)
3841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ATTR_TYPES			(0x85)
3851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_TRUSTED			(0x86)
3861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_CERTIFICATE_CATEGORY	(0x87)
3871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_JAVA_MIDP_SECURITY_DOMAIN	(0x88)
3881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_URL				(0x89)
3891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY	(0x8a)
3901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_HASH_OF_ISSUER_PUBLIC_KEY	(0x8b)
3911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_CHECK_VALUE			(0x90)
3921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_KEY_TYPE			(0x100)
3931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SUBJECT			(0x101)
3941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ID				(0x102)
3951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SENSITIVE			(0x103)
3961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ENCRYPT			(0x104)
3971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_DECRYPT			(0x105)
3981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_WRAP			(0x106)
3991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_UNWRAP			(0x107)
4001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SIGN			(0x108)
4011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SIGN_RECOVER		(0x109)
4021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_VERIFY			(0x10a)
4031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_VERIFY_RECOVER		(0x10b)
4041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_DERIVE			(0x10c)
4051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_START_DATE			(0x110)
4061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_END_DATE			(0x111)
4071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_MODULUS			(0x120)
4081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_MODULUS_BITS		(0x121)
4091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PUBLIC_EXPONENT		(0x122)
4101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PRIVATE_EXPONENT		(0x123)
4111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PRIME_1			(0x124)
4121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PRIME_2			(0x125)
4131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_EXPONENT_1			(0x126)
4141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_EXPONENT_2			(0x127)
4151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_COEFFICIENT			(0x128)
4161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PRIME			(0x130)
4171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SUBPRIME			(0x131)
4181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_BASE			(0x132)
4191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PRIME_BITS			(0x133)
4201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SUB_PRIME_BITS		(0x134)
4211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_VALUE_BITS			(0x160)
4221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_VALUE_LEN			(0x161)
4231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_EXTRACTABLE			(0x162)
4241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_LOCAL			(0x163)
4251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_NEVER_EXTRACTABLE		(0x164)
4261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ALWAYS_SENSITIVE		(0x165)
4271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_KEY_GEN_MECHANISM		(0x166)
4281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_MODIFIABLE			(0x170)
4291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ECDSA_PARAMS		(0x180)
4301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_EC_PARAMS			(0x180)
4311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_EC_POINT			(0x181)
4321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SECONDARY_AUTH		(0x200)
4331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_AUTH_PIN_FLAGS		(0x201)
4341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ALWAYS_AUTHENTICATE		(0x202)
4351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_WRAP_WITH_TRUSTED		(0x210)
4361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_HW_FEATURE_TYPE		(0x300)
4371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_RESET_ON_INIT		(0x301)
4381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_HAS_RESET			(0x302)
4391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PIXEL_X			(0x400)
4401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_PIXEL_Y			(0x401)
4411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_RESOLUTION			(0x402)
4421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_CHAR_ROWS			(0x403)
4431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_CHAR_COLUMNS		(0x404)
4441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_COLOR			(0x405)
4451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_BITS_PER_PIXEL		(0x406)
4461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_CHAR_SETS			(0x480)
4471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ENCODING_METHODS		(0x481)
4481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_MIME_TYPES			(0x482)
4491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_MECHANISM_TYPE		(0x500)
4501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_REQUIRED_CMS_ATTRIBUTES	(0x501)
4511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_DEFAULT_CMS_ATTRIBUTES	(0x502)
4521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_SUPPORTED_CMS_ATTRIBUTES	(0x503)
4531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_WRAP_TEMPLATE		(CKF_ARRAY_ATTRIBUTE | 0x211)
4541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_UNWRAP_TEMPLATE		(CKF_ARRAY_ATTRIBUTE | 0x212)
4551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_ALLOWED_MECHANISMS		(CKF_ARRAY_ATTRIBUTE | 0x600)
4561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKA_VENDOR_DEFINED		((unsigned long) (1 << 31))
4571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
4581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
4591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_attribute
4601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
4611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_attribute_type_t type;
4621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  void *value;
4631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long value_len;
4641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
4651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
4661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
4671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_date
4681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
4691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char year[4];
4701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char month[2];
4711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned char day[2];
4721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
4731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
4741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
4751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_mechanism_type_t;
4761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
4771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_PKCS_KEY_PAIR_GEN	(0)
4781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_PKCS			(1)
4791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_9796			(2)
4801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_X_509			(3)
4811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD2_RSA_PKCS		(4)
4821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD5_RSA_PKCS		(5)
4831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA1_RSA_PKCS		(6)
4841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD128_RSA_PKCS		(7)
4851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD160_RSA_PKCS		(8)
4861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_PKCS_OAEP		(9)
4871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_X9_31_KEY_PAIR_GEN	(0xa)
4881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_X9_31			(0xb)
4891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA1_RSA_X9_31		(0xc)
4901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RSA_PKCS_PSS		(0xd)
4911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA1_RSA_PKCS_PSS		(0xe)
4921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DSA_KEY_PAIR_GEN		(0x10)
4931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define	CKM_DSA				(0x11)
4941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DSA_SHA1			(0x12)
4951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DH_PKCS_KEY_PAIR_GEN	(0x20)
4961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DH_PKCS_DERIVE		(0x21)
4971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define	CKM_X9_42_DH_KEY_PAIR_GEN	(0x30)
4981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_X9_42_DH_DERIVE		(0x31)
4991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_X9_42_DH_HYBRID_DERIVE	(0x32)
5001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_X9_42_MQV_DERIVE		(0x33)
5011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA256_RSA_PKCS		(0x40)
5021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA384_RSA_PKCS		(0x41)
5031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA512_RSA_PKCS		(0x42)
5041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA256_RSA_PKCS_PSS		(0x43)
5051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA384_RSA_PKCS_PSS		(0x44)
5061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA512_RSA_PKCS_PSS		(0x45)
5071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC2_KEY_GEN			(0x100)
5081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC2_ECB			(0x101)
5091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define	CKM_RC2_CBC			(0x102)
5101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define	CKM_RC2_MAC			(0x103)
5111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC2_MAC_GENERAL		(0x104)
5121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC2_CBC_PAD			(0x105)
5131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC4_KEY_GEN			(0x110)
5141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC4				(0x111)
5151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES_KEY_GEN			(0x120)
5161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES_ECB			(0x121)
5171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES_CBC			(0x122)
5181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES_MAC			(0x123)
5191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES_MAC_GENERAL		(0x124)
5201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES_CBC_PAD			(0x125)
5211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES2_KEY_GEN		(0x130)
5221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES3_KEY_GEN		(0x131)
5231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES3_ECB			(0x132)
5241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES3_CBC			(0x133)
5251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES3_MAC			(0x134)
5261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES3_MAC_GENERAL		(0x135)
5271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DES3_CBC_PAD		(0x136)
5281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CDMF_KEY_GEN		(0x140)
5291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CDMF_ECB			(0x141)
5301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CDMF_CBC			(0x142)
5311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CDMF_MAC			(0x143)
5321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CDMF_MAC_GENERAL		(0x144)
5331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CDMF_CBC_PAD		(0x145)
5341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD2				(0x200)
5351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD2_HMAC			(0x201)
5361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD2_HMAC_GENERAL		(0x202)
5371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD5				(0x210)
5381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD5_HMAC			(0x211)
5391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD5_HMAC_GENERAL		(0x212)
5401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA_1			(0x220)
5411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA_1_HMAC			(0x221)
5421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA_1_HMAC_GENERAL		(0x222)
5431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD128			(0x230)
5441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD128_HMAC		(0x231)
5451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD128_HMAC_GENERAL	(0x232)
5461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD160			(0x240)
5471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD160_HMAC		(0x241)
5481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RIPEMD160_HMAC_GENERAL	(0x242)
5491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA256			(0x250)
5501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA256_HMAC			(0x251)
5511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA256_HMAC_GENERAL		(0x252)
5521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA384			(0x260)
5531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA384_HMAC			(0x261)
5541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA384_HMAC_GENERAL		(0x262)
5551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA512			(0x270)
5561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA512_HMAC			(0x271)
5571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA512_HMAC_GENERAL		(0x272)
5581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST_KEY_GEN		(0x300)
5591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST_ECB			(0x301)
5601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST_CBC			(0x302)
5611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST_MAC			(0x303)
5621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST_MAC_GENERAL		(0x304)
5631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST_CBC_PAD		(0x305)
5641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST3_KEY_GEN		(0x310)
5651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST3_ECB			(0x311)
5661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST3_CBC			(0x312)
5671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST3_MAC			(0x313)
5681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST3_MAC_GENERAL		(0x314)
5691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST3_CBC_PAD		(0x315)
5701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST5_KEY_GEN		(0x320)
5711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST128_KEY_GEN		(0x320)
5721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST5_ECB			(0x321)
5731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST128_ECB			(0x321)
5741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST5_CBC			(0x322)
5751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST128_CBC			(0x322)
5761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST5_MAC			(0x323)
5771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define	CKM_CAST128_MAC			(0x323)
5781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST5_MAC_GENERAL		(0x324)
5791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST128_MAC_GENERAL		(0x324)
5801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST5_CBC_PAD		(0x325)
5811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CAST128_CBC_PAD		(0x325)
5821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC5_KEY_GEN			(0x330)
5831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC5_ECB			(0x331)
5841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC5_CBC			(0x332)
5851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC5_MAC			(0x333)
5861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC5_MAC_GENERAL		(0x334)
5871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_RC5_CBC_PAD			(0x335)
5881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_IDEA_KEY_GEN		(0x340)
5891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_IDEA_ECB			(0x341)
5901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define	CKM_IDEA_CBC			(0x342)
5911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_IDEA_MAC			(0x343)
5921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_IDEA_MAC_GENERAL		(0x344)
5931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_IDEA_CBC_PAD		(0x345)
5941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_GENERIC_SECRET_KEY_GEN	(0x350)
5951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CONCATENATE_BASE_AND_KEY	(0x360)
5961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CONCATENATE_BASE_AND_DATA	(0x362)
5971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_CONCATENATE_DATA_AND_BASE	(0x363)
5981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_XOR_BASE_AND_DATA		(0x364)
5991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_EXTRACT_KEY_FROM_KEY	(0x365)
6001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SSL3_PRE_MASTER_KEY_GEN	(0x370)
6011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SSL3_MASTER_KEY_DERIVE	(0x371)
6021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SSL3_KEY_AND_MAC_DERIVE	(0x372)
6031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SSL3_MASTER_KEY_DERIVE_DH	(0x373)
6041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_TLS_PRE_MASTER_KEY_GEN	(0x374)
6051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_TLS_MASTER_KEY_DERIVE	(0x375)
6061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_TLS_KEY_AND_MAC_DERIVE	(0x376)
6071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_TLS_MASTER_KEY_DERIVE_DH	(0x377)
6081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SSL3_MD5_MAC		(0x380)
6091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SSL3_SHA1_MAC		(0x381)
6101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD5_KEY_DERIVATION		(0x390)
6111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_MD2_KEY_DERIVATION		(0x391)
6121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SHA1_KEY_DERIVATION		(0x392)
6131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_MD2_DES_CBC		(0x3a0)
6141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_MD5_DES_CBC		(0x3a1)
6151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_MD5_CAST_CBC		(0x3a2)
6161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_MD5_CAST3_CBC		(0x3a3)
6171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_MD5_CAST5_CBC		(0x3a4)
6181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_MD5_CAST128_CBC		(0x3a4)
6191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_CAST5_CBC		(0x3a5)
6201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_CAST128_CBC	(0x3a5)
6211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_RC4_128		(0x3a6)
6221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_RC4_40		(0x3a7)
6231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_DES3_EDE_CBC	(0x3a8)
6241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_DES2_EDE_CBC	(0x3a9)
6251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_RC2_128_CBC	(0x3aa)
6261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBE_SHA1_RC2_40_CBC		(0x3ab)
6271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PKCS5_PBKD2			(0x3b0)
6281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_PBA_SHA1_WITH_SHA1_HMAC	(0x3c0)
6291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_KEY_WRAP_LYNKS		(0x400)
6301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_KEY_WRAP_SET_OAEP		(0x401)
6311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_KEY_GEN		(0x1000)
6321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_ECB64		(0x1001)
6331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_CBC64		(0x1002)
6341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_OFB64		(0x1003)
6351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_CFB64		(0x1004)
6361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_CFB32		(0x1005)
6371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_CFB16		(0x1006)
6381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_CFB8		(0x1007)
6391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_WRAP		(0x1008)
6401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_PRIVATE_WRAP	(0x1009)
6411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_SKIPJACK_RELAYX		(0x100a)
6421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_KEA_KEY_PAIR_GEN		(0x1010)
6431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_KEA_KEY_DERIVE		(0x1011)
6441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_FORTEZZA_TIMESTAMP		(0x1020)
6451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_BATON_KEY_GEN		(0x1030)
6461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_BATON_ECB128		(0x1031)
6471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_BATON_ECB96			(0x1032)
6481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_BATON_CBC128		(0x1033)
6491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_BATON_COUNTER		(0x1034)
6501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_BATON_SHUFFLE		(0x1035)
6511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_BATON_WRAP			(0x1036)
6521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_ECDSA_KEY_PAIR_GEN		(0x1040)
6531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_EC_KEY_PAIR_GEN		(0x1040)
6541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_ECDSA			(0x1041)
6551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_ECDSA_SHA1			(0x1042)
6561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_ECDH1_DERIVE		(0x1050)
6571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_ECDH1_COFACTOR_DERIVE	(0x1051)
6581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_ECMQV_DERIVE		(0x1052)
6591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_JUNIPER_KEY_GEN		(0x1060)
6601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_JUNIPER_ECB128		(0x1061)
6611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_JUNIPER_CBC128		(0x1062)
6621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_JUNIPER_COUNTER		(0x1063)
6631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_JUNIPER_SHUFFLE		(0x1064)
6641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_JUNIPER_WRAP		(0x1065)
6651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_FASTHASH			(0x1070)
6661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_AES_KEY_GEN			(0x1080)
6671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_AES_ECB			(0x1081)
6681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_AES_CBC			(0x1082)
6691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_AES_MAC			(0x1083)
6701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_AES_MAC_GENERAL		(0x1084)
6711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_AES_CBC_PAD			(0x1085)
6721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DSA_PARAMETER_GEN		(0x2000)
6731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_DH_PKCS_PARAMETER_GEN	(0x2001)
6741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_X9_42_DH_PARAMETER_GEN	(0x2002)
6751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKM_VENDOR_DEFINED		((unsigned long) (1 << 31))
6761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
6771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
6781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_mechanism
6791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
6801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_mechanism_type_t mechanism;
6811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  void *parameter;
6821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long parameter_len;
6831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
6841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
6851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
6861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_mechanism_info
6871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
6881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long min_key_size;
6891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  unsigned long max_key_size;
6901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_flags_t flags;
6911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
6921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
6931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_HW			(1 << 0)
6941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_ENCRYPT		(1 << 8)
6951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_DECRYPT		(1 << 9)
6961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_DIGEST		(1 << 10)
6971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SIGN		(1 << 11)
6981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_SIGN_RECOVER	(1 << 12)
6991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_VERIFY		(1 << 13)
7001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_VERIFY_RECOVER	(1 << 14)
7011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_GENERATE		(1 << 15)
7021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_GENERATE_KEY_PAIR	(1 << 16)
7031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_WRAP		(1 << 17)
7041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_UNWRAP		(1 << 18)
7051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_DERIVE		(1 << 19)
7061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_EXTENSION		((unsigned long) (1 << 31))
7071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Flags for C_WaitForSlotEvent.  */
7101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_DONT_BLOCK				(1)
7111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long ck_rv_t;
7141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session,
7171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood				ck_notification_t event, void *application);
7181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Forward reference.  */
7201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_function_list;
7211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define _CK_DECLARE_FUNCTION(name, args)	\
7231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_rv_t (*CK_ ## name) args;		\
7241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodck_rv_t CK_SPEC name args
7251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Initialize, (void *init_args));
7271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Finalize, (void *reserved));
7281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info));
7291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetFunctionList,
7301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (struct ck_function_list **function_list));
7311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetSlotList,
7331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (unsigned char token_present, ck_slot_id_t *slot_list,
7341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *count));
7351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetSlotInfo,
7361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_slot_id_t slot_id, struct ck_slot_info *info));
7371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetTokenInfo,
7381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_slot_id_t slot_id, struct ck_token_info *info));
7391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_WaitForSlotEvent,
7401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_flags_t flags, ck_slot_id_t *slot, void *reserved));
7411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetMechanismList,
7421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_slot_id_t slot_id,
7431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_mechanism_type_t *mechanism_list,
7441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *count));
7451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetMechanismInfo,
7461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_slot_id_t slot_id, ck_mechanism_type_t type,
7471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism_info *info));
7481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_InitToken,
7491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_slot_id_t slot_id, unsigned char *pin,
7501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long pin_len, unsigned char *label));
7511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_InitPIN,
7521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session, unsigned char *pin,
7531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long pin_len));
7541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SetPIN,
7551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session, unsigned char *old_pin,
7561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long old_len, unsigned char *new_pin,
7571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long new_len));
7581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_OpenSession,
7601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_slot_id_t slot_id, ck_flags_t flags,
7611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       void *application, ck_notify_t notify,
7621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_session_handle_t *session));
7631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session));
7641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id));
7651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetSessionInfo,
7661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
7671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_session_info *info));
7681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetOperationState,
7691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
7701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *operation_state,
7711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *operation_state_len));
7721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SetOperationState,
7731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
7741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *operation_state,
7751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long operation_state_len,
7761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t encryption_key,
7771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t authentiation_key));
7781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Login,
7791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session, ck_user_type_t user_type,
7801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *pin, unsigned long pin_len));
7811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session));
7821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
7831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_CreateObject,
7841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
7851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ,
7861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long count, ck_object_handle_t *object));
7871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_CopyObject,
7881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session, ck_object_handle_t object,
7891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ, unsigned long count,
7901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t *new_object));
7911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DestroyObject,
7921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
7931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t object));
7941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetObjectSize,
7951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
7961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t object,
7971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *size));
7981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetAttributeValue,
7991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t object,
8011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ,
8021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long count));
8031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SetAttributeValue,
8041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t object,
8061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ,
8071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long count));
8081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_FindObjectsInit,
8091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ,
8111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long count));
8121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_FindObjects,
8131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t *object,
8151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long max_object_count,
8161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *object_count));
8171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_FindObjectsFinal,
8181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session));
8191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
8201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_EncryptInit,
8211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
8231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t key));
8241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Encrypt,
8251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *data, unsigned long data_len,
8271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_data,
8281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *encrypted_data_len));
8291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_EncryptUpdate,
8301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part, unsigned long part_len,
8321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_part,
8331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *encrypted_part_len));
8341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_EncryptFinal,
8351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *last_encrypted_part,
8371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *last_encrypted_part_len));
8381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
8391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DecryptInit,
8401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
8421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t key));
8431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Decrypt,
8441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_data,
8461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long encrypted_data_len,
8471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *data, unsigned long *data_len));
8481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DecryptUpdate,
8491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_part,
8511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long encrypted_part_len,
8521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part, unsigned long *part_len));
8531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DecryptFinal,
8541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *last_part,
8561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *last_part_len));
8571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
8581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DigestInit,
8591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism));
8611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Digest,
8621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *data, unsigned long data_len,
8641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *digest,
8651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *digest_len));
8661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DigestUpdate,
8671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part, unsigned long part_len));
8691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DigestKey,
8701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session, ck_object_handle_t key));
8711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DigestFinal,
8721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *digest,
8741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *digest_len));
8751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
8761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SignInit,
8771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
8791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t key));
8801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Sign,
8811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *data, unsigned long data_len,
8831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *signature,
8841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *signature_len));
8851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SignUpdate,
8861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part, unsigned long part_len));
8881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SignFinal,
8891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *signature,
8911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *signature_len));
8921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SignRecoverInit,
8931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
8951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t key));
8961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SignRecover,
8971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
8981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *data, unsigned long data_len,
8991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *signature,
9001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *signature_len));
9011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
9021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_VerifyInit,
9031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
9051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t key));
9061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_Verify,
9071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *data, unsigned long data_len,
9091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *signature,
9101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long signature_len));
9111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_VerifyUpdate,
9121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part, unsigned long part_len));
9141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_VerifyFinal,
9151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *signature,
9171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long signature_len));
9181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_VerifyRecoverInit,
9191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
9211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t key));
9221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_VerifyRecover,
9231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *signature,
9251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long signature_len,
9261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *data,
9271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *data_len));
9281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
9291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DigestEncryptUpdate,
9301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part, unsigned long part_len,
9321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_part,
9331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *encrypted_part_len));
9341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DecryptDigestUpdate,
9351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_part,
9371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long encrypted_part_len,
9381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part,
9391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *part_len));
9401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SignEncryptUpdate,
9411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part, unsigned long part_len,
9431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_part,
9441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *encrypted_part_len));
9451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate,
9461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *encrypted_part,
9481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long encrypted_part_len,
9491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *part,
9501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *part_len));
9511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
9521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GenerateKey,
9531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
9551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ,
9561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long count,
9571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t *key));
9581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GenerateKeyPair,
9591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
9611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *public_key_template,
9621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long public_key_attribute_count,
9631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *private_key_template,
9641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long private_key_attribute_count,
9651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t *public_key,
9661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t *private_key));
9671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_WrapKey,
9681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
9701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t wrapping_key,
9711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t key,
9721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *wrapped_key,
9731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long *wrapped_key_len));
9741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_UnwrapKey,
9751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
9771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t unwrapping_key,
9781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *wrapped_key,
9791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long wrapped_key_len,
9801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ,
9811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long attribute_count,
9821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t *key));
9831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_DeriveKey,
9841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_mechanism *mechanism,
9861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t base_key,
9871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       struct ck_attribute *templ,
9881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long attribute_count,
9891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       ck_object_handle_t *key));
9901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
9911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_SeedRandom,
9921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session, unsigned char *seed,
9931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long seed_len));
9941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GenerateRandom,
9951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		      (ck_session_handle_t session,
9961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned char *random_data,
9971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood		       unsigned long random_len));
9981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
9991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session));
10001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood_CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session));
10011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_function_list
10041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
10051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  struct ck_version version;
10061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Initialize C_Initialize;
10071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Finalize C_Finalize;
10081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetInfo C_GetInfo;
10091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetFunctionList C_GetFunctionList;
10101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetSlotList C_GetSlotList;
10111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetSlotInfo C_GetSlotInfo;
10121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetTokenInfo C_GetTokenInfo;
10131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetMechanismList C_GetMechanismList;
10141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetMechanismInfo C_GetMechanismInfo;
10151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_InitToken C_InitToken;
10161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_InitPIN C_InitPIN;
10171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SetPIN C_SetPIN;
10181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_OpenSession C_OpenSession;
10191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_CloseSession C_CloseSession;
10201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_CloseAllSessions C_CloseAllSessions;
10211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetSessionInfo C_GetSessionInfo;
10221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetOperationState C_GetOperationState;
10231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SetOperationState C_SetOperationState;
10241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Login C_Login;
10251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Logout C_Logout;
10261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_CreateObject C_CreateObject;
10271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_CopyObject C_CopyObject;
10281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DestroyObject C_DestroyObject;
10291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetObjectSize C_GetObjectSize;
10301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetAttributeValue C_GetAttributeValue;
10311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SetAttributeValue C_SetAttributeValue;
10321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_FindObjectsInit C_FindObjectsInit;
10331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_FindObjects C_FindObjects;
10341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_FindObjectsFinal C_FindObjectsFinal;
10351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_EncryptInit C_EncryptInit;
10361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Encrypt C_Encrypt;
10371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_EncryptUpdate C_EncryptUpdate;
10381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_EncryptFinal C_EncryptFinal;
10391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DecryptInit C_DecryptInit;
10401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Decrypt C_Decrypt;
10411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DecryptUpdate C_DecryptUpdate;
10421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DecryptFinal C_DecryptFinal;
10431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DigestInit C_DigestInit;
10441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Digest C_Digest;
10451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DigestUpdate C_DigestUpdate;
10461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DigestKey C_DigestKey;
10471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DigestFinal C_DigestFinal;
10481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SignInit C_SignInit;
10491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Sign C_Sign;
10501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SignUpdate C_SignUpdate;
10511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SignFinal C_SignFinal;
10521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SignRecoverInit C_SignRecoverInit;
10531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SignRecover C_SignRecover;
10541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_VerifyInit C_VerifyInit;
10551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_Verify C_Verify;
10561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_VerifyUpdate C_VerifyUpdate;
10571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_VerifyFinal C_VerifyFinal;
10581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_VerifyRecoverInit C_VerifyRecoverInit;
10591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_VerifyRecover C_VerifyRecover;
10601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
10611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
10621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SignEncryptUpdate C_SignEncryptUpdate;
10631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
10641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GenerateKey C_GenerateKey;
10651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GenerateKeyPair C_GenerateKeyPair;
10661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_WrapKey C_WrapKey;
10671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_UnwrapKey C_UnwrapKey;
10681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_DeriveKey C_DeriveKey;
10691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_SeedRandom C_SeedRandom;
10701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GenerateRandom C_GenerateRandom;
10711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_GetFunctionStatus C_GetFunctionStatus;
10721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_CancelFunction C_CancelFunction;
10731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  CK_C_WaitForSlotEvent C_WaitForSlotEvent;
10741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
10751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_rv_t (*ck_createmutex_t) (void **mutex);
10781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_rv_t (*ck_destroymutex_t) (void *mutex);
10791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_rv_t (*ck_lockmutex_t) (void *mutex);
10801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_rv_t (*ck_unlockmutex_t) (void *mutex);
10811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodstruct ck_c_initialize_args
10841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{
10851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_createmutex_t create_mutex;
10861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_destroymutex_t destroy_mutex;
10871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_lockmutex_t lock_mutex;
10881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_unlockmutex_t unlock_mutex;
10891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  ck_flags_t flags;
10901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood  void *reserved;
10911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood};
10921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_LIBRARY_CANT_CREATE_OS_THREADS	(1 << 0)
10951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKF_OS_LOCKING_OK			(1 << 1)
10961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
10971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_OK					(0)
10981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_CANCEL				(1)
10991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_HOST_MEMORY				(2)
11001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SLOT_ID_INVALID			(3)
11011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_GENERAL_ERROR			(5)
11021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_FUNCTION_FAILED			(6)
11031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_ARGUMENTS_BAD			(7)
11041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_NO_EVENT				(8)
11051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_NEED_TO_CREATE_THREADS		(9)
11061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_CANT_LOCK				(0xa)
11071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_ATTRIBUTE_READ_ONLY			(0x10)
11081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_ATTRIBUTE_SENSITIVE			(0x11)
11091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_ATTRIBUTE_TYPE_INVALID		(0x12)
11101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_ATTRIBUTE_VALUE_INVALID		(0x13)
11111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_DATA_INVALID			(0x20)
11121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_DATA_LEN_RANGE			(0x21)
11131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_DEVICE_ERROR			(0x30)
11141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_DEVICE_MEMORY			(0x31)
11151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_DEVICE_REMOVED			(0x32)
11161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_ENCRYPTED_DATA_INVALID		(0x40)
11171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_ENCRYPTED_DATA_LEN_RANGE		(0x41)
11181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_FUNCTION_CANCELED			(0x50)
11191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_FUNCTION_NOT_PARALLEL		(0x51)
11201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_FUNCTION_NOT_SUPPORTED		(0x54)
11211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_HANDLE_INVALID			(0x60)
11221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_SIZE_RANGE			(0x62)
11231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_TYPE_INCONSISTENT		(0x63)
11241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_NOT_NEEDED			(0x64)
11251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_CHANGED				(0x65)
11261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_NEEDED				(0x66)
11271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_INDIGESTIBLE			(0x67)
11281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_FUNCTION_NOT_PERMITTED		(0x68)
11291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_NOT_WRAPPABLE			(0x69)
11301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_KEY_UNEXTRACTABLE			(0x6a)
11311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_MECHANISM_INVALID			(0x70)
11321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_MECHANISM_PARAM_INVALID		(0x71)
11331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_OBJECT_HANDLE_INVALID		(0x82)
11341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_OPERATION_ACTIVE			(0x90)
11351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_OPERATION_NOT_INITIALIZED		(0x91)
11361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_PIN_INCORRECT			(0xa0)
11371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_PIN_INVALID				(0xa1)
11381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_PIN_LEN_RANGE			(0xa2)
11391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_PIN_EXPIRED				(0xa3)
11401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_PIN_LOCKED				(0xa4)
11411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_CLOSED			(0xb0)
11421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_COUNT			(0xb1)
11431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_HANDLE_INVALID		(0xb3)
11441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_PARALLEL_NOT_SUPPORTED	(0xb4)
11451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_READ_ONLY			(0xb5)
11461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_EXISTS			(0xb6)
11471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_READ_ONLY_EXISTS		(0xb7)
11481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SESSION_READ_WRITE_SO_EXISTS	(0xb8)
11491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SIGNATURE_INVALID			(0xc0)
11501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SIGNATURE_LEN_RANGE			(0xc1)
11511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_TEMPLATE_INCOMPLETE			(0xd0)
11521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_TEMPLATE_INCONSISTENT		(0xd1)
11531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_TOKEN_NOT_PRESENT			(0xe0)
11541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_TOKEN_NOT_RECOGNIZED		(0xe1)
11551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_TOKEN_WRITE_PROTECTED		(0xe2)
11561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define	CKR_UNWRAPPING_KEY_HANDLE_INVALID	(0xf0)
11571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_UNWRAPPING_KEY_SIZE_RANGE		(0xf1)
11581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT	(0xf2)
11591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_USER_ALREADY_LOGGED_IN		(0x100)
11601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_USER_NOT_LOGGED_IN			(0x101)
11611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_USER_PIN_NOT_INITIALIZED		(0x102)
11621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_USER_TYPE_INVALID			(0x103)
11631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN	(0x104)
11641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_USER_TOO_MANY_TYPES			(0x105)
11651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_WRAPPED_KEY_INVALID			(0x110)
11661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_WRAPPED_KEY_LEN_RANGE		(0x112)
11671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_WRAPPING_KEY_HANDLE_INVALID		(0x113)
11681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_WRAPPING_KEY_SIZE_RANGE		(0x114)
11691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT	(0x115)
11701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_RANDOM_SEED_NOT_SUPPORTED		(0x120)
11711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_RANDOM_NO_RNG			(0x121)
11721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_DOMAIN_PARAMS_INVALID		(0x130)
11731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_BUFFER_TOO_SMALL			(0x150)
11741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_SAVED_STATE_INVALID			(0x160)
11751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_INFORMATION_SENSITIVE		(0x170)
11761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_STATE_UNSAVEABLE			(0x180)
11771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_CRYPTOKI_NOT_INITIALIZED		(0x190)
11781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_CRYPTOKI_ALREADY_INITIALIZED	(0x191)
11791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_MUTEX_BAD				(0x1a0)
11801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_MUTEX_NOT_LOCKED			(0x1a1)
11811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_FUNCTION_REJECTED			(0x200)
11821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CKR_VENDOR_DEFINED			((unsigned long) (1 << 31))
11831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
11841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
11851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
11861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Compatibility layer.  */
11871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
11881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifdef CRYPTOKI_COMPAT
11891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
11901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef CK_DEFINE_FUNCTION
11911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name
11921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
11931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* For NULL.  */
11941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#include <stddef.h>
11951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
11961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned char CK_BYTE;
11971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned char CK_CHAR;
11981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned char CK_UTF8CHAR;
11991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned char CK_BBOOL;
12001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef unsigned long int CK_ULONG;
12011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef long int CK_LONG;
12021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef CK_BYTE *CK_BYTE_PTR;
12031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef CK_CHAR *CK_CHAR_PTR;
12041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef CK_UTF8CHAR *CK_UTF8CHAR_PTR;
12051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef CK_ULONG *CK_ULONG_PTR;
12061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef void *CK_VOID_PTR;
12071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef void **CK_VOID_PTR_PTR;
12081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_FALSE 0
12091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define CK_TRUE 1
12101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef CK_DISABLE_TRUE_FALSE
12111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef FALSE
12121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define FALSE 0
12131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
12141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#ifndef TRUE
12151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define TRUE 1
12161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
12171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
12181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_version CK_VERSION;
12201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_version *CK_VERSION_PTR;
12211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_info CK_INFO;
12231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_info *CK_INFO_PTR;
12241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_slot_id_t *CK_SLOT_ID_PTR;
12261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_slot_info CK_SLOT_INFO;
12281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_slot_info *CK_SLOT_INFO_PTR;
12291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_token_info CK_TOKEN_INFO;
12311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_token_info *CK_TOKEN_INFO_PTR;
12321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_session_handle_t *CK_SESSION_HANDLE_PTR;
12341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_session_info CK_SESSION_INFO;
12361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_session_info *CK_SESSION_INFO_PTR;
12371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR;
12391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_object_class_t *CK_OBJECT_CLASS_PTR;
12411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_attribute CK_ATTRIBUTE;
12431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_attribute *CK_ATTRIBUTE_PTR;
12441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_date CK_DATE;
12461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_date *CK_DATE_PTR;
12471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR;
12491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_mechanism CK_MECHANISM;
12511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_mechanism *CK_MECHANISM_PTR;
12521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_mechanism_info CK_MECHANISM_INFO;
12541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR;
12551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_function_list CK_FUNCTION_LIST;
12571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_function_list *CK_FUNCTION_LIST_PTR;
12581305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR;
12591305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12601305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS;
12611305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodtypedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR;
12621305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12631305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#define NULL_PTR NULL
12641305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12651305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* Delete the helper macros defined at the top of the file.  */
12661305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_flags_t
12671305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_version
12681305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12691305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_info
12701305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef cryptoki_version
12711305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef manufacturer_id
12721305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef library_description
12731305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef library_version
12741305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12751305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_notification_t
12761305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_slot_id_t
12771305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12781305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_slot_info
12791305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef slot_description
12801305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef hardware_version
12811305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef firmware_version
12821305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12831305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_token_info
12841305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef serial_number
12851305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef max_session_count
12861305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef session_count
12871305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef max_rw_session_count
12881305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef rw_session_count
12891305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef max_pin_len
12901305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef min_pin_len
12911305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef total_public_memory
12921305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef free_public_memory
12931305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef total_private_memory
12941305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef free_private_memory
12951305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef utc_time
12961305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
12971305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_session_handle_t
12981305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_user_type_t
12991305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_state_t
13001305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13011305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_session_info
13021305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef slot_id
13031305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef device_error
13041305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13051305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_object_handle_t
13061305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_object_class_t
13071305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_hw_feature_type_t
13081305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_key_type_t
13091305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_certificate_type_t
13101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_attribute_type_t
13111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_attribute
13131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef value
13141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef value_len
13151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_date
13171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_mechanism_type_t
13191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_mechanism
13211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef parameter
13221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef parameter_len
13231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_mechanism_info
13251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef min_key_size
13261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef max_key_size
13271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_rv_t
13291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_notify_t
13301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_function_list
13321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_createmutex_t
13341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_destroymutex_t
13351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_lockmutex_t
13361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_unlockmutex_t
13371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef ck_c_initialize_args
13391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef create_mutex
13401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef destroy_mutex
13411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef lock_mutex
13421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef unlock_mutex
13431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#undef reserved
13441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif	/* CRYPTOKI_COMPAT */
13461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13471305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood/* System dependencies.  */
13491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
13501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#pragma pack(pop, cryptoki)
13511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
13521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13531305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#if defined(__cplusplus)
13541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood}
13551305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif
13561305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood
13571305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#endif	/* PKCS11_H */
1358