提问人:aisha 提问时间:10/23/2023 最后编辑:aisha 更新时间:10/23/2023 访问量:36
如何在python中使用ePass3003令牌进行数字签名?
how to use ePass3003 token in python for digital signature?
问:
我想用Python连接到ePass3003令牌,对JSON中的字符串或数据进行签名并签名(我想签名的一切,我以JSON为例) 我知道无法提取此令牌中的私钥 但是,我有以下一段代码,但它给了我一个错误
from PyKCS11 import *
# Initialize the PKCS#11 library
lib = 'E:/lib_x64/ShuttleCsp11_3003.dll'
pkcs11 = PyKCS11Lib()
pkcs11.load(lib)
# Open a session
slot = pkcs11.getSlotList()[0]
session = pkcs11.openSession(slot)
try:
# Login with PIN
session.login('1234')
private_key = session.findObjects([(CKA.CLASS, CKO.PRIVATE_KEY), (CKA.LABEL, 'PrivateKeyLabel')])[0]
# Data to be signed
data_to_sign = b'Your data to be signed'
# Sign the data
signature = session.sign(private_key, data_to_sign, Mechanism(CKM.RSA_PKCS))
print("signature==> ",signature)
# 'signature' now contains the RSA-256 signature of the data
except PyKCS11Error as e:
print(f"PyKCS11 error: {e}")
finally:
session.logout()
session.closeSession()
错误:private_key = session.findObjects([(CKA.CLASS, CKO.PRIVATE_KEY), (CKA.LABEL, 'PrivateKeyLabel')])[0]
AttributeError: 'dict' object has no attribute 'CLASS'
还有一件事我不知道该放什么来代替 PrivateKeyLabel,我不知道在哪里可以找到这个标签 我在 ePass3003 应用程序下面的图片中找不到任何称为私钥标签的东西
如果有人能帮助我,我将不胜感激
答:
1赞
Daviid
10/23/2023
#1
你是从 ChatGPT 那里得到的吗?
改变
private_key = session.findObjects([(CKA.CLASS, CKO.PRIVATE_KEY), (CKA.LABEL, 'PrivateKeyLabel')])[0]
为
private_key = session.findObjects([(CKA_CLASS, CKO_PRIVATE_KEY), (CKA_LABEL, 'PrivateKeyLabel')])[0]
没有 或 对象具有属性,它们是 pkcs11.h 中定义的常量CKA
CKO
还要检查此答案
评论
0赞
aisha
10/25/2023
是的,我从 ChatGPT 那里得到了这个,重点是我想使用此代码创建一个 JWT 令牌,但是当我给出标头和有效负载值以使用这些代码进行签名时,我得到CKR_DATA_LEN_RANGE error (0x00000021)
0赞
aisha
10/25/2023
我不知道如何解决这个问题
评论