我正在尝试使用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
任何指针/提示我在做什么错/遗漏吗?