来自 Python 的模块 pkcs#11
Module pkcs#11 from Python
我正在尝试使用来自 Python 的 pkcs11,但我遇到了问题。我看过很多例子,它们都以相同的代码开头。但是,当我执行它时,控制台在代码的第三行引发错误。
代码:
import pkcs11
import os
# Initialise our PKCS#11 library
lib = pkcs11.lib(os.environ['PKCS11_MODULE'])
token = lib.get_token(token_label='DEMO')
行中的错误:
lib = pkcs11.lib(os.environ['PKCS11_MODULE'])
错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/UserDict.py", line 40, in __getitem__
raise KeyError(key)
KeyError: 'PKCS11_MODULE'
pkcs11 包装了一个本地库。它希望在 PKCS11_MODULE
环境变量给定的路径中找到该库。
您应该将该环境变量设置为安装本机组件的位置。
$ export PKCS11_MODULE='/some/path'
$ python myscript.py
要解决此问题,您必须添加驱动程序的路径(在 windows 文件 .dll 中,在 linux 文件 .so 中),如下所示:
import pkcs11
lib = pkcs11.lib("C:/Windows/System32/eps2003csp11.dll")
for slot in lib.get_slots():
token = slot.get_token()
print(token)
if token.label == '...':
break
就我而言,我使用 USB 令牌。结果是连接的令牌的用户名。
我正在尝试使用来自 Python 的 pkcs11,但我遇到了问题。我看过很多例子,它们都以相同的代码开头。但是,当我执行它时,控制台在代码的第三行引发错误。
代码:
import pkcs11
import os
# Initialise our PKCS#11 library
lib = pkcs11.lib(os.environ['PKCS11_MODULE'])
token = lib.get_token(token_label='DEMO')
行中的错误:
lib = pkcs11.lib(os.environ['PKCS11_MODULE'])
错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/UserDict.py", line 40, in __getitem__
raise KeyError(key)
KeyError: 'PKCS11_MODULE'
pkcs11 包装了一个本地库。它希望在 PKCS11_MODULE
环境变量给定的路径中找到该库。
您应该将该环境变量设置为安装本机组件的位置。
$ export PKCS11_MODULE='/some/path'
$ python myscript.py
要解决此问题,您必须添加驱动程序的路径(在 windows 文件 .dll 中,在 linux 文件 .so 中),如下所示:
import pkcs11
lib = pkcs11.lib("C:/Windows/System32/eps2003csp11.dll")
for slot in lib.get_slots():
token = slot.get_token()
print(token)
if token.label == '...':
break
就我而言,我使用 USB 令牌。结果是连接的令牌的用户名。