JavaのXML署名でSignatureタグの扱いについてメモ。
Signatureタグに接頭辞「dsig」を付与したい場合
createXml.java
// 署名コンテキストの作成
// setDefaultNamespacePrefixでSignatureタグ(子要素もすべて)に接頭辞をつける
DOMSignContext dsc = new DOMSignContext(privateKey, document.getDocumentElement());
dsc.setDefaultNamespacePrefix("dsig");
SignatureタグにIDを付与したい場合
createXml.java
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
(中略)
// 署名する.
// newXMLSignatureの第4引数にIDをセット
XMLSignature signature = fac.newXMLSignature(si, ki, null, "a", null);
signature.sign(dsc);
参考サイト(英語)
How to add namespace while signing XML file using javax.xml.crypto.dsig.*?
add attribute to signature xml in java