5
客戶端應用程序必須從Windows證書存儲區訪問證書。搜索 輸入是X500字符串格式的主題名稱,如下所示。需要幫助以使用CertFindCertificateInStore()按主題名稱(X500格式,CERT_X500_NAME_STR)查找證書?
"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指針。我一直在調試,但無法找出這裏出了什麼問題。
任何建議將會非常有幫助。
什麼店,您在搜索您的證書?即hStore USER或MACHINE? – Raj 2013-03-26 14:09:36
我在USER商店中搜索。 – Sreekanth 2013-03-29 06:15:23