XML Advanced Electronic Signaturesを勉強しています。
「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 The Reference Processing Model )から一部を抜粋したものです。
URI デリファレンスまたは後続の変換の結果のデータ型は、オクテット ストリームまたは XPath ノード セットのいずれかです。(...)
この仕様では、「同じドキュメント」参照は、ハッシュ記号 (「#」) の後にフラグメントが続くか、または空の URI (...) で構成される URI 参照として定義されます。
URI 参照がそのような「同じドキュメント」参照でない限り、URI 参照の逆参照の結果はオクテット ストリームでなければなりません。特に、URI によって識別される XML ドキュメントは、URI が同一ドキュメント参照でない限り、または XML 解析を必要とする変換が適用されない限り、署名アプリケーションによって解析されません。
次の例は、URI 属性が何を識別し、どのように逆参照されるかを示しています。
URI="http://example.com/bar.xml"
オクテットを識別します (...)URI="http://example.com/bar.xml#chapter1"
オクテット ストリームとして提供される外部 XML リソース (...) の ID 属性値「chapter1」を持つ要素を識別します。(...)URI=""
ノードセットを識別します (...)URI="#chapter1"
(...) を含むノードセットを識別します
質問。
これらの参照について:
<ds:Reference Id="myId" URI="http://fakefile.xml">
...
(empty transform list)
...
</ds:Reference>
結果 1#: ( <file> ... childs ... <file>
)。Digest Transform 適用なし
<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
)。Digest Transform 適用なし
<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/>
) Digest Transform を適用しません。これは解析する有効な XML ファイルではありません。ルートが 1 つではありません。ただし、fakefile.xml コンテキストでは「ノード セット」にすることができます。
結果 (1#、2#、および 3#) は「オクテット ストリーム」ですか?
理由: URI 参照がそのような「同じドキュメント」参照でない限り、URI 参照の逆参照の結果はオクテット ストリームである必要があります。
それとも、XML Advanced Electronic Signatures が正規化するために必要な「XML ノード セット」ですか?
理由: (...) 特に、URI によって識別される XML ドキュメントは、URI が同一ドキュメント参照でない限り、または XML 解析を必要とする変換が適用されない限り、署名アプリケーションによって解析されません。
または (XML 解析を必要とする変換が適用されない限り) は参照コンテキストでのみ有効で、結果はオクテット ストリームですか?
記事は大歓迎です。