我在使用 python 和 M2Crypto 将 Engine PKCS #11 作为动态引擎加载时遇到问题。我正在尝试访问 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()
第一次运行此方法时效果很好。第二次,加载动态引擎时失败(见下面的错误)。
回溯(最后一次调用):文件“”,第 1 行,在?文件 "/usr/local/lib/python2.4/site-packages/M2Crypto/Engine.py",第 98 行,在 load_dynamic_engine e.ctrl_cmd_string("LOAD", None) 文件 "/usr/local/lib/python2. 4/site-packages/M2Crypto/Engine.py",第 38 行,在 ctrl_cmd_string 中引发 EngineError(Err.get_error()) M2Crypto.Engine.EngineError: 4002:error:260B606D:engine routines:DYNAMIC_LOAD:init failed:eng_dyn.c :521:
是否不可能在 python 会话中加载引擎两次?我错过了某种引擎清理/删除吗?OpenSSL 文档谈论 engine_finish() 但我不认为 M2Crypto 提供。有没有办法判断引擎是否已经加载?
谢谢!