我有一个签名的xml文档,该文档已由private_key.pfx签名。
现在我有一个从以下开始的public_key.cert文件:
====== BEGIN OF =======
jksbfjkbckcnJKNBCKSJJksncs==
====== END OF==========
现在,我想使用public_key.cer
验证签名的xml文档我该怎么做?
请帮助
答案 0 :(得分:0)
您需要在签名文档中查找<Signature>
元素。您可以使用Java XML数字签名API中的方法来验证签名,例如XMLSignature.validate()
。
如果您查看此文章:Programming With the Java XML Digital Signature API。
验证XML签名的关键步骤。
// Find Signature element. NodeList nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature"); if (nl.getLength() == 0) { throw new Exception("Cannot find Signature element"); } // Create a DOMValidateContext and specify a KeySelector // and document context. DOMValidateContext valContext = new DOMValidateContext (new X509KeySelector(), nl.item(0)); // Unmarshal the XMLSignature. XMLSignature signature = fac.unmarshalXMLSignature(valContext); // Validate the XMLSignature. boolean coreValidity = signature.validate(valContext);
首先,您必须找到您的Signature元素的位置 希望验证。一种方法是使用DOM getElementsByTagNameNS方法如代码示例5所示。第二个 代码块创建一个包含的DOMValidateContext对象 KeySelector对象和对Signature元素的引用。该 KeySelector对象的目的是使用获取公钥 KeyInfo元素中的信息并将其交回以用作 验证密钥。下一节将更多地讨论KeySelectors 详情。最后两行代码解组并验证 签名。如果签名有效,则validate方法返回true 如果无效,则为假。