Статус: Новичок
Группы: Участники
Зарегистрирован: 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) - это то, что надо использовать? Но что прочитать из файла после первой подписи: весь файл, подписываемый тэг с подписью? Так, чтобы потом можно было проверить внешним валидатором подписей... Сориентируйте, коллеги, пожалуйста.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,504   Сказал «Спасибо»: 554 раз Поблагодарили: 2250 раз в 1756 постах
|
Здравствуйте.
А принципиально XMLDSIG\XAdES использовать?
В примере - это про CAdES CMS, никакого отношения к xml не имеет, можно любые файлы подписывать.
Итого, если CMS: xml + 2 sig, отсоединенная ЭП (или 1 sig, внутри две ЭП\сертификаты подписантов)
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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)Правильно действуем?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close