M2Crypto: load_dynamic_engine()的AttributeError
我正在使用 M2Crypto-0.20.2。我想使用 OpenSC 项目的 engine_pkcs11 和 Aladdin PKI 客户端来进行基于令牌的身份验证,并通过 SSL 进行 xmlrpc 调用。
我尝试加载 PKCS#11 引擎和 Aladdin 模块(见下面的代码)。但是我遇到了一个错误:
AttributeError: 'module' object has no attribute 'load_dynamic_engine'
from M2Crypto import SSL, m2
m2.load_dynamic_engine("dynamic","/usr/local/ssl/lib/engines/engine_pkcs11.so")
m2.load_dynamic_engine("pkcs11","/usr/lib/libeTPkcs11.so")
根据 M2Crypto 的文档,这个功能应该是可以用的。我正在阅读的文档是:http://www.heikkitoivonen.net/m2crypto/api/
有没有人能指引我找到正确的文档,或者帮我解决如何加载引擎的问题?
谢谢!
2 个回答
我之前看文档的时候理解错了。load_dynamic_engine() 这个函数应该在 Engine 模块里。
我改了命令,现在出现了不同的错误:
Engine.load_dynamic_engine("dynamic","/usr/local/ssl/lib/engines/engine_pkcs11.so")
错误信息是:坏的引擎ID
Engine.load_dynamic_engine("dynamic","/usr/local/ssl/lib/engines/engine_pkcs11.so")
在文件 "/usr/local/lib/python2.4/site-packages/M2Crypto/Engine.py" 的第 92 行,调用 load_dynamic_engine 时出错:
e.ctrl_cmd_string("LOAD", None)
在文件 "/usr/local/lib/python2.4/site-packages/M2Crypto/Engine.py" 的第 38 行,调用 ctrl_cmd_string 时出错:
raise EngineError(Err.get_error())
M2Crypto.Engine.EngineError: 23541:错误:260B606D:引擎例程:DYNAMIC_LOAD:初始化失败:eng_dyn.c:521:
有人知道这是什么意思吗?
我自己没有用过Engine模块,所以不能给你确切的答案。不过,你可以看看这个test_engine.py模块,里面有一些提示。我猜,要加载OpenSSL提供的引擎,你应该使用load_dynamic()
或load_openssl()
,而不是那种形式的load_dynamic_engine()
。你可能只有在加载第三方模块时才需要用到load_dynamic_engine()
。