3
我正在嘗試使用OpenSSL 1.0.0d實現ECDH密鑰交換GOST 34.10-2001。這樣 我加載GOST引擎:OpenSSL gost引擎問題
ENGINE * e = ENGINE_by_id("gost");
if(!e)
{
e = ENGINE_by_id("dynamic");
if (!e)
{
ENGINE_load_dynamic();
e = ENGINE_by_id("dynamic");
}
if (e && (!ENGINE_ctrl_cmd_string(e, "SO_PATH", "gost", 0) || !ENGINE_ctrl_cmd_string(e, "LOAD", NULL, 0)))
return 1;
}
if(!ENGINE_init(e))
return 1;
ENGINE_set_default(e, ENGINE_METHOD_ALL);
OpenSSL_add_all_algorithms();
此時GOST發動機被加載並工作正常(我是這麼認爲的)。我用哈希和加密算法做了一些測試。
但是當我試圖執行ECDH(通過導入另一面的公鑰生成共享密鑰)時,我得到不正確的結果(共享密鑰與另一端不同)。
我檢查了a,b,p,q,x,y參數,檢查了代碼流,但無法弄清楚什麼是錯的。
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD94
a6
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD97
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C611070995AD10045841B09B761B893
1
8D91E471E0989CDA27DF505A453F2B7635294F2DDF23E3B122ACC99C9E9F1E14
有一兩件事:VKO 34.10-2001算法,OpenSSL的\引擎實現\ ccgost \ gost2001_keyx.c(功能VKO_compute_key),但是當我打電話泛型函數ECDH_compute_key它不會導致VKO_compute_key (通過在VKO_compute_key的開始處設置int3來檢查)。
我誤解了一些東西嗎?或者可以有人展示一個使用openssl的gost引擎生成共享密鑰的例子嗎?