FileNotFoundError: не удалось найти модуль libhsm.dll
Я пытаюсь подключиться к Eracom HSM [который появился около 15 лет назад!] С помощью Python. Мои поиски в 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:
- Есть ли лучший пакет / библиотека для достижения этой цели?
- Как я могу исправить проблему?
2 ответа
Насколько я помню, вам нужно установить "HSM Access Provider", который предоставляет эту dll. Есть два варианта:
Поставщик доступа PCI (для HSM, физически установленного на компьютере)
Поставщик сетевого доступа (для HSM, доступ к которому осуществляется удаленно по сетевому каналу)
Динамическая библиотека cryptoki зависит от динамической библиотеки
libhsm.dll
(не должно быть
ethsm.dll
?) предоставляется поставщиком доступа.
Вы можете проверить установку вашего провайдера доступа HSM с помощью
hsmstate
команда (насколько я помню, это часть установки провайдера доступа).
Вы можете проверить общую установку HSM с помощью
ctstat
команда.
Если все не получается, можете проверить свой
cryptoki.dll
зависимости с Dependency Walker (Windows) или
ldd
команда (Linux).
См. Соответствующее Руководство по установке PTK-C.
Удачи!
Вам нужно будет загрузить, скомпилировать и установить сокомпонент libhsm.so на свой хост, прежде чем вы сможете использовать модуль py-hsm. Модуль py-hsm представляет собой высокоуровневую оболочку для всего сложного кода HSM PKCS-11 C, который существует в libhsm.
https://github.com/bentonstark/libhsm
Также обратите внимание, что модуль python ищет libhsm.dll, который сообщает мне, что вы находитесь на хосте Window. Это решение будет работать в Windows, но потребуется некоторая работа, чтобы заставить библиотеку libhsm скомпилироваться в Windows. Если вы можете ориентироваться на Linux, все пойдет намного проще.
Как только вы это сделаете, последний шаг — сообщить py-hsm расположение вашей библиотеки PKCS API поставщика Eracom. Обратите внимание, что я тестировал эту библиотеку с большим количеством 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()