问题描述
我在以 PEM 格式存储 DH 密钥时遇到了一个愚蠢的问题。这是以 Diffie Hellman 格式生成密钥的工作代码片段,我可以以 PEM 格式存储 DH 参数。但是我在 openSSL 中找不到任何可以以 PEM 格式存储密钥的函数。
DH *privkey = DH_new();
/* Generate the parameters to be used */
DH_generate_parameters_ex(privkey,2048,DH_GENERATOR_2,NULL)
/* Generate the public and private key pair */
DH_generate_key(privkey)
/* Store DH Params in PEM Format */
FILE* fptr = fopen("dhp.pem","w");
PEM_write_DHparams(fptr,privkey);
/* Get PublicKey of Peer To generate Shared Secret ----*/
BIGNUM *pubkeyPeer = NULL;
BN_dec2bn(&pubkeyPeer,BN_bn2dec(GetPubKeyPeer());
/* Generate Shared Secret by getting Public Key of Peer */
unsigned char *secret;
int secret_size;
if (NULL == (secret= (unsigned char *)OPENSSL_malloc(sizeof(unsigned char) * (DH_size(privkey))))) {
printf("Can Not Allocate Memory for Shared Secret ");
}
if (0 > (secret_size = DH_compute_key(secret,pubkeyPeer,privkey))) {
printf("Shared Secret Generation Failure ");
}
/* DUMP Shared Secret ---*/
BIO_dump_fp(stdout,(const char *)secret,secret_size);
这一切都很好,但我需要以 PEM 格式与 Peer 共享我的公钥。是否有一些函数可以将我的 DH 公钥转换为 PEM 格式?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)