0

cades署名(すべての場合)にKeyinfoの参照を配置する必要があります。これは、SignerBES.javaクラスのxades4jプロセス参照のステートメントにあります。

 Map<DataObjectDesc, Reference> referenceMappings = this.dataObjectDescsProcessor.process(
            signedDataObjects,
            signature);

keyinfodataStructureの生成後。

Referencekeyingoオブジェクトへの参照を取得するために、オブジェクトの作成を正確にどこに置くかを提案できますか?

ありがとう、

PS xades4jは、keyinfo要素に署名する方法でオプションで設定できることがわかりますが、1.2に関するこのバグレポート( http://code.google.com/p/xades4j/issues/detail?id=32 )が表示されます。 .0バージョンと1.3.0がこのバグを修正したかどうかわかりません

M。

4

2 に答える 2

3

これがKeyInfoで行った方法です。

SignerBES.java の変更

    this.keyInfoBuilder.buildKeyInfo(signingCertificate, signature);
    /* Add line below */
    signature.getKeyInfo().setId("KeyInfo"); 

Transform を使用して、DataObjectReference を Id = #KeyInfo に定義します。

    DataObjectDesc obj2 = new DataObjectReference("#KeyInfo").withTransform(new ExclusiveCanonicalXMLWithoutComments(""));

署名の結果:

`</ds:Reference>
<ds:Reference Id="xmldsig-12eced92-9bab-4aa4-b38d-a0646c0b57b4-ref1" URI="#KeyInfo">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList=""/></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>6lQav16xHEPBwQANI4gO57OtHxXjmLWa+kJf9gZJRqI=</ds:DigestValue>
</ds:Reference>
`
于 2012-12-13T23:34:13.500 に答える
0

現在、署名証明書に署名できるいくつかの基本的な署名オプションのプロバイダーがあります。xades4j の現在の実装では、証明書への署名を要求すると、KeyInfo 要素全体に実際に署名します。これでは変換を制御できません。そうすべきかどうかはわかりません。

これについて別の問題があったので、私はこれに関する提案を受け入れています。考えられるアプローチの 1 つDataObjectDescは、KeyInfo または署名証明書要素に署名するセマンティクスを持つ新しいタイプの を追加することです。

于 2012-09-07T19:09:51.947 に答える