Мы получили набор тестовых сертификатов на смарт-картах для разработки решения, которое требует подписи 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, имеет этот флаг only , а не, например, флаг DigitalSignature, который я проверяю выше. Удивляет ли это кого-то, кроме меня, как-то странно? Другими словами, мне говорят подписать сертификатом, для которого (кажется, не) установлен флаг использования DigitalSignature. Это нормальная процедура? Есть комментарии?
Спасибо.