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引擎生成共享密钥的例子吗?