快速提问:如何验证我从命令行编写的自定义 openSSL 引擎的功能?
现在我正在关注这个很棒的教程,并且能够使用我的测试程序(源代码在这里,测试程序位于 test/wssha256engine_test.c)成功地运行引擎(它返回一个全为 2 的摘要值)。
brett@wintermute:~/openssl_ws/wssha256engine$ make test
make[1]: Entering directory
/home/brett/openssl_ws/wssha256engine/test
make[1]: '../bin/test' is up to date.
make[1]: Leaving directory
/home/brett/openssl_ws/wssha256engine/test
brett@wintermute:~/openssl_ws/wssha256engine$ bin/test
Engine Loaded...
Initializing wssha256 engine...
*TEST: Successfuly initialized engine [A test engine for the ws sha256 hardware encryption module, on the Xilinx ZYNQ7000]
init result = 1
Digest NID=672 requested
SHA256 algorithm context initialized
*TEST: Digest INIT 1
SHA256 update
*TEST: Digest Update 1
SHA256 final: sizeof(EVP_MD)= 120
SHA256 cleanup
*TEST: Digest Final 1 Digest size:32
22222222222222222222222222222222
但是,由于某些原因,我还想使用 openssl 命令行界面来练习我刚刚编写的引擎,并让它像在其他教程中一样计算随机字符串的摘要,只使用 sha256 而不是 md5。
但是当我尝试这样做时,引擎不会加载并导致错误告诉我我的摘要的 NID 不存在,而是使用标准算法对字符串进行哈希处理:
brett@wintermute:~/openssl_ws/wssha256engine$ echo "Hello" | openssl dgst -engine /home/brett/Thesis/openssl_ws/wssha256engine/bin/libwssha256engine.so -sha256
ERROR: Digest is empty! (NID = 0)
engine "wssha256" set.
(stdin)= 66a045b452102c59d840ec097d59d9467e13a3f34f6494e539ffd32c1bb35f18
为什么我不能在命令行上使用我的引擎,但我可以创建一个 C 程序来加载它?以及如何使用我的引擎从命令行计算摘要?
注意:我可以从命令行加载引擎,只是不使用它。