Нам передали набор тестовых сертификатов на смарт-картах для разработки решения, требующего подписи XML-сообщений с использованием PKI. На каждой (физической) смарт-карте хранится два сертификата. Я импортирую их в хранилище сертификатов Windows с помощью программного обеспечения, предоставленного поставщиком смарт-карт, а затем использую код, похожий на следующий, для перебора установленных сертификатов:
foreach (X509Certificate2 x509 in CertStore.Certificates) {
foreach (X509Extension extension in x509.Extensions) {
if (extension.Oid.Value == "one we are interested in") {
X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
if ((ext.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.None) {
// process certs here
Нам было сказано использовать сертификаты с установленным флагом использования ключа NonRepudiation для подписи XML-файлов. Однако сертификат с флагом NonRepudiation имеет этот флаг только, а не, например, флаг DigitalSignature, который я проверял выше. Кому-то, кроме меня, это кажется немного странным? Другими словами, мне говорят подписать с сертификатом, у которого (кажется) не установлен флаг использования DigitalSignature. Это нормальная процедура? Любые комментарии?
Спасибо.