如何使用 openssl API 解析 CSR 对象
How to parse a CSR object using openssl API
我有一个 std::string,其中包含 CSR 文件的内容。
问题是我找不到将此字符串解析为对象的方法。
我已经尝试过此 post 的答案,但它们仅适用于文件。
我目前正在使用这种方法,但它总是 returns 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() 方法,我得到以下错误:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
感谢 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);
我有一个 std::string,其中包含 CSR 文件的内容。 问题是我找不到将此字符串解析为对象的方法。 我已经尝试过此 post 的答案,但它们仅适用于文件。
我目前正在使用这种方法,但它总是 returns 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() 方法,我得到以下错误:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
感谢 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);