Я пытаюсь подписать некоторые данные, используя механизм CKM_SHA256_RSA_PKCS … У меня проблемы с низкоуровневый-API, так как практически нет документации и почти нет примеров. Я пытаюсь сделать что-то почти идентичное Подписать / проверить библиотеку PyKCS11
Я не могу правильно преобразовать код с помощью низкоуровневого (ужасного) API.
Вот несколько коротких фрагментов моей попытки.
a = CPKCS11Lib()
info = CK_INFO()
m = PyKCS11.LowLevel.CK_MECHANISM()
signature = ckbytelist()
m.mechanism = PyKCS11.LowLevel.CKM_SHA256_RSA_PKCS
key = PyKCS11.LowLevel.CK_OBJECT_HANDLE()
slotInfo = CK_SLOT_INFO()
lib='/opt/PTK/lib/libcryptoki.so'
session = CK_SESSION_HANDLE()
sessionInfo = CK_SESSION_INFO()
tokenInfo = CK_TOKEN_INFO()
slotList = ckintlist()
objects = ckobjlist()
binaryData = "XYZ"sha256 = hashlib.sha256()
sha256.update(str(bytearray(binaryData)))
digest = sha256.digest()
binaryData2 = '\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20' + digest
signMechanism = PyKCS11.Mechanism(PyKCS11.LowLevel.CKM_SHA256_RSA_PKCS, None)
signedData = str(a.C_Sign(CKA_PRIVATE, binaryData2, signMechanism))
print(signedData)
Получение этой трассировки для signedData
def C_Sign(self, *args): return _LowLevel.CPKCS11Lib_C_Sign(self, *args)
TypeError: in method 'CPKCS11Lib_C_Sign', argument 2 of type 'CK_SESSION_HANDLE'
Задача ещё не решена.
Других решений пока нет …