#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:
Насколько я помню, вам нужно установить «Поставщик доступа 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()