gpt4 book ai didi

Java ECC Brainpool 支持证书吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:07 28 4
gpt4 key购买 nike

最新版本的 Java 不支持 ECC Brainpool 曲线。当我读取包含 EC Curve Brainpool 的 X509Certificate 时,出现异常。

我发现 Java 不支持带有 Brainpool 曲线的证书。有没有办法自己添加这个支持?

最佳答案

Bouncy CaSTLe 支持这些曲线。诀窍在于 Java 仍然必须了解它们才能找到它们。因此,您不能只添加 Bouncy CaSTLe 提供程序并完成它。您需要明确使用 Bouncy CaSTLe 的 CertificateFactory

如果您只使用 Java CertificateFactory,您将遇到以下异常(您现在可能已经熟悉了):

Exception in thread "main" java.security.cert.CertificateParsingException: java.io.IOException: Unknown named curve: 1.3.36.3.3.2.8.1.1.7

因此请改用以下代码片段/解决方案:

Security.addProvider(new BouncyCastleProvider());
// explicit BC factory required, knows about curve!
CertificateFactory fact = CertificateFactory.getInstance("X509", BouncyCastleProvider.PROVIDER_NAME);
PemReader reader = new PemReader(new FileReader("ecc_certificate.txt"));
PemObject readPemObject = reader.readPemObject();
final byte[] cert = readPemObject.getContent();
Certificate generatedCertificate = fact.generateCertificate(new ByteArrayInputStream(cert));
System.out.println(generatedCertificate);

要获取命名曲线的名称,您需要转到 Bouncy CaSTLe 特定代码(即直接使用 Bouncy 类而不是通过 JCA 使用它们):

ECPublicKey publicKey = (ECPublicKey) generatedCertificate.getPublicKey();
// Bouncy Castle specific class
ECNamedCurveSpec params = (ECNamedCurveSpec) publicKey.getParams();
System.out.println(params.getName());

差点忘了:您需要类路径中的 Bouncy CaSTLe 提供程序 PKIX jar 文件才能执行此操作。

为 Java 下载无限制的加密文件也不会造成任何伤害,尽管此功能可能并不直接需要它(尽管安全总比遗憾好)。对于较新的 Java 版本,这可能不再需要。

关于Java ECC Brainpool 支持证书吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31388538/

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