15.03.2007 7:38:03Не на ходится сертификат где имя получателя по русски Ответов: 1
Волков
Следующим кодом пытаюсь получить контекст сертификата, все работает нормально если имя владельца на английском языке, а если оно на русском то сертификат не находится. В чем может быть дело? Заранее благодарен
HCRYPTPROV hCertProv;
if (!CryptAcquireContext(
&hCertProv,
NULL,
NULL,
75,
CRYPT_VERIFYCONTEXT))
{
printf("Error CryptAcquireContext....");
getch();
return;
}
HCERTSTORE hStoreHandle;
if ( !( hStoreHandle = CertOpenStore(
CERT_STORE_PROV_SYSTEM,
0,
NULL,
CERT_SYSTEM_STORE_CURRENT_USER,
//CERT_SYSTEM_STORE_LOCAL_MACHINE,
L"MY")))
{
printf("Can't open store MY.");
return;
}
PCCERT_CONTEXT pSignerCert;

AnsiString Recerient = "Сидоро";
wchar_t buf[50];
swprintf(buf,L"%S",Recepient);
const void *signer = buf;
pSignerCert = CertFindCertificateInStore(
hStoreHandle,
MY_ENCODING_TYPE,
0,
CERT_FIND_SUBJECT_STR,
signer,
NULL);
if(!pSignerCert)
{
printf( "Certificate isn't found");
return;
}
 
Ответы:
15.03.2007 13:37:55Kirill Sobolev
Посмотрите, чему buf равно перед вызовом CertFindCertificateInStore.