| ||||
| ||||
Здравствйте... Вот какой вопрос: имеется сертификат с именем "1" созданный на сайте Crypto Pro. Требуется проверить его корректность. Набираю: csptest.exe -rc -chain 1 -issuer Test Получаю: Error status for the chain: No error found for this certificate or chain. Info status for the chain: No information status reported. The Original chain is free. Вообще-то плохо понятно возникла ли ошибка? Корректный сертификат или нет? :о\ Как правильно использовать csptest.exe для проверки корректности сертификатов? P.S. Если бы в samples.zip лежали бат-файлы с примерами использования csptest.exe к вам меньше обращались бы с вопросами... | ||||
Ответы: | ||||
| ||||
Вообще csptest это пример использования функций urownq CryptoAPI и CSP. Функции в файле request.c (опция -rc) показывают возможность: проверки запроса (-rec) проверки сертификата с использованием сертификата издателя (-cert имя -issuer имя) построения и проверки цепочки (-chain). В последнем случае используется только имя владельца сертификата. Имя издателя не используется. Т.е. вызывать нужно: csptest.exe -rc -chain 1 Кроме этого сертификат ищется только в справочнике "личные" (MY) (функция read_cert_from_my) и по критерию любое совпадение введенной строки с подстрокой в имени владельца ret = CertFindCertificateInStore (hCertStore, TYPE_DER, 0, CERT_FIND_SUBJECT_STR, A2W(subject_name), NULL); Так как програма тестовая, мы туда может быть добавили излишне много функциональности и много вывода на экран. Например, при проверки цепочки дополнительно показали как можно определить наличие дополнений в сертификате: ret = get_usage (pCertContext); Поэтому и лишняя информация выводится. В результате проверки функцией CertGetCertificateChain выдается структура, содержащая результаты проверки (список) по каждому элементу в цепочке (CERT_CHAIN_CONTEXT). Мы выводим комбинированный статус проверки всей цепочки, содержащейся в поле pChainContext->TrustStatus.dwErrorStatus. И результат печатаем как в MSDN: dwErrorStatus The following error status codes are defined for certificates and chains. Value Meaning CERT_TRUST_NO_ERROR No error found for this certificate or chain. Второй код проверки - информационный (pChainContext->TrustStatus.dwInfoStatus. Если его нет, печатаем "No information status reported." | ||||