1

xades4j(「テンプレートのように」)を使用して再現する必要があるxades署名の例を受け取りました。

署名の例は次のとおりです (抜粋)。

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-qualifyingproperties-yada-yada">
    <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
        <ds:Reference URI="#xmldsig-signedproperties-yada-yada">
            <ds:Transforms>
                <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
            <ds:DigestValue>yada-yada-yada-yada-yada-yada-yada</ds:DigestValue>
        </ds:Reference>
(...)

そこには属性 Type がないため、この参照が xades に準拠していないことはわかっています。

私の問題は、その参照の変換にあります。xades4j でこのオプションを設定する方法がわかりません。これはできますか?

また、それがここにあるかどうかはわかりません。署名の上部に、正規化方法が1つであると書かれているため、signedpropertiesリファレンスでは、正規化方法が別のものであると書かれているためです...私はこれを正しく読んでいますか?

4

1 に答える 1

1

署名されたプロパティ参照に変換を設定することはできません。これは、次の両方によって動機付けられています。

  1. 必要性が不明 - 署名されているリソース (実際に署名されたプロパティ要素) は実際には xades4j によって生成されるため、外部制御を許可してもあまり意味がありません。
  2. セキュリティ - ライブラリは参照が要素を指していることを確認する必要があるため、任意の変換は許可されませんSignedProperties

おそらく使用できる唯一の変換は正規化ですが、XML-DSIG では、参照解除されたリソースがノードセットである場合、xades4j/santuario が使用するデフォルト アルゴリズムとしてC14Nを使用してダイジェストする前に正規化する必要があることを既に指定しています。あなたの例では、アルゴリズムは同じですが、ダイジェスト生成にコメントノードが含まれているという違いがあります。

2 つの正規化アルゴリズムがあるのは、それらが異なるためです。参照の変換のアルゴリズムが、そのデータ オブジェクトの逆参照の結果に適用されます。一方、一番上のものは、実際の署名入力 (オクテット ストリーム) を取得するためにSignedInfo要素で使用される正規化アルゴリズムを指定します。

于 2014-09-11T21:42:38.310 に答える