gpt4 book ai didi

转换 X509_STORE_load_locations() 调用以从内存加载数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:04 26 4
gpt4 key购买 nike

如何转换下面的代码以从内存中加载文件“cabundle.pem”?该代码用于证书验证(Source)

    const char ca_bundlestr[] = "./cabundle.pem";
ret = X509_STORE_load_locations(store, ca_bundlestr, NULL);`

所以我目前所做的是将 cabundle.pem 放入字符串数组中,然后将证书添加到商店,但它不起作用,因为我认为我需要做的是使用 X509_STORE_CTX_trusted_stack 将其添加到商店,但我不知道如何使用 STACK_OF(X509) 我尝试搜索但找不到任何内容。

    const char ca_bundle[] = "-----BEGIN CERTIFICATE-----\n"
"MIIImDCCCD2gAwIBAgIRAMch/W0685E2zrArUB/79kUwCgYIKoZIzj0EAwIwgZIx\n"
"MIIImDCCC...............................................AwIwgZIx\n"
"CzAJBgNVB..........................................0ZXIxEDAOBgNV\n"
"-----END CERTIFICATE-----\n";

BIO *bio;
X509 *cert;

bio = BIO_new(BIO_s_mem());
BIO_puts(bio, ca_bundle);
cert = PEM_read_bio_X509(bio, NULL, NULL, NULL);
X509_STORE_add_cert(store, cert);

那么如何将我的字符串数组 ca_bundle 加载到 STACK_OF(X509) 变量中?或者如果有其他方法可以做到这一点,请告诉我。谢谢

最佳答案

我问的太早了。我刚刚找到了问题的答案。由于 cabundle.pem 包含超过 1 个证书,您需要循环执行并读取下一个证书,然后再次将其添加到商店。您不需要 X509_STORE_CTX_trusted_stack,因为将所有证书添加到商店的方式与调用 X509_STORE_load_locations

的方式相同
while (cert = PEM_read_bio_X509(bio, NULL, NULL, NULL)) {
X509_STORE_add_cert(store, cert);
}

关于转换 X509_STORE_load_locations() 调用以从内存加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47581905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com