Я пишу приложение Java 14, которое должно проверять некоторые подписи с помощью таких алгоритмов, как SHA256withECDSA
, SHA384withECDSA
и SHA512withECDSA
, но я испытываю особый побочный эффект _ 4_:
- при запуске приложения со стандартной средой выполнения JDK / JRE 14 алгоритмы отображаются (SunEC загружен успешно)
- при запуске приложения с оптимизированной версией среды выполнения JRE с использованием jlink И, включая модуль
jdk.crypto.ec
, SunEC вообще не загружается и алгоритмы недоступны
Мне известно об этом билете в системе отслеживания ошибок OpenJDK, но я не могу понять, почему в оптимизированной версии jlink другое поведение.
В папке времени выполнения, созданной jlink, также есть файл libsunec.so
.
Я распечатываю доступные алгоритмы с помощью этого SO snippet, и я получаю следующий результат:
MD2withRSA
MD5andSHA1withRSA
MD5withRSA
NONEwithDSA
NONEwithDSAinP1363Format
RSASSA-PSS
SHA1withDSA
SHA1withDSAinP1363Format
SHA1withRSA
SHA224withDSA
SHA224withDSAinP1363Format
SHA224withRSA
SHA256withDSA
SHA256withDSAinP1363Format
SHA256withRSA
SHA384withRSA
SHA512/224withRSA
SHA512/256withRSA
SHA512withRSA
По тем же и другим причинам проверка подписанных Jar-файлов с помощью файлов политики не работает.
Может ли кто-нибудь объяснить / указать мне, что мне искать?
РЕДАКТИРОВАТЬ: среда выполнения 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