快速問題:如何驗證我從命令行寫入的自定義openSSL引擎的功能?從命令行測試自定義openSSL引擎
現在我與this偉大的教程進行操作,請和我能夠成功地發揮發動機使用我的測試程序(source code here,位於測試/ wssha256engine_test.c測試程序)(返回全2的的摘要值) 。
[email protected]:~/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
[email protected]:~/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命令行界面來鍛鍊我剛寫的引擎,並將其計算摘要一個隨機字符串的像this other tutorial,僅僅使用SHA256,而不是MD5。
但是當我嘗試這樣做,發動機不加載,並導致一個錯誤告訴我,我消化的NID不存在,只是與散列標準算法不是字符串:
[email protected]:~/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程序來加載它?我怎樣才能使用我的引擎從命令行計算摘要?
注:我可以從命令行加載引擎,只是不使用它。
如果我遵循你的最終問題,答案將是你的'shell'不知道你爲了加載它而編寫的C程序加載的初始化openssl環境。據我所知,無法告訴openssl界面使用單獨的引擎。如果你想通過CLI界面使你的引擎可用,那麼你需要實現一個小shell(通過'execv'等)將命令傳遞給你的引擎,或者爲你的引擎提供一個輸入例程,你可以重定向想要的命令。 –
@ DavidC.Rankin我不認爲是這樣。許多教程以我想要的方式使用引擎API – Brett
現在,您變得更有意義了。你的C程序是根據特定的API編寫的。您在說openssl CLI爲您使用的API提供了特定的鉤子,但是當您嘗試使用C程序時,當您嘗試初始化引擎時,會收到'錯誤:摘要爲空!你是否遵守了頁面的**準備**部分的所有**要求?特別是「* OpenSSL引擎存儲在/ usr/lib/engines/*」中? –