で署名された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;
}