0

我正在尝试生成一个 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;
}

我正在尝试按照此处手册页上的代码进行操作。有什么办法可以从错误中获取更多信息?Errno 始终为 0。谢谢!

4

1 回答 1

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;
}
于 2013-09-23T13:08:09.037 回答