(2023-08-21 19:24:37 отредактировано bpipe)

Ошибка в Рутокен ЭЦП 3.0 Java SunPKCS11 генерация ключевой пары EC

Пытаюсь работать с ECDSA в Рутокен ЭЦП 3.0 в Java 20 через PKCS#11 Sun provider.
Успешно проинициализировал провайдер:

            var prototype = Security.getProvider("SunPKCS11");
            var ruTokenProvider = prototype.configure(cfgFile);

        for (var item : ruTokenProvider .getServices()) {
            System.out.println(item.getAlgorithm() + " : " + item.getType());
        }

В списке сервисов вижу: "EC : KeyPairGenerator"

Пытаюсь им воспользоваться для генерации ключевой пары:

var keygen = KeyPairGenerator.getInstance("EC", ruTokenProvider); //На этой строчки возвращается ошибка

Получаю ошибку:

java.security.InvalidParameterException: No EC parameters available for key size 257 bits
 at jdk.crypto.cryptoki/sun.security.pkcs11.P11KeyPairGenerator.initialize(P11KeyPairGenerator.java:160)
 at jdk.crypto.cryptoki/sun.security.pkcs11.P11KeyPairGenerator.(P11KeyPairGenerator.java:144)
 at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11$P11Service.newInstance0(SunPKCS11.java:1287)
 at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11$P11Service.newInstance(SunPKCS11.java:1254)
 at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
 at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:218)
 at java.base/java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:341)

Немного удивляет что Java сразу вызывает initialize, который я собирался вызывать дальше сам кодом:

keygen.initialize(new ECGenParameterSpec("secp256r1"));

Но тем не менее, так происходит, посмотрел исходники JDK
https://github.com/openjdk/jdk/blob/mas … rator.java

Прошелся под отладчиком по коду создания KeyPairGenerator, явно ошибка в Рутокене, он сообщает диапазон ключа от 257 до 257 бит, такое в Java никогда не заработает такого размера ключа нет, есть 256.
https://forum.rutoken.ru/uploads/images/2023/08/70e0eaabb598b54b628f3f8f15073864.png


Что делать?

Re: Ошибка в Рутокен ЭЦП 3.0 Java SunPKCS11 генерация ключевой пары EC

bpipeхм, добрый день! Похоже на ошибку в нашей библиотеке, я передал информацию разработчикам, как изучим проблему – вернусь с обратной связью. Спасибо, что связались с нами.

Re: Ошибка в Рутокен ЭЦП 3.0 Java SunPKCS11 генерация ключевой пары EC

bpipe, добрый день! ошибку подтверждаем, поведение будет исправлено в ближайшей версии rtpkcs11ecp, выход которой ожидаем в начале осени.

Re: Ошибка в Рутокен ЭЦП 3.0 Java SunPKCS11 генерация ключевой пары EC

bpipe, сообщаем, что но вышла новая сборка rtpkcs11ecp с исправлением ошибки: https://www.rutoken.ru/support/release/pkcs.html