我正在尝试生成RSA私钥并以编程方式为其设置密码。
使用以下代码,我可以生成一个没有密码的未加密密钥,没问题:
if (!PEM_write_PrivateKey(priv_f, key_p, NULL, NULL, 0, 0, NULL)) {
fprintf(stderr, "Write private key failed\n");
return -1;
}
但是使用这段代码,我一直得到写私钥失败错误:
if (!PEM_write_PrivateKey(priv_f, key_p, EVP_des_ede3_cbc(), NULL, 0, 0, passphrase)) {
fprintf(stderr, "Write private key failed\n");
return -1;
}
我正在尝试按照手册页here上的代码进行操作。有什么方法可以从错误中获取更多信息吗? Errno总是0.谢谢!
答案 0 :(得分:2)
通过添加以下代码并对PEM_write_PrivateKey参数稍作修改,我得到了它的工作。
void init_openssl(void)
{
if (SSL_library_init()) {
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
ERR_load_crypto_strings();
RAND_load_file(_RAND_FILENAME, _RAND_LOADSIZE);
} else {
exit(EXIT_FAILURE);
}
}
并且
if (!PEM_write_PrivateKey(priv_f, key_p,EVP_aes_256_cbc(),
(unsigned char*)passphrase,(int)strlen(passphrase), NULL, NULL)) {
fprintf(stderr, "Write private key failed\n");
handle_openssl_error();
return -1;
}