来源:chatGPT
#include <iostream>
#include <openssl/pem.h>
#include <openssl/x509.h>
#include <openssl/x509_vfy.h>
int main() {
const char* caCertPem = "-----BEGIN CERTIFICATE-----\n"
"CA certificate data here\n"
"-----END CERTIFICATE-----";
// 创建X509_STORE结构体
X509_STORE* caStore = X509_STORE_new();
if (caStore == nullptr) {
std::cerr << "Failed to create X509_STORE" << std::endl;
return 1;
}
// 将PEM文本读取到BIO中
BIO* bio = BIO_new_mem_buf(caCertPem, -1);
if (bio == nullptr) {
std::cerr << "Failed to create BIO" << std::endl;
X509_STORE_free(caStore);
return 1;
}
// 从BIO中读取X509证书
X509* caCert = PEM_read_bio_X509(bio, nullptr, nullptr, nullptr);
if (caCert == nullptr) {
std::cerr << "Failed to read CA certificate from PEM" << std::endl;
BIO_free(bio);
X509_STORE_free(caStore);
return 1;
}
// 将CA证书添加到X509_STORE中
if (X509_STORE_add_cert(caStore, caCert) != 1) {
std::cerr << "Failed to add CA certificate to X509_STORE" << std::endl;
X509_free(caCert);
BIO_free(bio);
X509_STORE_free(caStore);
return 1;
}
// 清理资源
X509_free(caCert);
BIO_free(bio);
// 在此处可以继续使用X509_STORE对象进行后续操作,如证书验证等
// 释放X509_STORE对象
X509_STORE_free(caStore);
return 0;
}