Я изучаю расширенные электронные подписи XML .
Для создания «ArchiveTimeStamp» (стр. 58) в Спецификации указано:
Обработайте полученный элемент ds:Reference в соответствии с эталонной моделью обработки XMLDSIG.
Если результатом является набор узлов XML, канонизируйте его. (...)
Эталонная модель обработки завершена:
<ds:Reference Id="myId" URI="http://fakefile.xml">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod/>
<ds:DigestValue/>
</ds:Reference>
Процесс использует "URI=..." и "ds:Transforms" для извлечения данных.
Ниже приведены некоторые части, извлеченные из (4.3.3.2 Эталонная модель обработки ):
Типом данных результата разыменования URI или последующих преобразований является либо поток октетов, либо набор узлов XPath. (...)
В этой спецификации ссылка на тот же документ определяется как ссылка URI, которая состоит из знака решетки ('#'), за которым следует фрагмент, или, альтернативно, состоит из пустого URI (...)
Если URI-Reference не является такой ссылкой на тот же документ, результатом разыменования URI-Reference ДОЛЖЕН быть поток октетов. В частности, документ XML, идентифицированный URI, не анализируется приложением подписи, если URI не является ссылкой на тот же документ или если не применяется преобразование, требующее анализа XML.
В следующих примерах показано, что идентифицирует атрибут URI и как он разыменовывается:
URI="http://example.com/bar.xml"
Идентифицирует октеты (...)URI="http://example.com/bar.xml#chapter1"
Идентифицирует элемент со значением атрибута ID 'chapter1' внешнего ресурса XML (...), предоставленного в виде потока октетов. (...)URI=""
Идентифицирует набор узлов (...)URI="#chapter1"
Идентифицирует набор узлов, содержащий (...)
Вопрос.
Для этих ссылок:
<ds:Reference Id="myId" URI="http://fakefile.xml">
...
(empty transform list)
...
</ds:Reference>
Результат 1#: ( <file> ... childs ... <file>
). Без применения дайджест-преобразования
<ds:Reference Id="myId" URI="http://fakefile.xml">
...
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
...
</ds:Reference>
Результат 2#: (xml with exc-c14n
). Без применения дайджест-преобразования
<ds:Reference Id="myId" URI="http://fakefile.xml">
...
<ds:Transform "fake_Xpath_transform_to_get_all_childs"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
...
</ds:Reference>
Результат 3#: (только дочерние элементы с exc-c14n <child_1/>...<child_x/>
) Без применения преобразования дайджеста. Это недопустимый XML-файл для анализа, не имеет единого корня. Но может быть «набор узлов» в контексте fakefile.xml.
Являются ли результаты (1#, 2# и 3#) "потоком октетов"?
Потому что: Если URI-Reference не является ссылкой на тот же документ, результатом разыменования URI-Reference ДОЛЖЕН быть поток октетов.
Или они являются "набором узлов XML", требуемым расширенными электронными подписями XML для канонизации?
Потому что: (...) В частности, XML-документ, идентифицированный URI, не анализируется приложением подписи, если URI не является ссылкой на тот же документ или если не применяется преобразование, требующее анализа XML.
Или (если не применяется преобразование, требующее синтаксического анализа XML) допустимо только в контексте ссылки, а результаты представляют собой поток октетов?
Статьи приветствуются.