【问题标题】:javax.xml.crypto custom CanonicalizationMethod for old specefications旧规范的 javax.xml.crypto 自定义 CanonicalizationMethod
【发布时间】: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


    【解决方案1】:

    这些是 JDK 8 中的 CanonicalizationMethod values defined

    具体来说,您使用的 1999 年工作草案 (http://www.w3.org/TR/1999/WD-xml-c14n-19991115) 不在其中。

    我不喜欢更改 xml 输入的选项。

    通过implementation of XMLDSigRI,您或许可以了解如何创建实现该特定版本的新提供程序。

    但是,我会认真考虑实施过时的草案是否有价值,尤其是在涉及密码学时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多