OpenSSL PEM_read_bio_X509_AUX返回“错误:0906D06C:PEM例程:PEM_read_bio:无起始行”

时间:2019-07-11 11:53:41

标签: c++ lua openssl

我正在尝试使用OpenSSL API解码证书,但出现错误 '错误:0906D06C:PEM例程:PEM_read_bio:无起始行'

我正在从C ++代码调用Lua函数(例如,decode(string:pem),将证书作为pem格式的字符串)。 我有这个解码函数的回调,其中使用OpenSSL x509decode, 我读了证书,尝试获取一些字段并将结果推入Lua堆栈。

这是我生成证书的命令

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

将server.crt提供为字符串

cert << "\"-----BEGIN CERTIFICATE-----MIIC9T...-----END CERTIFICATE-----\"";

并将其解码为

const char* PEMtoX509(char* PEMcert, X509** x509cert) {
  BIO* membio = BIO_new(BIO_s_mem());
  if (membio == NULL) return "out of memory";

  auto return_value = BIO_write(membio, PEMcert, static_cast<int>(strlen(PEMcert)));
  if (return_value <= 0) {
    BIO_free(membio);
    return "BIO_write() failed";
  }

  char err_buf[256];
  *x509cert = = PEM_read_bio_X509_AUX(membio, NULL, NULL, NULL);
  if (px509 == NULL) {
    ERR_error_string_n( ERR_peek_error(), err_buf, 256);
    BIO_free(membio);
  }

还检查了BIO_write的值

BIO_write return value=1288

任何指针/提示我在做什么错/遗漏吗?

0 个答案:

没有答案