У меня проблемы с загрузкой движка PKCS # 11 в качестве динамического движка с использованием Python и M2Crypto. Я пытаюсь получить доступ к Aladdin USB eToken.
Вот важные шаги из моего кода на Python:
dynamic = Engine.load_dynamic_engine("pkcs11", "/usr/local/ssl/lib/engines/engine_pkcs11.so")
pkcs11 = Engine.Engine("pkcs11")
pkcs11.ctrl_cmd_string("MODULE_PATH", "/usr/lib/libeTPkcs11.so")
pkcs11.engine_init_custom() # initialize engine with custom M2Crypto patch
# next few steps which I deleted pass password and grab key & cert off token
Engine.cleanup()
Это отлично работает при первом запуске этого метода. Во второй раз происходит сбой при загрузке динамического двигателя (см. Ошибку ниже).
Traceback (последний вызов был последним):
Файл "", строка 1, в?
Файл "/usr/local/lib/python2.4/site-packages/M2Crypto/Engine.py", строка 98, в load_dynamic_engine
e.ctrl_cmd_string ("LOAD", нет)
Файл "/usr/local/lib/python2.4/site-packages/M2Crypto/Engine.py", строка 38, в ctrl_cmd_string
поднять EngineError (Err.get_error ())
M2Crypto.Engine.EngineError: 4002: ошибка: 260B606D: подпрограммы механизма: DYNAMIC_LOAD: сбой инициализации: eng_dyn.c: 521:
Разве нельзя загружать двигатели дважды в сеансе Python? Я пропускаю какую-то очистку / удаление двигателя? Документы OpenSSL говорят о engine_finish (), но я не думаю, что M2Crypto предлагает это. Есть ли способ узнать, загружен ли уже двигатель?
Спасибо!