| ||||
| ||||
Проблема в том что некоторые сертификаты находятся, а некоторые нет. Разницу в сертификатах нашел. Она заключается в том, что те сертификаты которые не находятся имеют название организации вида: ООО ''test''. Вот код store=(LPCSTR) NullTerminate(&parm->p[2].val); len = MultiByteToWideChar(CP_ACP,0, store, -1, NULL,0); wstore = (LPWSTR)malloc(len*sizeof(WCHAR)); if(MultiByteToWideChar(CP_ACP,0, store, -1, wstore,len) < len) StructPoiska.SerialNumber.cbData=(DWORD)parm->p[0].val.ev_length; StructPoiska.SerialNumber.pbData=(BYTE *)_HandToPtr(parm->p[0].val.ev_handle); Isdatel_string=(LPCTSTR)NullTerminate(&parm->p[1].val); ret=CertStrToName(X509_ASN_ENCODING,Isdatel_string,CERT_X500_NAME_STR,NULL,NULL,&StructPoiska.Issuer.cbData,NULL); StructPoiska.Issuer.pbData=(BYTE *)malloc((int)StructPoiska.Issuer.cbData); ret=CertStrToName(X509_ASN_ENCODING,Isdatel_string,CERT_X500_NAME_STR,NULL,StructPoiska.Issuer.pbData,&StructPoiska.Issuer.cbData,NULL); hCertStore = CertOpenStore( CERT_STORE_PROV_SYSTEM, 0, 0, CERT_STORE_OPEN_EXISTING_FLAG| CERT_SYSTEM_STORE_CURRENT_USER, (LPVOID)wstore ); if(!(certif=CertFindCertificateInStore(hCertStore,X509_ASN_ENCODING,NULL,CERT_FIND_SUBJECT_CERT,&StructPoiska,NULL))) | ||||
Ответы: | ||||
| ||||
В названии не двойные кавычки а две одинарные | ||||
| ||||
Поэкспериментировал и пришел к следующему. Перевожу имя издателя в строку (CertNameToStr). Потом пытаюсь из строки опять получить имя издателя (CertStrToName). Вот тут и происходит глюк, имена не совпадают. Происходит это только с одним сертификатом. | ||||
| ||||
А в чем отличие? | ||||