xref: /illumos-gate/usr/src/lib/pkcs11/include/pkcs11t.h (revision b106467fd72e9bfd9e2bd78fbaa00a96a4eead45)
1*b106467fSJason King /* Copyright (c) OASIS Open 2016. All Rights Reserved./
2*b106467fSJason King  * /Distributed under the terms of the OASIS IPR Policy,
3*b106467fSJason King  * [http://www.oasis-open.org/policies-guidelines/ipr], AS-IS, WITHOUT ANY
4*b106467fSJason King  * IMPLIED OR EXPRESS WARRANTY; there is no warranty of MERCHANTABILITY, FITNESS FOR A
5*b106467fSJason King  * PARTICULAR PURPOSE or NONINFRINGEMENT of the rights of others.
6*b106467fSJason King  */
77c478bd9Sstevel@tonic-gate 
8*b106467fSJason King /* Latest version of the specification:
9*b106467fSJason King  * http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/pkcs11-base-v2.40.html
107c478bd9Sstevel@tonic-gate  */
117c478bd9Sstevel@tonic-gate 
127c478bd9Sstevel@tonic-gate /* See top of pkcs11.h for information about the macros that
137c478bd9Sstevel@tonic-gate  * must be defined and the structure-packing conventions that
14*b106467fSJason King  * must be set before including this file.
15*b106467fSJason King  */
167c478bd9Sstevel@tonic-gate 
177c478bd9Sstevel@tonic-gate #ifndef _PKCS11T_H_
187c478bd9Sstevel@tonic-gate #define _PKCS11T_H_ 1
197c478bd9Sstevel@tonic-gate 
20*b106467fSJason King #define CRYPTOKI_VERSION_MAJOR          2
21*b106467fSJason King #define CRYPTOKI_VERSION_MINOR          40
22*b106467fSJason King #define CRYPTOKI_VERSION_AMENDMENT      0
231e9884acSmcpowers 
24*b106467fSJason King #define CK_TRUE         1
25*b106467fSJason King #define CK_FALSE        0
26f66d273dSizick 
277c478bd9Sstevel@tonic-gate #ifndef CK_DISABLE_TRUE_FALSE
287c478bd9Sstevel@tonic-gate #ifndef FALSE
29f66d273dSizick #define FALSE CK_FALSE
307c478bd9Sstevel@tonic-gate #endif
317c478bd9Sstevel@tonic-gate #ifndef TRUE
32f66d273dSizick #define TRUE CK_TRUE
337c478bd9Sstevel@tonic-gate #endif
347c478bd9Sstevel@tonic-gate #endif
357c478bd9Sstevel@tonic-gate 
367c478bd9Sstevel@tonic-gate /* an unsigned 8-bit value */
377c478bd9Sstevel@tonic-gate typedef unsigned char     CK_BYTE;
387c478bd9Sstevel@tonic-gate 
397c478bd9Sstevel@tonic-gate /* an unsigned 8-bit character */
407c478bd9Sstevel@tonic-gate typedef CK_BYTE           CK_CHAR;
417c478bd9Sstevel@tonic-gate 
427c478bd9Sstevel@tonic-gate /* an 8-bit UTF-8 character */
437c478bd9Sstevel@tonic-gate typedef CK_BYTE           CK_UTF8CHAR;
447c478bd9Sstevel@tonic-gate 
457c478bd9Sstevel@tonic-gate /* a BYTE-sized Boolean flag */
467c478bd9Sstevel@tonic-gate typedef CK_BYTE           CK_BBOOL;
477c478bd9Sstevel@tonic-gate 
487c478bd9Sstevel@tonic-gate /* an unsigned value, at least 32 bits long */
497c478bd9Sstevel@tonic-gate typedef unsigned long int CK_ULONG;
507c478bd9Sstevel@tonic-gate 
517c478bd9Sstevel@tonic-gate /* a signed value, the same size as a CK_ULONG */
527c478bd9Sstevel@tonic-gate typedef long int          CK_LONG;
537c478bd9Sstevel@tonic-gate 
547c478bd9Sstevel@tonic-gate /* at least 32 bits; each bit is a Boolean flag */
557c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_FLAGS;
567c478bd9Sstevel@tonic-gate 
577c478bd9Sstevel@tonic-gate 
587c478bd9Sstevel@tonic-gate /* some special values for certain CK_ULONG variables */
59*b106467fSJason King #define CK_UNAVAILABLE_INFORMATION      (~0UL)
60*b106467fSJason King #define CK_EFFECTIVELY_INFINITE         0UL
617c478bd9Sstevel@tonic-gate 
627c478bd9Sstevel@tonic-gate 
637c478bd9Sstevel@tonic-gate typedef CK_BYTE     CK_PTR   CK_BYTE_PTR;
647c478bd9Sstevel@tonic-gate typedef CK_CHAR     CK_PTR   CK_CHAR_PTR;
657c478bd9Sstevel@tonic-gate typedef CK_UTF8CHAR CK_PTR   CK_UTF8CHAR_PTR;
667c478bd9Sstevel@tonic-gate typedef CK_ULONG    CK_PTR   CK_ULONG_PTR;
677c478bd9Sstevel@tonic-gate typedef void        CK_PTR   CK_VOID_PTR;
687c478bd9Sstevel@tonic-gate 
697c478bd9Sstevel@tonic-gate /* Pointer to a CK_VOID_PTR-- i.e., pointer to pointer to void */
707c478bd9Sstevel@tonic-gate typedef CK_VOID_PTR CK_PTR CK_VOID_PTR_PTR;
717c478bd9Sstevel@tonic-gate 
727c478bd9Sstevel@tonic-gate 
73*b106467fSJason King /* The following value is always invalid if used as a session
74*b106467fSJason King  * handle or object handle
75*b106467fSJason King  */
76*b106467fSJason King #define CK_INVALID_HANDLE       0UL
777c478bd9Sstevel@tonic-gate 
787c478bd9Sstevel@tonic-gate 
797c478bd9Sstevel@tonic-gate typedef struct CK_VERSION {
807c478bd9Sstevel@tonic-gate   CK_BYTE       major;  /* integer portion of version number */
817c478bd9Sstevel@tonic-gate   CK_BYTE       minor;  /* 1/100ths portion of version number */
827c478bd9Sstevel@tonic-gate } CK_VERSION;
837c478bd9Sstevel@tonic-gate 
847c478bd9Sstevel@tonic-gate typedef CK_VERSION CK_PTR CK_VERSION_PTR;
857c478bd9Sstevel@tonic-gate 
867c478bd9Sstevel@tonic-gate 
877c478bd9Sstevel@tonic-gate typedef struct CK_INFO {
887c478bd9Sstevel@tonic-gate   CK_VERSION    cryptokiVersion;     /* Cryptoki interface ver */
897c478bd9Sstevel@tonic-gate   CK_UTF8CHAR   manufacturerID[32];  /* blank padded */
907c478bd9Sstevel@tonic-gate   CK_FLAGS      flags;               /* must be zero */
917c478bd9Sstevel@tonic-gate   CK_UTF8CHAR   libraryDescription[32];  /* blank padded */
927c478bd9Sstevel@tonic-gate   CK_VERSION    libraryVersion;          /* version of library */
937c478bd9Sstevel@tonic-gate } CK_INFO;
947c478bd9Sstevel@tonic-gate 
957c478bd9Sstevel@tonic-gate typedef CK_INFO CK_PTR    CK_INFO_PTR;
967c478bd9Sstevel@tonic-gate 
977c478bd9Sstevel@tonic-gate 
987c478bd9Sstevel@tonic-gate /* CK_NOTIFICATION enumerates the types of notifications that
99*b106467fSJason King  * Cryptoki provides to an application
100*b106467fSJason King  */
1017c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_NOTIFICATION;
102*b106467fSJason King #define CKN_SURRENDER           0UL
103*b106467fSJason King #define CKN_OTP_CHANGED         1UL
1047c478bd9Sstevel@tonic-gate 
1057c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_SLOT_ID;
1067c478bd9Sstevel@tonic-gate 
1077c478bd9Sstevel@tonic-gate typedef CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR;
1087c478bd9Sstevel@tonic-gate 
1097c478bd9Sstevel@tonic-gate 
1107c478bd9Sstevel@tonic-gate /* CK_SLOT_INFO provides information about a slot */
1117c478bd9Sstevel@tonic-gate typedef struct CK_SLOT_INFO {
1127c478bd9Sstevel@tonic-gate   CK_UTF8CHAR   slotDescription[64];  /* blank padded */
1137c478bd9Sstevel@tonic-gate   CK_UTF8CHAR   manufacturerID[32];   /* blank padded */
1147c478bd9Sstevel@tonic-gate   CK_FLAGS      flags;
1157c478bd9Sstevel@tonic-gate 
1167c478bd9Sstevel@tonic-gate   CK_VERSION    hardwareVersion;  /* version of hardware */
1177c478bd9Sstevel@tonic-gate   CK_VERSION    firmwareVersion;  /* version of firmware */
1187c478bd9Sstevel@tonic-gate } CK_SLOT_INFO;
1197c478bd9Sstevel@tonic-gate 
1207c478bd9Sstevel@tonic-gate /* flags: bit flags that provide capabilities of the slot
1217c478bd9Sstevel@tonic-gate  *      Bit Flag              Mask        Meaning
1227c478bd9Sstevel@tonic-gate  */
123*b106467fSJason King #define CKF_TOKEN_PRESENT     0x00000001UL  /* a token is there */
124*b106467fSJason King #define CKF_REMOVABLE_DEVICE  0x00000002UL  /* removable devices*/
125*b106467fSJason King #define CKF_HW_SLOT           0x00000004UL  /* hardware slot */
1267c478bd9Sstevel@tonic-gate 
1277c478bd9Sstevel@tonic-gate typedef CK_SLOT_INFO CK_PTR CK_SLOT_INFO_PTR;
1287c478bd9Sstevel@tonic-gate 
1297c478bd9Sstevel@tonic-gate 
1307c478bd9Sstevel@tonic-gate /* CK_TOKEN_INFO provides information about a token */
1317c478bd9Sstevel@tonic-gate typedef struct CK_TOKEN_INFO {
1327c478bd9Sstevel@tonic-gate   CK_UTF8CHAR   label[32];           /* blank padded */
1337c478bd9Sstevel@tonic-gate   CK_UTF8CHAR   manufacturerID[32];  /* blank padded */
1347c478bd9Sstevel@tonic-gate   CK_UTF8CHAR   model[16];           /* blank padded */
1357c478bd9Sstevel@tonic-gate   CK_CHAR       serialNumber[16];    /* blank padded */
1367c478bd9Sstevel@tonic-gate   CK_FLAGS      flags;               /* see below */
1377c478bd9Sstevel@tonic-gate 
1387c478bd9Sstevel@tonic-gate   CK_ULONG      ulMaxSessionCount;     /* max open sessions */
1397c478bd9Sstevel@tonic-gate   CK_ULONG      ulSessionCount;        /* sess. now open */
1407c478bd9Sstevel@tonic-gate   CK_ULONG      ulMaxRwSessionCount;   /* max R/W sessions */
1417c478bd9Sstevel@tonic-gate   CK_ULONG      ulRwSessionCount;      /* R/W sess. now open */
1427c478bd9Sstevel@tonic-gate   CK_ULONG      ulMaxPinLen;           /* in bytes */
1437c478bd9Sstevel@tonic-gate   CK_ULONG      ulMinPinLen;           /* in bytes */
1447c478bd9Sstevel@tonic-gate   CK_ULONG      ulTotalPublicMemory;   /* in bytes */
1457c478bd9Sstevel@tonic-gate   CK_ULONG      ulFreePublicMemory;    /* in bytes */
1467c478bd9Sstevel@tonic-gate   CK_ULONG      ulTotalPrivateMemory;  /* in bytes */
1477c478bd9Sstevel@tonic-gate   CK_ULONG      ulFreePrivateMemory;   /* in bytes */
1487c478bd9Sstevel@tonic-gate   CK_VERSION    hardwareVersion;       /* version of hardware */
1497c478bd9Sstevel@tonic-gate   CK_VERSION    firmwareVersion;       /* version of firmware */
1507c478bd9Sstevel@tonic-gate   CK_CHAR       utcTime[16];           /* time */
1517c478bd9Sstevel@tonic-gate } CK_TOKEN_INFO;
1527c478bd9Sstevel@tonic-gate 
1537c478bd9Sstevel@tonic-gate /* The flags parameter is defined as follows:
154f66d273dSizick  *      Bit Flag                    Mask        Meaning
1557c478bd9Sstevel@tonic-gate  */
156*b106467fSJason King #define CKF_RNG                     0x00000001UL  /* has random # generator */
157*b106467fSJason King #define CKF_WRITE_PROTECTED         0x00000002UL  /* token is write-protected */
158*b106467fSJason King #define CKF_LOGIN_REQUIRED          0x00000004UL  /* user must login */
159*b106467fSJason King #define CKF_USER_PIN_INITIALIZED    0x00000008UL  /* normal user's PIN is set */
160*b106467fSJason King 
161*b106467fSJason King /* CKF_RESTORE_KEY_NOT_NEEDED.  If it is set,
1627c478bd9Sstevel@tonic-gate  * that means that *every* time the state of cryptographic
1637c478bd9Sstevel@tonic-gate  * operations of a session is successfully saved, all keys
164*b106467fSJason King  * needed to continue those operations are stored in the state
165*b106467fSJason King  */
166*b106467fSJason King #define CKF_RESTORE_KEY_NOT_NEEDED  0x00000020UL
1677c478bd9Sstevel@tonic-gate 
168*b106467fSJason King /* CKF_CLOCK_ON_TOKEN.  If it is set, that means
1697c478bd9Sstevel@tonic-gate  * that the token has some sort of clock.  The time on that
170*b106467fSJason King  * clock is returned in the token info structure
171*b106467fSJason King  */
172*b106467fSJason King #define CKF_CLOCK_ON_TOKEN          0x00000040UL
1737c478bd9Sstevel@tonic-gate 
174*b106467fSJason King /* CKF_PROTECTED_AUTHENTICATION_PATH.  If it is
1757c478bd9Sstevel@tonic-gate  * set, that means that there is some way for the user to login
176*b106467fSJason King  * without sending a PIN through the Cryptoki library itself
177*b106467fSJason King  */
178*b106467fSJason King #define CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100UL
1797c478bd9Sstevel@tonic-gate 
180*b106467fSJason King /* CKF_DUAL_CRYPTO_OPERATIONS.  If it is true,
1817c478bd9Sstevel@tonic-gate  * that means that a single session with the token can perform
1827c478bd9Sstevel@tonic-gate  * dual simultaneous cryptographic operations (digest and
1837c478bd9Sstevel@tonic-gate  * encrypt; decrypt and digest; sign and encrypt; and decrypt
184*b106467fSJason King  * and sign)
185*b106467fSJason King  */
186*b106467fSJason King #define CKF_DUAL_CRYPTO_OPERATIONS  0x00000200UL
1877c478bd9Sstevel@tonic-gate 
188*b106467fSJason King /* CKF_TOKEN_INITIALIZED. If it is true, the
189f66d273dSizick  * token has been initialized using C_InitializeToken or an
1907c478bd9Sstevel@tonic-gate  * equivalent mechanism outside the scope of PKCS #11.
191f66d273dSizick  * Calling C_InitializeToken when this flag is set will cause
192*b106467fSJason King  * the token to be reinitialized.
193*b106467fSJason King  */
194*b106467fSJason King #define CKF_TOKEN_INITIALIZED       0x00000400UL
1957c478bd9Sstevel@tonic-gate 
196*b106467fSJason King /* CKF_SECONDARY_AUTHENTICATION. If it is
197f66d273dSizick  * true, the token supports secondary authentication for
198*b106467fSJason King  * private key objects.
199*b106467fSJason King  */
200*b106467fSJason King #define CKF_SECONDARY_AUTHENTICATION  0x00000800UL
2017c478bd9Sstevel@tonic-gate 
202*b106467fSJason King /* CKF_USER_PIN_COUNT_LOW. If it is true, an
203f66d273dSizick  * incorrect user login PIN has been entered at least once
204*b106467fSJason King  * since the last successful authentication.
205*b106467fSJason King  */
206*b106467fSJason King #define CKF_USER_PIN_COUNT_LOW       0x00010000UL
2077c478bd9Sstevel@tonic-gate 
208*b106467fSJason King /* CKF_USER_PIN_FINAL_TRY. If it is true,
209*b106467fSJason King  * supplying an incorrect user PIN will it to become locked.
210*b106467fSJason King  */
211*b106467fSJason King #define CKF_USER_PIN_FINAL_TRY       0x00020000UL
2127c478bd9Sstevel@tonic-gate 
213*b106467fSJason King /* CKF_USER_PIN_LOCKED. If it is true, the
214f66d273dSizick  * user PIN has been locked. User login to the token is not
215*b106467fSJason King  * possible.
216*b106467fSJason King  */
217*b106467fSJason King #define CKF_USER_PIN_LOCKED          0x00040000UL
2187c478bd9Sstevel@tonic-gate 
219*b106467fSJason King /* CKF_USER_PIN_TO_BE_CHANGED. If it is true,
220f66d273dSizick  * the user PIN value is the default value set by token
2217c478bd9Sstevel@tonic-gate  * initialization or manufacturing, or the PIN has been
222*b106467fSJason King  * expired by the card.
223*b106467fSJason King  */
224*b106467fSJason King #define CKF_USER_PIN_TO_BE_CHANGED   0x00080000UL
2257c478bd9Sstevel@tonic-gate 
226*b106467fSJason King /* CKF_SO_PIN_COUNT_LOW. If it is true, an
227f66d273dSizick  * incorrect SO login PIN has been entered at least once since
228*b106467fSJason King  * the last successful authentication.
229*b106467fSJason King  */
230*b106467fSJason King #define CKF_SO_PIN_COUNT_LOW         0x00100000UL
2317c478bd9Sstevel@tonic-gate 
232*b106467fSJason King /* CKF_SO_PIN_FINAL_TRY. If it is true,
233*b106467fSJason King  * supplying an incorrect SO PIN will it to become locked.
234*b106467fSJason King  */
235*b106467fSJason King #define CKF_SO_PIN_FINAL_TRY         0x00200000UL
2367c478bd9Sstevel@tonic-gate 
237*b106467fSJason King /* CKF_SO_PIN_LOCKED. If it is true, the SO
2387c478bd9Sstevel@tonic-gate  * PIN has been locked. SO login to the token is not possible.
2397c478bd9Sstevel@tonic-gate  */
240*b106467fSJason King #define CKF_SO_PIN_LOCKED            0x00400000UL
2417c478bd9Sstevel@tonic-gate 
242*b106467fSJason King /* CKF_SO_PIN_TO_BE_CHANGED. If it is true,
243f66d273dSizick  * the SO PIN value is the default value set by token
2447c478bd9Sstevel@tonic-gate  * initialization or manufacturing, or the PIN has been
245*b106467fSJason King  * expired by the card.
246*b106467fSJason King  */
247*b106467fSJason King #define CKF_SO_PIN_TO_BE_CHANGED     0x00800000UL
248*b106467fSJason King 
249*b106467fSJason King #define CKF_ERROR_STATE              0x01000000UL
2507c478bd9Sstevel@tonic-gate 
2517c478bd9Sstevel@tonic-gate typedef CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR;
2527c478bd9Sstevel@tonic-gate 
2537c478bd9Sstevel@tonic-gate 
2547c478bd9Sstevel@tonic-gate /* CK_SESSION_HANDLE is a Cryptoki-assigned value that
255*b106467fSJason King  * identifies a session
256*b106467fSJason King  */
2577c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_SESSION_HANDLE;
2587c478bd9Sstevel@tonic-gate 
259f66d273dSizick typedef CK_SESSION_HANDLE CK_PTR CK_SESSION_HANDLE_PTR;
2607c478bd9Sstevel@tonic-gate 
2617c478bd9Sstevel@tonic-gate 
2627c478bd9Sstevel@tonic-gate /* CK_USER_TYPE enumerates the types of Cryptoki users */
2637c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_USER_TYPE;
2647c478bd9Sstevel@tonic-gate /* Security Officer */
265*b106467fSJason King #define CKU_SO                  0UL
2667c478bd9Sstevel@tonic-gate /* Normal user */
267*b106467fSJason King #define CKU_USER                1UL
268*b106467fSJason King /* Context specific */
269*b106467fSJason King #define CKU_CONTEXT_SPECIFIC    2UL
2707c478bd9Sstevel@tonic-gate 
2717c478bd9Sstevel@tonic-gate /* CK_STATE enumerates the session states */
2727c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_STATE;
273*b106467fSJason King #define CKS_RO_PUBLIC_SESSION   0UL
274*b106467fSJason King #define CKS_RO_USER_FUNCTIONS   1UL
275*b106467fSJason King #define CKS_RW_PUBLIC_SESSION   2UL
276*b106467fSJason King #define CKS_RW_USER_FUNCTIONS   3UL
277*b106467fSJason King #define CKS_RW_SO_FUNCTIONS     4UL
2787c478bd9Sstevel@tonic-gate 
2797c478bd9Sstevel@tonic-gate /* CK_SESSION_INFO provides information about a session */
2807c478bd9Sstevel@tonic-gate typedef struct CK_SESSION_INFO {
2817c478bd9Sstevel@tonic-gate   CK_SLOT_ID    slotID;
2827c478bd9Sstevel@tonic-gate   CK_STATE      state;
2837c478bd9Sstevel@tonic-gate   CK_FLAGS      flags;          /* see below */
2847c478bd9Sstevel@tonic-gate   CK_ULONG      ulDeviceError;  /* device-dependent error code */
2857c478bd9Sstevel@tonic-gate } CK_SESSION_INFO;
2867c478bd9Sstevel@tonic-gate 
2877c478bd9Sstevel@tonic-gate /* The flags are defined in the following table:
2887c478bd9Sstevel@tonic-gate  *      Bit Flag                Mask        Meaning
2897c478bd9Sstevel@tonic-gate  */
290*b106467fSJason King #define CKF_RW_SESSION          0x00000002UL /* session is r/w */
291*b106467fSJason King #define CKF_SERIAL_SESSION      0x00000004UL /* no parallel    */
2927c478bd9Sstevel@tonic-gate 
2937c478bd9Sstevel@tonic-gate typedef CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR;
2947c478bd9Sstevel@tonic-gate 
2957c478bd9Sstevel@tonic-gate 
2967c478bd9Sstevel@tonic-gate /* CK_OBJECT_HANDLE is a token-specific identifier for an
297*b106467fSJason King  * object
298*b106467fSJason King  */
2997c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_OBJECT_HANDLE;
3007c478bd9Sstevel@tonic-gate 
3017c478bd9Sstevel@tonic-gate typedef CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR;
3027c478bd9Sstevel@tonic-gate 
3037c478bd9Sstevel@tonic-gate 
3047c478bd9Sstevel@tonic-gate /* CK_OBJECT_CLASS is a value that identifies the classes (or
3057c478bd9Sstevel@tonic-gate  * types) of objects that Cryptoki recognizes.  It is defined
306*b106467fSJason King  * as follows:
307*b106467fSJason King  */
3087c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_OBJECT_CLASS;
3097c478bd9Sstevel@tonic-gate 
3107c478bd9Sstevel@tonic-gate /* The following classes of objects are defined: */
311*b106467fSJason King #define CKO_DATA              0x00000000UL
312*b106467fSJason King #define CKO_CERTIFICATE       0x00000001UL
313*b106467fSJason King #define CKO_PUBLIC_KEY        0x00000002UL
314*b106467fSJason King #define CKO_PRIVATE_KEY       0x00000003UL
315*b106467fSJason King #define CKO_SECRET_KEY        0x00000004UL
316*b106467fSJason King #define CKO_HW_FEATURE        0x00000005UL
317*b106467fSJason King #define CKO_DOMAIN_PARAMETERS 0x00000006UL
318*b106467fSJason King #define CKO_MECHANISM         0x00000007UL
319*b106467fSJason King #define CKO_OTP_KEY           0x00000008UL
320*b106467fSJason King 
321*b106467fSJason King #define CKO_VENDOR_DEFINED    0x80000000UL
3227c478bd9Sstevel@tonic-gate 
3237c478bd9Sstevel@tonic-gate typedef CK_OBJECT_CLASS CK_PTR CK_OBJECT_CLASS_PTR;
3247c478bd9Sstevel@tonic-gate 
325*b106467fSJason King /* CK_HW_FEATURE_TYPE is a value that identifies the hardware feature type
326*b106467fSJason King  * of an object with CK_OBJECT_CLASS equal to CKO_HW_FEATURE.
327*b106467fSJason King  */
3287c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_HW_FEATURE_TYPE;
329f66d273dSizick 
3307c478bd9Sstevel@tonic-gate /* The following hardware feature types are defined */
331*b106467fSJason King #define CKH_MONOTONIC_COUNTER  0x00000001UL
332*b106467fSJason King #define CKH_CLOCK              0x00000002UL
333*b106467fSJason King #define CKH_USER_INTERFACE     0x00000003UL
334*b106467fSJason King #define CKH_VENDOR_DEFINED     0x80000000UL
3357c478bd9Sstevel@tonic-gate 
3367c478bd9Sstevel@tonic-gate /* CK_KEY_TYPE is a value that identifies a key type */
3377c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_KEY_TYPE;
3387c478bd9Sstevel@tonic-gate 
3397c478bd9Sstevel@tonic-gate /* the following key types are defined: */
340*b106467fSJason King #define CKK_RSA                 0x00000000UL
341*b106467fSJason King #define CKK_DSA                 0x00000001UL
342*b106467fSJason King #define CKK_DH                  0x00000002UL
343*b106467fSJason King #define CKK_ECDSA               0x00000003UL /* Deprecated */
344*b106467fSJason King #define CKK_EC                  0x00000003UL
345*b106467fSJason King #define CKK_X9_42_DH            0x00000004UL
346*b106467fSJason King #define CKK_KEA                 0x00000005UL
347*b106467fSJason King #define CKK_GENERIC_SECRET      0x00000010UL
348*b106467fSJason King #define CKK_RC2                 0x00000011UL
349*b106467fSJason King #define CKK_RC4                 0x00000012UL
350*b106467fSJason King #define CKK_DES                 0x00000013UL
351*b106467fSJason King #define CKK_DES2                0x00000014UL
352*b106467fSJason King #define CKK_DES3                0x00000015UL
353*b106467fSJason King #define CKK_CAST                0x00000016UL
354*b106467fSJason King #define CKK_CAST3               0x00000017UL
355*b106467fSJason King #define CKK_CAST5               0x00000018UL /* Deprecated */
356*b106467fSJason King #define CKK_CAST128             0x00000018UL
357*b106467fSJason King #define CKK_RC5                 0x00000019UL
358*b106467fSJason King #define CKK_IDEA                0x0000001AUL
359*b106467fSJason King #define CKK_SKIPJACK            0x0000001BUL
360*b106467fSJason King #define CKK_BATON               0x0000001CUL
361*b106467fSJason King #define CKK_JUNIPER             0x0000001DUL
362*b106467fSJason King #define CKK_CDMF                0x0000001EUL
363*b106467fSJason King #define CKK_AES                 0x0000001FUL
364*b106467fSJason King #define CKK_BLOWFISH            0x00000020UL
365*b106467fSJason King #define CKK_TWOFISH             0x00000021UL
366*b106467fSJason King #define CKK_SECURID             0x00000022UL
367*b106467fSJason King #define CKK_HOTP                0x00000023UL
368*b106467fSJason King #define CKK_ACTI                0x00000024UL
369*b106467fSJason King #define CKK_CAMELLIA            0x00000025UL
370*b106467fSJason King #define CKK_ARIA                0x00000026UL
371*b106467fSJason King 
372*b106467fSJason King #define CKK_MD5_HMAC            0x00000027UL
373*b106467fSJason King #define CKK_SHA_1_HMAC          0x00000028UL
374*b106467fSJason King #define CKK_RIPEMD128_HMAC      0x00000029UL
375*b106467fSJason King #define CKK_RIPEMD160_HMAC      0x0000002AUL
376*b106467fSJason King #define CKK_SHA256_HMAC         0x0000002BUL
377*b106467fSJason King #define CKK_SHA384_HMAC         0x0000002CUL
378*b106467fSJason King #define CKK_SHA512_HMAC         0x0000002DUL
379*b106467fSJason King #define CKK_SHA224_HMAC         0x0000002EUL
380*b106467fSJason King 
381*b106467fSJason King #define CKK_SEED                0x0000002FUL
382*b106467fSJason King #define CKK_GOSTR3410           0x00000030UL
383*b106467fSJason King #define CKK_GOSTR3411           0x00000031UL
384*b106467fSJason King #define CKK_GOST28147           0x00000032UL
385*b106467fSJason King 
386*b106467fSJason King 
387*b106467fSJason King 
388*b106467fSJason King #define CKK_VENDOR_DEFINED      0x80000000UL
3897c478bd9Sstevel@tonic-gate 
3907c478bd9Sstevel@tonic-gate 
3917c478bd9Sstevel@tonic-gate /* CK_CERTIFICATE_TYPE is a value that identifies a certificate
392*b106467fSJason King  * type
393*b106467fSJason King  */
3947c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_CERTIFICATE_TYPE;
3957c478bd9Sstevel@tonic-gate 
396*b106467fSJason King #define CK_CERTIFICATE_CATEGORY_UNSPECIFIED     0UL
397*b106467fSJason King #define CK_CERTIFICATE_CATEGORY_TOKEN_USER      1UL
398*b106467fSJason King #define CK_CERTIFICATE_CATEGORY_AUTHORITY       2UL
399*b106467fSJason King #define CK_CERTIFICATE_CATEGORY_OTHER_ENTITY    3UL
400*b106467fSJason King 
401*b106467fSJason King #define CK_SECURITY_DOMAIN_UNSPECIFIED     0UL
402*b106467fSJason King #define CK_SECURITY_DOMAIN_MANUFACTURER    1UL
403*b106467fSJason King #define CK_SECURITY_DOMAIN_OPERATOR        2UL
404*b106467fSJason King #define CK_SECURITY_DOMAIN_THIRD_PARTY     3UL
405*b106467fSJason King 
406*b106467fSJason King 
4077c478bd9Sstevel@tonic-gate /* The following certificate types are defined: */
408*b106467fSJason King #define CKC_X_509               0x00000000UL
409*b106467fSJason King #define CKC_X_509_ATTR_CERT     0x00000001UL
410*b106467fSJason King #define CKC_WTLS                0x00000002UL
411*b106467fSJason King #define CKC_VENDOR_DEFINED      0x80000000UL
4127c478bd9Sstevel@tonic-gate 
4137c478bd9Sstevel@tonic-gate 
4147c478bd9Sstevel@tonic-gate /* CK_ATTRIBUTE_TYPE is a value that identifies an attribute
415*b106467fSJason King  * type
416*b106467fSJason King  */
4177c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_ATTRIBUTE_TYPE;
4187c478bd9Sstevel@tonic-gate 
419f66d273dSizick /* The CKF_ARRAY_ATTRIBUTE flag identifies an attribute which
420*b106467fSJason King  * consists of an array of values.
421*b106467fSJason King  */
422*b106467fSJason King #define CKF_ARRAY_ATTRIBUTE     0x40000000UL
423*b106467fSJason King 
424*b106467fSJason King /* The following OTP-related defines relate to the CKA_OTP_FORMAT attribute */
425*b106467fSJason King #define CK_OTP_FORMAT_DECIMAL           0UL
426*b106467fSJason King #define CK_OTP_FORMAT_HEXADECIMAL       1UL
427*b106467fSJason King #define CK_OTP_FORMAT_ALPHANUMERIC      2UL
428*b106467fSJason King #define CK_OTP_FORMAT_BINARY            3UL
429*b106467fSJason King 
430*b106467fSJason King /* The following OTP-related defines relate to the CKA_OTP_..._REQUIREMENT
431*b106467fSJason King  * attributes
432*b106467fSJason King  */
433*b106467fSJason King #define CK_OTP_PARAM_IGNORED            0UL
434*b106467fSJason King #define CK_OTP_PARAM_OPTIONAL           1UL
435*b106467fSJason King #define CK_OTP_PARAM_MANDATORY          2UL
4361e9884acSmcpowers 
4377c478bd9Sstevel@tonic-gate /* The following attribute types are defined: */
438*b106467fSJason King #define CKA_CLASS              0x00000000UL
439*b106467fSJason King #define CKA_TOKEN              0x00000001UL
440*b106467fSJason King #define CKA_PRIVATE            0x00000002UL
441*b106467fSJason King #define CKA_LABEL              0x00000003UL
442*b106467fSJason King #define CKA_APPLICATION        0x00000010UL
443*b106467fSJason King #define CKA_VALUE              0x00000011UL
444*b106467fSJason King #define CKA_OBJECT_ID          0x00000012UL
445*b106467fSJason King #define CKA_CERTIFICATE_TYPE   0x00000080UL
446*b106467fSJason King #define CKA_ISSUER             0x00000081UL
447*b106467fSJason King #define CKA_SERIAL_NUMBER      0x00000082UL
448*b106467fSJason King #define CKA_AC_ISSUER          0x00000083UL
449*b106467fSJason King #define CKA_OWNER              0x00000084UL
450*b106467fSJason King #define CKA_ATTR_TYPES         0x00000085UL
451*b106467fSJason King #define CKA_TRUSTED            0x00000086UL
452*b106467fSJason King #define CKA_CERTIFICATE_CATEGORY        0x00000087UL
453*b106467fSJason King #define CKA_JAVA_MIDP_SECURITY_DOMAIN   0x00000088UL
454*b106467fSJason King #define CKA_URL                         0x00000089UL
455*b106467fSJason King #define CKA_HASH_OF_SUBJECT_PUBLIC_KEY  0x0000008AUL
456*b106467fSJason King #define CKA_HASH_OF_ISSUER_PUBLIC_KEY   0x0000008BUL
457*b106467fSJason King #define CKA_NAME_HASH_ALGORITHM         0x0000008CUL
458*b106467fSJason King #define CKA_CHECK_VALUE                 0x00000090UL
459*b106467fSJason King 
460*b106467fSJason King #define CKA_KEY_TYPE           0x00000100UL
461*b106467fSJason King #define CKA_SUBJECT            0x00000101UL
462*b106467fSJason King #define CKA_ID                 0x00000102UL
463*b106467fSJason King #define CKA_SENSITIVE          0x00000103UL
464*b106467fSJason King #define CKA_ENCRYPT            0x00000104UL
465*b106467fSJason King #define CKA_DECRYPT            0x00000105UL
466*b106467fSJason King #define CKA_WRAP               0x00000106UL
467*b106467fSJason King #define CKA_UNWRAP             0x00000107UL
468*b106467fSJason King #define CKA_SIGN               0x00000108UL
469*b106467fSJason King #define CKA_SIGN_RECOVER       0x00000109UL
470*b106467fSJason King #define CKA_VERIFY             0x0000010AUL
471*b106467fSJason King #define CKA_VERIFY_RECOVER     0x0000010BUL
472*b106467fSJason King #define CKA_DERIVE             0x0000010CUL
473*b106467fSJason King #define CKA_START_DATE         0x00000110UL
474*b106467fSJason King #define CKA_END_DATE           0x00000111UL
475*b106467fSJason King #define CKA_MODULUS            0x00000120UL
476*b106467fSJason King #define CKA_MODULUS_BITS       0x00000121UL
477*b106467fSJason King #define CKA_PUBLIC_EXPONENT    0x00000122UL
478*b106467fSJason King #define CKA_PRIVATE_EXPONENT   0x00000123UL
479*b106467fSJason King #define CKA_PRIME_1            0x00000124UL
480*b106467fSJason King #define CKA_PRIME_2            0x00000125UL
481*b106467fSJason King #define CKA_EXPONENT_1         0x00000126UL
482*b106467fSJason King #define CKA_EXPONENT_2         0x00000127UL
483*b106467fSJason King #define CKA_COEFFICIENT        0x00000128UL
484*b106467fSJason King #define CKA_PUBLIC_KEY_INFO    0x00000129UL
485*b106467fSJason King #define CKA_PRIME              0x00000130UL
486*b106467fSJason King #define CKA_SUBPRIME           0x00000131UL
487*b106467fSJason King #define CKA_BASE               0x00000132UL
488*b106467fSJason King 
489*b106467fSJason King #define CKA_PRIME_BITS         0x00000133UL
490*b106467fSJason King #define CKA_SUBPRIME_BITS      0x00000134UL
491f66d273dSizick #define CKA_SUB_PRIME_BITS     CKA_SUBPRIME_BITS
492*b106467fSJason King 
493*b106467fSJason King #define CKA_VALUE_BITS         0x00000160UL
494*b106467fSJason King #define CKA_VALUE_LEN          0x00000161UL
495*b106467fSJason King #define CKA_EXTRACTABLE        0x00000162UL
496*b106467fSJason King #define CKA_LOCAL              0x00000163UL
497*b106467fSJason King #define CKA_NEVER_EXTRACTABLE  0x00000164UL
498*b106467fSJason King #define CKA_ALWAYS_SENSITIVE   0x00000165UL
499*b106467fSJason King #define CKA_KEY_GEN_MECHANISM  0x00000166UL
500*b106467fSJason King 
501*b106467fSJason King #define CKA_MODIFIABLE         0x00000170UL
502*b106467fSJason King #define CKA_COPYABLE           0x00000171UL
503*b106467fSJason King 
504*b106467fSJason King #define CKA_DESTROYABLE        0x00000172UL
505*b106467fSJason King 
506*b106467fSJason King #define CKA_ECDSA_PARAMS       0x00000180UL /* Deprecated */
507*b106467fSJason King #define CKA_EC_PARAMS          0x00000180UL
508*b106467fSJason King 
509*b106467fSJason King #define CKA_EC_POINT           0x00000181UL
510*b106467fSJason King 
511*b106467fSJason King #define CKA_SECONDARY_AUTH     0x00000200UL /* Deprecated */
512*b106467fSJason King #define CKA_AUTH_PIN_FLAGS     0x00000201UL /* Deprecated */
513*b106467fSJason King 
514*b106467fSJason King #define CKA_ALWAYS_AUTHENTICATE  0x00000202UL
515*b106467fSJason King 
516*b106467fSJason King #define CKA_WRAP_WITH_TRUSTED    0x00000210UL
517*b106467fSJason King #define CKA_WRAP_TEMPLATE        (CKF_ARRAY_ATTRIBUTE|0x00000211UL)
518*b106467fSJason King #define CKA_UNWRAP_TEMPLATE      (CKF_ARRAY_ATTRIBUTE|0x00000212UL)
519*b106467fSJason King #define CKA_DERIVE_TEMPLATE      (CKF_ARRAY_ATTRIBUTE|0x00000213UL)
520*b106467fSJason King 
521*b106467fSJason King #define CKA_OTP_FORMAT                0x00000220UL
522*b106467fSJason King #define CKA_OTP_LENGTH                0x00000221UL
523*b106467fSJason King #define CKA_OTP_TIME_INTERVAL         0x00000222UL
524*b106467fSJason King #define CKA_OTP_USER_FRIENDLY_MODE    0x00000223UL
525*b106467fSJason King #define CKA_OTP_CHALLENGE_REQUIREMENT 0x00000224UL
526*b106467fSJason King #define CKA_OTP_TIME_REQUIREMENT      0x00000225UL
527*b106467fSJason King #define CKA_OTP_COUNTER_REQUIREMENT   0x00000226UL
528*b106467fSJason King #define CKA_OTP_PIN_REQUIREMENT       0x00000227UL
529*b106467fSJason King #define CKA_OTP_COUNTER               0x0000022EUL
530*b106467fSJason King #define CKA_OTP_TIME                  0x0000022FUL
531*b106467fSJason King #define CKA_OTP_USER_IDENTIFIER       0x0000022AUL
532*b106467fSJason King #define CKA_OTP_SERVICE_IDENTIFIER    0x0000022BUL
533*b106467fSJason King #define CKA_OTP_SERVICE_LOGO          0x0000022CUL
534*b106467fSJason King #define CKA_OTP_SERVICE_LOGO_TYPE     0x0000022DUL
535*b106467fSJason King 
536*b106467fSJason King #define CKA_GOSTR3410_PARAMS            0x00000250UL
537*b106467fSJason King #define CKA_GOSTR3411_PARAMS            0x00000251UL
538*b106467fSJason King #define CKA_GOST28147_PARAMS            0x00000252UL
539*b106467fSJason King 
540*b106467fSJason King #define CKA_HW_FEATURE_TYPE             0x00000300UL
541*b106467fSJason King #define CKA_RESET_ON_INIT               0x00000301UL
542*b106467fSJason King #define CKA_HAS_RESET                   0x00000302UL
543*b106467fSJason King 
544*b106467fSJason King #define CKA_PIXEL_X                     0x00000400UL
545*b106467fSJason King #define CKA_PIXEL_Y                     0x00000401UL
546*b106467fSJason King #define CKA_RESOLUTION                  0x00000402UL
547*b106467fSJason King #define CKA_CHAR_ROWS                   0x00000403UL
548*b106467fSJason King #define CKA_CHAR_COLUMNS                0x00000404UL
549*b106467fSJason King #define CKA_COLOR                       0x00000405UL
550*b106467fSJason King #define CKA_BITS_PER_PIXEL              0x00000406UL
551*b106467fSJason King #define CKA_CHAR_SETS                   0x00000480UL
552*b106467fSJason King #define CKA_ENCODING_METHODS            0x00000481UL
553*b106467fSJason King #define CKA_MIME_TYPES                  0x00000482UL
554*b106467fSJason King #define CKA_MECHANISM_TYPE              0x00000500UL
555*b106467fSJason King #define CKA_REQUIRED_CMS_ATTRIBUTES     0x00000501UL
556*b106467fSJason King #define CKA_DEFAULT_CMS_ATTRIBUTES      0x00000502UL
557*b106467fSJason King #define CKA_SUPPORTED_CMS_ATTRIBUTES    0x00000503UL
558*b106467fSJason King #define CKA_ALLOWED_MECHANISMS          (CKF_ARRAY_ATTRIBUTE|0x00000600UL)
559*b106467fSJason King 
560*b106467fSJason King #define CKA_VENDOR_DEFINED              0x80000000UL
5617c478bd9Sstevel@tonic-gate 
5627c478bd9Sstevel@tonic-gate /* CK_ATTRIBUTE is a structure that includes the type, length
563*b106467fSJason King  * and value of an attribute
564*b106467fSJason King  */
5657c478bd9Sstevel@tonic-gate typedef struct CK_ATTRIBUTE {
5667c478bd9Sstevel@tonic-gate   CK_ATTRIBUTE_TYPE type;
5677c478bd9Sstevel@tonic-gate   CK_VOID_PTR       pValue;
5687c478bd9Sstevel@tonic-gate   CK_ULONG          ulValueLen;  /* in bytes */
5697c478bd9Sstevel@tonic-gate } CK_ATTRIBUTE;
5707c478bd9Sstevel@tonic-gate 
5717c478bd9Sstevel@tonic-gate typedef CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR;
5727c478bd9Sstevel@tonic-gate 
5737c478bd9Sstevel@tonic-gate /* CK_DATE is a structure that defines a date */
5747c478bd9Sstevel@tonic-gate typedef struct CK_DATE{
5757c478bd9Sstevel@tonic-gate   CK_CHAR       year[4];   /* the year ("1900" - "9999") */
5767c478bd9Sstevel@tonic-gate   CK_CHAR       month[2];  /* the month ("01" - "12") */
5777c478bd9Sstevel@tonic-gate   CK_CHAR       day[2];    /* the day   ("01" - "31") */
5787c478bd9Sstevel@tonic-gate } CK_DATE;
5797c478bd9Sstevel@tonic-gate 
5807c478bd9Sstevel@tonic-gate 
5817c478bd9Sstevel@tonic-gate /* CK_MECHANISM_TYPE is a value that identifies a mechanism
582*b106467fSJason King  * type
583*b106467fSJason King  */
5847c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_MECHANISM_TYPE;
5857c478bd9Sstevel@tonic-gate 
5867c478bd9Sstevel@tonic-gate /* the following mechanism types are defined: */
587*b106467fSJason King #define CKM_RSA_PKCS_KEY_PAIR_GEN      0x00000000UL
588*b106467fSJason King #define CKM_RSA_PKCS                   0x00000001UL
589*b106467fSJason King #define CKM_RSA_9796                   0x00000002UL
590*b106467fSJason King #define CKM_RSA_X_509                  0x00000003UL
591*b106467fSJason King 
592*b106467fSJason King #define CKM_MD2_RSA_PKCS               0x00000004UL
593*b106467fSJason King #define CKM_MD5_RSA_PKCS               0x00000005UL
594*b106467fSJason King #define CKM_SHA1_RSA_PKCS              0x00000006UL
595*b106467fSJason King 
596*b106467fSJason King #define CKM_RIPEMD128_RSA_PKCS         0x00000007UL
597*b106467fSJason King #define CKM_RIPEMD160_RSA_PKCS         0x00000008UL
598*b106467fSJason King #define CKM_RSA_PKCS_OAEP              0x00000009UL
599*b106467fSJason King 
600*b106467fSJason King #define CKM_RSA_X9_31_KEY_PAIR_GEN     0x0000000AUL
601*b106467fSJason King #define CKM_RSA_X9_31                  0x0000000BUL
602*b106467fSJason King #define CKM_SHA1_RSA_X9_31             0x0000000CUL
603*b106467fSJason King #define CKM_RSA_PKCS_PSS               0x0000000DUL
604*b106467fSJason King #define CKM_SHA1_RSA_PKCS_PSS          0x0000000EUL
605*b106467fSJason King 
606*b106467fSJason King #define CKM_DSA_KEY_PAIR_GEN           0x00000010UL
607*b106467fSJason King #define CKM_DSA                        0x00000011UL
608*b106467fSJason King #define CKM_DSA_SHA1                   0x00000012UL
609*b106467fSJason King #define CKM_DSA_SHA224                 0x00000013UL
610*b106467fSJason King #define CKM_DSA_SHA256                 0x00000014UL
611*b106467fSJason King #define CKM_DSA_SHA384                 0x00000015UL
612*b106467fSJason King #define CKM_DSA_SHA512                 0x00000016UL
613*b106467fSJason King 
614*b106467fSJason King #define CKM_DH_PKCS_KEY_PAIR_GEN       0x00000020UL
615*b106467fSJason King #define CKM_DH_PKCS_DERIVE             0x00000021UL
616*b106467fSJason King 
617*b106467fSJason King #define CKM_X9_42_DH_KEY_PAIR_GEN      0x00000030UL
618*b106467fSJason King #define CKM_X9_42_DH_DERIVE            0x00000031UL
619*b106467fSJason King #define CKM_X9_42_DH_HYBRID_DERIVE     0x00000032UL
620*b106467fSJason King #define CKM_X9_42_MQV_DERIVE           0x00000033UL
621*b106467fSJason King 
622*b106467fSJason King #define CKM_SHA256_RSA_PKCS            0x00000040UL
623*b106467fSJason King #define CKM_SHA384_RSA_PKCS            0x00000041UL
624*b106467fSJason King #define CKM_SHA512_RSA_PKCS            0x00000042UL
625*b106467fSJason King #define CKM_SHA256_RSA_PKCS_PSS        0x00000043UL
626*b106467fSJason King #define CKM_SHA384_RSA_PKCS_PSS        0x00000044UL
627*b106467fSJason King #define CKM_SHA512_RSA_PKCS_PSS        0x00000045UL
628*b106467fSJason King 
629*b106467fSJason King #define CKM_SHA224_RSA_PKCS            0x00000046UL
630*b106467fSJason King #define CKM_SHA224_RSA_PKCS_PSS        0x00000047UL
631*b106467fSJason King 
632*b106467fSJason King #define CKM_SHA512_224                 0x00000048UL
633*b106467fSJason King #define CKM_SHA512_224_HMAC            0x00000049UL
634*b106467fSJason King #define CKM_SHA512_224_HMAC_GENERAL    0x0000004AUL
635*b106467fSJason King #define CKM_SHA512_224_KEY_DERIVATION  0x0000004BUL
636*b106467fSJason King #define CKM_SHA512_256                 0x0000004CUL
637*b106467fSJason King #define CKM_SHA512_256_HMAC            0x0000004DUL
638*b106467fSJason King #define CKM_SHA512_256_HMAC_GENERAL    0x0000004EUL
639*b106467fSJason King #define CKM_SHA512_256_KEY_DERIVATION  0x0000004FUL
640*b106467fSJason King 
641*b106467fSJason King #define CKM_SHA512_T                   0x00000050UL
642*b106467fSJason King #define CKM_SHA512_T_HMAC              0x00000051UL
643*b106467fSJason King #define CKM_SHA512_T_HMAC_GENERAL      0x00000052UL
644*b106467fSJason King #define CKM_SHA512_T_KEY_DERIVATION    0x00000053UL
645*b106467fSJason King 
646*b106467fSJason King #define CKM_RC2_KEY_GEN                0x00000100UL
647*b106467fSJason King #define CKM_RC2_ECB                    0x00000101UL
648*b106467fSJason King #define CKM_RC2_CBC                    0x00000102UL
649*b106467fSJason King #define CKM_RC2_MAC                    0x00000103UL
650*b106467fSJason King 
651*b106467fSJason King #define CKM_RC2_MAC_GENERAL            0x00000104UL
652*b106467fSJason King #define CKM_RC2_CBC_PAD                0x00000105UL
653*b106467fSJason King 
654*b106467fSJason King #define CKM_RC4_KEY_GEN                0x00000110UL
655*b106467fSJason King #define CKM_RC4                        0x00000111UL
656*b106467fSJason King #define CKM_DES_KEY_GEN                0x00000120UL
657*b106467fSJason King #define CKM_DES_ECB                    0x00000121UL
658*b106467fSJason King #define CKM_DES_CBC                    0x00000122UL
659*b106467fSJason King #define CKM_DES_MAC                    0x00000123UL
660*b106467fSJason King 
661*b106467fSJason King #define CKM_DES_MAC_GENERAL            0x00000124UL
662*b106467fSJason King #define CKM_DES_CBC_PAD                0x00000125UL
663*b106467fSJason King 
664*b106467fSJason King #define CKM_DES2_KEY_GEN               0x00000130UL
665*b106467fSJason King #define CKM_DES3_KEY_GEN               0x00000131UL
666*b106467fSJason King #define CKM_DES3_ECB                   0x00000132UL
667*b106467fSJason King #define CKM_DES3_CBC                   0x00000133UL
668*b106467fSJason King #define CKM_DES3_MAC                   0x00000134UL
669*b106467fSJason King 
670*b106467fSJason King #define CKM_DES3_MAC_GENERAL           0x00000135UL
671*b106467fSJason King #define CKM_DES3_CBC_PAD               0x00000136UL
672*b106467fSJason King #define CKM_DES3_CMAC_GENERAL          0x00000137UL
673*b106467fSJason King #define CKM_DES3_CMAC                  0x00000138UL
674*b106467fSJason King #define CKM_CDMF_KEY_GEN               0x00000140UL
675*b106467fSJason King #define CKM_CDMF_ECB                   0x00000141UL
676*b106467fSJason King #define CKM_CDMF_CBC                   0x00000142UL
677*b106467fSJason King #define CKM_CDMF_MAC                   0x00000143UL
678*b106467fSJason King #define CKM_CDMF_MAC_GENERAL           0x00000144UL
679*b106467fSJason King #define CKM_CDMF_CBC_PAD               0x00000145UL
680*b106467fSJason King 
681*b106467fSJason King #define CKM_DES_OFB64                  0x00000150UL
682*b106467fSJason King #define CKM_DES_OFB8                   0x00000151UL
683*b106467fSJason King #define CKM_DES_CFB64                  0x00000152UL
684*b106467fSJason King #define CKM_DES_CFB8                   0x00000153UL
685*b106467fSJason King 
686*b106467fSJason King #define CKM_MD2                        0x00000200UL
687*b106467fSJason King 
688*b106467fSJason King #define CKM_MD2_HMAC                   0x00000201UL
689*b106467fSJason King #define CKM_MD2_HMAC_GENERAL           0x00000202UL
690*b106467fSJason King 
691*b106467fSJason King #define CKM_MD5                        0x00000210UL
692*b106467fSJason King 
693*b106467fSJason King #define CKM_MD5_HMAC                   0x00000211UL
694*b106467fSJason King #define CKM_MD5_HMAC_GENERAL           0x00000212UL
695*b106467fSJason King 
696*b106467fSJason King #define CKM_SHA_1                      0x00000220UL
697*b106467fSJason King 
698*b106467fSJason King #define CKM_SHA_1_HMAC                 0x00000221UL
699*b106467fSJason King #define CKM_SHA_1_HMAC_GENERAL         0x00000222UL
700*b106467fSJason King 
701*b106467fSJason King #define CKM_RIPEMD128                  0x00000230UL
702*b106467fSJason King #define CKM_RIPEMD128_HMAC             0x00000231UL
703*b106467fSJason King #define CKM_RIPEMD128_HMAC_GENERAL     0x00000232UL
704*b106467fSJason King #define CKM_RIPEMD160                  0x00000240UL
705*b106467fSJason King #define CKM_RIPEMD160_HMAC             0x00000241UL
706*b106467fSJason King #define CKM_RIPEMD160_HMAC_GENERAL     0x00000242UL
707*b106467fSJason King 
708*b106467fSJason King #define CKM_SHA256                     0x00000250UL
709*b106467fSJason King #define CKM_SHA256_HMAC                0x00000251UL
710*b106467fSJason King #define CKM_SHA256_HMAC_GENERAL        0x00000252UL
711*b106467fSJason King #define CKM_SHA224                     0x00000255UL
712*b106467fSJason King #define CKM_SHA224_HMAC                0x00000256UL
713*b106467fSJason King #define CKM_SHA224_HMAC_GENERAL        0x00000257UL
714*b106467fSJason King #define CKM_SHA384                     0x00000260UL
715*b106467fSJason King #define CKM_SHA384_HMAC                0x00000261UL
716*b106467fSJason King #define CKM_SHA384_HMAC_GENERAL        0x00000262UL
717*b106467fSJason King #define CKM_SHA512                     0x00000270UL
718*b106467fSJason King #define CKM_SHA512_HMAC                0x00000271UL
719*b106467fSJason King #define CKM_SHA512_HMAC_GENERAL        0x00000272UL
720*b106467fSJason King #define CKM_SECURID_KEY_GEN            0x00000280UL
721*b106467fSJason King #define CKM_SECURID                    0x00000282UL
722*b106467fSJason King #define CKM_HOTP_KEY_GEN               0x00000290UL
723*b106467fSJason King #define CKM_HOTP                       0x00000291UL
724*b106467fSJason King #define CKM_ACTI                       0x000002A0UL
725*b106467fSJason King #define CKM_ACTI_KEY_GEN               0x000002A1UL
726*b106467fSJason King 
727*b106467fSJason King #define CKM_CAST_KEY_GEN               0x00000300UL
728*b106467fSJason King #define CKM_CAST_ECB                   0x00000301UL
729*b106467fSJason King #define CKM_CAST_CBC                   0x00000302UL
730*b106467fSJason King #define CKM_CAST_MAC                   0x00000303UL
731*b106467fSJason King #define CKM_CAST_MAC_GENERAL           0x00000304UL
732*b106467fSJason King #define CKM_CAST_CBC_PAD               0x00000305UL
733*b106467fSJason King #define CKM_CAST3_KEY_GEN              0x00000310UL
734*b106467fSJason King #define CKM_CAST3_ECB                  0x00000311UL
735*b106467fSJason King #define CKM_CAST3_CBC                  0x00000312UL
736*b106467fSJason King #define CKM_CAST3_MAC                  0x00000313UL
737*b106467fSJason King #define CKM_CAST3_MAC_GENERAL          0x00000314UL
738*b106467fSJason King #define CKM_CAST3_CBC_PAD              0x00000315UL
7397c478bd9Sstevel@tonic-gate /* Note that CAST128 and CAST5 are the same algorithm */
740*b106467fSJason King #define CKM_CAST5_KEY_GEN              0x00000320UL
741*b106467fSJason King #define CKM_CAST128_KEY_GEN            0x00000320UL
742*b106467fSJason King #define CKM_CAST5_ECB                  0x00000321UL
743*b106467fSJason King #define CKM_CAST128_ECB                0x00000321UL
744*b106467fSJason King #define CKM_CAST5_CBC                  0x00000322UL /* Deprecated */
745*b106467fSJason King #define CKM_CAST128_CBC                0x00000322UL
746*b106467fSJason King #define CKM_CAST5_MAC                  0x00000323UL /* Deprecated */
747*b106467fSJason King #define CKM_CAST128_MAC                0x00000323UL
748*b106467fSJason King #define CKM_CAST5_MAC_GENERAL          0x00000324UL /* Deprecated */
749*b106467fSJason King #define CKM_CAST128_MAC_GENERAL        0x00000324UL
750*b106467fSJason King #define CKM_CAST5_CBC_PAD              0x00000325UL /* Deprecated */
751*b106467fSJason King #define CKM_CAST128_CBC_PAD            0x00000325UL
752*b106467fSJason King #define CKM_RC5_KEY_GEN                0x00000330UL
753*b106467fSJason King #define CKM_RC5_ECB                    0x00000331UL
754*b106467fSJason King #define CKM_RC5_CBC                    0x00000332UL
755*b106467fSJason King #define CKM_RC5_MAC                    0x00000333UL
756*b106467fSJason King #define CKM_RC5_MAC_GENERAL            0x00000334UL
757*b106467fSJason King #define CKM_RC5_CBC_PAD                0x00000335UL
758*b106467fSJason King #define CKM_IDEA_KEY_GEN               0x00000340UL
759*b106467fSJason King #define CKM_IDEA_ECB                   0x00000341UL
760*b106467fSJason King #define CKM_IDEA_CBC                   0x00000342UL
761*b106467fSJason King #define CKM_IDEA_MAC                   0x00000343UL
762*b106467fSJason King #define CKM_IDEA_MAC_GENERAL           0x00000344UL
763*b106467fSJason King #define CKM_IDEA_CBC_PAD               0x00000345UL
764*b106467fSJason King #define CKM_GENERIC_SECRET_KEY_GEN     0x00000350UL
765*b106467fSJason King #define CKM_CONCATENATE_BASE_AND_KEY   0x00000360UL
766*b106467fSJason King #define CKM_CONCATENATE_BASE_AND_DATA  0x00000362UL
767*b106467fSJason King #define CKM_CONCATENATE_DATA_AND_BASE  0x00000363UL
768*b106467fSJason King #define CKM_XOR_BASE_AND_DATA          0x00000364UL
769*b106467fSJason King #define CKM_EXTRACT_KEY_FROM_KEY       0x00000365UL
770*b106467fSJason King #define CKM_SSL3_PRE_MASTER_KEY_GEN    0x00000370UL
771*b106467fSJason King #define CKM_SSL3_MASTER_KEY_DERIVE     0x00000371UL
772*b106467fSJason King #define CKM_SSL3_KEY_AND_MAC_DERIVE    0x00000372UL
773*b106467fSJason King 
774*b106467fSJason King #define CKM_SSL3_MASTER_KEY_DERIVE_DH  0x00000373UL
775*b106467fSJason King #define CKM_TLS_PRE_MASTER_KEY_GEN     0x00000374UL
776*b106467fSJason King #define CKM_TLS_MASTER_KEY_DERIVE      0x00000375UL
777*b106467fSJason King #define CKM_TLS_KEY_AND_MAC_DERIVE     0x00000376UL
778*b106467fSJason King #define CKM_TLS_MASTER_KEY_DERIVE_DH   0x00000377UL
779*b106467fSJason King 
780*b106467fSJason King #define CKM_TLS_PRF                    0x00000378UL
781*b106467fSJason King 
782*b106467fSJason King #define CKM_SSL3_MD5_MAC               0x00000380UL
783*b106467fSJason King #define CKM_SSL3_SHA1_MAC              0x00000381UL
784*b106467fSJason King #define CKM_MD5_KEY_DERIVATION         0x00000390UL
785*b106467fSJason King #define CKM_MD2_KEY_DERIVATION         0x00000391UL
786*b106467fSJason King #define CKM_SHA1_KEY_DERIVATION        0x00000392UL
787*b106467fSJason King 
788*b106467fSJason King #define CKM_SHA256_KEY_DERIVATION      0x00000393UL
789*b106467fSJason King #define CKM_SHA384_KEY_DERIVATION      0x00000394UL
790*b106467fSJason King #define CKM_SHA512_KEY_DERIVATION      0x00000395UL
791*b106467fSJason King #define CKM_SHA224_KEY_DERIVATION      0x00000396UL
792*b106467fSJason King 
793*b106467fSJason King #define CKM_PBE_MD2_DES_CBC            0x000003A0UL
794*b106467fSJason King #define CKM_PBE_MD5_DES_CBC            0x000003A1UL
795*b106467fSJason King #define CKM_PBE_MD5_CAST_CBC           0x000003A2UL
796*b106467fSJason King #define CKM_PBE_MD5_CAST3_CBC          0x000003A3UL
797*b106467fSJason King #define CKM_PBE_MD5_CAST5_CBC          0x000003A4UL /* Deprecated */
798*b106467fSJason King #define CKM_PBE_MD5_CAST128_CBC        0x000003A4UL
799*b106467fSJason King #define CKM_PBE_SHA1_CAST5_CBC         0x000003A5UL /* Deprecated */
800*b106467fSJason King #define CKM_PBE_SHA1_CAST128_CBC       0x000003A5UL
801*b106467fSJason King #define CKM_PBE_SHA1_RC4_128           0x000003A6UL
802*b106467fSJason King #define CKM_PBE_SHA1_RC4_40            0x000003A7UL
803*b106467fSJason King #define CKM_PBE_SHA1_DES3_EDE_CBC      0x000003A8UL
804*b106467fSJason King #define CKM_PBE_SHA1_DES2_EDE_CBC      0x000003A9UL
805*b106467fSJason King #define CKM_PBE_SHA1_RC2_128_CBC       0x000003AAUL
806*b106467fSJason King #define CKM_PBE_SHA1_RC2_40_CBC        0x000003ABUL
807*b106467fSJason King 
808*b106467fSJason King #define CKM_PKCS5_PBKD2                0x000003B0UL
809*b106467fSJason King 
810*b106467fSJason King #define CKM_PBA_SHA1_WITH_SHA1_HMAC    0x000003C0UL
811*b106467fSJason King 
812*b106467fSJason King #define CKM_WTLS_PRE_MASTER_KEY_GEN         0x000003D0UL
813*b106467fSJason King #define CKM_WTLS_MASTER_KEY_DERIVE          0x000003D1UL
814*b106467fSJason King #define CKM_WTLS_MASTER_KEY_DERIVE_DH_ECC   0x000003D2UL
815*b106467fSJason King #define CKM_WTLS_PRF                        0x000003D3UL
816*b106467fSJason King #define CKM_WTLS_SERVER_KEY_AND_MAC_DERIVE  0x000003D4UL
817*b106467fSJason King #define CKM_WTLS_CLIENT_KEY_AND_MAC_DERIVE  0x000003D5UL
818*b106467fSJason King 
819*b106467fSJason King #define CKM_TLS10_MAC_SERVER                0x000003D6UL
820*b106467fSJason King #define CKM_TLS10_MAC_CLIENT                0x000003D7UL
821*b106467fSJason King #define CKM_TLS12_MAC                       0x000003D8UL
822*b106467fSJason King #define CKM_TLS12_KDF                       0x000003D9UL
823*b106467fSJason King #define CKM_TLS12_MASTER_KEY_DERIVE         0x000003E0UL
824*b106467fSJason King #define CKM_TLS12_KEY_AND_MAC_DERIVE        0x000003E1UL
825*b106467fSJason King #define CKM_TLS12_MASTER_KEY_DERIVE_DH      0x000003E2UL
826*b106467fSJason King #define CKM_TLS12_KEY_SAFE_DERIVE           0x000003E3UL
827*b106467fSJason King #define CKM_TLS_MAC                         0x000003E4UL
828*b106467fSJason King #define CKM_TLS_KDF                         0x000003E5UL
829*b106467fSJason King 
830*b106467fSJason King #define CKM_KEY_WRAP_LYNKS             0x00000400UL
831*b106467fSJason King #define CKM_KEY_WRAP_SET_OAEP          0x00000401UL
832*b106467fSJason King 
833*b106467fSJason King #define CKM_CMS_SIG                    0x00000500UL
834*b106467fSJason King #define CKM_KIP_DERIVE                 0x00000510UL
835*b106467fSJason King #define CKM_KIP_WRAP                   0x00000511UL
836*b106467fSJason King #define CKM_KIP_MAC                    0x00000512UL
837*b106467fSJason King 
838*b106467fSJason King #define CKM_CAMELLIA_KEY_GEN           0x00000550UL
839*b106467fSJason King #define CKM_CAMELLIA_ECB               0x00000551UL
840*b106467fSJason King #define CKM_CAMELLIA_CBC               0x00000552UL
841*b106467fSJason King #define CKM_CAMELLIA_MAC               0x00000553UL
842*b106467fSJason King #define CKM_CAMELLIA_MAC_GENERAL       0x00000554UL
843*b106467fSJason King #define CKM_CAMELLIA_CBC_PAD           0x00000555UL
844*b106467fSJason King #define CKM_CAMELLIA_ECB_ENCRYPT_DATA  0x00000556UL
845*b106467fSJason King #define CKM_CAMELLIA_CBC_ENCRYPT_DATA  0x00000557UL
846*b106467fSJason King #define CKM_CAMELLIA_CTR               0x00000558UL
847*b106467fSJason King 
848*b106467fSJason King #define CKM_ARIA_KEY_GEN               0x00000560UL
849*b106467fSJason King #define CKM_ARIA_ECB                   0x00000561UL
850*b106467fSJason King #define CKM_ARIA_CBC                   0x00000562UL
851*b106467fSJason King #define CKM_ARIA_MAC                   0x00000563UL
852*b106467fSJason King #define CKM_ARIA_MAC_GENERAL           0x00000564UL
853*b106467fSJason King #define CKM_ARIA_CBC_PAD               0x00000565UL
854*b106467fSJason King #define CKM_ARIA_ECB_ENCRYPT_DATA      0x00000566UL
855*b106467fSJason King #define CKM_ARIA_CBC_ENCRYPT_DATA      0x00000567UL
856*b106467fSJason King 
857*b106467fSJason King #define CKM_SEED_KEY_GEN               0x00000650UL
858*b106467fSJason King #define CKM_SEED_ECB                   0x00000651UL
859*b106467fSJason King #define CKM_SEED_CBC                   0x00000652UL
860*b106467fSJason King #define CKM_SEED_MAC                   0x00000653UL
861*b106467fSJason King #define CKM_SEED_MAC_GENERAL           0x00000654UL
862*b106467fSJason King #define CKM_SEED_CBC_PAD               0x00000655UL
863*b106467fSJason King #define CKM_SEED_ECB_ENCRYPT_DATA      0x00000656UL
864*b106467fSJason King #define CKM_SEED_CBC_ENCRYPT_DATA      0x00000657UL
865*b106467fSJason King 
866*b106467fSJason King #define CKM_SKIPJACK_KEY_GEN           0x00001000UL
867*b106467fSJason King #define CKM_SKIPJACK_ECB64             0x00001001UL
868*b106467fSJason King #define CKM_SKIPJACK_CBC64             0x00001002UL
869*b106467fSJason King #define CKM_SKIPJACK_OFB64             0x00001003UL
870*b106467fSJason King #define CKM_SKIPJACK_CFB64             0x00001004UL
871*b106467fSJason King #define CKM_SKIPJACK_CFB32             0x00001005UL
872*b106467fSJason King #define CKM_SKIPJACK_CFB16             0x00001006UL
873*b106467fSJason King #define CKM_SKIPJACK_CFB8              0x00001007UL
874*b106467fSJason King #define CKM_SKIPJACK_WRAP              0x00001008UL
875*b106467fSJason King #define CKM_SKIPJACK_PRIVATE_WRAP      0x00001009UL
876*b106467fSJason King #define CKM_SKIPJACK_RELAYX            0x0000100aUL
877*b106467fSJason King #define CKM_KEA_KEY_PAIR_GEN           0x00001010UL
878*b106467fSJason King #define CKM_KEA_KEY_DERIVE             0x00001011UL
879*b106467fSJason King #define CKM_KEA_DERIVE                 0x00001012UL
880*b106467fSJason King #define CKM_FORTEZZA_TIMESTAMP         0x00001020UL
881*b106467fSJason King #define CKM_BATON_KEY_GEN              0x00001030UL
882*b106467fSJason King #define CKM_BATON_ECB128               0x00001031UL
883*b106467fSJason King #define CKM_BATON_ECB96                0x00001032UL
884*b106467fSJason King #define CKM_BATON_CBC128               0x00001033UL
885*b106467fSJason King #define CKM_BATON_COUNTER              0x00001034UL
886*b106467fSJason King #define CKM_BATON_SHUFFLE              0x00001035UL
887*b106467fSJason King #define CKM_BATON_WRAP                 0x00001036UL
888*b106467fSJason King 
889*b106467fSJason King #define CKM_ECDSA_KEY_PAIR_GEN         0x00001040UL /* Deprecated */
890*b106467fSJason King #define CKM_EC_KEY_PAIR_GEN            0x00001040UL
891*b106467fSJason King 
892*b106467fSJason King #define CKM_ECDSA                      0x00001041UL
893*b106467fSJason King #define CKM_ECDSA_SHA1                 0x00001042UL
894*b106467fSJason King #define CKM_ECDSA_SHA224               0x00001043UL
895*b106467fSJason King #define CKM_ECDSA_SHA256               0x00001044UL
896*b106467fSJason King #define CKM_ECDSA_SHA384               0x00001045UL
897*b106467fSJason King #define CKM_ECDSA_SHA512               0x00001046UL
898*b106467fSJason King 
899*b106467fSJason King #define CKM_ECDH1_DERIVE               0x00001050UL
900*b106467fSJason King #define CKM_ECDH1_COFACTOR_DERIVE      0x00001051UL
901*b106467fSJason King #define CKM_ECMQV_DERIVE               0x00001052UL
902*b106467fSJason King 
903*b106467fSJason King #define CKM_ECDH_AES_KEY_WRAP          0x00001053UL
904*b106467fSJason King #define CKM_RSA_AES_KEY_WRAP           0x00001054UL
905*b106467fSJason King 
906*b106467fSJason King #define CKM_JUNIPER_KEY_GEN            0x00001060UL
907*b106467fSJason King #define CKM_JUNIPER_ECB128             0x00001061UL
908*b106467fSJason King #define CKM_JUNIPER_CBC128             0x00001062UL
909*b106467fSJason King #define CKM_JUNIPER_COUNTER            0x00001063UL
910*b106467fSJason King #define CKM_JUNIPER_SHUFFLE            0x00001064UL
911*b106467fSJason King #define CKM_JUNIPER_WRAP               0x00001065UL
912*b106467fSJason King #define CKM_FASTHASH                   0x00001070UL
913*b106467fSJason King 
914*b106467fSJason King #define CKM_AES_KEY_GEN                0x00001080UL
915*b106467fSJason King #define CKM_AES_ECB                    0x00001081UL
916*b106467fSJason King #define CKM_AES_CBC                    0x00001082UL
917*b106467fSJason King #define CKM_AES_MAC                    0x00001083UL
918*b106467fSJason King #define CKM_AES_MAC_GENERAL            0x00001084UL
919*b106467fSJason King #define CKM_AES_CBC_PAD                0x00001085UL
920*b106467fSJason King #define CKM_AES_CTR                    0x00001086UL
921*b106467fSJason King #define CKM_AES_GCM                    0x00001087UL
922*b106467fSJason King #define CKM_AES_CCM                    0x00001088UL
923*b106467fSJason King #define CKM_AES_CTS                    0x00001089UL
924*b106467fSJason King #define CKM_AES_CMAC                   0x0000108AUL
925*b106467fSJason King #define CKM_AES_CMAC_GENERAL           0x0000108BUL
926*b106467fSJason King 
927*b106467fSJason King #define CKM_AES_XCBC_MAC               0x0000108CUL
928*b106467fSJason King #define CKM_AES_XCBC_MAC_96            0x0000108DUL
929*b106467fSJason King #define CKM_AES_GMAC                   0x0000108EUL
930*b106467fSJason King 
931*b106467fSJason King #define CKM_BLOWFISH_KEY_GEN           0x00001090UL
932*b106467fSJason King #define CKM_BLOWFISH_CBC               0x00001091UL
933*b106467fSJason King #define CKM_TWOFISH_KEY_GEN            0x00001092UL
934*b106467fSJason King #define CKM_TWOFISH_CBC                0x00001093UL
935*b106467fSJason King #define CKM_BLOWFISH_CBC_PAD           0x00001094UL
936*b106467fSJason King #define CKM_TWOFISH_CBC_PAD            0x00001095UL
937*b106467fSJason King 
938*b106467fSJason King #define CKM_DES_ECB_ENCRYPT_DATA       0x00001100UL
939*b106467fSJason King #define CKM_DES_CBC_ENCRYPT_DATA       0x00001101UL
940*b106467fSJason King #define CKM_DES3_ECB_ENCRYPT_DATA      0x00001102UL
941*b106467fSJason King #define CKM_DES3_CBC_ENCRYPT_DATA      0x00001103UL
942*b106467fSJason King #define CKM_AES_ECB_ENCRYPT_DATA       0x00001104UL
943*b106467fSJason King #define CKM_AES_CBC_ENCRYPT_DATA       0x00001105UL
944*b106467fSJason King 
945*b106467fSJason King #define CKM_GOSTR3410_KEY_PAIR_GEN     0x00001200UL
946*b106467fSJason King #define CKM_GOSTR3410                  0x00001201UL
947*b106467fSJason King #define CKM_GOSTR3410_WITH_GOSTR3411   0x00001202UL
948*b106467fSJason King #define CKM_GOSTR3410_KEY_WRAP         0x00001203UL
949*b106467fSJason King #define CKM_GOSTR3410_DERIVE           0x00001204UL
950*b106467fSJason King #define CKM_GOSTR3411                  0x00001210UL
951*b106467fSJason King #define CKM_GOSTR3411_HMAC             0x00001211UL
952*b106467fSJason King #define CKM_GOST28147_KEY_GEN          0x00001220UL
953*b106467fSJason King #define CKM_GOST28147_ECB              0x00001221UL
954*b106467fSJason King #define CKM_GOST28147                  0x00001222UL
955*b106467fSJason King #define CKM_GOST28147_MAC              0x00001223UL
956*b106467fSJason King #define CKM_GOST28147_KEY_WRAP         0x00001224UL
957*b106467fSJason King 
958*b106467fSJason King #define CKM_DSA_PARAMETER_GEN          0x00002000UL
959*b106467fSJason King #define CKM_DH_PKCS_PARAMETER_GEN      0x00002001UL
960*b106467fSJason King #define CKM_X9_42_DH_PARAMETER_GEN     0x00002002UL
961*b106467fSJason King #define CKM_DSA_PROBABLISTIC_PARAMETER_GEN    0x00002003UL
962*b106467fSJason King #define CKM_DSA_SHAWE_TAYLOR_PARAMETER_GEN    0x00002004UL
963*b106467fSJason King 
964*b106467fSJason King #define CKM_AES_OFB                    0x00002104UL
965*b106467fSJason King #define CKM_AES_CFB64                  0x00002105UL
966*b106467fSJason King #define CKM_AES_CFB8                   0x00002106UL
967*b106467fSJason King #define CKM_AES_CFB128                 0x00002107UL
968*b106467fSJason King 
969*b106467fSJason King #define CKM_AES_CFB1                   0x00002108UL
970*b106467fSJason King #define CKM_AES_KEY_WRAP               0x00002109UL     /* WAS: 0x00001090 */
971*b106467fSJason King #define CKM_AES_KEY_WRAP_PAD           0x0000210AUL     /* WAS: 0x00001091 */
972*b106467fSJason King 
973*b106467fSJason King #define CKM_RSA_PKCS_TPM_1_1           0x00004001UL
974*b106467fSJason King #define CKM_RSA_PKCS_OAEP_TPM_1_1      0x00004002UL
975*b106467fSJason King 
976*b106467fSJason King #define CKM_VENDOR_DEFINED             0x80000000UL
9777c478bd9Sstevel@tonic-gate 
9787c478bd9Sstevel@tonic-gate typedef CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR;
9797c478bd9Sstevel@tonic-gate 
9807c478bd9Sstevel@tonic-gate 
9817c478bd9Sstevel@tonic-gate /* CK_MECHANISM is a structure that specifies a particular
982*b106467fSJason King  * mechanism
983*b106467fSJason King  */
9847c478bd9Sstevel@tonic-gate typedef struct CK_MECHANISM {
9857c478bd9Sstevel@tonic-gate   CK_MECHANISM_TYPE mechanism;
9867c478bd9Sstevel@tonic-gate   CK_VOID_PTR       pParameter;
9877c478bd9Sstevel@tonic-gate   CK_ULONG          ulParameterLen;  /* in bytes */
9887c478bd9Sstevel@tonic-gate } CK_MECHANISM;
9897c478bd9Sstevel@tonic-gate 
9907c478bd9Sstevel@tonic-gate typedef CK_MECHANISM CK_PTR CK_MECHANISM_PTR;
9917c478bd9Sstevel@tonic-gate 
9927c478bd9Sstevel@tonic-gate 
9937c478bd9Sstevel@tonic-gate /* CK_MECHANISM_INFO provides information about a particular
994*b106467fSJason King  * mechanism
995*b106467fSJason King  */
9967c478bd9Sstevel@tonic-gate typedef struct CK_MECHANISM_INFO {
9977c478bd9Sstevel@tonic-gate     CK_ULONG    ulMinKeySize;
9987c478bd9Sstevel@tonic-gate     CK_ULONG    ulMaxKeySize;
9997c478bd9Sstevel@tonic-gate     CK_FLAGS    flags;
10007c478bd9Sstevel@tonic-gate } CK_MECHANISM_INFO;
10017c478bd9Sstevel@tonic-gate 
10027c478bd9Sstevel@tonic-gate /* The flags are defined as follows:
1003*b106467fSJason King  *      Bit Flag               Mask          Meaning */
1004*b106467fSJason King #define CKF_HW                 0x00000001UL  /* performed by HW */
1005*b106467fSJason King 
1006*b106467fSJason King /* Specify whether or not a mechanism can be used for a particular task */
1007*b106467fSJason King #define CKF_ENCRYPT            0x00000100UL
1008*b106467fSJason King #define CKF_DECRYPT            0x00000200UL
1009*b106467fSJason King #define CKF_DIGEST             0x00000400UL
1010*b106467fSJason King #define CKF_SIGN               0x00000800UL
1011*b106467fSJason King #define CKF_SIGN_RECOVER       0x00001000UL
1012*b106467fSJason King #define CKF_VERIFY             0x00002000UL
1013*b106467fSJason King #define CKF_VERIFY_RECOVER     0x00004000UL
1014*b106467fSJason King #define CKF_GENERATE           0x00008000UL
1015*b106467fSJason King #define CKF_GENERATE_KEY_PAIR  0x00010000UL
1016*b106467fSJason King #define CKF_WRAP               0x00020000UL
1017*b106467fSJason King #define CKF_UNWRAP             0x00040000UL
1018*b106467fSJason King #define CKF_DERIVE             0x00080000UL
1019*b106467fSJason King 
1020*b106467fSJason King /* Describe a token's EC capabilities not available in mechanism
1021*b106467fSJason King  * information.
1022*b106467fSJason King  */
1023*b106467fSJason King #define CKF_EC_F_P             0x00100000UL
1024*b106467fSJason King #define CKF_EC_F_2M            0x00200000UL
1025*b106467fSJason King #define CKF_EC_ECPARAMETERS    0x00400000UL
1026*b106467fSJason King #define CKF_EC_NAMEDCURVE      0x00800000UL
1027*b106467fSJason King #define CKF_EC_UNCOMPRESS      0x01000000UL
1028*b106467fSJason King #define CKF_EC_COMPRESS        0x02000000UL
10297c478bd9Sstevel@tonic-gate 
1030*b106467fSJason King #define CKF_EXTENSION          0x80000000UL
10317c478bd9Sstevel@tonic-gate 
1032*b106467fSJason King typedef CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR;
10337c478bd9Sstevel@tonic-gate 
10347c478bd9Sstevel@tonic-gate /* CK_RV is a value that identifies the return value of a
1035*b106467fSJason King  * Cryptoki function
1036*b106467fSJason King  */
10377c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_RV;
10387c478bd9Sstevel@tonic-gate 
1039*b106467fSJason King #define CKR_OK                                0x00000000UL
1040*b106467fSJason King #define CKR_CANCEL                            0x00000001UL
1041*b106467fSJason King #define CKR_HOST_MEMORY                       0x00000002UL
1042*b106467fSJason King #define CKR_SLOT_ID_INVALID                   0x00000003UL
1043*b106467fSJason King 
1044*b106467fSJason King #define CKR_GENERAL_ERROR                     0x00000005UL
1045*b106467fSJason King #define CKR_FUNCTION_FAILED                   0x00000006UL
1046*b106467fSJason King 
1047*b106467fSJason King #define CKR_ARGUMENTS_BAD                     0x00000007UL
1048*b106467fSJason King #define CKR_NO_EVENT                          0x00000008UL
1049*b106467fSJason King #define CKR_NEED_TO_CREATE_THREADS            0x00000009UL
1050*b106467fSJason King #define CKR_CANT_LOCK                         0x0000000AUL
1051*b106467fSJason King 
1052*b106467fSJason King #define CKR_ATTRIBUTE_READ_ONLY               0x00000010UL
1053*b106467fSJason King #define CKR_ATTRIBUTE_SENSITIVE               0x00000011UL
1054*b106467fSJason King #define CKR_ATTRIBUTE_TYPE_INVALID            0x00000012UL
1055*b106467fSJason King #define CKR_ATTRIBUTE_VALUE_INVALID           0x00000013UL
1056*b106467fSJason King 
1057*b106467fSJason King #define CKR_ACTION_PROHIBITED                 0x0000001BUL
1058*b106467fSJason King 
1059*b106467fSJason King #define CKR_DATA_INVALID                      0x00000020UL
1060*b106467fSJason King #define CKR_DATA_LEN_RANGE                    0x00000021UL
1061*b106467fSJason King #define CKR_DEVICE_ERROR                      0x00000030UL
1062*b106467fSJason King #define CKR_DEVICE_MEMORY                     0x00000031UL
1063*b106467fSJason King #define CKR_DEVICE_REMOVED                    0x00000032UL
1064*b106467fSJason King #define CKR_ENCRYPTED_DATA_INVALID            0x00000040UL
1065*b106467fSJason King #define CKR_ENCRYPTED_DATA_LEN_RANGE          0x00000041UL
1066*b106467fSJason King #define CKR_FUNCTION_CANCELED                 0x00000050UL
1067*b106467fSJason King #define CKR_FUNCTION_NOT_PARALLEL             0x00000051UL
1068*b106467fSJason King 
1069*b106467fSJason King #define CKR_FUNCTION_NOT_SUPPORTED            0x00000054UL
1070*b106467fSJason King 
1071*b106467fSJason King #define CKR_KEY_HANDLE_INVALID                0x00000060UL
1072*b106467fSJason King 
1073*b106467fSJason King #define CKR_KEY_SIZE_RANGE                    0x00000062UL
1074*b106467fSJason King #define CKR_KEY_TYPE_INCONSISTENT             0x00000063UL
1075*b106467fSJason King 
1076*b106467fSJason King #define CKR_KEY_NOT_NEEDED                    0x00000064UL
1077*b106467fSJason King #define CKR_KEY_CHANGED                       0x00000065UL
1078*b106467fSJason King #define CKR_KEY_NEEDED                        0x00000066UL
1079*b106467fSJason King #define CKR_KEY_INDIGESTIBLE                  0x00000067UL
1080*b106467fSJason King #define CKR_KEY_FUNCTION_NOT_PERMITTED        0x00000068UL
1081*b106467fSJason King #define CKR_KEY_NOT_WRAPPABLE                 0x00000069UL
1082*b106467fSJason King #define CKR_KEY_UNEXTRACTABLE                 0x0000006AUL
1083*b106467fSJason King 
1084*b106467fSJason King #define CKR_MECHANISM_INVALID                 0x00000070UL
1085*b106467fSJason King #define CKR_MECHANISM_PARAM_INVALID           0x00000071UL
1086*b106467fSJason King 
1087*b106467fSJason King #define CKR_OBJECT_HANDLE_INVALID             0x00000082UL
1088*b106467fSJason King #define CKR_OPERATION_ACTIVE                  0x00000090UL
1089*b106467fSJason King #define CKR_OPERATION_NOT_INITIALIZED         0x00000091UL
1090*b106467fSJason King #define CKR_PIN_INCORRECT                     0x000000A0UL
1091*b106467fSJason King #define CKR_PIN_INVALID                       0x000000A1UL
1092*b106467fSJason King #define CKR_PIN_LEN_RANGE                     0x000000A2UL
1093*b106467fSJason King 
1094*b106467fSJason King #define CKR_PIN_EXPIRED                       0x000000A3UL
1095*b106467fSJason King #define CKR_PIN_LOCKED                        0x000000A4UL
1096*b106467fSJason King 
1097*b106467fSJason King #define CKR_SESSION_CLOSED                    0x000000B0UL
1098*b106467fSJason King #define CKR_SESSION_COUNT                     0x000000B1UL
1099*b106467fSJason King #define CKR_SESSION_HANDLE_INVALID            0x000000B3UL
1100*b106467fSJason King #define CKR_SESSION_PARALLEL_NOT_SUPPORTED    0x000000B4UL
1101*b106467fSJason King #define CKR_SESSION_READ_ONLY                 0x000000B5UL
1102*b106467fSJason King #define CKR_SESSION_EXISTS                    0x000000B6UL
1103*b106467fSJason King 
1104*b106467fSJason King #define CKR_SESSION_READ_ONLY_EXISTS          0x000000B7UL
1105*b106467fSJason King #define CKR_SESSION_READ_WRITE_SO_EXISTS      0x000000B8UL
1106*b106467fSJason King 
1107*b106467fSJason King #define CKR_SIGNATURE_INVALID                 0x000000C0UL
1108*b106467fSJason King #define CKR_SIGNATURE_LEN_RANGE               0x000000C1UL
1109*b106467fSJason King #define CKR_TEMPLATE_INCOMPLETE               0x000000D0UL
1110*b106467fSJason King #define CKR_TEMPLATE_INCONSISTENT             0x000000D1UL
1111*b106467fSJason King #define CKR_TOKEN_NOT_PRESENT                 0x000000E0UL
1112*b106467fSJason King #define CKR_TOKEN_NOT_RECOGNIZED              0x000000E1UL
1113*b106467fSJason King #define CKR_TOKEN_WRITE_PROTECTED             0x000000E2UL
1114*b106467fSJason King #define CKR_UNWRAPPING_KEY_HANDLE_INVALID     0x000000F0UL
1115*b106467fSJason King #define CKR_UNWRAPPING_KEY_SIZE_RANGE         0x000000F1UL
1116*b106467fSJason King #define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT  0x000000F2UL
1117*b106467fSJason King #define CKR_USER_ALREADY_LOGGED_IN            0x00000100UL
1118*b106467fSJason King #define CKR_USER_NOT_LOGGED_IN                0x00000101UL
1119*b106467fSJason King #define CKR_USER_PIN_NOT_INITIALIZED          0x00000102UL
1120*b106467fSJason King #define CKR_USER_TYPE_INVALID                 0x00000103UL
1121*b106467fSJason King 
1122*b106467fSJason King #define CKR_USER_ANOTHER_ALREADY_LOGGED_IN    0x00000104UL
1123*b106467fSJason King #define CKR_USER_TOO_MANY_TYPES               0x00000105UL
1124*b106467fSJason King 
1125*b106467fSJason King #define CKR_WRAPPED_KEY_INVALID               0x00000110UL
1126*b106467fSJason King #define CKR_WRAPPED_KEY_LEN_RANGE             0x00000112UL
1127*b106467fSJason King #define CKR_WRAPPING_KEY_HANDLE_INVALID       0x00000113UL
1128*b106467fSJason King #define CKR_WRAPPING_KEY_SIZE_RANGE           0x00000114UL
1129*b106467fSJason King #define CKR_WRAPPING_KEY_TYPE_INCONSISTENT    0x00000115UL
1130*b106467fSJason King #define CKR_RANDOM_SEED_NOT_SUPPORTED         0x00000120UL
1131*b106467fSJason King 
1132*b106467fSJason King #define CKR_RANDOM_NO_RNG                     0x00000121UL
1133*b106467fSJason King 
1134*b106467fSJason King #define CKR_DOMAIN_PARAMS_INVALID             0x00000130UL
1135*b106467fSJason King 
1136*b106467fSJason King #define CKR_CURVE_NOT_SUPPORTED               0x00000140UL
1137*b106467fSJason King 
1138*b106467fSJason King #define CKR_BUFFER_TOO_SMALL                  0x00000150UL
1139*b106467fSJason King #define CKR_SAVED_STATE_INVALID               0x00000160UL
1140*b106467fSJason King #define CKR_INFORMATION_SENSITIVE             0x00000170UL
1141*b106467fSJason King #define CKR_STATE_UNSAVEABLE                  0x00000180UL
1142*b106467fSJason King 
1143*b106467fSJason King #define CKR_CRYPTOKI_NOT_INITIALIZED          0x00000190UL
1144*b106467fSJason King #define CKR_CRYPTOKI_ALREADY_INITIALIZED      0x00000191UL
1145*b106467fSJason King #define CKR_MUTEX_BAD                         0x000001A0UL
1146*b106467fSJason King #define CKR_MUTEX_NOT_LOCKED                  0x000001A1UL
1147*b106467fSJason King 
1148*b106467fSJason King #define CKR_NEW_PIN_MODE                      0x000001B0UL
1149*b106467fSJason King #define CKR_NEXT_OTP                          0x000001B1UL
1150*b106467fSJason King 
1151*b106467fSJason King #define CKR_EXCEEDED_MAX_ITERATIONS           0x000001B5UL
1152*b106467fSJason King #define CKR_FIPS_SELF_TEST_FAILED             0x000001B6UL
1153*b106467fSJason King #define CKR_LIBRARY_LOAD_FAILED               0x000001B7UL
1154*b106467fSJason King #define CKR_PIN_TOO_WEAK                      0x000001B8UL
1155*b106467fSJason King #define CKR_PUBLIC_KEY_INVALID                0x000001B9UL
1156*b106467fSJason King 
1157*b106467fSJason King #define CKR_FUNCTION_REJECTED                 0x00000200UL
1158*b106467fSJason King 
1159*b106467fSJason King #define CKR_VENDOR_DEFINED                    0x80000000UL
11607c478bd9Sstevel@tonic-gate 
11617c478bd9Sstevel@tonic-gate 
11627c478bd9Sstevel@tonic-gate /* CK_NOTIFY is an application callback that processes events */
11637c478bd9Sstevel@tonic-gate typedef CK_CALLBACK_FUNCTION(CK_RV, CK_NOTIFY)(
11647c478bd9Sstevel@tonic-gate   CK_SESSION_HANDLE hSession,     /* the session's handle */
11657c478bd9Sstevel@tonic-gate   CK_NOTIFICATION   event,
11667c478bd9Sstevel@tonic-gate   CK_VOID_PTR       pApplication  /* passed to C_OpenSession */
11677c478bd9Sstevel@tonic-gate );
11687c478bd9Sstevel@tonic-gate 
11697c478bd9Sstevel@tonic-gate 
11707c478bd9Sstevel@tonic-gate /* CK_FUNCTION_LIST is a structure holding a Cryptoki spec
11717c478bd9Sstevel@tonic-gate  * version and pointers of appropriate types to all the
1172*b106467fSJason King  * Cryptoki functions
1173*b106467fSJason King  */
11747c478bd9Sstevel@tonic-gate typedef struct CK_FUNCTION_LIST CK_FUNCTION_LIST;
11757c478bd9Sstevel@tonic-gate 
11767c478bd9Sstevel@tonic-gate typedef CK_FUNCTION_LIST CK_PTR CK_FUNCTION_LIST_PTR;
11777c478bd9Sstevel@tonic-gate 
11787c478bd9Sstevel@tonic-gate typedef CK_FUNCTION_LIST_PTR CK_PTR CK_FUNCTION_LIST_PTR_PTR;
11797c478bd9Sstevel@tonic-gate 
11807c478bd9Sstevel@tonic-gate 
11817c478bd9Sstevel@tonic-gate /* CK_CREATEMUTEX is an application callback for creating a
1182*b106467fSJason King  * mutex object
1183*b106467fSJason King  */
11847c478bd9Sstevel@tonic-gate typedef CK_CALLBACK_FUNCTION(CK_RV, CK_CREATEMUTEX)(
11857c478bd9Sstevel@tonic-gate   CK_VOID_PTR_PTR ppMutex  /* location to receive ptr to mutex */
11867c478bd9Sstevel@tonic-gate );
11877c478bd9Sstevel@tonic-gate 
11887c478bd9Sstevel@tonic-gate 
11897c478bd9Sstevel@tonic-gate /* CK_DESTROYMUTEX is an application callback for destroying a
1190*b106467fSJason King  * mutex object
1191*b106467fSJason King  */
11927c478bd9Sstevel@tonic-gate typedef CK_CALLBACK_FUNCTION(CK_RV, CK_DESTROYMUTEX)(
11937c478bd9Sstevel@tonic-gate   CK_VOID_PTR pMutex  /* pointer to mutex */
11947c478bd9Sstevel@tonic-gate );
11957c478bd9Sstevel@tonic-gate 
11967c478bd9Sstevel@tonic-gate 
11977c478bd9Sstevel@tonic-gate /* CK_LOCKMUTEX is an application callback for locking a mutex */
11987c478bd9Sstevel@tonic-gate typedef CK_CALLBACK_FUNCTION(CK_RV, CK_LOCKMUTEX)(
11997c478bd9Sstevel@tonic-gate   CK_VOID_PTR pMutex  /* pointer to mutex */
12007c478bd9Sstevel@tonic-gate );
12017c478bd9Sstevel@tonic-gate 
12027c478bd9Sstevel@tonic-gate 
12037c478bd9Sstevel@tonic-gate /* CK_UNLOCKMUTEX is an application callback for unlocking a
1204*b106467fSJason King  * mutex
1205*b106467fSJason King  */
12067c478bd9Sstevel@tonic-gate typedef CK_CALLBACK_FUNCTION(CK_RV, CK_UNLOCKMUTEX)(
12077c478bd9Sstevel@tonic-gate   CK_VOID_PTR pMutex  /* pointer to mutex */
12087c478bd9Sstevel@tonic-gate );
12097c478bd9Sstevel@tonic-gate 
12107c478bd9Sstevel@tonic-gate 
12117c478bd9Sstevel@tonic-gate /* CK_C_INITIALIZE_ARGS provides the optional arguments to
1212*b106467fSJason King  * C_Initialize
1213*b106467fSJason King  */
12147c478bd9Sstevel@tonic-gate typedef struct CK_C_INITIALIZE_ARGS {
12157c478bd9Sstevel@tonic-gate   CK_CREATEMUTEX CreateMutex;
12167c478bd9Sstevel@tonic-gate   CK_DESTROYMUTEX DestroyMutex;
12177c478bd9Sstevel@tonic-gate   CK_LOCKMUTEX LockMutex;
12187c478bd9Sstevel@tonic-gate   CK_UNLOCKMUTEX UnlockMutex;
12197c478bd9Sstevel@tonic-gate   CK_FLAGS flags;
12207c478bd9Sstevel@tonic-gate   CK_VOID_PTR pReserved;
12217c478bd9Sstevel@tonic-gate } CK_C_INITIALIZE_ARGS;
12227c478bd9Sstevel@tonic-gate 
12237c478bd9Sstevel@tonic-gate /* flags: bit flags that provide capabilities of the slot
12247c478bd9Sstevel@tonic-gate  *      Bit Flag                           Mask       Meaning
12257c478bd9Sstevel@tonic-gate  */
1226*b106467fSJason King #define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001UL
1227*b106467fSJason King #define CKF_OS_LOCKING_OK                  0x00000002UL
12287c478bd9Sstevel@tonic-gate 
12297c478bd9Sstevel@tonic-gate typedef CK_C_INITIALIZE_ARGS CK_PTR CK_C_INITIALIZE_ARGS_PTR;
12307c478bd9Sstevel@tonic-gate 
12317c478bd9Sstevel@tonic-gate 
12327c478bd9Sstevel@tonic-gate /* additional flags for parameters to functions */
12337c478bd9Sstevel@tonic-gate 
12347c478bd9Sstevel@tonic-gate /* CKF_DONT_BLOCK is for the function C_WaitForSlotEvent */
12357c478bd9Sstevel@tonic-gate #define CKF_DONT_BLOCK     1
12367c478bd9Sstevel@tonic-gate 
1237*b106467fSJason King /* CK_RSA_PKCS_MGF_TYPE  is used to indicate the Message
1238f66d273dSizick  * Generation Function (MGF) applied to a message block when
1239f66d273dSizick  * formatting a message block for the PKCS #1 OAEP encryption
1240*b106467fSJason King  * scheme.
1241*b106467fSJason King  */
12427c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_RSA_PKCS_MGF_TYPE;
12437c478bd9Sstevel@tonic-gate 
12447c478bd9Sstevel@tonic-gate typedef CK_RSA_PKCS_MGF_TYPE CK_PTR CK_RSA_PKCS_MGF_TYPE_PTR;
12457c478bd9Sstevel@tonic-gate 
12467c478bd9Sstevel@tonic-gate /* The following MGFs are defined */
1247*b106467fSJason King #define CKG_MGF1_SHA1         0x00000001UL
1248*b106467fSJason King #define CKG_MGF1_SHA256       0x00000002UL
1249*b106467fSJason King #define CKG_MGF1_SHA384       0x00000003UL
1250*b106467fSJason King #define CKG_MGF1_SHA512       0x00000004UL
1251*b106467fSJason King #define CKG_MGF1_SHA224       0x00000005UL
1252*b106467fSJason King 
1253*b106467fSJason King /* CK_RSA_PKCS_OAEP_SOURCE_TYPE  is used to indicate the source
1254f66d273dSizick  * of the encoding parameter when formatting a message block
1255*b106467fSJason King  * for the PKCS #1 OAEP encryption scheme.
1256*b106467fSJason King  */
12577c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE;
12587c478bd9Sstevel@tonic-gate 
12597c478bd9Sstevel@tonic-gate typedef CK_RSA_PKCS_OAEP_SOURCE_TYPE CK_PTR CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR;
12607c478bd9Sstevel@tonic-gate 
12617c478bd9Sstevel@tonic-gate /* The following encoding parameter sources are defined */
1262*b106467fSJason King #define CKZ_DATA_SPECIFIED    0x00000001UL
12637c478bd9Sstevel@tonic-gate 
1264*b106467fSJason King /* CK_RSA_PKCS_OAEP_PARAMS provides the parameters to the
1265*b106467fSJason King  * CKM_RSA_PKCS_OAEP mechanism.
1266*b106467fSJason King  */
12677c478bd9Sstevel@tonic-gate typedef struct CK_RSA_PKCS_OAEP_PARAMS {
1268f66d273dSizick         CK_MECHANISM_TYPE hashAlg;
1269f66d273dSizick         CK_RSA_PKCS_MGF_TYPE mgf;
1270f66d273dSizick         CK_RSA_PKCS_OAEP_SOURCE_TYPE source;
1271f66d273dSizick         CK_VOID_PTR pSourceData;
1272f66d273dSizick         CK_ULONG ulSourceDataLen;
12737c478bd9Sstevel@tonic-gate } CK_RSA_PKCS_OAEP_PARAMS;
12747c478bd9Sstevel@tonic-gate 
12757c478bd9Sstevel@tonic-gate typedef CK_RSA_PKCS_OAEP_PARAMS CK_PTR CK_RSA_PKCS_OAEP_PARAMS_PTR;
12767c478bd9Sstevel@tonic-gate 
1277*b106467fSJason King /* CK_RSA_PKCS_PSS_PARAMS provides the parameters to the
1278*b106467fSJason King  * CKM_RSA_PKCS_PSS mechanism(s).
1279*b106467fSJason King  */
12807c478bd9Sstevel@tonic-gate typedef struct CK_RSA_PKCS_PSS_PARAMS {
1281f66d273dSizick         CK_MECHANISM_TYPE    hashAlg;
1282f66d273dSizick         CK_RSA_PKCS_MGF_TYPE mgf;
1283f66d273dSizick         CK_ULONG             sLen;
12847c478bd9Sstevel@tonic-gate } CK_RSA_PKCS_PSS_PARAMS;
12857c478bd9Sstevel@tonic-gate 
12867c478bd9Sstevel@tonic-gate typedef CK_RSA_PKCS_PSS_PARAMS CK_PTR CK_RSA_PKCS_PSS_PARAMS_PTR;
12877c478bd9Sstevel@tonic-gate 
12887c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_EC_KDF_TYPE;
12897c478bd9Sstevel@tonic-gate 
12907c478bd9Sstevel@tonic-gate /* The following EC Key Derivation Functions are defined */
1291*b106467fSJason King #define CKD_NULL                 0x00000001UL
1292*b106467fSJason King #define CKD_SHA1_KDF             0x00000002UL
1293*b106467fSJason King 
1294*b106467fSJason King /* The following X9.42 DH key derivation functions are defined */
1295*b106467fSJason King #define CKD_SHA1_KDF_ASN1        0x00000003UL
1296*b106467fSJason King #define CKD_SHA1_KDF_CONCATENATE 0x00000004UL
1297*b106467fSJason King #define CKD_SHA224_KDF           0x00000005UL
1298*b106467fSJason King #define CKD_SHA256_KDF           0x00000006UL
1299*b106467fSJason King #define CKD_SHA384_KDF           0x00000007UL
1300*b106467fSJason King #define CKD_SHA512_KDF           0x00000008UL
1301*b106467fSJason King #define CKD_CPDIVERSIFY_KDF      0x00000009UL
13027c478bd9Sstevel@tonic-gate 
1303*b106467fSJason King 
1304*b106467fSJason King /* CK_ECDH1_DERIVE_PARAMS provides the parameters to the
13057c478bd9Sstevel@tonic-gate  * CKM_ECDH1_DERIVE and CKM_ECDH1_COFACTOR_DERIVE mechanisms,
13067c478bd9Sstevel@tonic-gate  * where each party contributes one key pair.
13077c478bd9Sstevel@tonic-gate  */
13087c478bd9Sstevel@tonic-gate typedef struct CK_ECDH1_DERIVE_PARAMS {
13097c478bd9Sstevel@tonic-gate   CK_EC_KDF_TYPE kdf;
13107c478bd9Sstevel@tonic-gate   CK_ULONG ulSharedDataLen;
13117c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pSharedData;
13127c478bd9Sstevel@tonic-gate   CK_ULONG ulPublicDataLen;
13137c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pPublicData;
13147c478bd9Sstevel@tonic-gate } CK_ECDH1_DERIVE_PARAMS;
13157c478bd9Sstevel@tonic-gate 
13167c478bd9Sstevel@tonic-gate typedef CK_ECDH1_DERIVE_PARAMS CK_PTR CK_ECDH1_DERIVE_PARAMS_PTR;
13177c478bd9Sstevel@tonic-gate 
1318*b106467fSJason King /*
13197c478bd9Sstevel@tonic-gate  * CK_ECDH2_DERIVE_PARAMS provides the parameters to the
1320*b106467fSJason King  * CKM_ECMQV_DERIVE mechanism, where each party contributes two key pairs.
1321*b106467fSJason King  */
13227c478bd9Sstevel@tonic-gate typedef struct CK_ECDH2_DERIVE_PARAMS {
13237c478bd9Sstevel@tonic-gate   CK_EC_KDF_TYPE kdf;
13247c478bd9Sstevel@tonic-gate   CK_ULONG ulSharedDataLen;
13257c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pSharedData;
13267c478bd9Sstevel@tonic-gate   CK_ULONG ulPublicDataLen;
13277c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pPublicData;
13287c478bd9Sstevel@tonic-gate   CK_ULONG ulPrivateDataLen;
13297c478bd9Sstevel@tonic-gate   CK_OBJECT_HANDLE hPrivateData;
13307c478bd9Sstevel@tonic-gate   CK_ULONG ulPublicDataLen2;
13317c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pPublicData2;
13327c478bd9Sstevel@tonic-gate } CK_ECDH2_DERIVE_PARAMS;
13337c478bd9Sstevel@tonic-gate 
13347c478bd9Sstevel@tonic-gate typedef CK_ECDH2_DERIVE_PARAMS CK_PTR CK_ECDH2_DERIVE_PARAMS_PTR;
13357c478bd9Sstevel@tonic-gate 
1336f66d273dSizick typedef struct CK_ECMQV_DERIVE_PARAMS {
1337f66d273dSizick   CK_EC_KDF_TYPE kdf;
1338f66d273dSizick   CK_ULONG ulSharedDataLen;
1339f66d273dSizick   CK_BYTE_PTR pSharedData;
1340f66d273dSizick   CK_ULONG ulPublicDataLen;
1341f66d273dSizick   CK_BYTE_PTR pPublicData;
1342f66d273dSizick   CK_ULONG ulPrivateDataLen;
1343f66d273dSizick   CK_OBJECT_HANDLE hPrivateData;
1344f66d273dSizick   CK_ULONG ulPublicDataLen2;
1345f66d273dSizick   CK_BYTE_PTR pPublicData2;
1346f66d273dSizick   CK_OBJECT_HANDLE publicKey;
1347f66d273dSizick } CK_ECMQV_DERIVE_PARAMS;
1348f66d273dSizick 
1349f66d273dSizick typedef CK_ECMQV_DERIVE_PARAMS CK_PTR CK_ECMQV_DERIVE_PARAMS_PTR;
1350f66d273dSizick 
1351f66d273dSizick /* Typedefs and defines for the CKM_X9_42_DH_KEY_PAIR_GEN and the
1352*b106467fSJason King  * CKM_X9_42_DH_PARAMETER_GEN mechanisms
1353*b106467fSJason King  */
13547c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_X9_42_DH_KDF_TYPE;
13557c478bd9Sstevel@tonic-gate typedef CK_X9_42_DH_KDF_TYPE CK_PTR CK_X9_42_DH_KDF_TYPE_PTR;
13567c478bd9Sstevel@tonic-gate 
1357*b106467fSJason King /* CK_X9_42_DH1_DERIVE_PARAMS provides the parameters to the
13587c478bd9Sstevel@tonic-gate  * CKM_X9_42_DH_DERIVE key derivation mechanism, where each party
1359*b106467fSJason King  * contributes one key pair
1360*b106467fSJason King  */
13617c478bd9Sstevel@tonic-gate typedef struct CK_X9_42_DH1_DERIVE_PARAMS {
13627c478bd9Sstevel@tonic-gate   CK_X9_42_DH_KDF_TYPE kdf;
13637c478bd9Sstevel@tonic-gate   CK_ULONG ulOtherInfoLen;
13647c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pOtherInfo;
13657c478bd9Sstevel@tonic-gate   CK_ULONG ulPublicDataLen;
13667c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pPublicData;
13677c478bd9Sstevel@tonic-gate } CK_X9_42_DH1_DERIVE_PARAMS;
13687c478bd9Sstevel@tonic-gate 
13697c478bd9Sstevel@tonic-gate typedef struct CK_X9_42_DH1_DERIVE_PARAMS CK_PTR CK_X9_42_DH1_DERIVE_PARAMS_PTR;
13707c478bd9Sstevel@tonic-gate 
1371*b106467fSJason King /* CK_X9_42_DH2_DERIVE_PARAMS provides the parameters to the
13727c478bd9Sstevel@tonic-gate  * CKM_X9_42_DH_HYBRID_DERIVE and CKM_X9_42_MQV_DERIVE key derivation
1373*b106467fSJason King  * mechanisms, where each party contributes two key pairs
1374*b106467fSJason King  */
13757c478bd9Sstevel@tonic-gate typedef struct CK_X9_42_DH2_DERIVE_PARAMS {
13767c478bd9Sstevel@tonic-gate   CK_X9_42_DH_KDF_TYPE kdf;
13777c478bd9Sstevel@tonic-gate   CK_ULONG ulOtherInfoLen;
13787c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pOtherInfo;
13797c478bd9Sstevel@tonic-gate   CK_ULONG ulPublicDataLen;
13807c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pPublicData;
13817c478bd9Sstevel@tonic-gate   CK_ULONG ulPrivateDataLen;
13827c478bd9Sstevel@tonic-gate   CK_OBJECT_HANDLE hPrivateData;
13837c478bd9Sstevel@tonic-gate   CK_ULONG ulPublicDataLen2;
13847c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pPublicData2;
13857c478bd9Sstevel@tonic-gate } CK_X9_42_DH2_DERIVE_PARAMS;
13867c478bd9Sstevel@tonic-gate 
13877c478bd9Sstevel@tonic-gate typedef CK_X9_42_DH2_DERIVE_PARAMS CK_PTR CK_X9_42_DH2_DERIVE_PARAMS_PTR;
13887c478bd9Sstevel@tonic-gate 
1389f66d273dSizick typedef struct CK_X9_42_MQV_DERIVE_PARAMS {
1390f66d273dSizick   CK_X9_42_DH_KDF_TYPE kdf;
1391f66d273dSizick   CK_ULONG ulOtherInfoLen;
1392f66d273dSizick   CK_BYTE_PTR pOtherInfo;
1393f66d273dSizick   CK_ULONG ulPublicDataLen;
1394f66d273dSizick   CK_BYTE_PTR pPublicData;
1395f66d273dSizick   CK_ULONG ulPrivateDataLen;
1396f66d273dSizick   CK_OBJECT_HANDLE hPrivateData;
1397f66d273dSizick   CK_ULONG ulPublicDataLen2;
1398f66d273dSizick   CK_BYTE_PTR pPublicData2;
1399f66d273dSizick   CK_OBJECT_HANDLE publicKey;
1400f66d273dSizick } CK_X9_42_MQV_DERIVE_PARAMS;
1401f66d273dSizick 
1402f66d273dSizick typedef CK_X9_42_MQV_DERIVE_PARAMS CK_PTR CK_X9_42_MQV_DERIVE_PARAMS_PTR;
1403f66d273dSizick 
14047c478bd9Sstevel@tonic-gate /* CK_KEA_DERIVE_PARAMS provides the parameters to the
1405*b106467fSJason King  * CKM_KEA_DERIVE mechanism
1406*b106467fSJason King  */
14077c478bd9Sstevel@tonic-gate typedef struct CK_KEA_DERIVE_PARAMS {
14087c478bd9Sstevel@tonic-gate   CK_BBOOL      isSender;
14097c478bd9Sstevel@tonic-gate   CK_ULONG      ulRandomLen;
14107c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pRandomA;
14117c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pRandomB;
14127c478bd9Sstevel@tonic-gate   CK_ULONG      ulPublicDataLen;
14137c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pPublicData;
14147c478bd9Sstevel@tonic-gate } CK_KEA_DERIVE_PARAMS;
14157c478bd9Sstevel@tonic-gate 
14167c478bd9Sstevel@tonic-gate typedef CK_KEA_DERIVE_PARAMS CK_PTR CK_KEA_DERIVE_PARAMS_PTR;
14177c478bd9Sstevel@tonic-gate 
14187c478bd9Sstevel@tonic-gate 
14197c478bd9Sstevel@tonic-gate /* CK_RC2_PARAMS provides the parameters to the CKM_RC2_ECB and
14207c478bd9Sstevel@tonic-gate  * CKM_RC2_MAC mechanisms.  An instance of CK_RC2_PARAMS just
1421*b106467fSJason King  * holds the effective keysize
1422*b106467fSJason King  */
14237c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_RC2_PARAMS;
14247c478bd9Sstevel@tonic-gate 
14257c478bd9Sstevel@tonic-gate typedef CK_RC2_PARAMS CK_PTR CK_RC2_PARAMS_PTR;
14267c478bd9Sstevel@tonic-gate 
14277c478bd9Sstevel@tonic-gate 
14287c478bd9Sstevel@tonic-gate /* CK_RC2_CBC_PARAMS provides the parameters to the CKM_RC2_CBC
1429*b106467fSJason King  * mechanism
1430*b106467fSJason King  */
14317c478bd9Sstevel@tonic-gate typedef struct CK_RC2_CBC_PARAMS {
14327c478bd9Sstevel@tonic-gate   CK_ULONG      ulEffectiveBits;  /* effective bits (1-1024) */
14337c478bd9Sstevel@tonic-gate   CK_BYTE       iv[8];            /* IV for CBC mode */
14347c478bd9Sstevel@tonic-gate } CK_RC2_CBC_PARAMS;
14357c478bd9Sstevel@tonic-gate 
14367c478bd9Sstevel@tonic-gate typedef CK_RC2_CBC_PARAMS CK_PTR CK_RC2_CBC_PARAMS_PTR;
14377c478bd9Sstevel@tonic-gate 
14387c478bd9Sstevel@tonic-gate 
14397c478bd9Sstevel@tonic-gate /* CK_RC2_MAC_GENERAL_PARAMS provides the parameters for the
1440*b106467fSJason King  * CKM_RC2_MAC_GENERAL mechanism
1441*b106467fSJason King  */
14427c478bd9Sstevel@tonic-gate typedef struct CK_RC2_MAC_GENERAL_PARAMS {
14437c478bd9Sstevel@tonic-gate   CK_ULONG      ulEffectiveBits;  /* effective bits (1-1024) */
14447c478bd9Sstevel@tonic-gate   CK_ULONG      ulMacLength;      /* Length of MAC in bytes */
14457c478bd9Sstevel@tonic-gate } CK_RC2_MAC_GENERAL_PARAMS;
14467c478bd9Sstevel@tonic-gate 
14477c478bd9Sstevel@tonic-gate typedef CK_RC2_MAC_GENERAL_PARAMS CK_PTR \
14487c478bd9Sstevel@tonic-gate   CK_RC2_MAC_GENERAL_PARAMS_PTR;
14497c478bd9Sstevel@tonic-gate 
14507c478bd9Sstevel@tonic-gate 
14517c478bd9Sstevel@tonic-gate /* CK_RC5_PARAMS provides the parameters to the CKM_RC5_ECB and
1452*b106467fSJason King  * CKM_RC5_MAC mechanisms
1453*b106467fSJason King  */
14547c478bd9Sstevel@tonic-gate typedef struct CK_RC5_PARAMS {
14557c478bd9Sstevel@tonic-gate   CK_ULONG      ulWordsize;  /* wordsize in bits */
14567c478bd9Sstevel@tonic-gate   CK_ULONG      ulRounds;    /* number of rounds */
14577c478bd9Sstevel@tonic-gate } CK_RC5_PARAMS;
14587c478bd9Sstevel@tonic-gate 
14597c478bd9Sstevel@tonic-gate typedef CK_RC5_PARAMS CK_PTR CK_RC5_PARAMS_PTR;
14607c478bd9Sstevel@tonic-gate 
14617c478bd9Sstevel@tonic-gate 
14627c478bd9Sstevel@tonic-gate /* CK_RC5_CBC_PARAMS provides the parameters to the CKM_RC5_CBC
1463*b106467fSJason King  * mechanism
1464*b106467fSJason King  */
14657c478bd9Sstevel@tonic-gate typedef struct CK_RC5_CBC_PARAMS {
14667c478bd9Sstevel@tonic-gate   CK_ULONG      ulWordsize;  /* wordsize in bits */
14677c478bd9Sstevel@tonic-gate   CK_ULONG      ulRounds;    /* number of rounds */
14687c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pIv;         /* pointer to IV */
14697c478bd9Sstevel@tonic-gate   CK_ULONG      ulIvLen;     /* length of IV in bytes */
14707c478bd9Sstevel@tonic-gate } CK_RC5_CBC_PARAMS;
14717c478bd9Sstevel@tonic-gate 
14727c478bd9Sstevel@tonic-gate typedef CK_RC5_CBC_PARAMS CK_PTR CK_RC5_CBC_PARAMS_PTR;
14737c478bd9Sstevel@tonic-gate 
14747c478bd9Sstevel@tonic-gate 
14757c478bd9Sstevel@tonic-gate /* CK_RC5_MAC_GENERAL_PARAMS provides the parameters for the
1476*b106467fSJason King  * CKM_RC5_MAC_GENERAL mechanism
1477*b106467fSJason King  */
14787c478bd9Sstevel@tonic-gate typedef struct CK_RC5_MAC_GENERAL_PARAMS {
14797c478bd9Sstevel@tonic-gate   CK_ULONG      ulWordsize;   /* wordsize in bits */
14807c478bd9Sstevel@tonic-gate   CK_ULONG      ulRounds;     /* number of rounds */
14817c478bd9Sstevel@tonic-gate   CK_ULONG      ulMacLength;  /* Length of MAC in bytes */
14827c478bd9Sstevel@tonic-gate } CK_RC5_MAC_GENERAL_PARAMS;
14837c478bd9Sstevel@tonic-gate 
14847c478bd9Sstevel@tonic-gate typedef CK_RC5_MAC_GENERAL_PARAMS CK_PTR \
14857c478bd9Sstevel@tonic-gate   CK_RC5_MAC_GENERAL_PARAMS_PTR;
14867c478bd9Sstevel@tonic-gate 
14877c478bd9Sstevel@tonic-gate /* CK_MAC_GENERAL_PARAMS provides the parameters to most block
14887c478bd9Sstevel@tonic-gate  * ciphers' MAC_GENERAL mechanisms.  Its value is the length of
1489*b106467fSJason King  * the MAC
1490*b106467fSJason King  */
14917c478bd9Sstevel@tonic-gate typedef CK_ULONG          CK_MAC_GENERAL_PARAMS;
14927c478bd9Sstevel@tonic-gate 
14937c478bd9Sstevel@tonic-gate typedef CK_MAC_GENERAL_PARAMS CK_PTR CK_MAC_GENERAL_PARAMS_PTR;
14947c478bd9Sstevel@tonic-gate 
1495f66d273dSizick typedef struct CK_DES_CBC_ENCRYPT_DATA_PARAMS {
1496f66d273dSizick   CK_BYTE      iv[8];
1497f66d273dSizick   CK_BYTE_PTR  pData;
1498f66d273dSizick   CK_ULONG     length;
1499f66d273dSizick } CK_DES_CBC_ENCRYPT_DATA_PARAMS;
1500f66d273dSizick 
1501f66d273dSizick typedef CK_DES_CBC_ENCRYPT_DATA_PARAMS CK_PTR CK_DES_CBC_ENCRYPT_DATA_PARAMS_PTR;
1502f66d273dSizick 
1503f66d273dSizick typedef struct CK_AES_CBC_ENCRYPT_DATA_PARAMS {
1504f66d273dSizick   CK_BYTE      iv[16];
1505f66d273dSizick   CK_BYTE_PTR  pData;
1506f66d273dSizick   CK_ULONG     length;
1507f66d273dSizick } CK_AES_CBC_ENCRYPT_DATA_PARAMS;
1508f66d273dSizick 
1509f66d273dSizick typedef CK_AES_CBC_ENCRYPT_DATA_PARAMS CK_PTR CK_AES_CBC_ENCRYPT_DATA_PARAMS_PTR;
15107c478bd9Sstevel@tonic-gate 
15117c478bd9Sstevel@tonic-gate /* CK_SKIPJACK_PRIVATE_WRAP_PARAMS provides the parameters to the
1512*b106467fSJason King  * CKM_SKIPJACK_PRIVATE_WRAP mechanism
1513*b106467fSJason King  */
15147c478bd9Sstevel@tonic-gate typedef struct CK_SKIPJACK_PRIVATE_WRAP_PARAMS {
15157c478bd9Sstevel@tonic-gate   CK_ULONG      ulPasswordLen;
15167c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pPassword;
15177c478bd9Sstevel@tonic-gate   CK_ULONG      ulPublicDataLen;
15187c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pPublicData;
15197c478bd9Sstevel@tonic-gate   CK_ULONG      ulPAndGLen;
15207c478bd9Sstevel@tonic-gate   CK_ULONG      ulQLen;
15217c478bd9Sstevel@tonic-gate   CK_ULONG      ulRandomLen;
15227c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pRandomA;
15237c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pPrimeP;
15247c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pBaseG;
15257c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pSubprimeQ;
15267c478bd9Sstevel@tonic-gate } CK_SKIPJACK_PRIVATE_WRAP_PARAMS;
15277c478bd9Sstevel@tonic-gate 
15287c478bd9Sstevel@tonic-gate typedef CK_SKIPJACK_PRIVATE_WRAP_PARAMS CK_PTR \
1529*b106467fSJason King   CK_SKIPJACK_PRIVATE_WRAP_PARAMS_PTR;
15307c478bd9Sstevel@tonic-gate 
15317c478bd9Sstevel@tonic-gate 
15327c478bd9Sstevel@tonic-gate /* CK_SKIPJACK_RELAYX_PARAMS provides the parameters to the
1533*b106467fSJason King  * CKM_SKIPJACK_RELAYX mechanism
1534*b106467fSJason King  */
15357c478bd9Sstevel@tonic-gate typedef struct CK_SKIPJACK_RELAYX_PARAMS {
15367c478bd9Sstevel@tonic-gate   CK_ULONG      ulOldWrappedXLen;
15377c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pOldWrappedX;
15387c478bd9Sstevel@tonic-gate   CK_ULONG      ulOldPasswordLen;
15397c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pOldPassword;
15407c478bd9Sstevel@tonic-gate   CK_ULONG      ulOldPublicDataLen;
15417c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pOldPublicData;
15427c478bd9Sstevel@tonic-gate   CK_ULONG      ulOldRandomLen;
15437c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pOldRandomA;
15447c478bd9Sstevel@tonic-gate   CK_ULONG      ulNewPasswordLen;
15457c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pNewPassword;
15467c478bd9Sstevel@tonic-gate   CK_ULONG      ulNewPublicDataLen;
15477c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pNewPublicData;
15487c478bd9Sstevel@tonic-gate   CK_ULONG      ulNewRandomLen;
15497c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pNewRandomA;
15507c478bd9Sstevel@tonic-gate } CK_SKIPJACK_RELAYX_PARAMS;
15517c478bd9Sstevel@tonic-gate 
15527c478bd9Sstevel@tonic-gate typedef CK_SKIPJACK_RELAYX_PARAMS CK_PTR \
15537c478bd9Sstevel@tonic-gate   CK_SKIPJACK_RELAYX_PARAMS_PTR;
15547c478bd9Sstevel@tonic-gate 
15557c478bd9Sstevel@tonic-gate 
15567c478bd9Sstevel@tonic-gate typedef struct CK_PBE_PARAMS {
15577c478bd9Sstevel@tonic-gate   CK_BYTE_PTR      pInitVector;
15587c478bd9Sstevel@tonic-gate   CK_UTF8CHAR_PTR  pPassword;
15597c478bd9Sstevel@tonic-gate   CK_ULONG         ulPasswordLen;
15607c478bd9Sstevel@tonic-gate   CK_BYTE_PTR      pSalt;
15617c478bd9Sstevel@tonic-gate   CK_ULONG         ulSaltLen;
15627c478bd9Sstevel@tonic-gate   CK_ULONG         ulIteration;
15637c478bd9Sstevel@tonic-gate } CK_PBE_PARAMS;
15647c478bd9Sstevel@tonic-gate 
15657c478bd9Sstevel@tonic-gate typedef CK_PBE_PARAMS CK_PTR CK_PBE_PARAMS_PTR;
15667c478bd9Sstevel@tonic-gate 
15677c478bd9Sstevel@tonic-gate 
15687c478bd9Sstevel@tonic-gate /* CK_KEY_WRAP_SET_OAEP_PARAMS provides the parameters to the
1569*b106467fSJason King  * CKM_KEY_WRAP_SET_OAEP mechanism
1570*b106467fSJason King  */
15717c478bd9Sstevel@tonic-gate typedef struct CK_KEY_WRAP_SET_OAEP_PARAMS {
15727c478bd9Sstevel@tonic-gate   CK_BYTE       bBC;     /* block contents byte */
15737c478bd9Sstevel@tonic-gate   CK_BYTE_PTR   pX;      /* extra data */
15747c478bd9Sstevel@tonic-gate   CK_ULONG      ulXLen;  /* length of extra data in bytes */
15757c478bd9Sstevel@tonic-gate } CK_KEY_WRAP_SET_OAEP_PARAMS;
15767c478bd9Sstevel@tonic-gate 
1577*b106467fSJason King typedef CK_KEY_WRAP_SET_OAEP_PARAMS CK_PTR CK_KEY_WRAP_SET_OAEP_PARAMS_PTR;
15787c478bd9Sstevel@tonic-gate 
15797c478bd9Sstevel@tonic-gate typedef struct CK_SSL3_RANDOM_DATA {
15807c478bd9Sstevel@tonic-gate   CK_BYTE_PTR  pClientRandom;
15817c478bd9Sstevel@tonic-gate   CK_ULONG     ulClientRandomLen;
15827c478bd9Sstevel@tonic-gate   CK_BYTE_PTR  pServerRandom;
15837c478bd9Sstevel@tonic-gate   CK_ULONG     ulServerRandomLen;
15847c478bd9Sstevel@tonic-gate } CK_SSL3_RANDOM_DATA;
15857c478bd9Sstevel@tonic-gate 
15867c478bd9Sstevel@tonic-gate 
15877c478bd9Sstevel@tonic-gate typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS {
15887c478bd9Sstevel@tonic-gate   CK_SSL3_RANDOM_DATA RandomInfo;
15897c478bd9Sstevel@tonic-gate   CK_VERSION_PTR pVersion;
15907c478bd9Sstevel@tonic-gate } CK_SSL3_MASTER_KEY_DERIVE_PARAMS;
15917c478bd9Sstevel@tonic-gate 
15927c478bd9Sstevel@tonic-gate typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS CK_PTR \
15937c478bd9Sstevel@tonic-gate   CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR;
15947c478bd9Sstevel@tonic-gate 
15957c478bd9Sstevel@tonic-gate typedef struct CK_SSL3_KEY_MAT_OUT {
15967c478bd9Sstevel@tonic-gate   CK_OBJECT_HANDLE hClientMacSecret;
15977c478bd9Sstevel@tonic-gate   CK_OBJECT_HANDLE hServerMacSecret;
15987c478bd9Sstevel@tonic-gate   CK_OBJECT_HANDLE hClientKey;
15997c478bd9Sstevel@tonic-gate   CK_OBJECT_HANDLE hServerKey;
16007c478bd9Sstevel@tonic-gate   CK_BYTE_PTR      pIVClient;
16017c478bd9Sstevel@tonic-gate   CK_BYTE_PTR      pIVServer;
16027c478bd9Sstevel@tonic-gate } CK_SSL3_KEY_MAT_OUT;
16037c478bd9Sstevel@tonic-gate 
16047c478bd9Sstevel@tonic-gate typedef CK_SSL3_KEY_MAT_OUT CK_PTR CK_SSL3_KEY_MAT_OUT_PTR;
16057c478bd9Sstevel@tonic-gate 
16067c478bd9Sstevel@tonic-gate 
16077c478bd9Sstevel@tonic-gate typedef struct CK_SSL3_KEY_MAT_PARAMS {
16087c478bd9Sstevel@tonic-gate   CK_ULONG                ulMacSizeInBits;
16097c478bd9Sstevel@tonic-gate   CK_ULONG                ulKeySizeInBits;
16107c478bd9Sstevel@tonic-gate   CK_ULONG                ulIVSizeInBits;
16117c478bd9Sstevel@tonic-gate   CK_BBOOL                bIsExport;
16127c478bd9Sstevel@tonic-gate   CK_SSL3_RANDOM_DATA     RandomInfo;
16137c478bd9Sstevel@tonic-gate   CK_SSL3_KEY_MAT_OUT_PTR pReturnedKeyMaterial;
16147c478bd9Sstevel@tonic-gate } CK_SSL3_KEY_MAT_PARAMS;
16157c478bd9Sstevel@tonic-gate 
16167c478bd9Sstevel@tonic-gate typedef CK_SSL3_KEY_MAT_PARAMS CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR;
16177c478bd9Sstevel@tonic-gate 
1618f66d273dSizick typedef struct CK_TLS_PRF_PARAMS {
1619f66d273dSizick   CK_BYTE_PTR  pSeed;
1620f66d273dSizick   CK_ULONG     ulSeedLen;
1621f66d273dSizick   CK_BYTE_PTR  pLabel;
1622f66d273dSizick   CK_ULONG     ulLabelLen;
1623f66d273dSizick   CK_BYTE_PTR  pOutput;
1624f66d273dSizick   CK_ULONG_PTR pulOutputLen;
1625f66d273dSizick } CK_TLS_PRF_PARAMS;
1626f66d273dSizick 
1627f66d273dSizick typedef CK_TLS_PRF_PARAMS CK_PTR CK_TLS_PRF_PARAMS_PTR;
1628f66d273dSizick 
1629f66d273dSizick typedef struct CK_WTLS_RANDOM_DATA {
1630f66d273dSizick   CK_BYTE_PTR pClientRandom;
1631f66d273dSizick   CK_ULONG    ulClientRandomLen;
1632f66d273dSizick   CK_BYTE_PTR pServerRandom;
1633f66d273dSizick   CK_ULONG    ulServerRandomLen;
1634f66d273dSizick } CK_WTLS_RANDOM_DATA;
1635f66d273dSizick 
1636f66d273dSizick typedef CK_WTLS_RANDOM_DATA CK_PTR CK_WTLS_RANDOM_DATA_PTR;
1637f66d273dSizick 
1638f66d273dSizick typedef struct CK_WTLS_MASTER_KEY_DERIVE_PARAMS {
1639f66d273dSizick   CK_MECHANISM_TYPE   DigestMechanism;
1640f66d273dSizick   CK_WTLS_RANDOM_DATA RandomInfo;
1641f66d273dSizick   CK_BYTE_PTR         pVersion;
1642f66d273dSizick } CK_WTLS_MASTER_KEY_DERIVE_PARAMS;
1643f66d273dSizick 
1644f66d273dSizick typedef CK_WTLS_MASTER_KEY_DERIVE_PARAMS CK_PTR \
1645f66d273dSizick   CK_WTLS_MASTER_KEY_DERIVE_PARAMS_PTR;
1646f66d273dSizick 
1647f66d273dSizick typedef struct CK_WTLS_PRF_PARAMS {
1648f66d273dSizick   CK_MECHANISM_TYPE DigestMechanism;
1649f66d273dSizick   CK_BYTE_PTR       pSeed;
1650f66d273dSizick   CK_ULONG          ulSeedLen;
1651f66d273dSizick   CK_BYTE_PTR       pLabel;
1652f66d273dSizick   CK_ULONG          ulLabelLen;
1653f66d273dSizick   CK_BYTE_PTR       pOutput;
1654f66d273dSizick   CK_ULONG_PTR      pulOutputLen;
1655f66d273dSizick } CK_WTLS_PRF_PARAMS;
1656f66d273dSizick 
1657f66d273dSizick typedef CK_WTLS_PRF_PARAMS CK_PTR CK_WTLS_PRF_PARAMS_PTR;
1658f66d273dSizick 
1659f66d273dSizick typedef struct CK_WTLS_KEY_MAT_OUT {
1660f66d273dSizick   CK_OBJECT_HANDLE hMacSecret;
1661f66d273dSizick   CK_OBJECT_HANDLE hKey;
1662f66d273dSizick   CK_BYTE_PTR      pIV;
1663f66d273dSizick } CK_WTLS_KEY_MAT_OUT;
1664f66d273dSizick 
1665f66d273dSizick typedef CK_WTLS_KEY_MAT_OUT CK_PTR CK_WTLS_KEY_MAT_OUT_PTR;
1666f66d273dSizick 
1667f66d273dSizick typedef struct CK_WTLS_KEY_MAT_PARAMS {
1668f66d273dSizick   CK_MECHANISM_TYPE       DigestMechanism;
1669f66d273dSizick   CK_ULONG                ulMacSizeInBits;
1670f66d273dSizick   CK_ULONG                ulKeySizeInBits;
1671f66d273dSizick   CK_ULONG                ulIVSizeInBits;
1672f66d273dSizick   CK_ULONG                ulSequenceNumber;
1673f66d273dSizick   CK_BBOOL                bIsExport;
1674f66d273dSizick   CK_WTLS_RANDOM_DATA     RandomInfo;
1675f66d273dSizick   CK_WTLS_KEY_MAT_OUT_PTR pReturnedKeyMaterial;
1676f66d273dSizick } CK_WTLS_KEY_MAT_PARAMS;
1677f66d273dSizick 
1678f66d273dSizick typedef CK_WTLS_KEY_MAT_PARAMS CK_PTR CK_WTLS_KEY_MAT_PARAMS_PTR;
1679f66d273dSizick 
1680f66d273dSizick typedef struct CK_CMS_SIG_PARAMS {
1681f66d273dSizick   CK_OBJECT_HANDLE      certificateHandle;
1682f66d273dSizick   CK_MECHANISM_PTR      pSigningMechanism;
1683f66d273dSizick   CK_MECHANISM_PTR      pDigestMechanism;
1684f66d273dSizick   CK_UTF8CHAR_PTR       pContentType;
1685f66d273dSizick   CK_BYTE_PTR           pRequestedAttributes;
1686f66d273dSizick   CK_ULONG              ulRequestedAttributesLen;
1687f66d273dSizick   CK_BYTE_PTR           pRequiredAttributes;
1688f66d273dSizick   CK_ULONG              ulRequiredAttributesLen;
1689f66d273dSizick } CK_CMS_SIG_PARAMS;
1690f66d273dSizick 
1691f66d273dSizick typedef CK_CMS_SIG_PARAMS CK_PTR CK_CMS_SIG_PARAMS_PTR;
16927c478bd9Sstevel@tonic-gate 
16937c478bd9Sstevel@tonic-gate typedef struct CK_KEY_DERIVATION_STRING_DATA {
16947c478bd9Sstevel@tonic-gate   CK_BYTE_PTR pData;
16957c478bd9Sstevel@tonic-gate   CK_ULONG    ulLen;
16967c478bd9Sstevel@tonic-gate } CK_KEY_DERIVATION_STRING_DATA;
16977c478bd9Sstevel@tonic-gate 
16987c478bd9Sstevel@tonic-gate typedef CK_KEY_DERIVATION_STRING_DATA CK_PTR \
16997c478bd9Sstevel@tonic-gate   CK_KEY_DERIVATION_STRING_DATA_PTR;
17007c478bd9Sstevel@tonic-gate 
17017c478bd9Sstevel@tonic-gate 
17027c478bd9Sstevel@tonic-gate /* The CK_EXTRACT_PARAMS is used for the
17037c478bd9Sstevel@tonic-gate  * CKM_EXTRACT_KEY_FROM_KEY mechanism.  It specifies which bit
17047c478bd9Sstevel@tonic-gate  * of the base key should be used as the first bit of the
1705*b106467fSJason King  * derived key
1706*b106467fSJason King  */
17077c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_EXTRACT_PARAMS;
17087c478bd9Sstevel@tonic-gate 
17097c478bd9Sstevel@tonic-gate typedef CK_EXTRACT_PARAMS CK_PTR CK_EXTRACT_PARAMS_PTR;
17107c478bd9Sstevel@tonic-gate 
1711*b106467fSJason King /* CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE is used to
1712f66d273dSizick  * indicate the Pseudo-Random Function (PRF) used to generate
1713*b106467fSJason King  * key bits using PKCS #5 PBKDF2.
1714*b106467fSJason King  */
17157c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE;
17167c478bd9Sstevel@tonic-gate 
1717*b106467fSJason King typedef CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE CK_PTR \
1718*b106467fSJason King                         CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE_PTR;
17197c478bd9Sstevel@tonic-gate 
1720*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_SHA1          0x00000001UL
1721*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_GOSTR3411     0x00000002UL
1722*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_SHA224        0x00000003UL
1723*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_SHA256        0x00000004UL
1724*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_SHA384        0x00000005UL
1725*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_SHA512        0x00000006UL
1726*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_SHA512_224    0x00000007UL
1727*b106467fSJason King #define CKP_PKCS5_PBKD2_HMAC_SHA512_256    0x00000008UL
17287c478bd9Sstevel@tonic-gate 
1729*b106467fSJason King /* CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE is used to indicate the
1730f66d273dSizick  * source of the salt value when deriving a key using PKCS #5
1731*b106467fSJason King  * PBKDF2.
1732*b106467fSJason King  */
17337c478bd9Sstevel@tonic-gate typedef CK_ULONG CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE;
17347c478bd9Sstevel@tonic-gate 
1735*b106467fSJason King typedef CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE CK_PTR \
1736*b106467fSJason King                         CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE_PTR;
17377c478bd9Sstevel@tonic-gate 
17387c478bd9Sstevel@tonic-gate /* The following salt value sources are defined in PKCS #5 v2.0. */
1739*b106467fSJason King #define CKZ_SALT_SPECIFIED        0x00000001UL
17407c478bd9Sstevel@tonic-gate 
1741*b106467fSJason King /* CK_PKCS5_PBKD2_PARAMS is a structure that provides the
1742*b106467fSJason King  * parameters to the CKM_PKCS5_PBKD2 mechanism.
1743*b106467fSJason King  */
17447c478bd9Sstevel@tonic-gate typedef struct CK_PKCS5_PBKD2_PARAMS {
1745f66d273dSizick         CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE           saltSource;
1746f66d273dSizick         CK_VOID_PTR                                pSaltSourceData;
1747f66d273dSizick         CK_ULONG                                   ulSaltSourceDataLen;
1748f66d273dSizick         CK_ULONG                                   iterations;
1749f66d273dSizick         CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
1750f66d273dSizick         CK_VOID_PTR                                pPrfData;
1751f66d273dSizick         CK_ULONG                                   ulPrfDataLen;
1752f66d273dSizick         CK_UTF8CHAR_PTR                            pPassword;
1753f66d273dSizick         CK_ULONG_PTR                               ulPasswordLen;
17547c478bd9Sstevel@tonic-gate } CK_PKCS5_PBKD2_PARAMS;
17557c478bd9Sstevel@tonic-gate 
17567c478bd9Sstevel@tonic-gate typedef CK_PKCS5_PBKD2_PARAMS CK_PTR CK_PKCS5_PBKD2_PARAMS_PTR;
17577c478bd9Sstevel@tonic-gate 
1758*b106467fSJason King /* CK_PKCS5_PBKD2_PARAMS2 is a corrected version of the CK_PKCS5_PBKD2_PARAMS
1759*b106467fSJason King  * structure that provides the parameters to the CKM_PKCS5_PBKD2 mechanism
1760*b106467fSJason King  * noting that the ulPasswordLen field is a CK_ULONG and not a CK_ULONG_PTR.
1761*b106467fSJason King  */
1762*b106467fSJason King typedef struct CK_PKCS5_PBKD2_PARAMS2 {
1763*b106467fSJason King         CK_PKCS5_PBKDF2_SALT_SOURCE_TYPE saltSource;
1764*b106467fSJason King         CK_VOID_PTR pSaltSourceData;
1765*b106467fSJason King         CK_ULONG ulSaltSourceDataLen;
1766*b106467fSJason King         CK_ULONG iterations;
1767*b106467fSJason King         CK_PKCS5_PBKD2_PSEUDO_RANDOM_FUNCTION_TYPE prf;
1768*b106467fSJason King         CK_VOID_PTR pPrfData;
1769*b106467fSJason King         CK_ULONG ulPrfDataLen;
1770*b106467fSJason King         CK_UTF8CHAR_PTR pPassword;
1771*b106467fSJason King         CK_ULONG ulPasswordLen;
1772*b106467fSJason King } CK_PKCS5_PBKD2_PARAMS2;
1773*b106467fSJason King 
1774*b106467fSJason King typedef CK_PKCS5_PBKD2_PARAMS2 CK_PTR CK_PKCS5_PBKD2_PARAMS2_PTR;
17751e9884acSmcpowers 
17761e9884acSmcpowers typedef CK_ULONG CK_OTP_PARAM_TYPE;
1777*b106467fSJason King typedef CK_OTP_PARAM_TYPE CK_PARAM_TYPE; /* backward compatibility */
17781e9884acSmcpowers 
17791e9884acSmcpowers typedef struct CK_OTP_PARAM {
17801e9884acSmcpowers     CK_OTP_PARAM_TYPE type;
17811e9884acSmcpowers     CK_VOID_PTR pValue;
17821e9884acSmcpowers     CK_ULONG ulValueLen;
17831e9884acSmcpowers } CK_OTP_PARAM;
17841e9884acSmcpowers 
17851e9884acSmcpowers typedef CK_OTP_PARAM CK_PTR CK_OTP_PARAM_PTR;
17861e9884acSmcpowers 
17871e9884acSmcpowers typedef struct CK_OTP_PARAMS {
17881e9884acSmcpowers     CK_OTP_PARAM_PTR pParams;
17891e9884acSmcpowers     CK_ULONG ulCount;
17901e9884acSmcpowers } CK_OTP_PARAMS;
17911e9884acSmcpowers 
17921e9884acSmcpowers typedef CK_OTP_PARAMS CK_PTR CK_OTP_PARAMS_PTR;
17931e9884acSmcpowers 
17941e9884acSmcpowers typedef struct CK_OTP_SIGNATURE_INFO {
17951e9884acSmcpowers     CK_OTP_PARAM_PTR pParams;
17961e9884acSmcpowers     CK_ULONG ulCount;
17971e9884acSmcpowers } CK_OTP_SIGNATURE_INFO;
17981e9884acSmcpowers 
17991e9884acSmcpowers typedef CK_OTP_SIGNATURE_INFO CK_PTR CK_OTP_SIGNATURE_INFO_PTR;
18001e9884acSmcpowers 
1801*b106467fSJason King #define CK_OTP_VALUE          0UL
1802*b106467fSJason King #define CK_OTP_PIN            1UL
1803*b106467fSJason King #define CK_OTP_CHALLENGE      2UL
1804*b106467fSJason King #define CK_OTP_TIME           3UL
1805*b106467fSJason King #define CK_OTP_COUNTER        4UL
1806*b106467fSJason King #define CK_OTP_FLAGS          5UL
1807*b106467fSJason King #define CK_OTP_OUTPUT_LENGTH  6UL
1808*b106467fSJason King #define CK_OTP_OUTPUT_FORMAT  7UL
1809*b106467fSJason King 
1810*b106467fSJason King #define CKF_NEXT_OTP          0x00000001UL
1811*b106467fSJason King #define CKF_EXCLUDE_TIME      0x00000002UL
1812*b106467fSJason King #define CKF_EXCLUDE_COUNTER   0x00000004UL
1813*b106467fSJason King #define CKF_EXCLUDE_CHALLENGE 0x00000008UL
1814*b106467fSJason King #define CKF_EXCLUDE_PIN       0x00000010UL
1815*b106467fSJason King #define CKF_USER_FRIENDLY_OTP 0x00000020UL
1816*b106467fSJason King 
18171e9884acSmcpowers typedef struct CK_KIP_PARAMS {
18181e9884acSmcpowers     CK_MECHANISM_PTR  pMechanism;
18191e9884acSmcpowers     CK_OBJECT_HANDLE  hKey;
18201e9884acSmcpowers     CK_BYTE_PTR       pSeed;
18211e9884acSmcpowers     CK_ULONG          ulSeedLen;
18221e9884acSmcpowers } CK_KIP_PARAMS;
18231e9884acSmcpowers 
18241e9884acSmcpowers typedef CK_KIP_PARAMS CK_PTR CK_KIP_PARAMS_PTR;
18251e9884acSmcpowers 
18261e9884acSmcpowers typedef struct CK_AES_CTR_PARAMS {
18271e9884acSmcpowers     CK_ULONG ulCounterBits;
18281e9884acSmcpowers     CK_BYTE cb[16];
18291e9884acSmcpowers } CK_AES_CTR_PARAMS;
18301e9884acSmcpowers 
18311e9884acSmcpowers typedef CK_AES_CTR_PARAMS CK_PTR CK_AES_CTR_PARAMS_PTR;
18321e9884acSmcpowers 
1833*b106467fSJason King typedef struct CK_GCM_PARAMS {
1834*b106467fSJason King     CK_BYTE_PTR       pIv;
1835*b106467fSJason King     CK_ULONG          ulIvLen;
1836*b106467fSJason King     CK_ULONG          ulIvBits;
1837*b106467fSJason King     CK_BYTE_PTR       pAAD;
1838*b106467fSJason King     CK_ULONG          ulAADLen;
1839*b106467fSJason King     CK_ULONG          ulTagBits;
1840*b106467fSJason King } CK_GCM_PARAMS;
1841*b106467fSJason King 
1842*b106467fSJason King typedef CK_GCM_PARAMS CK_PTR CK_GCM_PARAMS_PTR;
1843*b106467fSJason King 
1844*b106467fSJason King typedef struct CK_CCM_PARAMS {
1845*b106467fSJason King     CK_ULONG          ulDataLen;
1846*b106467fSJason King     CK_BYTE_PTR       pNonce;
1847*b106467fSJason King     CK_ULONG          ulNonceLen;
1848*b106467fSJason King     CK_BYTE_PTR       pAAD;
1849*b106467fSJason King     CK_ULONG          ulAADLen;
1850*b106467fSJason King     CK_ULONG          ulMACLen;
1851*b106467fSJason King } CK_CCM_PARAMS;
1852*b106467fSJason King 
1853*b106467fSJason King typedef CK_CCM_PARAMS CK_PTR CK_CCM_PARAMS_PTR;
1854*b106467fSJason King 
1855*b106467fSJason King /*
1856*b106467fSJason King  * These conflict w/ definitions in usr/src/crypto/common and are deprecated,
1857*b106467fSJason King  * so we will require clients to explicitly request their use.
1858*b106467fSJason King  */
1859*b106467fSJason King #ifdef PKCS11_DEPRECATED_PARAMS
1860*b106467fSJason King /* Deprecated. Use CK_GCM_PARAMS */
1861*b106467fSJason King typedef struct CK_AES_GCM_PARAMS {
1862*b106467fSJason King   CK_BYTE_PTR pIv;
1863*b106467fSJason King   CK_ULONG ulIvLen;
1864*b106467fSJason King   CK_ULONG ulIvBits;
1865*b106467fSJason King   CK_BYTE_PTR pAAD;
1866*b106467fSJason King   CK_ULONG ulAADLen;
1867*b106467fSJason King   CK_ULONG ulTagBits;
1868*b106467fSJason King } CK_AES_GCM_PARAMS;
1869*b106467fSJason King 
1870*b106467fSJason King typedef CK_AES_GCM_PARAMS CK_PTR CK_AES_GCM_PARAMS_PTR;
1871*b106467fSJason King 
1872*b106467fSJason King /* Deprecated. Use CK_CCM_PARAMS */
1873*b106467fSJason King typedef struct CK_AES_CCM_PARAMS {
1874*b106467fSJason King     CK_ULONG          ulDataLen;
1875*b106467fSJason King     CK_BYTE_PTR       pNonce;
1876*b106467fSJason King     CK_ULONG          ulNonceLen;
1877*b106467fSJason King     CK_BYTE_PTR       pAAD;
1878*b106467fSJason King     CK_ULONG          ulAADLen;
1879*b106467fSJason King     CK_ULONG          ulMACLen;
1880*b106467fSJason King } CK_AES_CCM_PARAMS;
1881*b106467fSJason King 
1882*b106467fSJason King typedef CK_AES_CCM_PARAMS CK_PTR CK_AES_CCM_PARAMS_PTR;
1883*b106467fSJason King #endif
1884*b106467fSJason King 
18851e9884acSmcpowers typedef struct CK_CAMELLIA_CTR_PARAMS {
1886*b106467fSJason King     CK_ULONG          ulCounterBits;
1887*b106467fSJason King     CK_BYTE           cb[16];
18881e9884acSmcpowers } CK_CAMELLIA_CTR_PARAMS;
18891e9884acSmcpowers 
18901e9884acSmcpowers typedef CK_CAMELLIA_CTR_PARAMS CK_PTR CK_CAMELLIA_CTR_PARAMS_PTR;
18911e9884acSmcpowers 
18921e9884acSmcpowers typedef struct CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS {
1893*b106467fSJason King     CK_BYTE           iv[16];
1894*b106467fSJason King     CK_BYTE_PTR       pData;
1895*b106467fSJason King     CK_ULONG          length;
18961e9884acSmcpowers } CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS;
18971e9884acSmcpowers 
1898*b106467fSJason King typedef CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
1899*b106467fSJason King                                 CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS_PTR;
19001e9884acSmcpowers 
19011e9884acSmcpowers typedef struct CK_ARIA_CBC_ENCRYPT_DATA_PARAMS {
1902*b106467fSJason King     CK_BYTE           iv[16];
1903*b106467fSJason King     CK_BYTE_PTR       pData;
1904*b106467fSJason King     CK_ULONG          length;
19051e9884acSmcpowers } CK_ARIA_CBC_ENCRYPT_DATA_PARAMS;
19061e9884acSmcpowers 
1907*b106467fSJason King typedef CK_ARIA_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
1908*b106467fSJason King                                 CK_ARIA_CBC_ENCRYPT_DATA_PARAMS_PTR;
1909*b106467fSJason King 
1910*b106467fSJason King typedef struct CK_DSA_PARAMETER_GEN_PARAM {
1911*b106467fSJason King     CK_MECHANISM_TYPE  hash;
1912*b106467fSJason King     CK_BYTE_PTR        pSeed;
1913*b106467fSJason King     CK_ULONG           ulSeedLen;
1914*b106467fSJason King     CK_ULONG           ulIndex;
1915*b106467fSJason King } CK_DSA_PARAMETER_GEN_PARAM;
1916*b106467fSJason King 
1917*b106467fSJason King typedef CK_DSA_PARAMETER_GEN_PARAM CK_PTR CK_DSA_PARAMETER_GEN_PARAM_PTR;
1918*b106467fSJason King 
1919*b106467fSJason King typedef struct CK_ECDH_AES_KEY_WRAP_PARAMS {
1920*b106467fSJason King     CK_ULONG           ulAESKeyBits;
1921*b106467fSJason King     CK_EC_KDF_TYPE     kdf;
1922*b106467fSJason King     CK_ULONG           ulSharedDataLen;
1923*b106467fSJason King     CK_BYTE_PTR        pSharedData;
1924*b106467fSJason King } CK_ECDH_AES_KEY_WRAP_PARAMS;
1925*b106467fSJason King 
1926*b106467fSJason King typedef CK_ECDH_AES_KEY_WRAP_PARAMS CK_PTR CK_ECDH_AES_KEY_WRAP_PARAMS_PTR;
1927*b106467fSJason King 
1928*b106467fSJason King typedef CK_ULONG CK_JAVA_MIDP_SECURITY_DOMAIN;
1929*b106467fSJason King 
1930*b106467fSJason King typedef CK_ULONG CK_CERTIFICATE_CATEGORY;
1931*b106467fSJason King 
1932*b106467fSJason King typedef struct CK_RSA_AES_KEY_WRAP_PARAMS {
1933*b106467fSJason King     CK_ULONG                      ulAESKeyBits;
1934*b106467fSJason King     CK_RSA_PKCS_OAEP_PARAMS_PTR   pOAEPParams;
1935*b106467fSJason King } CK_RSA_AES_KEY_WRAP_PARAMS;
1936*b106467fSJason King 
1937*b106467fSJason King typedef CK_RSA_AES_KEY_WRAP_PARAMS CK_PTR CK_RSA_AES_KEY_WRAP_PARAMS_PTR;
1938*b106467fSJason King 
1939*b106467fSJason King typedef struct CK_TLS12_MASTER_KEY_DERIVE_PARAMS {
1940*b106467fSJason King     CK_SSL3_RANDOM_DATA       RandomInfo;
1941*b106467fSJason King     CK_VERSION_PTR            pVersion;
1942*b106467fSJason King     CK_MECHANISM_TYPE         prfHashMechanism;
1943*b106467fSJason King } CK_TLS12_MASTER_KEY_DERIVE_PARAMS;
1944*b106467fSJason King 
1945*b106467fSJason King typedef CK_TLS12_MASTER_KEY_DERIVE_PARAMS CK_PTR \
1946*b106467fSJason King                                 CK_TLS12_MASTER_KEY_DERIVE_PARAMS_PTR;
1947*b106467fSJason King 
1948*b106467fSJason King typedef struct CK_TLS12_KEY_MAT_PARAMS {
1949*b106467fSJason King     CK_ULONG                  ulMacSizeInBits;
1950*b106467fSJason King     CK_ULONG                  ulKeySizeInBits;
1951*b106467fSJason King     CK_ULONG                  ulIVSizeInBits;
1952*b106467fSJason King     CK_BBOOL                  bIsExport;
1953*b106467fSJason King     CK_SSL3_RANDOM_DATA       RandomInfo;
1954*b106467fSJason King     CK_SSL3_KEY_MAT_OUT_PTR   pReturnedKeyMaterial;
1955*b106467fSJason King     CK_MECHANISM_TYPE         prfHashMechanism;
1956*b106467fSJason King } CK_TLS12_KEY_MAT_PARAMS;
1957*b106467fSJason King 
1958*b106467fSJason King typedef CK_TLS12_KEY_MAT_PARAMS CK_PTR CK_TLS12_KEY_MAT_PARAMS_PTR;
1959*b106467fSJason King 
1960*b106467fSJason King typedef struct CK_TLS_KDF_PARAMS {
1961*b106467fSJason King     CK_MECHANISM_TYPE         prfMechanism;
1962*b106467fSJason King     CK_BYTE_PTR               pLabel;
1963*b106467fSJason King     CK_ULONG                  ulLabelLength;
1964*b106467fSJason King     CK_SSL3_RANDOM_DATA       RandomInfo;
1965*b106467fSJason King     CK_BYTE_PTR               pContextData;
1966*b106467fSJason King     CK_ULONG                  ulContextDataLength;
1967*b106467fSJason King } CK_TLS_KDF_PARAMS;
1968*b106467fSJason King 
1969*b106467fSJason King typedef CK_TLS_KDF_PARAMS CK_PTR CK_TLS_KDF_PARAMS_PTR;
1970*b106467fSJason King 
1971*b106467fSJason King typedef struct CK_TLS_MAC_PARAMS {
1972*b106467fSJason King     CK_MECHANISM_TYPE         prfHashMechanism;
1973*b106467fSJason King     CK_ULONG                  ulMacLength;
1974*b106467fSJason King     CK_ULONG                  ulServerOrClient;
1975*b106467fSJason King } CK_TLS_MAC_PARAMS;
1976*b106467fSJason King 
1977*b106467fSJason King typedef CK_TLS_MAC_PARAMS CK_PTR CK_TLS_MAC_PARAMS_PTR;
1978*b106467fSJason King 
1979*b106467fSJason King typedef struct CK_GOSTR3410_DERIVE_PARAMS {
1980*b106467fSJason King     CK_EC_KDF_TYPE            kdf;
1981*b106467fSJason King     CK_BYTE_PTR               pPublicData;
1982*b106467fSJason King     CK_ULONG                  ulPublicDataLen;
1983*b106467fSJason King     CK_BYTE_PTR               pUKM;
1984*b106467fSJason King     CK_ULONG                  ulUKMLen;
1985*b106467fSJason King } CK_GOSTR3410_DERIVE_PARAMS;
1986*b106467fSJason King 
1987*b106467fSJason King typedef CK_GOSTR3410_DERIVE_PARAMS CK_PTR CK_GOSTR3410_DERIVE_PARAMS_PTR;
1988*b106467fSJason King 
1989*b106467fSJason King typedef struct CK_GOSTR3410_KEY_WRAP_PARAMS {
1990*b106467fSJason King     CK_BYTE_PTR               pWrapOID;
1991*b106467fSJason King     CK_ULONG                  ulWrapOIDLen;
1992*b106467fSJason King     CK_BYTE_PTR               pUKM;
1993*b106467fSJason King     CK_ULONG                  ulUKMLen;
1994*b106467fSJason King     CK_OBJECT_HANDLE          hKey;
1995*b106467fSJason King } CK_GOSTR3410_KEY_WRAP_PARAMS;
1996*b106467fSJason King 
1997*b106467fSJason King typedef CK_GOSTR3410_KEY_WRAP_PARAMS CK_PTR CK_GOSTR3410_KEY_WRAP_PARAMS_PTR;
1998*b106467fSJason King 
1999*b106467fSJason King typedef struct CK_SEED_CBC_ENCRYPT_DATA_PARAMS {
2000*b106467fSJason King     CK_BYTE                   iv[16];
2001*b106467fSJason King     CK_BYTE_PTR               pData;
2002*b106467fSJason King     CK_ULONG                  length;
2003*b106467fSJason King } CK_SEED_CBC_ENCRYPT_DATA_PARAMS;
2004*b106467fSJason King 
2005*b106467fSJason King typedef CK_SEED_CBC_ENCRYPT_DATA_PARAMS CK_PTR \
2006*b106467fSJason King                                         CK_SEED_CBC_ENCRYPT_DATA_PARAMS_PTR;
2007*b106467fSJason King 
2008*b106467fSJason King #endif /* _PKCS11T_H_ */
20091e9884acSmcpowers 
2010