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:

  1. Есть ли лучший пакет / библиотека для достижения этой цели?
  2. Как я могу исправить проблему?

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()
Другие вопросы по тегам