Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的模块pkcs11_Python_Pkcs#11_Keyerror - Fatal编程技术网

Python中的模块pkcs11

Python中的模块pkcs11,python,pkcs#11,keyerror,Python,Pkcs#11,Keyerror,我试图使用Python中的pkcs11,但遇到了一个问题。我看过很多例子,它们都是从相同的代码开始的。然而,当我执行它时,console在代码的第三行中引发错误 代码: import pkcs11 import os # Initialise our PKCS#11 library lib = pkcs11.lib(os.environ['PKCS11_MODULE']) token = lib.get_token(token_label='DEMO') 行中出现错误: lib = pkcs1

我试图使用Python中的pkcs11,但遇到了一个问题。我看过很多例子,它们都是从相同的代码开始的。然而,当我执行它时,console在代码的第三行中引发错误

代码:

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_模块环境变量给定的路径中找到该库

您应该将该环境变量设置为安装本机组件的位置

$ export PKCS11_MODULE='/some/path'
$ python myscript.py

要解决此问题,您必须在windows a文件中添加驱动程序的路径。在linux a文件中添加.dll。因此,如下所示:

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模块本身并不实现PKSC11。它只是完成实际工作的模块的Python包装器。看起来你还没有安装。看看