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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline lnkz  
#1 Оставлено : 3 апреля 2015 г. 16:49:10(UTC)
lnkz

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.10.2011(UTC)
Сообщений: 4
Откуда: Москва

Используем подпись формата xmldsig, на основе примеров из sdk
Установлен последний КриптоПро .Net SDK х64, КриптоПро .Net и КриптоПро CSP 3.9
При сборке под 3.5 корректно подписывает и корректно проверяет ЭЦП
При сборке проекта под 4-4.5 со ссылками на библиотеки 1.4 корректно подписывает, но на проверке подписи всегда возвращается false, т.е. подпись всегда не валидна.
Лицензии куплены и установлены.

В приложении подписанный файл, подпись которого не валидируется под 4.5, но валидна под 3.5

Отредактировано пользователем 3 апреля 2015 г. 16:50:32(UTC)  | Причина: Не указана

Вложение(я):
test_xmldsig3.xml (4kb) загружен 5 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Максим Коллегин  
#2 Оставлено : 3 апреля 2015 г. 19:59:03(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Странно, не проверяется именно подпись, хэши сходятся.
Может что-то подобное? SignedXml does not properly handle xml namespace attributes
Попробуйте другие трансформы. Вряд ли тут вина КриптоПро .NET.
Знания в базе знаний, поддержка в техподдержке
Offline lnkz  
#3 Оставлено : 6 апреля 2015 г. 11:01:06(UTC)
lnkz

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.10.2011(UTC)
Сообщений: 4
Откуда: Москва

Автор: maxdm Перейти к цитате
Странно, не проверяется именно подпись, хэши сходятся.
Может что-то подобное? SignedXml does not properly handle xml namespace attributes
Попробуйте другие трансформы. Вряд ли тут вина КриптоПро .NET.


Спасибо за наводку. оставлю здесь решение для других.
Действительно проблемы в каноникализации, 3.5 и в 4 и выше они отличаются.
Решение найдено вот здесь stackoverflow


Сам класс
Код:
public class MyXmlDsigC14NTransform: XmlDsigC14NTransform {
  static XmlDocument _document;
  public static XmlDocument document {
    set {
      _document = value;
    }
  }

  public MyXmlDsigC14NTransform() {}
  
  public override void LoadInput(Object obj) {
    int n;
    bool fDefaultNS = true;

    XmlElement element = ((XmlDocument) obj).DocumentElement;

    if (element.Name.Contains("SignedInfo")) {
      XmlNodeList DigestValue = element.GetElementsByTagName("DigestValue", element.NamespaceURI);
      string strHash = DigestValue[0].InnerText;
      XmlNodeList nodeList = _document.GetElementsByTagName(element.Name);

      for (n = 0; n < nodeList.Count; n++) {
        XmlNodeList DigestValue2 = ((XmlElement) nodeList[n]).GetElementsByTagName("DigestValue", ((XmlElement) nodeList[n]).NamespaceURI);
        string strHash2 = DigestValue2[0].InnerText;
        if (strHash == strHash2) break;
      }

      XmlNode node = nodeList[n];

      while (node.ParentNode != null) {
        XmlAttributeCollection attrColl = node.ParentNode.Attributes;
        if (attrColl != null) {
          for (n = 0; n < attrColl.Count; n++) {
            XmlAttribute attr = attrColl[n];
            if (attr.Prefix == "xmlns") {
              element.SetAttribute(attr.Name, attr.Value);
            } else if (attr.Name == "xmlns") {
              if (fDefaultNS) {
                element.SetAttribute(attr.Name, attr.Value);
                fDefaultNS = false;
              }
            }
          }
        }
        node = node.ParentNode;
      }
    }
    base.LoadInput(obj);
  }
}


а как его зарегестрировать есть по первой ссылке.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.