Статус: Новичок
Группы: Участники
Зарегистрирован: 11.01.2013(UTC) Сообщений: 3
|
Добрый день, подскажите в чем может быть дело, получаю параметр Issuer из сертификата и перекодирую его функцией CertNameToStr(X509_ASN_ENCODING, &pcInfo->Issuer, CERT_X500_NAME_STR, lpResult, dwLenResult); В результате получается строка: "OID.1.2.643.100.1=1045002007984, OID.1.2.643.3.131.1.1=005009046312, STREET=ул. Ленина д. 1, E=uc@technokad.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО ТЕСТ, OU=Удостоверяющий центр, CN=CA TEST" которую сохраняю. В дальнейшем пытаюсь получить сертификат из хранилища: Код:
CERT_INFO ciFind;
// запись серийного номера
TCHAR* szSerial=L"201c37f3000000003a67";
StringToByte(szSerial, &ciFind.SerialNumber.pbData, &ciFind.SerialNumber.cbData);
// перекодировка издателя szIssuer=L"OID.1.2.643.100.1=1045002007984,...
CertStrToName(X509_ASN_ENCODING, szIssuer, CERT_X500_NAME_STR, NULL, ciFind.Issuer.pbData, &ciFind.Issuer.cbData, NULL);
// поиск сертификата
pCert = CertFindCertificateInStore(hStoreHandle, MY_TYPE, 0, CERT_FIND_SUBJECT_CERT, &ciFind, NULL)
Однако сертификат найти не удается. Побайтовое сравнение показывает, что результат работы CertStrToName не соответствует тому, что подается на вход CertNameToStr. При этом, если использовать сертификат тестового УЦ, в котором издатель "E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO" то кодируется/декодируется корректно, может дело в кириллических символах?
|