1 /* 2 * COPYRIGHT (c) International Business Machines Corp. 2001-2017 3 * 4 * This program is provided under the terms of the Common Public License, 5 * version 1.0 (CPL-1.0). Any use, reproduction or distribution for this 6 * software constitutes recipient's acceptance of CPL-1.0 terms which can be 7 * found in the file LICENSE file or at 8 * https://opensource.org/licenses/cpl1.0.php 9 */ 10 11 // 12 // File: PKCS11Types.h 13 // 14 // 15 //---------------------------------------------------------------------------- 16 17 18 #ifndef _PKCS1132_H_ 19 #define _PKCS1132_H_ 20 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 27 /* These are the new definitions need for the structures in 28 * leeds_stdll largs.h (and elsewhere) 29 */ 30 31 typedef unsigned int CK_ULONG_32; 32 typedef int CK_LONG_32; 33 typedef unsigned int *CK_ULONG_PTR_32; 34 35 typedef CK_ULONG_32 CK_MECHANISM_TYPE_32; 36 typedef CK_ULONG_32 CK_SESSION_HANDLE_32; 37 typedef CK_ULONG_32 CK_SLOT_ID_32; 38 typedef CK_ULONG_32 CK_FLAGS_32; 39 typedef CK_ULONG_32 CK_USER_TYPE_32; 40 typedef CK_ULONG_32 CK_OBJECT_HANDLE_32; 41 typedef CK_OBJECT_HANDLE_32 *CK_OBJECT_HANDLE__PTR_32; 42 typedef CK_ULONG_32 CK_ATTRIBUTE_TYPE_32; 43 typedef CK_ULONG_32 CK_STATE_32; 44 typedef CK_ULONG_32 CK_OBJECT_CLASS_32; 45 46 typedef CK_BYTE CK_PTR CK_BYTE_PTR_32; 47 typedef CK_CHAR CK_PTR CK_CHAR_PTR_32; 48 49 typedef CK_ULONG_32 CK_MAC_GENERAL_PARAMS_32; 50 51 typedef CK_MAC_GENERAL_PARAMS_32 CK_PTR CK_MAC_GENERAL_PARAMS_PTR_32; 52 53 // SSL 3 Mechanism pointers for the Leeds card. 54 typedef struct CK_SSL3_RANDOM_DATA_32 { 55 CK_BYTE_PTR_32 pClientRandom; 56 CK_ULONG_32 ulClientRandomLen; 57 CK_BYTE_PTR_32 pServerRandom; 58 CK_ULONG_32 ulServerRandomLen; 59 } CK_SSL3_RANDOM_DATA_32; 60 61 62 typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS_32 { 63 CK_SSL3_RANDOM_DATA_32 RandomInfo; 64 CK_VERSION_PTR pVersion; 65 } CK_SSL3_MASTER_KEY_DERIVE_PARAMS_32; 66 67 typedef struct CK_SSL3_MASTER_KEY_DERIVE_PARAMS_32 CK_PTR 68 CK_SSL3_MASTER_KEY_DERIVE_PARAMS_PTR_32; 69 70 71 typedef struct CK_SSL3_KEY_MAT_OUT_32 { 72 CK_OBJECT_HANDLE_32 hClientMacSecret; 73 CK_OBJECT_HANDLE_32 hServerMacSecret; 74 CK_OBJECT_HANDLE_32 hClientKey; 75 CK_OBJECT_HANDLE_32 hServerKey; 76 CK_BYTE_PTR_32 pIVClient; 77 CK_BYTE_PTR_32 pIVServer; 78 } CK_SSL3_KEY_MAT_OUT_32; 79 80 typedef CK_SSL3_KEY_MAT_OUT_32 CK_PTR CK_SSL3_KEY_MAT_OUT_PTR_32; 81 82 83 typedef struct CK_SSL3_KEY_MAT_PARAMS_32 { 84 CK_ULONG_32 ulMacSizeInBits; 85 CK_ULONG_32 ulKeySizeInBits; 86 CK_ULONG_32 ulIVSizeInBits; 87 CK_BBOOL bIsExport; 88 CK_SSL3_RANDOM_DATA_32 RandomInfo; 89 CK_SSL3_KEY_MAT_OUT_PTR_32 pReturnedKeyMaterial; 90 } CK_SSL3_KEY_MAT_PARAMS_32; 91 92 typedef CK_SSL3_KEY_MAT_PARAMS_32 CK_PTR CK_SSL3_KEY_MAT_PARAMS_PTR_32; 93 94 95 typedef struct CK_KEY_DERIVATION_STRING_DATA_32 { 96 CK_BYTE_PTR_32 pData; 97 CK_ULONG_32 ulLen; 98 } CK_KEY_DERIVATION_STRING_DATA_32; 99 100 typedef CK_KEY_DERIVATION_STRING_DATA_32 CK_PTR 101 CK_KEY_DERIVATION_STRING_DATA_PTR_32; 102 103 104 typedef struct CK_TOKEN_INFO_32 { 105 CK_CHAR label[32]; /* blank padded */ 106 CK_CHAR manufacturerID[32]; /* blank padded */ 107 CK_CHAR model[16]; /* blank padded */ 108 CK_CHAR serialNumber[16]; /* blank padded */ 109 CK_FLAGS_32 flags; /* see below */ 110 // SAB FIXME needs to be 32 bit 111 112 /* ulMaxSessionCount, ulSessionCount, ulMaxRwSessionCount, 113 * ulRwSessionCount, ulMaxPinLen, and ulMinPinLen have all been 114 * changed from CK_USHORT to CK_ULONG for v2.0 */ 115 CK_ULONG_32 ulMaxSessionCount; /* max open sessions */ 116 CK_ULONG_32 ulSessionCount; /* sess. now open */ 117 CK_ULONG_32 ulMaxRwSessionCount; /* max R/W sessions */ 118 CK_ULONG_32 ulRwSessionCount; /* R/W sess. now open */ 119 CK_ULONG_32 ulMaxPinLen; /* in bytes */ 120 CK_ULONG_32 ulMinPinLen; /* in bytes */ 121 CK_ULONG_32 ulTotalPublicMemory; /* in bytes */ 122 CK_ULONG_32 ulFreePublicMemory; /* in bytes */ 123 CK_ULONG_32 ulTotalPrivateMemory; /* in bytes */ 124 CK_ULONG_32 ulFreePrivateMemory; /* in bytes */ 125 126 /* hardwareVersion, firmwareVersion, and time are new for 127 * v2.0 */ 128 CK_VERSION hardwareVersion; /* version of hardware */ 129 CK_VERSION firmwareVersion; /* version of firmware */ 130 CK_CHAR utcTime[16]; /* time */ 131 } CK_TOKEN_INFO_32; 132 133 134 typedef struct CK_SESSION_INFO_32 { 135 CK_SLOT_ID_32 slotID; 136 CK_STATE_32 state; 137 CK_FLAGS_32 flags; /* see below */ 138 139 /* ulDeviceError was changed from CK_USHORT to CK_ULONG for 140 * v2.0 */ 141 CK_ULONG_32 ulDeviceError; /* device-dependent error code */ 142 } CK_SESSION_INFO_32; 143 144 145 typedef struct CK_MECHANISM_INFO_32 { 146 CK_ULONG_32 ulMinKeySize; 147 CK_ULONG_32 ulMaxKeySize; 148 CK_FLAGS_32 flags; 149 } CK_MECHANISM_INFO_32; 150 151 /* CK_MECHANISM_32 is a structure that specifies a particular 152 * mechanism */ 153 typedef struct CK_MECHANISM_32 { 154 CK_MECHANISM_TYPE_32 mechanism; 155 CK_VOID_PTR pParameter; 156 157 /* ulParameterLen was changed from CK_USHORT to CK_ULONG for 158 * v2.0 */ 159 CK_ULONG_32 ulParameterLen; /* in bytes */ 160 } CK_MECHANISM_32; 161 162 /* CK_ATTRIBUTE is a structure that includes the type, length 163 * and value of an attribute */ 164 typedef struct CK_ATTRIBUTE_32 { 165 CK_ATTRIBUTE_TYPE_32 type; 166 CK_ULONG_32 pValue; // SAB XXX XXX Was CK_VOID_PTR which is 64Bit 167 168 /* ulValueLen went from CK_USHORT to CK_ULONG for v2.0 */ 169 CK_ULONG_32 ulValueLen; /* in bytes */ 170 } CK_ATTRIBUTE_32; 171 172 173 174 #pragma pack() 175 176 177 #ifdef __cplusplus 178 } 179 #endif 180 181 #endif // _PKCS1132_HS_H_ 182