【发布时间】:2021-04-27 14:01:03
【问题描述】:
我在以 PEM 格式存储我的 DH 密钥时遇到了一个愚蠢的问题。这是用于生成 Diffie Hellman 格式的密钥的工作代码 sn-p,我可以将 DH 参数存储为 PEM 格式。但是我在 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 格式与对等方共享我的公钥。有什么功能可以将我的 DH 公钥转换为 PEM 格式吗?
【问题讨论】:
-
您不是 using the EVP family 的任何特定原因。 ?只是好奇。
标签: c++ openssl cryptography pem diffie-hellman