我正在使用python-pkcs11来访问我拥有的智能卡。 现在,我正在尝试创建一个会话,以便我可以从卡中检索公钥。这是我测试的代码:
path = (...)
os.environ["PKCS11 MODULE"] = path
lib = pkcs11.lib(os.environ['PKCS11 MODULE'])
password = bytes("1234","utf-8")
print(password)
with token.open(user_pin=password) as session:
print(session)
一切看起来都不错,直到达到“user_pin = password”。我收到一个错误:
Traceback (most recent call last):
File "acess.py", line 46, in <module>
with token.open(user_pin=password) as session:
File "pkcs11/_pkcs11.pyx", line 227, in pkcs11._pkcs11.Token.open
AttributeError: 'bytes' object has no attribute 'encode'
在文档中,据说user_password必须以字节为单位,这就是我正在做的事情。有人可以帮帮我吗?
修改
当我测试这三种情况中的任何一种时,我仍然会收到错误:
with token.open(user_pin='1234') as session:
print(session)
with token.open(user_pin=b"1234") as session:
print(session)
with token.open(user_pin="1234") as session:
print(session)
错误:
Traceback (most recent call last):
File "acess.py", line 59, in <module>
with token.open(user_pin="1234") as session:
File "pkcs11/_pkcs11.pyx", line 239, in pkcs11._pkcs11.Token.open
File "pkcs11/_errors.pyx", line 88, in pkcs11._pkcs11.assertRV
pkcs11.exceptions.UserPinNotInitialized
答案 0 :(得分:0)
您错过了这一行:
令牌= lib.get_token(token_label ='您的令牌标签')
使用token.open(user_pin =“ 1234”)作为会话: 打印(会话