使用Sunec提供商的GenerateKeypair时获得运行时例外



我正在尝试通过使用JDK的Sunec提供商来生成ECC密钥对。

这是我的代码:

String name = paceInfo.getDomainName();
KeyPairGenerator kpg = null;
try {
    kpg = KeyPairGenerator.getInstance("EC");
} catch (NoSuchAlgorithmException e) {
    LOG.error("Unsupported Algorithm for KeyPairGenerator : EC - Exception : " + e.getMessage());
    return;
}
ECGenParameterSpec ecps = new ECGenParameterSpec(name);
try {
    kpg.initialize(ecps);
} catch (InvalidAlgorithmParameterException e) {
    LOG.error("KeyPairGenerator initialization failed. ECGenParameterSpec : " + ecps.getName() + " - Exception : " + e.getMessage());
    return;
}
KeyPair kp = kpg.generateKeyPair();

paceInfo.getDomainName()返回一个字符串,其中包含我要使用的指定曲线的名称。在这种情况下," brainpoolp256r1"。

我检查了在调用KeyPairGenerator.getInstance("EC")时选择Sunec提供商,并且提供商支持指定的曲线。

运行此代码时,我会收到以下错误:

Caused by: java.security.InvalidAlgorithmParameterException
at sun.security.ec.ECKeyPairGenerator.generateECKeyPair(Native Method)
at sun.security.ec.ECKeyPairGenerator.generateKeyPair(ECKeyPairGenerator.java:128)

我试图弄清此代码有什么问题。我正在使用Java 8(JDK 8U192(和Eclipse 2018-09。

我做错了吗?如果有人可以提供帮助,这将不胜感激。

谢谢

从Oracle Bugs网站上的Brainpool曲线支撑上添加/修复了Java 11中的Sunec,因此可用于Java 11 。

最新更新