如何使用 openssl API 解析 CSR 对象

How to parse a CSR object using openssl API

本文关键字:CSR 对象 解析 API 何使用 openssl      更新时间:2023-10-16

我有一个包含CSR文件内容的std::string。 问题是我找不到将此字符串解析为对象的方法。 我已经尝试了这篇文章的答案,但它们仅适用于文件。

我目前正在使用此方法,但它始终返回 NULL。

const unsigned char * certChar = reinterpret_cast<const unsigned char*>(certStr.c_str());
X509* csr = d2i_X509(NULL, &certChar, certStr.size());
if (csr == NULL)
{
std::cout << "Return value was NULL" << std::endl;
}

内存中加载的文件是 .CSR,内容放入 certStr std::string。

使用 ERR_get_error(( 方法,我得到以下错误:错误:0D0680A8:asn1 编码例程:ASN1_CHECK_TLEN:错误的标记

多亏了Botje,我想出了如何让它工作。

BIO* bio = BIO_new_mem_buf(reinterpret_cast<const void*>(certStr.c_str()),certStr.size());
X509_REQ* csr;
PEM_read_bio_X509_REQ(bio, &csr, NULL, NULL);