Как получить стандартный диалог Windows для принятия / отклонения цифрового сертификата в C #? - PullRequest
4 голосов
/ 03 декабря 2011

При написании C / S-приложения на C # я проверяю сертификат сервера, к которому я подключаюсь.Поэтому я получаю обратный вызов, где я могу рассмотреть около X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors, чтобы проверить сертификат.Я хочу позволить пользователю принять решение по этому поводу, поэтому подумал об использовании стандартного диалогового окна сертификатов Windows, которое выглядит следующим образом:

Windows standard certificate decision dialog

Как этого добитьсяпредоставленные данные?

Я нашел частичный ответ для показа сертификата.Поэтому я могу использовать этот код:

X509Certificate certificate = ...
X509Certificate2 certenh = new X509Certificate2(certificate);
X509Certificate2UI.DisplayCertificate(certenh);

Но другое сообщение все еще отсутствует.Я мог бы воспроизвести его, но не для каждого языка, и я не знаю, где найти этот символ.В качестве условия для показа этого сообщения я мог бы использовать certenh.Verify();.

Для значка фонового сообщения я могу использовать urlmon.dll в индексах 13, 14 и 15. Там вы найдете значкинапример:

Certificate information Certificate question Certificate warning

Таким образом, я могу создать похожее сообщение, подобное фоновому.Единственная проблема, которая остается, состоит в том, что было бы лучше использовать стандартные языковые фразы для создания сообщения.Но я не нашел ни одной библиотеки, которая бы содержала специфичные для языка строки.

На данный момент я создаю сообщение самостоятельно, используя значение sslPolicyErrors.

...