Ошибка FileNotFoundError: не удалось найти модуль ‘libhsm.dll ‘

#python-3.x #windows #pkcs#11 #hsm #cryptoki

#python-3.x #Windows #pkcs #11 #hsm #криптоки

Вопрос:

Я пытаюсь подключиться к 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:EracomProtectToolkit C SDKbinswcryptoki.dll")
  6 Traceback (most recent call last):
  7   File "<stdin>", line 1, in <module>
  8   File "C:PythonPython38-32libsite-packagespyhsmhsmclient.py", line 138, in __init__
  9     self.__init_libhsm()
 10   File "C:PythonPython38-32libsite-packagespyhsmhsmclient.py", line 157, in __init_libhsm
 11     self.__libhsm = CDLL(self.__pyLibHsmName)
 12   File "C:PythonPython38-32libctypes__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. Как я могу устранить проблему?

Ответ №1:

Насколько я помню, вам нужно установить «Поставщик доступа HSM», который предоставляет эту dll. Он имеет два варианта:

  • Поставщик доступа PCI (для HSM, физически установленного на компьютере)

  • Поставщик сетевого доступа (для удаленного доступа к HSM по сетевому каналу)

Динамическая библиотека cryptoki зависит от динамической библиотеки libhsm.dll (не должна ли она быть ethsm.dll ?), предоставляемой поставщиком доступа.

Вы можете проверить установку поставщика доступа HSM с hsmstate помощью команды (насколько я помню, это часть установки поставщика доступа).

Вы можете проверить общую установку HSM с ctstat помощью команды.

Если все выходит из строя, вы можете проверить свои cryptoki.dll зависимости с помощью Dependency Walker (Windows) или ldd command (Linux).

См. Соответствующее руководство по установке PTK-C.

Удачи!

Ответ №2:

Вам нужно будет загрузить, скомпилировать и установить 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 местоположение вашей библиотеки API PKCS поставщика 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()