【发布时间】:2014-05-25 03:00:33
【问题描述】:
我正在尝试验证用
签名的 xml<CanonicalizationMethod Algorithm="http://www.w3.org/TR/1999/WD-xml-c14n-19991115"/>
但我得到一个例外:
javax.xml.crypto.MarshalException: java.security.NoSuchAlgorithmException: no such algorithm: http://www.w3.org/TR/1999/WD-xml-c14n-19991115 for provider XMLDSig
我不喜欢更改 xml 输入的选项。看起来实现一些自定义规范化方法或强制 java 使用其他方法要好得多,但我不知道该怎么做。
final NodeList signatureNodeList = document.getElementsByTagName(SIGNATURE_TAG_NAME);
if (signatureNodeList.getLength() == 0)
return false;
for(int i = 0; i < signatureNodeList.getLength(); i++){
final DOMValidateContext validateContext = new DOMValidateContext(
new KeyValueKeySelector(), signatureNodeList.item(i));
final XMLSignature signature = xmlSignatureFactory.unmarshalXMLSignature(
validateContext);
if(!signature.validate(validateContext))
return false;
}
【问题讨论】:
标签: java xml digital-signature xml-dsig