12e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/**
22e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Copyright(c) 2011 Trusted Logic.   All rights reserved.
32e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *
42e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Redistribution and use in source and binary forms, with or without
52e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * modification, are permitted provided that the following conditions
62e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * are met:
72e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *
82e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *  * Redistributions of source code must retain the above copyright
92e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    notice, this list of conditions and the following disclaimer.
102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *  * Redistributions in binary form must reproduce the above copyright
112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    notice, this list of conditions and the following disclaimer in
122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    the documentation and/or other materials provided with the
132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    distribution.
142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *  * Neither the name Trusted Logic nor the names of its
152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    contributors may be used to endorse or promote products derived
162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    from this software without specific prior written permission.
172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *
182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*
322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * This header file contains the definition of the PKCS#11 types and functions
332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * supported by the Trusted Foundations Software. This header file is
342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * derived from the RSA Security Inc. PKCS #11 Cryptographic Token Interface
352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * (Cryptoki)
362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifndef __PKCS11_H__
382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define __PKCS11_H__
392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifdef __cplusplus
412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleyextern "C" {
422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif
432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*------------------------------------------
452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley* Types and constants
462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley*------------------------------------------*/
472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#include "s_type.h"
492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CK_TRUE true
512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CK_FALSE false
522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifndef FALSE
542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define FALSE CK_FALSE
552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif
562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifndef TRUE
582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define TRUE CK_TRUE
592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif
602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define NULL_PTR NULL
622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef uint8_t      CK_BYTE, *CK_BYTE_PTR;
642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_BYTE      CK_CHAR, *CK_CHAR_PTR;
652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_BYTE      CK_UTF8CHAR, *CK_UTF8CHAR_PTR;
662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef bool         CK_BBOOL;
672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef uint32_t     CK_ULONG, *CK_ULONG_PTR;
682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef int32_t      CK_LONG;
692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG     CK_FLAGS;
702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef void*        CK_VOID_PTR, *CK_VOID_PTR_PTR;
712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CK_INVALID_HANDLE 0
732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_VERSION
752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE       major;
772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE       minor;
782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_VERSION, *CK_VERSION_PTR;
802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_INFO
822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_VERSION    cryptokiVersion;
842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_UTF8CHAR   manufacturerID[32];
852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_FLAGS      flags;
862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_UTF8CHAR   libraryDescription[32];
872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_VERSION    libraryVersion;
882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_INFO, *CK_INFO_PTR;
902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG   CK_NOTIFICATION;
922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG   CK_SLOT_ID, *CK_SLOT_ID_PTR;
932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG   CK_SESSION_HANDLE, *CK_SESSION_HANDLE_PTR;
942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_USER_TYPE;
962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKU_SO                 0
972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKU_USER               1
982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKU_CONTEXT_SPECIFIC   2
992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_STATE;
1012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKS_RO_PUBLIC_SESSION  0
1022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKS_RO_USER_FUNCTIONS  1
1032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKS_RW_PUBLIC_SESSION  2
1042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKS_RW_USER_FUNCTIONS  3
1052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKS_RW_SO_FUNCTIONS    4
1062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_SESSION_INFO
1082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SLOT_ID    slotID;
1102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_STATE      state;
1112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_FLAGS      flags;
1122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG      ulDeviceError;
1132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
1142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_SESSION_INFO, *CK_SESSION_INFO_PTR;
1152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKF_RW_SESSION          0x00000002
1172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKF_SERIAL_SESSION      0x00000004
1182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKVF_OPEN_SUB_SESSION   0x00000008
1192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_OBJECT_HANDLE, *CK_OBJECT_HANDLE_PTR;
1212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_OBJECT_CLASS, *CK_OBJECT_CLASS_PTR;
1232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKO_DATA              0x00000000
1252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKO_PUBLIC_KEY        0x00000002
1262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKO_PRIVATE_KEY       0x00000003
1272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKO_SECRET_KEY        0x00000004
1282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_KEY_TYPE;
1302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_RSA             0x00000000
1322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_DSA             0x00000001
1332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_DH              0x00000002
1342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_EC              0x00000003
1352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_GENERIC_SECRET  0x00000010
1372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_RC4             0x00000012
1392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_DES             0x00000013
1402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_DES2            0x00000014
1412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_DES3            0x00000015
1422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_AES             0x0000001F
1442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKK_VENDOR_DEFINED  0x80000000
1462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_ATTRIBUTE_TYPE;
1482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKF_ARRAY_ATTRIBUTE    0x40000000
1502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_CLASS              0x00000000
1522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_TOKEN              0x00000001
1532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_PRIVATE            0x00000002
1542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_VALUE              0x00000011
1552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_OBJECT_ID          0x00000012
1572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_KEY_TYPE           0x00000100
1592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_ID                 0x00000102
1602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_SENSITIVE          0x00000103
1612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_ENCRYPT            0x00000104
1622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_DECRYPT            0x00000105
1632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_WRAP               0x00000106
1642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_UNWRAP             0x00000107
1652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_SIGN               0x00000108
1662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_VERIFY             0x0000010A
1672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_DERIVE             0x0000010C
1682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_MODULUS            0x00000120
1692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_MODULUS_BITS       0x00000121
1702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_PUBLIC_EXPONENT    0x00000122
1712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_PRIVATE_EXPONENT   0x00000123
1722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_PRIME_1            0x00000124
1732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_PRIME_2            0x00000125
1742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_EXPONENT_1         0x00000126
1752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_EXPONENT_2         0x00000127
1762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_COEFFICIENT        0x00000128
1772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_PRIME              0x00000130
1782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_SUBPRIME           0x00000131
1792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_BASE               0x00000132
1802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_VALUE_BITS         0x00000160
1822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_VALUE_LEN          0x00000161
1832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_EXTRACTABLE        0x00000162
1852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_MODIFIABLE         0x00000170
1872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_COPYABLE           0x00000171
1882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_ALWAYS_AUTHENTICATE  0x00000202
1892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKA_VENDOR_DEFINED     0x80000000
1912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKAV_ALLOW_NON_SENSITIVE_DERIVED_KEY 0x80000001
1932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_ATTRIBUTE
1952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ATTRIBUTE_TYPE type;
1972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   void*             pValue;
1982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulValueLen;
1992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
2002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_ATTRIBUTE, *CK_ATTRIBUTE_PTR;
2012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_MECHANISM_TYPE, *CK_MECHANISM_TYPE_PTR;
2032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_RSA_PKCS_KEY_PAIR_GEN      0x00000000
2052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_RSA_PKCS                   0x00000001
2062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_RSA_X_509                  0x00000003
2072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_MD5_RSA_PKCS               0x00000005
2082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA1_RSA_PKCS              0x00000006
2092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_RSA_PKCS_OAEP              0x00000009
2102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_RSA_PKCS_PSS               0x0000000D
2112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA1_RSA_PKCS_PSS          0x0000000E
2122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DSA_KEY_PAIR_GEN           0x00000010
2132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DSA                        0x00000011
2142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DSA_SHA1                   0x00000012
2152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DH_PKCS_KEY_PAIR_GEN       0x00000020
2162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DH_PKCS_DERIVE             0x00000021
2172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA256_RSA_PKCS            0x00000040
2182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA384_RSA_PKCS            0x00000041
2192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA512_RSA_PKCS            0x00000042
2202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA256_RSA_PKCS_PSS        0x00000043
2212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA384_RSA_PKCS_PSS        0x00000044
2222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA512_RSA_PKCS_PSS        0x00000045
2232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA224_RSA_PKCS            0x00000046
2242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA224_RSA_PKCS_PSS        0x00000047
2252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_RC4_KEY_GEN                0x00000110
2262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_RC4                        0x00000111
2272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES_KEY_GEN                0x00000120
2282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES_ECB                    0x00000121
2292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES_CBC                    0x00000122
2302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES_MAC                    0x00000123
2312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES2_KEY_GEN               0x00000130
2322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES3_KEY_GEN               0x00000131
2332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES3_ECB                   0x00000132
2342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES3_CBC                   0x00000133
2352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_DES3_MAC                   0x00000134
2362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_MD5                        0x00000210
2372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_MD5_HMAC                   0x00000211
2382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA_1                      0x00000220
2392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA_1_HMAC                 0x00000221
2402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA256                     0x00000250
2412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA256_HMAC                0x00000251
2422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA224                     0x00000255
2432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA224_HMAC                0x00000256
2442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA384                     0x00000260
2452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA384_HMAC                0x00000261
2462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA512                     0x00000270
2472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_SHA512_HMAC                0x00000271
2482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_GENERIC_SECRET_KEY_GEN     0x00000350
2492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_AES_KEY_GEN                0x00001080
2502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_AES_ECB                    0x00001081
2512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_AES_CBC                    0x00001082
2522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_AES_MAC                    0x00001083
2532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_AES_CTR                    0x00001086
2542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKM_VENDOR_DEFINED             0x80000000
2552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_AES_CTR                   0x80000001
2562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_0   0xC0000000
2582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_1   0xC0000001
2592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_2   0xC0000002
2602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_3   0xC0000003
2612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_4   0xC0000004
2622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_5   0xC0000005
2632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_6   0xC0000006
2642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_7   0xC0000007
2652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_8   0xC0000008
2662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_9   0xC0000009
2672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_10  0xC000000A
2682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_11  0xC000000B
2692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_12  0xC000000C
2702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_13  0xC000000D
2712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_14  0xC000000E
2722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKMV_IMPLEMENTATION_DEFINED_15  0xC000000F
2732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_MECHANISM
2752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_MECHANISM_TYPE mechanism;
2772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   void*             pParameter;
2782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulParameterLen;  /* in bytes */
2792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
2802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_MECHANISM, *CK_MECHANISM_PTR;
2812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG          CK_RV;
2832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_OK                                0x00000000
2852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_CANCEL                            0x00000001
2862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_HOST_MEMORY                       0x00000002
2872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_SLOT_ID_INVALID                   0x00000003
2882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_GENERAL_ERROR                     0x00000005
2892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_ARGUMENTS_BAD                     0x00000007
2902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_ATTRIBUTE_SENSITIVE               0x00000011
2912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_ATTRIBUTE_TYPE_INVALID            0x00000012
2922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_ATTRIBUTE_VALUE_INVALID           0x00000013
2932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_COPY_PROHIBITED                   0x0000001A
2942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_DATA_INVALID                      0x00000020
2952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_DATA_LEN_RANGE                    0x00000021
2962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_DEVICE_ERROR                      0x00000030
2972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_DEVICE_MEMORY                     0x00000031
2982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_ENCRYPTED_DATA_INVALID            0x00000040
2992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_ENCRYPTED_DATA_LEN_RANGE          0x00000041
3002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_KEY_HANDLE_INVALID                0x00000060
3012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_KEY_SIZE_RANGE                    0x00000062
3022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_KEY_TYPE_INCONSISTENT             0x00000063
3032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_KEY_FUNCTION_NOT_PERMITTED        0x00000068
3042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_KEY_NOT_WRAPPABLE                 0x00000069
3052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_MECHANISM_INVALID                 0x00000070
3062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_MECHANISM_PARAM_INVALID           0x00000071
3072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_OBJECT_HANDLE_INVALID             0x00000082
3082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_OPERATION_ACTIVE                  0x00000090
3092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_OPERATION_NOT_INITIALIZED         0x00000091
3102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_PIN_INCORRECT                     0x000000A0
3112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_SESSION_COUNT                     0x000000B1
3122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_SESSION_HANDLE_INVALID            0x000000B3
3132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_SESSION_PARALLEL_NOT_SUPPORTED    0x000000B4
3142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_SESSION_READ_ONLY                 0x000000B5
3152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_SIGNATURE_INVALID                 0x000000C0
3162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_SIGNATURE_LEN_RANGE               0x000000C1
3172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_TEMPLATE_INCOMPLETE               0x000000D0
3182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_TEMPLATE_INCONSISTENT             0x000000D1
3192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_TOKEN_NOT_PRESENT                 0x000000E0
3202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_USER_ALREADY_LOGGED_IN            0x00000100
3212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_USER_NOT_LOGGED_IN                0x00000101
3222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_USER_TYPE_INVALID                 0x00000103
3232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_WRAPPED_KEY_LEN_RANGE             0x00000112
3242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_WRAPPING_KEY_HANDLE_INVALID       0x00000113
3252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_RANDOM_SEED_NOT_SUPPORTED         0x00000120
3262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_RANDOM_NO_RNG                     0x00000121
3272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_BUFFER_TOO_SMALL                  0x00000150
3282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_CRYPTOKI_NOT_INITIALIZED          0x00000190
3292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_CRYPTOKI_ALREADY_INITIALIZED      0x00000191
3302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKR_VENDOR_DEFINED                    0x80000000
3312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_RV (*CK_NOTIFY)(
3332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
3342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_NOTIFICATION   event,
3352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   void*       pApplication
3362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley);
3372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG CK_RSA_PKCS_MGF_TYPE, *CK_RSA_PKCS_MGF_TYPE_PTR;
3392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKG_MGF1_SHA1         0x00000001
3412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKG_MGF1_SHA256       0x00000002
3422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKG_MGF1_SHA384       0x00000003
3432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKG_MGF1_SHA512       0x00000004
3442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKG_MGF1_SHA224       0x00000005
3452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE, *CK_RSA_PKCS_OAEP_SOURCE_TYPE_PTR;
3472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CKZ_DATA_SPECIFIED    0x00000001
3492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_RSA_PKCS_OAEP_PARAMS
3502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_MECHANISM_TYPE hashAlg;
3522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_RSA_PKCS_MGF_TYPE mgf;
3532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_RSA_PKCS_OAEP_SOURCE_TYPE source;
3542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   void*    pSourceData;
3552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG ulSourceDataLen;
3562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
3572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RSA_PKCS_OAEP_PARAMS, *CK_RSA_PKCS_OAEP_PARAMS_PTR;
3582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_RSA_PKCS_PSS_PARAMS
3602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_MECHANISM_TYPE    hashAlg;
3622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_RSA_PKCS_MGF_TYPE mgf;
3632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG             sLen;
3642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
3652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RSA_PKCS_PSS_PARAMS, *CK_RSA_PKCS_PSS_PARAMS_PTR;
3662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct CK_AES_CTR_PARAMS
3682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG ulCounterBits;
3702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE cb[16];
3712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
3722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_AES_CTR_PARAMS, *CK_AES_CTR_PARAMS_PTR;
3732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*------------------------------------------
3752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley* Functions
3762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley*------------------------------------------*/
3772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Initialize(void* pInitArgs);
3782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Finalize(void* pReserved);
3802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_GetInfo(CK_INFO* pInfo);
3822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_OpenSession(
3842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SLOT_ID            slotID,
3852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_FLAGS              flags,
3862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   void*                 pApplication,
3872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_NOTIFY             Notify,
3882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE*    phSession);
3892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_CloseSession(
3912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession);
3922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Login(
3942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
3952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_USER_TYPE        userType,
3962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_UTF8CHAR*  pPin,
3972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG            ulPinLen);
3982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Logout(
4002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession);
4012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_CreateObject(
4032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_ATTRIBUTE* pTemplate,
4052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG            ulCount,
4062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE*   phObject);
4072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DestroyObject(
4092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE    hObject);
4112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_GetAttributeValue(
4132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE    hObject,
4152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ATTRIBUTE*       pTemplate,
4162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG            ulCount);
4172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_FindObjectsInit(
4192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_ATTRIBUTE* pTemplate,
4212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG            ulCount);
4222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_FindObjects(
4242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE*   phObject,
4262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG            ulMaxObjectCount,
4272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*           pulObjectCount);
4282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_FindObjectsFinal(
4302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession);
4312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_EncryptInit(
4332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM* pMechanism,
4352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE    hKey);
4362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Encrypt(
4382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pData,
4402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulDataLen,
4412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pEncryptedData,
4422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulEncryptedDataLen);
4432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_EncryptUpdate(
4452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pPart,
4472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulPartLen,
4482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pEncryptedPart,
4492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulEncryptedPartLen);
4502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_EncryptFinal(
4522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pLastEncryptedPart,
4542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulLastEncryptedPartLen);
4552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DecryptInit(
4572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM* pMechanism,
4592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE    hKey);
4602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Decrypt(
4622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pEncryptedData,
4642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulEncryptedDataLen,
4652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pData,
4662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulDataLen);
4672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DecryptUpdate(
4692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pEncryptedPart,
4712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulEncryptedPartLen,
4722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pPart,
4732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulPartLen);
4742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DecryptFinal(
4762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pLastPart,
4782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulLastPartLen);
4792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DigestInit(
4812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
4822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM* pMechanism);
4832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Digest(
4852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pData,
4872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulDataLen,
4882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pDigest,
4892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulDigestLen);
4902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DigestUpdate(
4922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pPart,
4942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulPartLen);
4952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DigestFinal(
4972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
4982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pDigest,
4992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulDigestLen);
5002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_SignInit(
5022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
5032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM* pMechanism,
5042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE    hKey);
5052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Sign(
5072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE  hSession,
5082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*     pData,
5092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG           ulDataLen,
5102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*           pSignature,
5112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*          pulSignatureLen);
5122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_SignUpdate(
5142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pPart,
5162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulPartLen);
5172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_SignFinal(
5192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pSignature,
5212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG*         pulSignatureLen);
5222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_VerifyInit(
5242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
5252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM* pMechanism,
5262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE    hKey);
5272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_Verify(
5292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pData,
5312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulDataLen,
5322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pSignature,
5332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulSignatureLen);
5342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_VerifyUpdate(
5362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pPart,
5382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulPartLen);
5392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_VerifyFinal(
5412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*          pSignature,
5432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulSignatureLen);
5442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_GenerateKey(
5462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE   hSession,
5472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM* pMechanism,
5482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_ATTRIBUTE* pTemplate,
5492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG            ulCount,
5502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE*   phKey);
5512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_GenerateKeyPair(
5532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE    hSession,
5542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM*  pMechanism,
5552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_ATTRIBUTE*  pPublicKeyTemplate,
5562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG             ulPublicKeyAttributeCount,
5572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_ATTRIBUTE*  pPrivateKeyTemplate,
5582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG             ulPrivateKeyAttributeCount,
5592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE*    phPublicKey,
5602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE*    phPrivateKey);
5612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_DeriveKey(
5632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE    hSession,
5642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_MECHANISM*  pMechanism,
5652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE     hBaseKey,
5662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_ATTRIBUTE*  pTemplate,
5672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG             ulAttributeCount,
5682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE*    phKey);
5692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_SeedRandom(
5712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_BYTE*    pSeed,
5732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulSeedLen);
5742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_GenerateRandom(
5762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_BYTE*          pRandomData,
5782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG          ulRandomLen);
5792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_CloseObjectHandle(
5812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE hSession,
5822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE    hObject);
5832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyCK_RV PKCS11_EXPORT C_CopyObject(
5852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_SESSION_HANDLE    hSession,
5862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE     hObject,
5872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   const CK_ATTRIBUTE*  pTemplate,
5882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_ULONG             ulAttributeCount,
5892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   CK_OBJECT_HANDLE*    phNewObject);
5902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifdef __cplusplus
5922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}
5932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif
5942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
5952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif /* __PKCS11_H__ */
596