Алгоритмы ECDSA недоступны в Java с jlink - PullRequest
1 голос
/ 07 мая 2020

Я пишу приложение Java 14 , которое должно проверять некоторые подписи с помощью таких алгоритмов, как SHA256withECDSA, SHA384withECDSA и SHA512withECDSA, но я испытываю особый побочный эффект из jlink:

  • при запуске приложения со стандартной средой выполнения JDK / JRE 14 алгоритмы отображаются (SunE C загружен успешно)
  • при запуске приложения с оптимизированной версией среды выполнения JRE с использованием jlink И , включая модуль jdk.crypto.ec, SunE C не загружается вообще, и алгоритмы недоступны

Мне известно о этом билете в системе отслеживания ошибок OpenJDK, но я не могу понять, почему в оптимизированной версии jlink другое поведение.

В папка времени выполнения, созданная jlink, есть также libsunec.so.

Я распечатываю доступные алгоритмы с помощью этого фрагмента SO и получаю следующий результат:

MD2withRSA
MD5andSHA1withRSA
MD5withRSA
NONEwithDSA
NONEwithDSAinP1363Format
RSASSA-PSS
SHA1withDSA
SHA1withDSAinP1363Format
SHA1withRSA
SHA224withDSA
SHA224withDSAinP1363Format
SHA224withRSA
SHA256withDSA
SHA256withDSAinP1363Format
SHA256withRSA
SHA384withRSA
SHA512/224withRSA
SHA512/256withRSA
SHA512withRSA

По тем же и связанным причинам проверка подписанных Jar-файлов с файлами политики не работает.

Может ли кто-нибудь объяснить / указать мне, что мне искать?

EDIT : среда выполнения jlink построена со следующими аргументами:

jlink --strip-debug \
      --strip-native-commands \
      --bind-services \
      --no-header-files \
      --no-man-pages \
      --compress=2 \
      --module-path ${JAVA_HOME}/jmods \
      --add-modules java.desktop,java.smartcardio,java.management,java.sql,java.logging,java.net.http,java.xml.crypto,jdk.crypto.ec \
      --output jlink-runtime

1 Ответ

0 голосов
/ 29 мая 2020

Это официальная ошибка JDK.

В настоящее время нет поддержки для подписанных JAR в пути модуля приложения, которые подписаны сертификатами E C . Причина в том, что путь к модулю сканируется на ранней стадии запуска виртуальной машины, задолго до того, как может выполняться код за пределами java .base. JDK-8215932 отслеживает ту же проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...