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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Друнвало-Е  
#1 Оставлено : 15 февраля 2025 г. 18:57:59(UTC)
Друнвало-Е

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

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

Доброго времени суток!
Возникла задача: необходимо подписать XML-файл двумя подписями ЭП в Javascript (подписи ставит исполнитель на локальном компьютере, затем заказчик свою подпись на своем компьютере, причем со своей резолюцией).
Нашли подходящий пример в КриптоПро ЭЦП SDK - XML с использованием шаблона документа:
(https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-sign-xml-template).
При подписании одной подписью (исполнитель) не возникло вопросов при реализации:
заводим в шаблоне подписываемый тэг, проверяем готовый XML-документ на внешнем сайте (например, https://dss.cryptopro.ru/verify/#/signature) - все ОК!
А далее необходимо предоставить файл заказчику, так чтобы в отдельный тэг он занес резолюцию (принято/не принято) и подписал второй ЭП.
Вопрос: как реализовать вторую подпись?
В SDK приведен пример "Добавление второй (параллельной) подписи к подписанному сообщению" (https://docs.cryptopro.ru/cades/plugin/plugin-samples/plugin-samples-sign-empty-content) - это то, что надо использовать?
Но что прочитать из файла после первой подписи: весь файл, подписываемый тэг с подписью? Так, чтобы потом можно было проверить внешним валидатором подписей...
Сориентируйте, коллеги, пожалуйста.
Offline Андрей *  
#2 Оставлено : 15 февраля 2025 г. 19:06:34(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,504
Мужчина
Российская Федерация

Сказал «Спасибо»: 554 раз
Поблагодарили: 2250 раз в 1756 постах
Здравствуйте.

А принципиально XMLDSIG\XAdES использовать?

В примере - это про CAdES CMS, никакого отношения к xml не имеет, можно любые файлы подписывать.

Итого, если CMS:
xml + 2 sig, отсоединенная ЭП (или 1 sig, внутри две ЭП\сертификаты подписантов)

Техническую поддержку оказываем тут
Наша база знаний
Offline Друнвало-Е  
#3 Оставлено : 17 февраля 2025 г. 13:55:13(UTC)
Друнвало-Е

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

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

Автор: Андрей * Перейти к цитате
Здравствуйте.
А принципиально XMLDSIG\XAdES использовать? ...

Спасибо за оперативный отклик, но хотелось бы "добить" рассматриваемый SDK (если не получится, то придется искать альтернативу...).
В продолжении работ при использовании указанного в теме XML-шаблона:
полагаем использовать следующий подход:
1) При первом подписании использовали код из примера SDK и сформировали в конечном XML фрагменты:
<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns="urn:envelope">
<doc xml:id="doc_id">
...
</doc>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
...
<Reference URI="#doc_id">
...
</Signature>
</Envelope>

, где #doc_id - ссылка на подписываемый элемент (в тэге <doc>).

2) При втором подписании воспользуемся тем же шаблоном (включив в шаблон первую подпись уже готовую), но укажем во втором параметре (XPath) метода ISignedXML::Sign XPath-запрос для поиска элементов, в которых следует создать вторую подпись, например, так (как приведено в документации SDK):
...
let sTag = "//[local-name()='Signature2' and namespace-uri()='http://www.w3.org/2000/09/xmldsig#' and (count([local-name()='SignatureValue'])=0 or *[local-name()='SignatureValue']='')]]";
sSignedMessage = yield oSignedXML.Sign(oSigner, sTag);
...
В шаблоне, укажем:
<Signature2 xmlns="http://www.w3.org/2000/09/xmldsig#">
...
<Reference URI="#doc_id">
...
</Signature2>

, полагая, что в этом месте будет размещена вторая подпись.
Однако при выполнении получаем ошибку при вызове Sign(oSigner, sTag):
Не удалось выполнить разбор запрошенных данных XML (0x800705B9)
Правильно действуем?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.