【发布时间】:2013-06-17 17:08:41
【问题描述】:
我正在使用 openssl 构建一个系统。 我们将使用 Diffie Hellman 在各方之间共享信息。
我已经能够使用 openssl 创建一个 DH。 现在我想使用 PEM 格式将公钥发送给客户端,但我找不到任何将 DH 公钥转换为 PEM 格式的函数。
有人知道如何进行这种转换吗?
这里有我用来生成 DH 结构的代码:
BIGNUM * p = NULL, * g = NULL;
//Create DH MOD Group
DH * dh = dh_new_group14();
if (!dh)
puts("DH_new failed");
//Check everything is OK
int codes = 0;
if (!DH_check(dh, &codes))
puts("DH_check failed");
//Generate DH key
if (!DH_generate_key(dh))
puts("DH_generate_key failed");
我还能够构建 ASN1_INTEGER 结构,但我再次找不到任何函数来从该结构生成 PEM。
【问题讨论】:
-
我不知道您为什么要将公钥转换为 PEM,好像我没记错一样,DH 公钥只是一个 BIGNUM (dh->pub_key)?您可以使用 BN_bn2bin() 将其导出为二进制格式(使用 BN_num_bytes() 获取其大小)。
-
我正在尝试构建一个连接到服务器的服务,而服务器要求我将 pub_key 作为用 PEM 编码的 ASN1 结构发送。