gpt4 book ai didi

windows - 需要帮助使用 CertFindCertificateInStore() 按主题名称(X500 格式,CERT_X500_NAME_STR)查找证书?

转载 作者:可可西里 更新时间:2023-11-01 13:23:57 25 4
gpt4 key购买 nike

客户端应用程序必须从 Windows 证书库访问证书。搜索输入是 X500 字符串格式的主题名称,如下所示。

"C=CH, S=Aargau, L=Baden, O=Test, OU=FF, CN= Test Root"

需要精确匹配(不是使用 CERT_FIND_SUBJECT_STR 的子字符串匹配)。为此,我执行以下操作

CERT_NAME_BLOB subjectname = {0};

/*convert the input X500 string to encoded subject name*/
bRet = CertStrToNameA(X509_ASN_ENCODING, "C=CH, S=Aargau, L=Baden, O=Test, OU=S1, CN= Test Root", CERT_X500_NAME_STR, NULL, NULL, &size, NULL);
if(TRUE == bRet)
{
subjectname.pbData = (BYTE*)malloc(size);
subjectname.cbData = size;

bRet = CertStrToNameA(X509_ASN_ENCODING , "C=CH, S=Aargau, L=Baden, O=Test, OU=S1, CN=Test Root", CERT_X500_NAME_STR, NULL, subjectname.pbData, &subjectname.cbData, NULL);
if(TRUE == bRet)
{
capiCertificate = CertFindCertificateInStore(hStore, X509_ASN_ENCODING, 0, CERT_FIND_SUBJECT_NAME, &subjectname, NULL);
if (NULL == capiCertificate)
{
errorcode = GetLastError();
ret = CA_CERT_NOT_FOUND;
}
}
}

问题是 CertFindCertificateInStore 总是返回 NULL 指针。我一直在调试,但找不到这里出了什么问题。

任何建议都会很有帮助。

最佳答案

如果有人正在寻找这个问题的答案,我会发布我是如何做到的,以防它有用

static PCCERT_CONTEXT
FindCertificate(
const HCERTSTORE hStore,
const char* CertSearchString)
{
PCCERT_CONTEXT capiCertificate = NULL;
DWORD dType = CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG;
char certname [MAX_SIZE_CERT_NAME] = {0};

for(;;)
{
capiCertificate = CertEnumCertificatesInStore(hStore, capiCertificate);
if (NULL == capiCertificate)
{
break;
}

if (FALSE ==
CertGetNameStringA(capiCertificate, CERT_NAME_RDN_TYPE,
0, &dType, certname, MAX_SIZE_CERT_NAME))
{
CertFreeCertificateContext(capiCertificate);
capiCertificate = NULL;
break;
}

if ((0 == strncmp(certname, CertSearchString, MAX_SIZE_CERT_NAME)) &&
(capiCertificate->dwCertEncodingType == X509_ASN_ENCODING))
{
break;
}
}
return capiCertificate;
}

关于windows - 需要帮助使用 CertFindCertificateInStore() 按主题名称(X500 格式,CERT_X500_NAME_STR)查找证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15616396/

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