Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Rima  
#1 Оставлено : 18 декабря 2015 г. 14:13:50(UTC)
Rima

Статус: Участник

Группы: Участники
Зарегистрирован: 14.12.2015(UTC)
Сообщений: 11
Российская Федерация

Добрый день! Подписываю сообщение для СМЭВ следующим образом:

MySignedXml signedXml = new MySignedXml(doc);
signedXml.SigningKey = certificate.PrivateKey;
var reference = new Reference()
reference.Uri = "#body";
reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";

var c14 = new XmlDsigExcC14NTransform();
reference.AddTransform(c14);
signedXml.AddReference(reference);

var keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(certificate));

signedXml.KeyInfo = keyInfo;
signedXml.SignedInfo.CanonicalizationMethod = c14.Algorithm;
signedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";

signedXml.ComputeSignature();
XmlElement xmlDigitalSignature = signedXml.GetXml();

doc.GetElementsByTagName("ds:Signature")[0].PrependChild(doc.ImportNode(xmlDigitalSignature.GetElementsByTagName("SignatureValue")[0], true));
doc.GetElementsByTagName("ds:Signature")[0].PrependChild(doc.ImportNode(xmlDigitalSignature.GetElementsByTagName("SignedInfo")[0], true));
doc.GetElementsByTagName("ds:Signature")[0].PrependChild(doc.ImportNode(xmlDigitalSignature.GetElementsByTagName("KeyInfo")[0], true));

doc.GetElementsByTagName("wsse:BinarySecurityToken")[0].InnerText = Convert.ToBase64String(certificate.RawData);


Без строки doc.GetElementsByTagName("ds:Signature")[0].PrependChild(doc.ImportNode(xmlDigitalSignature.GetElementsByTagName("KeyInfo")[0], true)); выдается ошибка SMEV-100016: При обработке запроса произошла ошибка: Не верный формат раздела Security
Если же оставить эту строку, возвращается: SMEV-100003: При обработке запроса произошла ошибка: Неверная ЭП сообщения.


Опиралась на рекомендации, приведенные в примере https://www.cryptopro.ru...olzovaniem-kriptopro-net
Вижу, что там в процессе проверки подписи фигурирует
XmlNodeList referenceList = signedXml.KeyInfo.GetXml().GetElementsByTagName("Reference", WSSecurityWSSENamespaceUrl);
if (referenceList.Count == 0)
{
throw new XmlException("Не удалось найти ссылку на сертификат");
}
но ссылка как таковая не добавляется в примере...
Возможно, конечно, проблема не в KeyInfo, тогда в чем?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.