gpt4 book ai didi

java - XMLSignature默认为RSA,如何验证SSL签名的DSA曲线?

转载 作者:行者123 更新时间:2023-12-02 03:53:12 26 4
gpt4 key购买 nike

我正在编写 Java 代码来获取由批准方的 SSL key 签名的规范化 XML 文件。

我能够从文件中获取内容和签名,甚至可以验证签名(如果签名者使用 RSA key )。

但是,如果使用 DSA key 创建 SSL 签名,则 XMLSignature 对象将失败并出现以下错误:

javax.xml.crypto.dsig.XMLSignatureException: java.security.InvalidKeyException: No installed provider supports this key: sun.security.rsa.RSAPublicKeyImpl

我的代码如下:

    SignatureCheck result = new SignatureCheck();
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
dbFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document xml = dBuilder.parse(fileStream);
xml.getDocumentElement().normalize();

// Find Signature element
NodeList nl = xml.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");
if (nl.getLength() == 0) return result;

// Create a DOM XMLSignatureFactory that will be used to unmarshal the
// document containing the XMLSignature
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");

// Create a DOMValidateContext and specify a KeyValue KeySelector
// and document context
DOMValidateContext valContext = new DOMValidateContext(new CertKeySelector(), nl.item(0));

// unmarshal the XMLSignature
XMLSignature signature = fac.unmarshalXMLSignature(valContext);

// Validate the XMLSignature (generated above)
result.isValid = signature.validate(valContext);

最佳答案

事实证明,实际上 XML 签名确实接受这条曲线,我只是比较了错误的证书(ecdsa 证书与 RSA 证书)。

关于java - XMLSignature默认为RSA,如何验证SSL签名的DSA曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56766264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com