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/_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