M2Crypto为ECDSA / ECDH提供EC支持。我安装了OpenSSL 0.9.8i,其中包含对EC的支持。但是当我运行“从M2Crypto导入EC,BIO”时,我收到错误说EC_init()失败。所以我添加了调试来打印m2.OPENSSL_VERSION_TEXT值。它被打印为“OpenSSL 0.9.7 2003年2月19日”。此版本的OpenSSL不支持EC。
我尝试了“python setup.py build build_ext --openssl =”new_path,其中安装了OpenSSL 0.9.8i“。虽然M2Crypto再次构建”Python setup.py install“,我仍然看到它指向”旧版本of OpenSSL“。
有关如何成功使M2Crypto使用0.9.8i的任何指针都将非常有用。
答案 0 :(得分:2)
一些Linux发行版,例如Fedora和Redhat,由于专利问题而禁用了EC。
如果您自己构建OpenSSL,除了--openssl: - library-dirs和--include-dirs之外,您还可能需要为build_ext指定一些选项。例如,参见钱德勒的m2crypto Makefile。此外,M2Crypto FAQ也有答案。
答案 1 :(得分:0)
如果将new_path添加到/etc/ld.so.conf的顶部,可能会查找共享库libssl.so和libcrypto.so并在/ usr / lib中查找旧库,以便首先搜索它工作。但这可能会破坏其他OpenSSL应用程序对旧OpenSSL的期望。
答案 2 :(得分:0)
请在https://gitlab.com/m2crypto/m2crypto/issues/new和您的操作系统,Python版本,系统上所有OpenSSL库的位置和版本,编译器版本上提交问题报告,并附上完整标准输出python setup.py clean build install
命令的/ stderr。谢谢。