我正在尝试使用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)
);
感谢。
答案 0 :(得分:1)
使用一个验证模式,该模式将使用ID引用注册元素,我可以解决此问题
XMLStructure content = new DOMStructure(doc.getDocumentElement());
XMLObject obj = fac.newXMLObject(Collections.singletonList(content), "KeyInfo", null, null);
现在“ keyInfo”已注册,因此将允许签名。