从 Java 8 迁移到 Java 17 时,包 sun.security.pkcs10 不可见,包 sun.security.x509 不可见

问题描述 投票:0回答:1

将我的应用程序从 Java 8 迁移到 Java 17 时,我遇到错误

包 sun.security.pkcs10 不可见包 sun.security.x509 不可见

以下是代码:

@SuppressWarnings("restriction")
private static byte[] encodeAndSignRequest(KeyPair keyPair, Signature signature,
        X500Principal principal) throws Exception {
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();`enter code here`
    PrintStream printStream = new PrintStream(outStream, true, StandardCharsets.UTF_8.name());
    sun.security.pkcs10.PKCS10 pkcs10 = new sun.security.pkcs10.PKCS10(keyPair.getPublic());
    pkcs10.encodeAndSign(sun.security.x509.X500Name.asX500Name(principal), signature);
    pkcs10.print(printStream);
    return outStream.toByteArray();
}

由于它正在获取公钥并尝试基于 Java 17 中不存在的 PKCS10 对该密钥进行编码,因此上述方法会抛出异常,因为 PKCS 在 Java 17 中被降级并删除。这里应该使用什么来解决这个问题吗?

java java-8 java-17
1个回答
-3
投票

BouncyCastle 具有各种支持 PKCS10 的类。有关示例,请参阅这个问题。您需要稍微重写一下代码,他们没有复制

sun.security.*
API。

© www.soinside.com 2019 - 2024. All rights reserved.