9

我编译了带有cryptodev支持(即硬件加速)的OpenSSL,但不幸的是默认引擎仍然是软件。

time openssl speed -evp aes-128-cbc -engine cryptodev

产生“正确”的数字,但 ProFTP(也使用 OpenSSL)在使用时不会显示任何性能提升(FTP Secure,FTPS,无论您如何称呼它)。

该引擎支持 AES-128、AES-192、RC4、SHA-1、DES、Triple-DES 和其他一些。

我的/etc/ssl/openssl.cnf样子是这样的:

#...
# a lot of generic stuff...
#...

[engine_section]
cryptodev = cryptodev_section

[cryptodev_section]
default_algorithms = ALL

我查看了代码,但他们通过定义、重新定义、取消定义以及与原型相结合来做令人讨厌的事情,这使得追踪变得很痛苦......

如果以上是正确的,当用户创建 CTX_SSL 或类似时,调用什么例程来初始化引擎?

4

1 回答 1

2

根据OpenSSL 的 config(5):“命令 default_algorithms 设置 ENGINE 将使用函数 ENGINE_set_default_string() 提供的默认算法”。我不相信“ALL”是一个有效的引擎。您可以尝试指定engine_idto default_algorithms


如果您在源代码中执行此操作,请尝试调用:

ENGINE_load_builtin_engines();

其次是

ENGINE_register_all_complete();

如果您有ENGINE*,那么您可以执行以下操作:

ENGINE* eng = ENGINE_by_id("XXX");
ENGINE_set_default(eng, ENGINE_METHOD_ALL);
OpenSSL_add_all_algorithms();

我不知道关于这个主题的任何好的文档,但我没有检查过 Viega、Massier 和 Chandra 的书。我们中的一些人在Libcrypto API的 OpenSSL wiki 讨论页面上讨论了它。

于 2013-10-02T09:56:02.047 回答