M2Crypto: load_dynamic_engine()的AttributeError

0 投票
2 回答
652 浏览
提问于 2025-04-15 18:50

我正在使用 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 个回答

0

我之前看文档的时候理解错了。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:

有人知道这是什么意思吗?

0

我自己没有用过Engine模块,所以不能给你确切的答案。不过,你可以看看这个test_engine.py模块,里面有一些提示。我猜,要加载OpenSSL提供的引擎,你应该使用load_dynamic()load_openssl(),而不是那种形式的load_dynamic_engine()。你可能只有在加载第三方模块时才需要用到load_dynamic_engine()

撰写回答