0

我正在尝试使用 Python 连接到 Eracom HSM [大约 15 年前!]。我的 Google 搜索将我带到了一个名为py-hsm的库。根据文档,它似乎有一个非常简单的用法。但是当我尝试使用它时,我遇到了以下错误:

  1 C:\> python
  2 Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)] on win32
  3 
  4 >>> from pyhsm.hsmclient import HsmClient
  5 >>> c = HsmClient(pkcs11_lib="C:\Eracom\ProtectToolkit C SDK\bin\sw\cryptoki.dll")
  6 Traceback (most recent call last):
  7   File "<stdin>", line 1, in <module>
  8   File "C:\Python\Python38-32\lib\site-packages\pyhsm\hsmclient.py", line 138, in __init__
  9     self.__init_libhsm()
 10   File "C:\Python\Python38-32\lib\site-packages\pyhsm\hsmclient.py", line 157, in __init_libhsm
 11     self.__libhsm = CDLL(self.__pyLibHsmName)
 12   File "C:\Python\Python38-32\lib\ctypes\__init__.py", line 373, in __init__
 13     self._handle = _dlopen(self._name, mode)
 14 FileNotFoundError: Could not find module 'libhsm.dll' (or one of its dependencies). Try using the full path with constructor syntax.
 15 >>>

我对提到的 DLL ( libhsm.dll ) 进行了整个系统搜索,但我什么也没找到。

问题1:

  1. 有没有更好的包/库来实现这个目标?
  2. 我该如何解决这个问题?
4

2 回答 2

0

您需要先在主机上下载、编译和安装 libhsm.so 协同组件,然后才能使用 py-hsm 模块。py-hsm 模块是 libhsm 中所有繁重的 HSM PKCS-11 C 代码的高级包装器。
https://github.com/bentonstark/libhsm

另请注意,python 模块正在寻找 libhsm.dll,它告诉我您在 Window 主机上。此解决方案将在 Windows 上运行,但需要一些工作才能让 libhsm 库在 Windows 上编译。如果你能以 Linux 为目标,事情会变得容易得多。

一旦你这样做了,最后一步就是告诉 py-hsm 你的 Eracom 供应商 PKCS API 库的位置。请注意,我用很多 HSM 测试了这个库,但 Eracom 不是其中之一。 https://github.com/bentonstark/py-hsm

from pyhsm.hsmclient import HsmClient
c = HsmClient(pkcs11_lib="/usr/lib/vendorp11.so")
c.open_session(slot=1)
c.login(pin="partition_password")
c.logout()
c.close_session()
于 2021-01-26T17:49:53.160 回答
0

据我记得,您需要安装提供此 dll 的“HSM Access Provider”。它有两种变体:

  • PCI Access Provider(用于物理安装在计算机中的 HSM)

  • 网络访问提供商(用于通过网络链接远程访问的 HSM)

cryptoki 动态库依赖于访问提供者提供的动态库libhsm.dll(不应该吗?)。ethsm.dll

您可以使用命令检查您的 HSM 访问提供程序安装hsmstate(据我所知,它是访问提供程序安装的一部分)。

ctstat您可以使用该命令检查您的整体 HSM 安装。

如果一切都失败了,您可以使用Dependency Walker (Windows) 或命令 (Linux)检查您的cryptoki.dll依赖关系。ldd

请参阅相应的PTK-C 安装指南

祝你好运!

于 2020-11-15T16:14:48.137 回答