【问题标题】:BIO_new_mem_buf failed to create EVP_PKEY Key``BIO_new_mem_buf 未能创建 EVP_PKEY 密钥``
【发布时间】:2015-12-21 16:45:50
【问题描述】:

我需要创建一个包含私钥的 EVP_PKEY 密钥。 最初,PEM 格式的私钥存储在变量 pKey 中。

现在我正在尝试使用 BIO 内存创建 EVP_PKEY 密钥。

 EVP_PKEY *privkey;
 BIO *mem;
 mem = BIO_new_mem_buf(pKey, -1); 
 privkey = PEM_read_bio_PrivateKey(mem, NULL, NULL, 0);

为什么 PEM_read_bio_PrivateKey 返回 NULL?

 pKey contains valid Key bytes in PEM format. 

PEM_read_bio_PrivateKey() 失败的可能原因是什么?

【问题讨论】:

  • 您的 pKey 的每一行是否以\r\n 结尾?这是 PEM_read 函数所必需的。
  • ERR_print_errors() 可能会提供更多信息。

标签: c openssl private-key


【解决方案1】:

您可能有一个加密的 pKey 并且缺少密码和/或您没有调用 OpenSSL_add_all_algorithms(); 来初始化 EVP 密码以解密封装的密钥。

【讨论】:

    【解决方案2】:

    这是因为 BIO 位于其内容的末尾,需要重绕 - 请参阅 https://www.openssl.org/docs/manmaster/crypto/BIO_s_mem.html(在错误下)

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多