Я хочу создать файл, содержащий несколько независимых подписей, ссылающихся на одни и те же данные. Я хочу, чтобы данные хранились в выходном XML-файле как родственные элементы ds:Signature
, как показано ниже (только с несколькими ds:Signature
элементами):
<?xml version="1.0" encoding="UTF-8"?>
<internally-detached>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#data">
<ds:DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue/>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue/>
</ds:Signature>
<document Id="data">
<title>title</title>
<author>writer</author>
<date>today</date>
<content>
<para>First paragraph</para>
<para>Second paragraph</para>
</content>
</document>
</internally-detached>
Источник: https://msdn.microsoft.com/en-us/library/ms759193(v=vs.85).aspx (мне известно, что на сайте не упоминается стандарт XAdES).
Я попытался применить это к действительной охватывающей подписи XAdES и поместить указанный узел ds:Object
за пределы элемента ds:Signature
, но программа проверки возвращает ошибку (указанный узел не найден), и модуль проверки xades4j не работает после обнаружения тега </internally-detached>
.
Возможна ли внутренняя отделенная подпись с помощью XAdES? Если да, как я могу этого добиться?
Я знаю, что несколько подписей возможны, когда данные хранятся в отдельном файле: элемент SignedProperties каждой подписи должен содержать SignedDataObjectProperties с ObjectReference, а URI в элементе Reference SignedInfo должен указывать на файл.