Java - 具有更多引用的XML数字签名

时间:2017-09-16 09:32:57

标签: java xml reference digital-signature

我正在尝试使用Java创建XML数字签名。 我的代码如下:

"Hello @Bob and @Bob friend"

Output :

"Hello @Bob and friend"

我的问题是,我需要创建带有两个引用的XML数字签名 - 引用Res对象和KeyInfo。在创建了两个引用元素并调用了sign的方法之后,Java给了我这个错误:

XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
// create Reference to Object element
Reference objectRef = fac.newReference(
    "#Res",
    fac.newDigestMethod(DigestMethod.SHA256, null)
);
// create Reference to KeyInfo element
Reference keyInfoRef = fac.newReference(
    "#KeyInfo",
    fac.newDigestMethod(DigestMethod.SHA256, null)
);

感谢。

1 个答案:

答案 0 :(得分:1)

使用一个验证模式,该模式将使用ID引用注册元素,我可以解决此问题

XMLStructure content = new DOMStructure(doc.getDocumentElement());
XMLObject obj = fac.newXMLObject(Collections.singletonList(content), "KeyInfo", null, null);

现在“ keyInfo”已注册,因此将允许签名。