06.05.2006 12:50:09Не находится сертификат в хранилище Ответов: 3
Dim
Проблема в том что некоторые сертификаты находятся, а некоторые нет. Разницу в сертификатах нашел. Она заключается в том, что те сертификаты которые не находятся имеют название организации вида: ООО ''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)))

 
Ответы:
06.05.2006 12:51:44Dim
В названии не двойные кавычки а две одинарные
06.05.2006 17:25:15dim
Поэкспериментировал и пришел к следующему.
Перевожу имя издателя в строку (CertNameToStr).
Потом пытаюсь из строки опять получить имя издателя (CertStrToName). Вот тут и происходит глюк, имена не совпадают. Происходит это только с одним сертификатом.
10.05.2006 14:42:58Kirill Sobolev
А в чем отличие?