python-pkcs11 0.10.1__cp315-cp315-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pkcs11/__init__.py +50 -0
- pkcs11/_pkcs11.cp315-win_amd64.pyd +0 -0
- pkcs11/_pkcs11.pxd +964 -0
- pkcs11/_pkcs11.pyi +35 -0
- pkcs11/_pkcs11.pyx +2327 -0
- pkcs11/attributes.py +272 -0
- pkcs11/constants.py +559 -0
- pkcs11/defaults.py +121 -0
- pkcs11/exceptions.py +410 -0
- pkcs11/mechanisms.py +862 -0
- pkcs11/py.typed +0 -0
- pkcs11/types.py +1457 -0
- pkcs11/util/__init__.py +17 -0
- pkcs11/util/dh.py +79 -0
- pkcs11/util/dsa.py +108 -0
- pkcs11/util/ec.py +143 -0
- pkcs11/util/rsa.py +95 -0
- pkcs11/util/x509.py +136 -0
- python_pkcs11-0.10.1.dist-info/METADATA +399 -0
- python_pkcs11-0.10.1.dist-info/RECORD +23 -0
- python_pkcs11-0.10.1.dist-info/WHEEL +5 -0
- python_pkcs11-0.10.1.dist-info/licenses/LICENSE +21 -0
- python_pkcs11-0.10.1.dist-info/top_level.txt +1 -0
pkcs11/_pkcs11.pxd
ADDED
|
@@ -0,0 +1,964 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Definitions imported from PKCS11 C headers.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from cython.view cimport array
|
|
6
|
+
|
|
7
|
+
from pkcs11.exceptions import *
|
|
8
|
+
|
|
9
|
+
cdef extern from '../extern/cryptoki.h':
|
|
10
|
+
|
|
11
|
+
ctypedef unsigned char CK_BYTE
|
|
12
|
+
ctypedef CK_BYTE CK_BBOOL
|
|
13
|
+
ctypedef CK_BYTE CK_UTF8CHAR
|
|
14
|
+
ctypedef unsigned char CK_CHAR
|
|
15
|
+
ctypedef unsigned long int CK_ULONG
|
|
16
|
+
ctypedef CK_ULONG CK_ATTRIBUTE_TYPE
|
|
17
|
+
ctypedef CK_ULONG CK_EC_KDF_TYPE
|
|
18
|
+
ctypedef CK_ULONG CK_FLAGS
|
|
19
|
+
ctypedef CK_ULONG CK_MECHANISM_TYPE
|
|
20
|
+
ctypedef CK_ULONG CK_OBJECT_HANDLE
|
|
21
|
+
ctypedef CK_ULONG CK_RSA_PKCS_MGF_TYPE
|
|
22
|
+
ctypedef CK_ULONG CK_RSA_PKCS_OAEP_SOURCE_TYPE
|
|
23
|
+
ctypedef CK_ULONG CK_SESSION_HANDLE
|
|
24
|
+
ctypedef CK_ULONG CK_SLOT_ID
|
|
25
|
+
ctypedef CK_ULONG CK_STATE
|
|
26
|
+
|
|
27
|
+
ctypedef enum CK_RV:
|
|
28
|
+
CKR_OK,
|
|
29
|
+
CKR_CANCEL,
|
|
30
|
+
CKR_HOST_MEMORY,
|
|
31
|
+
CKR_SLOT_ID_INVALID,
|
|
32
|
+
|
|
33
|
+
CKR_GENERAL_ERROR,
|
|
34
|
+
CKR_FUNCTION_FAILED,
|
|
35
|
+
|
|
36
|
+
CKR_ARGUMENTS_BAD,
|
|
37
|
+
CKR_NO_EVENT,
|
|
38
|
+
CKR_NEED_TO_CREATE_THREADS,
|
|
39
|
+
CKR_CANT_LOCK,
|
|
40
|
+
|
|
41
|
+
CKR_ATTRIBUTE_READ_ONLY,
|
|
42
|
+
CKR_ATTRIBUTE_SENSITIVE,
|
|
43
|
+
CKR_ATTRIBUTE_TYPE_INVALID,
|
|
44
|
+
CKR_ATTRIBUTE_VALUE_INVALID,
|
|
45
|
+
CKR_DATA_INVALID,
|
|
46
|
+
CKR_DATA_LEN_RANGE,
|
|
47
|
+
CKR_DEVICE_ERROR,
|
|
48
|
+
CKR_DEVICE_MEMORY,
|
|
49
|
+
CKR_DEVICE_REMOVED,
|
|
50
|
+
CKR_ENCRYPTED_DATA_INVALID,
|
|
51
|
+
CKR_ENCRYPTED_DATA_LEN_RANGE,
|
|
52
|
+
CKR_FUNCTION_CANCELED,
|
|
53
|
+
CKR_FUNCTION_NOT_PARALLEL,
|
|
54
|
+
|
|
55
|
+
CKR_FUNCTION_NOT_SUPPORTED,
|
|
56
|
+
|
|
57
|
+
CKR_KEY_HANDLE_INVALID,
|
|
58
|
+
|
|
59
|
+
CKR_KEY_SIZE_RANGE,
|
|
60
|
+
CKR_KEY_TYPE_INCONSISTENT,
|
|
61
|
+
|
|
62
|
+
CKR_KEY_NOT_NEEDED,
|
|
63
|
+
CKR_KEY_CHANGED,
|
|
64
|
+
CKR_KEY_NEEDED,
|
|
65
|
+
CKR_KEY_INDIGESTIBLE,
|
|
66
|
+
CKR_KEY_FUNCTION_NOT_PERMITTED,
|
|
67
|
+
CKR_KEY_NOT_WRAPPABLE,
|
|
68
|
+
CKR_KEY_UNEXTRACTABLE,
|
|
69
|
+
|
|
70
|
+
CKR_MECHANISM_INVALID,
|
|
71
|
+
CKR_MECHANISM_PARAM_INVALID,
|
|
72
|
+
|
|
73
|
+
CKR_OBJECT_HANDLE_INVALID,
|
|
74
|
+
CKR_OPERATION_ACTIVE,
|
|
75
|
+
CKR_OPERATION_NOT_INITIALIZED,
|
|
76
|
+
CKR_PIN_INCORRECT,
|
|
77
|
+
CKR_PIN_INVALID,
|
|
78
|
+
CKR_PIN_LEN_RANGE,
|
|
79
|
+
|
|
80
|
+
CKR_PIN_EXPIRED,
|
|
81
|
+
CKR_PIN_LOCKED,
|
|
82
|
+
|
|
83
|
+
CKR_SESSION_CLOSED,
|
|
84
|
+
CKR_SESSION_COUNT,
|
|
85
|
+
CKR_SESSION_HANDLE_INVALID,
|
|
86
|
+
CKR_SESSION_PARALLEL_NOT_SUPPORTED,
|
|
87
|
+
CKR_SESSION_READ_ONLY,
|
|
88
|
+
CKR_SESSION_EXISTS,
|
|
89
|
+
|
|
90
|
+
CKR_SESSION_READ_ONLY_EXISTS,
|
|
91
|
+
CKR_SESSION_READ_WRITE_SO_EXISTS,
|
|
92
|
+
|
|
93
|
+
CKR_SIGNATURE_INVALID,
|
|
94
|
+
CKR_SIGNATURE_LEN_RANGE,
|
|
95
|
+
CKR_TEMPLATE_INCOMPLETE,
|
|
96
|
+
CKR_TEMPLATE_INCONSISTENT,
|
|
97
|
+
CKR_TOKEN_NOT_PRESENT,
|
|
98
|
+
CKR_TOKEN_NOT_RECOGNIZED,
|
|
99
|
+
CKR_TOKEN_WRITE_PROTECTED,
|
|
100
|
+
CKR_UNWRAPPING_KEY_HANDLE_INVALID,
|
|
101
|
+
CKR_UNWRAPPING_KEY_SIZE_RANGE,
|
|
102
|
+
CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT,
|
|
103
|
+
CKR_USER_ALREADY_LOGGED_IN,
|
|
104
|
+
CKR_USER_NOT_LOGGED_IN,
|
|
105
|
+
CKR_USER_PIN_NOT_INITIALIZED,
|
|
106
|
+
CKR_USER_TYPE_INVALID,
|
|
107
|
+
|
|
108
|
+
CKR_USER_ANOTHER_ALREADY_LOGGED_IN,
|
|
109
|
+
CKR_USER_TOO_MANY_TYPES,
|
|
110
|
+
|
|
111
|
+
CKR_WRAPPED_KEY_INVALID,
|
|
112
|
+
CKR_WRAPPED_KEY_LEN_RANGE,
|
|
113
|
+
CKR_WRAPPING_KEY_HANDLE_INVALID,
|
|
114
|
+
CKR_WRAPPING_KEY_SIZE_RANGE,
|
|
115
|
+
CKR_WRAPPING_KEY_TYPE_INCONSISTENT,
|
|
116
|
+
CKR_RANDOM_SEED_NOT_SUPPORTED,
|
|
117
|
+
|
|
118
|
+
CKR_RANDOM_NO_RNG,
|
|
119
|
+
|
|
120
|
+
CKR_DOMAIN_PARAMS_INVALID,
|
|
121
|
+
|
|
122
|
+
CKR_BUFFER_TOO_SMALL,
|
|
123
|
+
CKR_SAVED_STATE_INVALID,
|
|
124
|
+
CKR_INFORMATION_SENSITIVE,
|
|
125
|
+
CKR_STATE_UNSAVEABLE,
|
|
126
|
+
|
|
127
|
+
CKR_CRYPTOKI_NOT_INITIALIZED,
|
|
128
|
+
CKR_CRYPTOKI_ALREADY_INITIALIZED,
|
|
129
|
+
CKR_MUTEX_BAD,
|
|
130
|
+
CKR_MUTEX_NOT_LOCKED,
|
|
131
|
+
|
|
132
|
+
CKR_NEW_PIN_MODE,
|
|
133
|
+
CKR_NEXT_OTP,
|
|
134
|
+
CKR_EXCEEDED_MAX_ITERATIONS,
|
|
135
|
+
CKR_FIPS_SELF_TEST_FAILED,
|
|
136
|
+
CKR_LIBRARY_LOAD_FAILED,
|
|
137
|
+
CKR_PIN_TOO_WEAK,
|
|
138
|
+
CKR_PUBLIC_KEY_INVALID,
|
|
139
|
+
|
|
140
|
+
CKR_FUNCTION_REJECTED,
|
|
141
|
+
|
|
142
|
+
CKR_OPERATION_CANCEL_FAILED,
|
|
143
|
+
|
|
144
|
+
CKR_VENDOR_DEFINED,
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
ctypedef enum CK_USER_TYPE:
|
|
148
|
+
CKU_SO,
|
|
149
|
+
CKU_USER,
|
|
150
|
+
CKU_CONTEXT_SPECIFIC,
|
|
151
|
+
CKU_USER_NOBODY,
|
|
152
|
+
|
|
153
|
+
cdef enum:
|
|
154
|
+
CK_TRUE,
|
|
155
|
+
CK_FALSE,
|
|
156
|
+
|
|
157
|
+
cdef enum:
|
|
158
|
+
CK_UNAVAILABLE_INFORMATION,
|
|
159
|
+
CK_EFFECTIVELY_INFINITE,
|
|
160
|
+
|
|
161
|
+
cdef enum: # CK_FLAGS
|
|
162
|
+
CKF_DONT_BLOCK,
|
|
163
|
+
CKF_RW_SESSION,
|
|
164
|
+
CKF_SERIAL_SESSION,
|
|
165
|
+
|
|
166
|
+
cdef enum: # CKZ
|
|
167
|
+
CKZ_DATA_SPECIFIED,
|
|
168
|
+
|
|
169
|
+
cdef enum: # CK_STATE
|
|
170
|
+
CKS_RO_PUBLIC_SESSION,
|
|
171
|
+
CKS_RO_USER_FUNCTIONS,
|
|
172
|
+
CKS_RW_PUBLIC_SESSION,
|
|
173
|
+
CKS_RW_USER_FUNCTIONS,
|
|
174
|
+
CKS_RW_SO_FUNCTIONS
|
|
175
|
+
|
|
176
|
+
ctypedef struct CK_VERSION:
|
|
177
|
+
CK_BYTE major
|
|
178
|
+
CK_BYTE minor
|
|
179
|
+
|
|
180
|
+
ctypedef struct CK_INFO:
|
|
181
|
+
CK_VERSION cryptokiVersion;
|
|
182
|
+
CK_UTF8CHAR manufacturerID[32]
|
|
183
|
+
CK_FLAGS flags
|
|
184
|
+
|
|
185
|
+
CK_UTF8CHAR libraryDescription[32]
|
|
186
|
+
CK_VERSION libraryVersion;
|
|
187
|
+
|
|
188
|
+
ctypedef struct CK_SLOT_INFO:
|
|
189
|
+
CK_UTF8CHAR slotDescription[64]
|
|
190
|
+
CK_UTF8CHAR manufacturerID[32]
|
|
191
|
+
CK_FLAGS flags
|
|
192
|
+
|
|
193
|
+
CK_VERSION hardwareVersion
|
|
194
|
+
CK_VERSION firmwareVersion
|
|
195
|
+
|
|
196
|
+
ctypedef struct CK_MECHANISM_INFO:
|
|
197
|
+
CK_ULONG ulMinKeySize
|
|
198
|
+
CK_ULONG ulMaxKeySize
|
|
199
|
+
CK_FLAGS flags
|
|
200
|
+
|
|
201
|
+
ctypedef struct CK_TOKEN_INFO:
|
|
202
|
+
CK_UTF8CHAR label[32]
|
|
203
|
+
CK_UTF8CHAR manufacturerID[32]
|
|
204
|
+
CK_UTF8CHAR model[16]
|
|
205
|
+
CK_CHAR serialNumber[16]
|
|
206
|
+
CK_FLAGS flags
|
|
207
|
+
|
|
208
|
+
CK_ULONG ulMaxSessionCount
|
|
209
|
+
CK_ULONG ulSessionCount
|
|
210
|
+
CK_ULONG ulMaxRwSessionCount
|
|
211
|
+
CK_ULONG ulRwSessionCount
|
|
212
|
+
CK_ULONG ulMaxPinLen
|
|
213
|
+
CK_ULONG ulMinPinLen
|
|
214
|
+
CK_ULONG ulTotalPublicMemory
|
|
215
|
+
CK_ULONG ulFreePublicMemory
|
|
216
|
+
CK_ULONG ulTotalPrivateMemory
|
|
217
|
+
CK_ULONG ulFreePrivateMemory
|
|
218
|
+
CK_VERSION hardwareVersion
|
|
219
|
+
CK_VERSION firmwareVersion
|
|
220
|
+
CK_CHAR utcTime[16]
|
|
221
|
+
|
|
222
|
+
ctypedef struct CK_SESSION_INFO:
|
|
223
|
+
CK_SLOT_ID slotID
|
|
224
|
+
CK_STATE state
|
|
225
|
+
CK_FLAGS flags
|
|
226
|
+
CK_ULONG ulDeviceError
|
|
227
|
+
|
|
228
|
+
ctypedef struct CK_MECHANISM:
|
|
229
|
+
CK_MECHANISM_TYPE mechanism
|
|
230
|
+
void *pParameter
|
|
231
|
+
CK_ULONG ulParameterLen
|
|
232
|
+
|
|
233
|
+
ctypedef struct CK_ATTRIBUTE:
|
|
234
|
+
CK_ATTRIBUTE_TYPE type
|
|
235
|
+
void *pValue
|
|
236
|
+
CK_ULONG ulValueLen
|
|
237
|
+
|
|
238
|
+
ctypedef struct CK_RSA_PKCS_OAEP_PARAMS:
|
|
239
|
+
CK_MECHANISM_TYPE hashAlg
|
|
240
|
+
CK_RSA_PKCS_MGF_TYPE mgf
|
|
241
|
+
CK_RSA_PKCS_OAEP_SOURCE_TYPE source
|
|
242
|
+
void *pSourceData
|
|
243
|
+
CK_ULONG ulSourceDataLen
|
|
244
|
+
|
|
245
|
+
ctypedef struct CK_RSA_PKCS_PSS_PARAMS:
|
|
246
|
+
CK_MECHANISM_TYPE hashAlg
|
|
247
|
+
CK_RSA_PKCS_MGF_TYPE mgf
|
|
248
|
+
CK_ULONG sLen
|
|
249
|
+
|
|
250
|
+
ctypedef struct CK_ECDH1_DERIVE_PARAMS:
|
|
251
|
+
CK_EC_KDF_TYPE kdf
|
|
252
|
+
CK_ULONG ulSharedDataLen
|
|
253
|
+
CK_BYTE *pSharedData
|
|
254
|
+
CK_ULONG ulPublicDataLen
|
|
255
|
+
CK_BYTE *pPublicData
|
|
256
|
+
|
|
257
|
+
ctypedef struct CK_AES_CTR_PARAMS:
|
|
258
|
+
CK_ULONG ulCounterBits
|
|
259
|
+
CK_BYTE[16] cb
|
|
260
|
+
|
|
261
|
+
ctypedef struct CK_GCM_PARAMS:
|
|
262
|
+
CK_BYTE *pIv
|
|
263
|
+
CK_ULONG ulIvLen
|
|
264
|
+
CK_ULONG ulIvBits
|
|
265
|
+
CK_BYTE *pAAD
|
|
266
|
+
CK_ULONG ulAADLen
|
|
267
|
+
CK_ULONG ulTagBits
|
|
268
|
+
|
|
269
|
+
ctypedef struct CK_KEY_DERIVATION_STRING_DATA:
|
|
270
|
+
CK_BYTE *pData
|
|
271
|
+
CK_ULONG ulLen
|
|
272
|
+
|
|
273
|
+
ctypedef struct CK_AES_CBC_ENCRYPT_DATA_PARAMS:
|
|
274
|
+
CK_BYTE iv[16]
|
|
275
|
+
CK_BYTE *pData
|
|
276
|
+
CK_ULONG length
|
|
277
|
+
|
|
278
|
+
ctypedef struct CK_EDDSA_PARAMS:
|
|
279
|
+
CK_BBOOL phFlag
|
|
280
|
+
CK_ULONG ulContextDataLen
|
|
281
|
+
CK_BYTE *pContextData
|
|
282
|
+
|
|
283
|
+
ctypedef struct CK_INTERFACE:
|
|
284
|
+
CK_UTF8CHAR *pInterfaceName
|
|
285
|
+
void *pFunctionList
|
|
286
|
+
CK_FLAGS flags
|
|
287
|
+
|
|
288
|
+
cdef struct CK_FUNCTION_LIST:
|
|
289
|
+
CK_VERSION version
|
|
290
|
+
## pointers to library functions are stored here
|
|
291
|
+
## caution: order matters!
|
|
292
|
+
|
|
293
|
+
## general purpose
|
|
294
|
+
CK_RV C_Initialize(void *) nogil
|
|
295
|
+
|
|
296
|
+
CK_RV C_Finalize(void *) nogil
|
|
297
|
+
|
|
298
|
+
CK_RV C_GetInfo(CK_INFO *info) nogil
|
|
299
|
+
|
|
300
|
+
CK_RV C_GetFunctionList(CK_FUNCTION_LIST **) nogil
|
|
301
|
+
|
|
302
|
+
## slot and token management
|
|
303
|
+
CK_RV C_GetSlotList(CK_BBOOL tokenPresent,
|
|
304
|
+
CK_SLOT_ID *slotList,
|
|
305
|
+
CK_ULONG *count) nogil
|
|
306
|
+
|
|
307
|
+
CK_RV C_GetSlotInfo(CK_SLOT_ID slotID,
|
|
308
|
+
CK_SLOT_INFO *info) nogil
|
|
309
|
+
|
|
310
|
+
CK_RV C_GetTokenInfo(CK_SLOT_ID slotID,
|
|
311
|
+
CK_TOKEN_INFO *info) nogil
|
|
312
|
+
|
|
313
|
+
CK_RV C_GetMechanismList(CK_SLOT_ID slotID,
|
|
314
|
+
CK_MECHANISM_TYPE *mechanismList,
|
|
315
|
+
CK_ULONG *count) nogil
|
|
316
|
+
|
|
317
|
+
CK_RV C_GetMechanismInfo(CK_SLOT_ID slotID,
|
|
318
|
+
CK_MECHANISM_TYPE mechanism,
|
|
319
|
+
CK_MECHANISM_INFO *info) nogil
|
|
320
|
+
|
|
321
|
+
CK_RV C_InitToken(CK_SLOT_ID slotID,
|
|
322
|
+
CK_UTF8CHAR *pPin,
|
|
323
|
+
CK_ULONG ulPinLen,
|
|
324
|
+
CK_UTF8CHAR *pLabel) nogil
|
|
325
|
+
|
|
326
|
+
CK_RV C_InitPIN(CK_SESSION_HANDLE hSession,
|
|
327
|
+
CK_UTF8CHAR *pPin,
|
|
328
|
+
CK_ULONG ulPinLen) nogil
|
|
329
|
+
|
|
330
|
+
CK_RV C_SetPIN(CK_SESSION_HANDLE hSession,
|
|
331
|
+
CK_UTF8CHAR *pOldPin,
|
|
332
|
+
CK_ULONG ulOldLen,
|
|
333
|
+
CK_UTF8CHAR *pNewPin,
|
|
334
|
+
CK_ULONG ulNewLen) nogil
|
|
335
|
+
|
|
336
|
+
## session management
|
|
337
|
+
CK_RV C_OpenSession(CK_SLOT_ID slotID,
|
|
338
|
+
CK_FLAGS flags,
|
|
339
|
+
void *application,
|
|
340
|
+
void *notify,
|
|
341
|
+
CK_SESSION_HANDLE *handle) nogil
|
|
342
|
+
|
|
343
|
+
CK_RV C_CloseSession(CK_SESSION_HANDLE session) nogil
|
|
344
|
+
|
|
345
|
+
CK_RV C_CloseAllSessions(CK_SLOT_ID slotID) nogil
|
|
346
|
+
|
|
347
|
+
CK_RV C_GetSessionInfo(CK_SESSION_HANDLE hSession,
|
|
348
|
+
CK_SESSION_INFO *pInfo) nogil
|
|
349
|
+
|
|
350
|
+
CK_RV C_GetOperationState(CK_SESSION_HANDLE hSession,
|
|
351
|
+
CK_BYTE *pOperationState,
|
|
352
|
+
CK_ULONG *pulOperationStateLen) nogil
|
|
353
|
+
|
|
354
|
+
CK_RV C_SetOperationState(CK_SESSION_HANDLE hSession,
|
|
355
|
+
CK_BYTE *pOperationState,
|
|
356
|
+
CK_ULONG ulOperationStateLen,
|
|
357
|
+
CK_OBJECT_HANDLE hEncryptionKey,
|
|
358
|
+
CK_OBJECT_HANDLE hAuthenticationKey) nogil
|
|
359
|
+
|
|
360
|
+
CK_RV C_Login(CK_SESSION_HANDLE session,
|
|
361
|
+
CK_USER_TYPE userType,
|
|
362
|
+
CK_UTF8CHAR *pin,
|
|
363
|
+
CK_ULONG pinLen) nogil
|
|
364
|
+
|
|
365
|
+
CK_RV C_Logout(CK_SESSION_HANDLE session) nogil
|
|
366
|
+
|
|
367
|
+
## object management
|
|
368
|
+
CK_RV C_CreateObject(CK_SESSION_HANDLE session,
|
|
369
|
+
CK_ATTRIBUTE *template,
|
|
370
|
+
CK_ULONG count,
|
|
371
|
+
CK_OBJECT_HANDLE *key) nogil
|
|
372
|
+
|
|
373
|
+
CK_RV C_CopyObject(CK_SESSION_HANDLE session,
|
|
374
|
+
CK_OBJECT_HANDLE key,
|
|
375
|
+
CK_ATTRIBUTE *template,
|
|
376
|
+
CK_ULONG count,
|
|
377
|
+
CK_OBJECT_HANDLE *new_key) nogil
|
|
378
|
+
|
|
379
|
+
CK_RV C_DestroyObject(CK_SESSION_HANDLE session,
|
|
380
|
+
CK_OBJECT_HANDLE key) nogil
|
|
381
|
+
|
|
382
|
+
CK_RV C_GetObjectSize(CK_SESSION_HANDLE hSession,
|
|
383
|
+
CK_OBJECT_HANDLE hObject,
|
|
384
|
+
CK_ULONG *pulSize) nogil
|
|
385
|
+
|
|
386
|
+
CK_RV C_GetAttributeValue(CK_SESSION_HANDLE session,
|
|
387
|
+
CK_OBJECT_HANDLE key,
|
|
388
|
+
CK_ATTRIBUTE *template,
|
|
389
|
+
CK_ULONG count) nogil
|
|
390
|
+
|
|
391
|
+
CK_RV C_SetAttributeValue(CK_SESSION_HANDLE session,
|
|
392
|
+
CK_OBJECT_HANDLE key,
|
|
393
|
+
CK_ATTRIBUTE *template,
|
|
394
|
+
CK_ULONG count) nogil
|
|
395
|
+
|
|
396
|
+
CK_RV C_FindObjectsInit(CK_SESSION_HANDLE session,
|
|
397
|
+
CK_ATTRIBUTE *template,
|
|
398
|
+
CK_ULONG count) nogil
|
|
399
|
+
|
|
400
|
+
CK_RV C_FindObjects(CK_SESSION_HANDLE session,
|
|
401
|
+
CK_OBJECT_HANDLE *objects,
|
|
402
|
+
CK_ULONG objectsMax,
|
|
403
|
+
CK_ULONG *objectsLength) nogil
|
|
404
|
+
|
|
405
|
+
CK_RV C_FindObjectsFinal(CK_SESSION_HANDLE session) nogil
|
|
406
|
+
|
|
407
|
+
## encryption and decryption
|
|
408
|
+
CK_RV C_EncryptInit(CK_SESSION_HANDLE session,
|
|
409
|
+
CK_MECHANISM *mechanism,
|
|
410
|
+
CK_OBJECT_HANDLE key) nogil
|
|
411
|
+
|
|
412
|
+
CK_RV C_Encrypt(CK_SESSION_HANDLE session,
|
|
413
|
+
CK_BYTE *plaintext,
|
|
414
|
+
CK_ULONG plaintext_len,
|
|
415
|
+
CK_BYTE *ciphertext,
|
|
416
|
+
CK_ULONG *ciphertext_len) nogil
|
|
417
|
+
|
|
418
|
+
CK_RV C_EncryptUpdate(CK_SESSION_HANDLE session,
|
|
419
|
+
CK_BYTE *part_in,
|
|
420
|
+
CK_ULONG part_in_len,
|
|
421
|
+
CK_BYTE *part_out,
|
|
422
|
+
CK_ULONG *part_out_len) nogil
|
|
423
|
+
|
|
424
|
+
CK_RV C_EncryptFinal(CK_SESSION_HANDLE session,
|
|
425
|
+
CK_BYTE *part_out,
|
|
426
|
+
CK_ULONG *part_out_len) nogil
|
|
427
|
+
|
|
428
|
+
CK_RV C_DecryptInit(CK_SESSION_HANDLE session,
|
|
429
|
+
CK_MECHANISM *mechanism,
|
|
430
|
+
CK_OBJECT_HANDLE key) nogil
|
|
431
|
+
|
|
432
|
+
CK_RV C_Decrypt(CK_SESSION_HANDLE session,
|
|
433
|
+
CK_BYTE *ciphertext,
|
|
434
|
+
CK_ULONG ciphertext_len,
|
|
435
|
+
CK_BYTE *plaintext,
|
|
436
|
+
CK_ULONG *plaintext_len) nogil
|
|
437
|
+
|
|
438
|
+
CK_RV C_DecryptUpdate(CK_SESSION_HANDLE session,
|
|
439
|
+
CK_BYTE *part_in,
|
|
440
|
+
CK_ULONG part_in_len,
|
|
441
|
+
CK_BYTE *part_out,
|
|
442
|
+
CK_ULONG *part_out_len) nogil
|
|
443
|
+
|
|
444
|
+
CK_RV C_DecryptFinal(CK_SESSION_HANDLE session,
|
|
445
|
+
CK_BYTE *part_out,
|
|
446
|
+
CK_ULONG *part_out_len) nogil
|
|
447
|
+
|
|
448
|
+
## Message digests
|
|
449
|
+
CK_RV C_DigestInit(CK_SESSION_HANDLE session,
|
|
450
|
+
CK_MECHANISM *mechanism) nogil
|
|
451
|
+
|
|
452
|
+
CK_RV C_Digest(CK_SESSION_HANDLE session,
|
|
453
|
+
CK_BYTE *data,
|
|
454
|
+
CK_ULONG data_len,
|
|
455
|
+
CK_BYTE *digest,
|
|
456
|
+
CK_ULONG *digest_len) nogil
|
|
457
|
+
|
|
458
|
+
CK_RV C_DigestUpdate(CK_SESSION_HANDLE session,
|
|
459
|
+
CK_BYTE *data,
|
|
460
|
+
CK_ULONG data_len) nogil
|
|
461
|
+
|
|
462
|
+
CK_RV C_DigestKey(CK_SESSION_HANDLE session,
|
|
463
|
+
CK_OBJECT_HANDLE key) nogil
|
|
464
|
+
|
|
465
|
+
CK_RV C_DigestFinal(CK_SESSION_HANDLE session,
|
|
466
|
+
CK_BYTE *digest,
|
|
467
|
+
CK_ULONG *digest_len) nogil
|
|
468
|
+
|
|
469
|
+
## Signing and MACing
|
|
470
|
+
CK_RV C_SignInit(CK_SESSION_HANDLE session,
|
|
471
|
+
CK_MECHANISM *mechanism,
|
|
472
|
+
CK_OBJECT_HANDLE key) nogil
|
|
473
|
+
|
|
474
|
+
CK_RV C_Sign(CK_SESSION_HANDLE session,
|
|
475
|
+
CK_BYTE *text,
|
|
476
|
+
CK_ULONG text_len,
|
|
477
|
+
CK_BYTE *signature,
|
|
478
|
+
CK_ULONG *sig_len) nogil
|
|
479
|
+
|
|
480
|
+
CK_RV C_SignUpdate(CK_SESSION_HANDLE session,
|
|
481
|
+
CK_BYTE *part,
|
|
482
|
+
CK_ULONG part_len) nogil
|
|
483
|
+
|
|
484
|
+
CK_RV C_SignFinal(CK_SESSION_HANDLE session,
|
|
485
|
+
CK_BYTE *signature,
|
|
486
|
+
CK_ULONG *sig_len) nogil
|
|
487
|
+
|
|
488
|
+
CK_RV C_SignRecoverInit(CK_SESSION_HANDLE session,
|
|
489
|
+
CK_MECHANISM *mechanism,
|
|
490
|
+
CK_OBJECT_HANDLE key) nogil
|
|
491
|
+
|
|
492
|
+
CK_RV C_SignRecover(CK_SESSION_HANDLE session,
|
|
493
|
+
CK_BYTE *text,
|
|
494
|
+
CK_ULONG text_len,
|
|
495
|
+
CK_BYTE *signature,
|
|
496
|
+
CK_ULONG *sig_len) nogil
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
## Verifying signatures and MACs
|
|
500
|
+
CK_RV C_VerifyInit(CK_SESSION_HANDLE session,
|
|
501
|
+
CK_MECHANISM *mechanism,
|
|
502
|
+
CK_OBJECT_HANDLE key) nogil
|
|
503
|
+
|
|
504
|
+
CK_RV C_Verify(CK_SESSION_HANDLE session,
|
|
505
|
+
CK_BYTE *text,
|
|
506
|
+
CK_ULONG text_len,
|
|
507
|
+
CK_BYTE *signature,
|
|
508
|
+
CK_ULONG sig_len) nogil
|
|
509
|
+
|
|
510
|
+
CK_RV C_VerifyUpdate(CK_SESSION_HANDLE session,
|
|
511
|
+
CK_BYTE *text,
|
|
512
|
+
CK_ULONG text_len) nogil
|
|
513
|
+
|
|
514
|
+
CK_RV C_VerifyFinal(CK_SESSION_HANDLE session,
|
|
515
|
+
CK_BYTE *signature,
|
|
516
|
+
CK_ULONG sig_len) nogil
|
|
517
|
+
|
|
518
|
+
CK_RV C_VerifyRecoverInit(CK_SESSION_HANDLE session,
|
|
519
|
+
CK_MECHANISM *mechanism,
|
|
520
|
+
CK_OBJECT_HANDLE key) nogil
|
|
521
|
+
|
|
522
|
+
CK_RV C_VerifyRecover(CK_SESSION_HANDLE session,
|
|
523
|
+
CK_BYTE *text,
|
|
524
|
+
CK_ULONG text_len,
|
|
525
|
+
CK_BYTE *signature,
|
|
526
|
+
CK_ULONG sig_len) nogil
|
|
527
|
+
|
|
528
|
+
## dual-function crypto operations
|
|
529
|
+
CK_RV C_DigestEncryptUpdate(CK_SESSION_HANDLE session,
|
|
530
|
+
CK_BYTE *data,
|
|
531
|
+
CK_ULONG data_len,
|
|
532
|
+
CK_BYTE *encrypted,
|
|
533
|
+
CK_ULONG *encrypted_len) nogil
|
|
534
|
+
|
|
535
|
+
CK_RV C_DecryptDigestUpdate(CK_SESSION_HANDLE session,
|
|
536
|
+
CK_BYTE *encrypted,
|
|
537
|
+
CK_ULONG encrypted_len,
|
|
538
|
+
CK_BYTE *data,
|
|
539
|
+
CK_ULONG *data_len) nogil
|
|
540
|
+
|
|
541
|
+
CK_RV C_SignEncryptUpdate(CK_SESSION_HANDLE session,
|
|
542
|
+
CK_BYTE *part,
|
|
543
|
+
CK_ULONG part_len) nogil
|
|
544
|
+
|
|
545
|
+
CK_RV C_DecryptVerifyUpdate(CK_SESSION_HANDLE session,
|
|
546
|
+
CK_BYTE *text,
|
|
547
|
+
CK_ULONG text_len) nogil
|
|
548
|
+
|
|
549
|
+
## key management
|
|
550
|
+
CK_RV C_GenerateKey(CK_SESSION_HANDLE session,
|
|
551
|
+
CK_MECHANISM *mechanism,
|
|
552
|
+
CK_ATTRIBUTE *template,
|
|
553
|
+
CK_ULONG count,
|
|
554
|
+
CK_OBJECT_HANDLE *key) nogil
|
|
555
|
+
|
|
556
|
+
CK_RV C_GenerateKeyPair(CK_SESSION_HANDLE session,
|
|
557
|
+
CK_MECHANISM *mechanism,
|
|
558
|
+
CK_ATTRIBUTE *public_template,
|
|
559
|
+
CK_ULONG public_count,
|
|
560
|
+
CK_ATTRIBUTE *private_template,
|
|
561
|
+
CK_ULONG private_count,
|
|
562
|
+
CK_OBJECT_HANDLE *public_key,
|
|
563
|
+
CK_OBJECT_HANDLE *private_key) nogil
|
|
564
|
+
|
|
565
|
+
CK_RV C_WrapKey(CK_SESSION_HANDLE session,
|
|
566
|
+
CK_MECHANISM *mechanism,
|
|
567
|
+
CK_OBJECT_HANDLE wrapping_key,
|
|
568
|
+
CK_OBJECT_HANDLE key_to_wrap,
|
|
569
|
+
CK_BYTE *wrapped_key,
|
|
570
|
+
CK_ULONG *wrapped_key_len) nogil
|
|
571
|
+
|
|
572
|
+
CK_RV C_UnwrapKey(CK_SESSION_HANDLE session,
|
|
573
|
+
CK_MECHANISM *mechanism,
|
|
574
|
+
CK_OBJECT_HANDLE unwrapping_key,
|
|
575
|
+
CK_BYTE *wrapped_key,
|
|
576
|
+
CK_ULONG wrapped_key_len,
|
|
577
|
+
CK_ATTRIBUTE *attrs,
|
|
578
|
+
CK_ULONG attr_len,
|
|
579
|
+
CK_OBJECT_HANDLE *unwrapped_key) nogil
|
|
580
|
+
|
|
581
|
+
CK_RV C_DeriveKey(CK_SESSION_HANDLE session,
|
|
582
|
+
CK_MECHANISM *mechanism,
|
|
583
|
+
CK_OBJECT_HANDLE src_key,
|
|
584
|
+
CK_ATTRIBUTE *template,
|
|
585
|
+
CK_ULONG count,
|
|
586
|
+
CK_OBJECT_HANDLE *new_key) nogil
|
|
587
|
+
|
|
588
|
+
## random number generation
|
|
589
|
+
CK_RV C_SeedRandom(CK_SESSION_HANDLE session,
|
|
590
|
+
CK_BYTE *seed,
|
|
591
|
+
CK_ULONG length) nogil
|
|
592
|
+
|
|
593
|
+
CK_RV C_GenerateRandom(CK_SESSION_HANDLE session,
|
|
594
|
+
CK_BYTE *random,
|
|
595
|
+
CK_ULONG length) nogil
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
## parallel processing
|
|
599
|
+
CK_RV C_GetFunctionStatus(CK_SESSION_HANDLE session) nogil
|
|
600
|
+
|
|
601
|
+
CK_RV C_CancelFunction(CK_SESSION_HANDLE session) nogil
|
|
602
|
+
|
|
603
|
+
## smart card events
|
|
604
|
+
CK_RV C_WaitForSlotEvent(CK_FLAGS flags,
|
|
605
|
+
CK_SLOT_ID *slot,
|
|
606
|
+
void *pRserved) nogil
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
cdef struct CK_FUNCTION_LIST_3_0:
|
|
610
|
+
CK_RV C_GetInterfaceList(CK_INTERFACE *pInterfacesList,
|
|
611
|
+
CK_ULONG *pulCount) nogil
|
|
612
|
+
|
|
613
|
+
CK_RV C_GetInterface(CK_UTF8CHAR *pInterfaceName,
|
|
614
|
+
CK_VERSION *pVersion,
|
|
615
|
+
CK_INTERFACE **ppInterface,
|
|
616
|
+
CK_FLAGS flags) nogil
|
|
617
|
+
|
|
618
|
+
CK_RV C_LoginUser(CK_SESSION_HANDLE hSession,
|
|
619
|
+
CK_USER_TYPE userType,
|
|
620
|
+
CK_UTF8CHAR *pPin,
|
|
621
|
+
CK_ULONG ulPinLen,
|
|
622
|
+
CK_UTF8CHAR *pUsername,
|
|
623
|
+
CK_ULONG ulUsernameLen) nogil
|
|
624
|
+
|
|
625
|
+
CK_RV C_SessionCancel(CK_SESSION_HANDLE hSession,
|
|
626
|
+
CK_FLAGS flags) nogil
|
|
627
|
+
|
|
628
|
+
CK_RV C_MessageEncryptInit(CK_SESSION_HANDLE hSession,
|
|
629
|
+
CK_MECHANISM *pMechanism,
|
|
630
|
+
CK_OBJECT_HANDLE hKey) nogil
|
|
631
|
+
|
|
632
|
+
CK_RV C_EncryptMessage(CK_SESSION_HANDLE hSession,
|
|
633
|
+
void *pParameter,
|
|
634
|
+
CK_ULONG ulParameterLen,
|
|
635
|
+
CK_BYTE *pAssociatedData,
|
|
636
|
+
CK_ULONG ulAssociatedDataLen,
|
|
637
|
+
CK_BYTE *pPlaintext,
|
|
638
|
+
CK_ULONG ulPlaintextLen,
|
|
639
|
+
CK_BYTE *pCiphertext,
|
|
640
|
+
CK_ULONG *pulCiphertextLen) nogil
|
|
641
|
+
|
|
642
|
+
CK_RV C_EncryptMessageBegin(CK_SESSION_HANDLE hSession,
|
|
643
|
+
void *pParameter,
|
|
644
|
+
CK_ULONG ulParameterLen,
|
|
645
|
+
CK_BYTE *pAssociatedData,
|
|
646
|
+
CK_ULONG ulAssociatedDataLen) nogil
|
|
647
|
+
|
|
648
|
+
CK_RV C_EncryptMessageNext(CK_SESSION_HANDLE hSession,
|
|
649
|
+
void *pParameter,
|
|
650
|
+
CK_ULONG ulParameterLen,
|
|
651
|
+
CK_BYTE *pPlaintextPart,
|
|
652
|
+
CK_ULONG ulPlaintextPartLen,
|
|
653
|
+
CK_BYTE *pCiphertextPart,
|
|
654
|
+
CK_ULONG *pulCiphertextPartLen,
|
|
655
|
+
CK_FLAGS flags) nogil
|
|
656
|
+
|
|
657
|
+
CK_RV C_MessageEncryptFinal(CK_SESSION_HANDLE hSession) nogil
|
|
658
|
+
|
|
659
|
+
CK_RV C_MessageDecryptInit(CK_SESSION_HANDLE hSession,
|
|
660
|
+
CK_MECHANISM *pMechanism,
|
|
661
|
+
CK_OBJECT_HANDLE hKey) nogil
|
|
662
|
+
|
|
663
|
+
CK_RV C_DecryptMessage(CK_SESSION_HANDLE hSession,
|
|
664
|
+
void *pParameter,
|
|
665
|
+
CK_ULONG ulParameterLen,
|
|
666
|
+
CK_BYTE *pAssociatedData,
|
|
667
|
+
CK_ULONG ulAssociatedDataLen,
|
|
668
|
+
CK_BYTE *pCiphertext,
|
|
669
|
+
CK_ULONG ulCiphertextLen,
|
|
670
|
+
CK_BYTE *pPlaintext,
|
|
671
|
+
CK_ULONG *pulPlaintextLen) nogil
|
|
672
|
+
|
|
673
|
+
CK_RV C_DecryptMessageBegin(CK_SESSION_HANDLE hSession,
|
|
674
|
+
void *pParameter,
|
|
675
|
+
CK_ULONG ulParameterLen,
|
|
676
|
+
CK_BYTE *pAssociatedData,
|
|
677
|
+
CK_ULONG ulAssociatedDataLen) nogil
|
|
678
|
+
|
|
679
|
+
CK_RV C_DecryptMessageNext(CK_SESSION_HANDLE hSession,
|
|
680
|
+
void *pParameter,
|
|
681
|
+
CK_ULONG ulParameterLen,
|
|
682
|
+
CK_BYTE *pCiphertextPart,
|
|
683
|
+
CK_ULONG ulCiphertextPartLen,
|
|
684
|
+
|
|
685
|
+
CK_ULONG *pulPlaintextPartLen,
|
|
686
|
+
CK_FLAGS flags) nogil
|
|
687
|
+
|
|
688
|
+
CK_RV C_MessageDecryptFinal(CK_SESSION_HANDLE hSession) nogil
|
|
689
|
+
|
|
690
|
+
CK_RV C_MessageSignInit(CK_SESSION_HANDLE hSession,
|
|
691
|
+
CK_MECHANISM *pMechanism,
|
|
692
|
+
CK_OBJECT_HANDLE hKey) nogil
|
|
693
|
+
|
|
694
|
+
CK_RV C_SignMessage(CK_SESSION_HANDLE hSession,
|
|
695
|
+
void *pParameter,
|
|
696
|
+
CK_ULONG ulParameterLen,
|
|
697
|
+
CK_BYTE *pData,
|
|
698
|
+
CK_ULONG ulDataLen,
|
|
699
|
+
CK_BYTE *pSignature,
|
|
700
|
+
CK_ULONG *pulSignatureLen) nogil
|
|
701
|
+
|
|
702
|
+
CK_RV C_SignMessageBegin(CK_SESSION_HANDLE hSession,
|
|
703
|
+
void *pParameter,
|
|
704
|
+
CK_ULONG ulParameterLen) nogil
|
|
705
|
+
|
|
706
|
+
CK_RV C_SignMessageNext(CK_SESSION_HANDLE hSession,
|
|
707
|
+
void *pParameter,
|
|
708
|
+
CK_ULONG ulParameterLen,
|
|
709
|
+
CK_BYTE *pData,
|
|
710
|
+
CK_ULONG ulDataLen,
|
|
711
|
+
CK_BYTE *pSignature,
|
|
712
|
+
CK_ULONG *pulSignatureLen) nogil
|
|
713
|
+
|
|
714
|
+
CK_RV C_MessageSignFinal(CK_SESSION_HANDLE hSession) nogil
|
|
715
|
+
|
|
716
|
+
CK_RV C_MessageVerifyInit(CK_SESSION_HANDLE hSession,
|
|
717
|
+
CK_MECHANISM *pMechanism,
|
|
718
|
+
CK_OBJECT_HANDLE hKey) nogil
|
|
719
|
+
|
|
720
|
+
CK_RV C_VerifyMessage(CK_SESSION_HANDLE hSession,
|
|
721
|
+
void *pParameter,
|
|
722
|
+
CK_ULONG ulParameterLen,
|
|
723
|
+
CK_BYTE *pData,
|
|
724
|
+
CK_ULONG ulDataLen,
|
|
725
|
+
CK_BYTE *pSignature,
|
|
726
|
+
CK_ULONG ulSignatureLen) nogil
|
|
727
|
+
|
|
728
|
+
CK_RV C_VerifyMessageBegin(CK_SESSION_HANDLE hSession,
|
|
729
|
+
void *pParameter,
|
|
730
|
+
CK_ULONG ulParameterLen) nogil
|
|
731
|
+
|
|
732
|
+
CK_RV C_VerifyMessageNext(CK_SESSION_HANDLE hSession,
|
|
733
|
+
void *pParameter,
|
|
734
|
+
CK_ULONG ulParameterLen,
|
|
735
|
+
CK_BYTE *pData,
|
|
736
|
+
CK_ULONG ulDataLen,
|
|
737
|
+
CK_BYTE *pSignature,
|
|
738
|
+
CK_ULONG ulSignatureLen) nogil
|
|
739
|
+
|
|
740
|
+
CK_RV C_MessageVerifyFinal(CK_SESSION_HANDLE hSession) nogil
|
|
741
|
+
|
|
742
|
+
|
|
743
|
+
cdef struct CK_FUNCTION_LIST_3_2:
|
|
744
|
+
CK_RV C_EncapsulateKey(CK_SESSION_HANDLE session,
|
|
745
|
+
CK_MECHANISM *mechanism,
|
|
746
|
+
CK_OBJECT_HANDLE public_key,
|
|
747
|
+
CK_ATTRIBUTE *template,
|
|
748
|
+
CK_ULONG count,
|
|
749
|
+
CK_BYTE *ciphertext,
|
|
750
|
+
CK_ULONG *ciphertext_len,
|
|
751
|
+
CK_OBJECT_HANDLE *key) nogil
|
|
752
|
+
CK_RV C_DecapsulateKey(CK_SESSION_HANDLE session,
|
|
753
|
+
CK_MECHANISM *mechanism,
|
|
754
|
+
CK_OBJECT_HANDLE private_key,
|
|
755
|
+
CK_ATTRIBUTE *template,
|
|
756
|
+
CK_ULONG count,
|
|
757
|
+
CK_BYTE *ciphertext,
|
|
758
|
+
CK_ULONG ciphertext_len,
|
|
759
|
+
CK_OBJECT_HANDLE *key) nogil
|
|
760
|
+
|
|
761
|
+
# The only external API call that must be defined in a PKCS#11 library
|
|
762
|
+
# All other APIs are taken from the CK_FUNCTION_LIST table
|
|
763
|
+
ctypedef CK_RV (*C_GetFunctionList_ptr) (CK_FUNCTION_LIST **) nogil
|
|
764
|
+
|
|
765
|
+
ctypedef CK_RV (*C_GetInterface_ptr)(
|
|
766
|
+
CK_UTF8CHAR *pInterfaceName,
|
|
767
|
+
CK_VERSION *pVersion,
|
|
768
|
+
CK_INTERFACE **ppInterface,
|
|
769
|
+
CK_FLAGS flags
|
|
770
|
+
) nogil
|
|
771
|
+
|
|
772
|
+
ctypedef CK_RV (*KeyOperationInit) (
|
|
773
|
+
CK_SESSION_HANDLE session,
|
|
774
|
+
CK_MECHANISM *mechanism,
|
|
775
|
+
CK_OBJECT_HANDLE key
|
|
776
|
+
) nogil
|
|
777
|
+
ctypedef CK_RV (*OperationUpdateWithResult) (
|
|
778
|
+
CK_SESSION_HANDLE session,
|
|
779
|
+
CK_BYTE *part_in,
|
|
780
|
+
CK_ULONG part_in_len,
|
|
781
|
+
CK_BYTE *part_out,
|
|
782
|
+
CK_ULONG *part_out_len
|
|
783
|
+
) nogil
|
|
784
|
+
ctypedef CK_RV (*OperationUpdate) (
|
|
785
|
+
CK_SESSION_HANDLE session,
|
|
786
|
+
CK_BYTE *part_in,
|
|
787
|
+
CK_ULONG part_in_len
|
|
788
|
+
) nogil
|
|
789
|
+
ctypedef CK_RV (*OperationWithResult) (
|
|
790
|
+
CK_SESSION_HANDLE session,
|
|
791
|
+
CK_BYTE *part_out,
|
|
792
|
+
CK_ULONG *part_out_len
|
|
793
|
+
) nogil
|
|
794
|
+
|
|
795
|
+
cdef inline CK_BYTE_buffer(length):
|
|
796
|
+
"""Make a buffer for `length` CK_BYTEs."""
|
|
797
|
+
return array(shape=(length,), itemsize=sizeof(CK_BYTE), format='B')
|
|
798
|
+
|
|
799
|
+
|
|
800
|
+
cdef inline CK_ULONG_buffer(length):
|
|
801
|
+
"""Make a buffer for `length` CK_ULONGs."""
|
|
802
|
+
return array(shape=(length,), itemsize=sizeof(CK_ULONG), format='L')
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
# Note: this `cdef inline` declaration doesn't seem to be consistently labelled
|
|
806
|
+
# as executed by Cython's line tracing, so we flag it as nocover
|
|
807
|
+
# to avoid noise in the metrics.
|
|
808
|
+
|
|
809
|
+
cdef inline object map_rv_to_error(CK_RV rv): # pragma: nocover
|
|
810
|
+
if rv == CKR_ATTRIBUTE_TYPE_INVALID:
|
|
811
|
+
exc = AttributeTypeInvalid()
|
|
812
|
+
elif rv == CKR_ATTRIBUTE_VALUE_INVALID:
|
|
813
|
+
exc = AttributeValueInvalid()
|
|
814
|
+
elif rv == CKR_ATTRIBUTE_READ_ONLY:
|
|
815
|
+
exc = AttributeReadOnly()
|
|
816
|
+
elif rv == CKR_ATTRIBUTE_SENSITIVE:
|
|
817
|
+
exc = AttributeSensitive()
|
|
818
|
+
elif rv == CKR_ARGUMENTS_BAD:
|
|
819
|
+
exc = ArgumentsBad()
|
|
820
|
+
elif rv == CKR_BUFFER_TOO_SMALL:
|
|
821
|
+
exc = PKCS11Error("Buffer was too small. Should never see this.")
|
|
822
|
+
elif rv == CKR_CRYPTOKI_ALREADY_INITIALIZED:
|
|
823
|
+
exc = PKCS11Error("Initialisation error (already initialized). Should never see this.")
|
|
824
|
+
elif rv == CKR_CRYPTOKI_NOT_INITIALIZED:
|
|
825
|
+
exc = PKCS11Error("Initialisation error (not initialized). Should never see this.")
|
|
826
|
+
elif rv == CKR_DATA_INVALID:
|
|
827
|
+
exc = DataInvalid()
|
|
828
|
+
elif rv == CKR_DATA_LEN_RANGE:
|
|
829
|
+
exc = DataLenRange()
|
|
830
|
+
elif rv == CKR_DOMAIN_PARAMS_INVALID:
|
|
831
|
+
exc = DomainParamsInvalid()
|
|
832
|
+
elif rv == CKR_DEVICE_ERROR:
|
|
833
|
+
exc = DeviceError()
|
|
834
|
+
elif rv == CKR_DEVICE_MEMORY:
|
|
835
|
+
exc = DeviceMemory()
|
|
836
|
+
elif rv == CKR_DEVICE_REMOVED:
|
|
837
|
+
exc = DeviceRemoved()
|
|
838
|
+
elif rv == CKR_ENCRYPTED_DATA_INVALID:
|
|
839
|
+
exc = EncryptedDataInvalid()
|
|
840
|
+
elif rv == CKR_ENCRYPTED_DATA_LEN_RANGE:
|
|
841
|
+
exc = EncryptedDataLenRange()
|
|
842
|
+
elif rv == CKR_EXCEEDED_MAX_ITERATIONS:
|
|
843
|
+
exc = ExceededMaxIterations()
|
|
844
|
+
elif rv == CKR_FUNCTION_CANCELED:
|
|
845
|
+
exc = FunctionCancelled()
|
|
846
|
+
elif rv == CKR_FUNCTION_FAILED:
|
|
847
|
+
exc = FunctionFailed()
|
|
848
|
+
elif rv == CKR_FUNCTION_REJECTED:
|
|
849
|
+
exc = FunctionRejected()
|
|
850
|
+
elif rv == CKR_FUNCTION_NOT_SUPPORTED:
|
|
851
|
+
exc = FunctionNotSupported()
|
|
852
|
+
elif rv == CKR_KEY_HANDLE_INVALID:
|
|
853
|
+
exc = KeyHandleInvalid()
|
|
854
|
+
elif rv == CKR_KEY_INDIGESTIBLE:
|
|
855
|
+
exc = KeyIndigestible()
|
|
856
|
+
elif rv == CKR_KEY_NEEDED:
|
|
857
|
+
exc = KeyNeeded()
|
|
858
|
+
elif rv == CKR_KEY_NOT_NEEDED:
|
|
859
|
+
exc = KeyNotNeeded()
|
|
860
|
+
elif rv == CKR_KEY_SIZE_RANGE:
|
|
861
|
+
exc = KeySizeRange()
|
|
862
|
+
elif rv == CKR_KEY_NOT_WRAPPABLE:
|
|
863
|
+
exc = KeyNotWrappable()
|
|
864
|
+
elif rv == CKR_KEY_TYPE_INCONSISTENT:
|
|
865
|
+
exc = KeyTypeInconsistent()
|
|
866
|
+
elif rv == CKR_KEY_UNEXTRACTABLE:
|
|
867
|
+
exc = KeyUnextractable()
|
|
868
|
+
elif rv == CKR_GENERAL_ERROR:
|
|
869
|
+
exc = GeneralError()
|
|
870
|
+
elif rv == CKR_HOST_MEMORY:
|
|
871
|
+
exc = HostMemory()
|
|
872
|
+
elif rv == CKR_MECHANISM_INVALID:
|
|
873
|
+
exc = MechanismInvalid()
|
|
874
|
+
elif rv == CKR_MECHANISM_PARAM_INVALID:
|
|
875
|
+
exc = MechanismParamInvalid()
|
|
876
|
+
elif rv == CKR_NO_EVENT:
|
|
877
|
+
exc = NoEvent()
|
|
878
|
+
elif rv == CKR_OBJECT_HANDLE_INVALID:
|
|
879
|
+
exc = ObjectHandleInvalid()
|
|
880
|
+
elif rv == CKR_OPERATION_ACTIVE:
|
|
881
|
+
exc = OperationActive()
|
|
882
|
+
elif rv == CKR_OPERATION_NOT_INITIALIZED:
|
|
883
|
+
exc = OperationNotInitialized()
|
|
884
|
+
elif rv == CKR_PIN_EXPIRED:
|
|
885
|
+
exc = PinExpired()
|
|
886
|
+
elif rv == CKR_PIN_INCORRECT:
|
|
887
|
+
exc = PinIncorrect()
|
|
888
|
+
elif rv == CKR_PIN_INVALID:
|
|
889
|
+
exc = PinInvalid()
|
|
890
|
+
elif rv == CKR_PIN_LEN_RANGE:
|
|
891
|
+
exc = PinLenRange()
|
|
892
|
+
elif rv == CKR_PIN_LOCKED:
|
|
893
|
+
exc = PinLocked()
|
|
894
|
+
elif rv == CKR_PIN_TOO_WEAK:
|
|
895
|
+
exc = PinTooWeak()
|
|
896
|
+
elif rv == CKR_PUBLIC_KEY_INVALID:
|
|
897
|
+
exc = PublicKeyInvalid()
|
|
898
|
+
elif rv == CKR_RANDOM_NO_RNG:
|
|
899
|
+
exc = RandomNoRNG()
|
|
900
|
+
elif rv == CKR_RANDOM_SEED_NOT_SUPPORTED:
|
|
901
|
+
exc = RandomSeedNotSupported()
|
|
902
|
+
elif rv == CKR_SESSION_CLOSED:
|
|
903
|
+
exc = SessionClosed()
|
|
904
|
+
elif rv == CKR_SESSION_COUNT:
|
|
905
|
+
exc = SessionCount()
|
|
906
|
+
elif rv == CKR_SESSION_EXISTS:
|
|
907
|
+
exc = SessionExists()
|
|
908
|
+
elif rv == CKR_SESSION_HANDLE_INVALID:
|
|
909
|
+
exc = SessionHandleInvalid()
|
|
910
|
+
elif rv == CKR_SESSION_PARALLEL_NOT_SUPPORTED:
|
|
911
|
+
exc = PKCS11Error("Parallel not supported. Should never see this.")
|
|
912
|
+
elif rv == CKR_SESSION_READ_ONLY:
|
|
913
|
+
exc = SessionReadOnly()
|
|
914
|
+
elif rv == CKR_SESSION_READ_ONLY_EXISTS:
|
|
915
|
+
exc = SessionReadOnlyExists()
|
|
916
|
+
elif rv == CKR_SESSION_READ_WRITE_SO_EXISTS:
|
|
917
|
+
exc = SessionReadWriteSOExists()
|
|
918
|
+
elif rv == CKR_SIGNATURE_LEN_RANGE:
|
|
919
|
+
exc = SignatureLenRange()
|
|
920
|
+
elif rv == CKR_SIGNATURE_INVALID:
|
|
921
|
+
exc = SignatureInvalid()
|
|
922
|
+
elif rv == CKR_TEMPLATE_INCOMPLETE:
|
|
923
|
+
exc = TemplateIncomplete()
|
|
924
|
+
elif rv == CKR_TEMPLATE_INCONSISTENT:
|
|
925
|
+
exc = TemplateInconsistent()
|
|
926
|
+
elif rv == CKR_SLOT_ID_INVALID:
|
|
927
|
+
exc = SlotIDInvalid()
|
|
928
|
+
elif rv == CKR_TOKEN_NOT_PRESENT:
|
|
929
|
+
exc = TokenNotPresent()
|
|
930
|
+
elif rv == CKR_TOKEN_NOT_RECOGNIZED:
|
|
931
|
+
exc = TokenNotRecognised()
|
|
932
|
+
elif rv == CKR_TOKEN_WRITE_PROTECTED:
|
|
933
|
+
exc = TokenWriteProtected()
|
|
934
|
+
elif rv == CKR_UNWRAPPING_KEY_HANDLE_INVALID:
|
|
935
|
+
exc = UnwrappingKeyHandleInvalid()
|
|
936
|
+
elif rv == CKR_UNWRAPPING_KEY_SIZE_RANGE:
|
|
937
|
+
exc = UnwrappingKeySizeRange()
|
|
938
|
+
elif rv == CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT:
|
|
939
|
+
exc = UnwrappingKeyTypeInconsistent()
|
|
940
|
+
elif rv == CKR_USER_NOT_LOGGED_IN:
|
|
941
|
+
exc = UserNotLoggedIn()
|
|
942
|
+
elif rv == CKR_USER_ALREADY_LOGGED_IN:
|
|
943
|
+
exc = UserAlreadyLoggedIn()
|
|
944
|
+
elif rv == CKR_USER_ANOTHER_ALREADY_LOGGED_IN:
|
|
945
|
+
exc = AnotherUserAlreadyLoggedIn()
|
|
946
|
+
elif rv == CKR_USER_PIN_NOT_INITIALIZED:
|
|
947
|
+
exc = UserPinNotInitialized()
|
|
948
|
+
elif rv == CKR_USER_TOO_MANY_TYPES:
|
|
949
|
+
exc = UserTooManyTypes()
|
|
950
|
+
elif rv == CKR_USER_TYPE_INVALID:
|
|
951
|
+
exc = PKCS11Error("User type invalid. Should never see this.")
|
|
952
|
+
elif rv == CKR_WRAPPED_KEY_INVALID:
|
|
953
|
+
exc = WrappedKeyInvalid()
|
|
954
|
+
elif rv == CKR_WRAPPED_KEY_LEN_RANGE:
|
|
955
|
+
exc = WrappedKeyLenRange()
|
|
956
|
+
elif rv == CKR_WRAPPING_KEY_HANDLE_INVALID:
|
|
957
|
+
exc = WrappingKeyHandleInvalid()
|
|
958
|
+
elif rv == CKR_WRAPPING_KEY_SIZE_RANGE:
|
|
959
|
+
exc = WrappingKeySizeRange()
|
|
960
|
+
elif rv == CKR_WRAPPING_KEY_TYPE_INCONSISTENT:
|
|
961
|
+
exc = WrappingKeyTypeInconsistent()
|
|
962
|
+
else:
|
|
963
|
+
exc = PKCS11Error("Unmapped error code %s" % hex(rv))
|
|
964
|
+
return exc
|