gpt4 book ai didi

java - 对于非证书输入,CertificateFactory 返回 null

转载 作者:行者123 更新时间:2023-11-30 07:06:41 25 4
gpt4 key购买 nike

我使用 java.security.cert.CertificateFactory 生成(从 InputStream),然后验证公共(public)证书文件。当我使用正确的证书文件(例如 cert.cert)时,我会获得正确的证书并可以生成指纹,使用它与服务器进行通信等。

但是,当我选择绝对不是证书的文件时,例如settings.txt,我有时会得到一个CertificateException,有时它实际上是null 。我找不到对CertificateFactory 的此行为的描述,也找不到某些文件导致generateCertificate 抛出异常而不是返回null 的任何推理。

我的问题代码:

CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
InputStream stream = new ByteArrayInputStream(parameters.getCertificate());
X509Certificate cert = (X509Certificate)certificateFactory.generateCertificate(stream);


最后一行将返回异常,或者 cert 将为空。我的问题是:
当非证书文件作为输入给出时,为什么certificateFactory.generateCertificate(stream) 返回 null?它不应该抛出一个CertificateException吗?

最佳答案

我发现这是一个有趣的问题。我对CertificateFactory.generateCertificate()的阅读文档让我不清楚一种情况,当流位于 EOF 时应该返回什么。我认为它应该产生异常。我相信 null 永远不应该被返回。 java.security.cert.CertificateFactory 类本身只是简单地委托(delegate) generateCertificate()调用内部 spi 类。 OpenJDK8's implementation of this spi class永远不会返回 null。 Oracle 的实现也可能如此。因此,我必须得出结论,您没有使用这些实现之一。

当我检查Bouncycastle provider's implementation时,我看到它在几个地方返回 null,包括达到 EOF 时。 BouncycaSTLe 的实现可能不合规。

关于java - 对于非证书输入,CertificateFactory 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986152/

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