将我的应用程序从 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 中被降级并删除。这里应该使用什么来解决这个问题吗?
BouncyCastle 具有各种支持 PKCS10 的类。有关示例,请参阅这个问题。您需要稍微重写一下代码,他们没有复制
sun.security.*
API。