Статус: Новичок
Группы: Участники
Зарегистрирован: 18.07.2025(UTC) Сообщений: 5 
|
Добрый вечер. Подписи созданные в программе КриптоПро и программе java 8 отличаются на AstraLinux. Внимательно посмотрел их структуру, подпись на java 8 использует старый алгоритм хеширования в одном из атрибутов (signingCertificateV2) - гост р 34.11-94. С чем это связано? По умолчанию в сертификате гост р 34.11-2012. Использую версию R4 для AstraLinux. Функция подписи: Код:public static byte[] output_signature(String file_name,
PrivateKey private_key,
Certificate[] chain) throws Exception {
// Конструктор с true означает отсоединенную подпись.
CAdESSignature signature = new CAdESSignature(true);
List<X509Certificate> list_chain = new ArrayList<X509Certificate>();
// Поток для формировния сигнатуры.
ByteArrayOutputStream byte_stream = new ByteArrayOutputStream();
byte[] data = Files.readAllBytes(Paths.get(file_name));
for (Certificate cert : chain)
list_chain.add((X509Certificate)cert);
// 2, 3 параметр для автоопределения алгоритмов хеширования и подписывания,
// далее ключ, цепочка, формат.
signature.addSigner(JCSP.PROVIDER_NAME, null, null, private_key, list_chain,
CAdESType.CAdES_BES, null, false);
// Связываем с потоком байтов на вывод.
signature.open(byte_stream);
// Вычисляем подпись разом.
signature.update(data);
byte_stream.close();
signature.close();
return byte_stream.toByteArray();
}
Прикладываю подпись из программы КриптоПро и кода.  sig.zip (3kb) загружен 3 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,038  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 730 раз в 688 постах
|
Добрый день. Исправлено в JCP 2.0.41752 (2020-11-16), signingCertificateV2 стал содержать алгоритм хэширования по алгоритму ключа. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.07.2025(UTC) Сообщений: 5 
|
Версия JCP v.2.0, rel.2.0.47526 из панели, в логе та же самая версия. Провайдер по умолчанию поменял на JCP в панели, подписывает с неправильным дайджестом. Записал лог и сигнатуру в архив.  log+sig.zip (9kb) загружен 1 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,038  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 730 раз в 688 постах
|
Проверьте в используемой JVM версию установленного CAdES.jar, что она 2.0.47526, это можно узнать, распаковав CAdES.jar, как архив, внутри есть META-INF\MANIFEST.MF с Implementation-Version или Release-Version. "подписывает с неправильным дайджестом." - хэш посчитан верно, просто на старом алгоритме. Отредактировано пользователем 29 июля 2025 г. 16:57:17(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.07.2025(UTC) Сообщений: 5 
|
Версия совпадает. Текстовик:  MANIFEST.txt (18kb) загружен 2 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,038  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 730 раз в 688 постах
|
Проверьте, что bouncycastle в списке провайдеров находится ниже JCP и JCSP. Если используется Java 8, то обычно это список провайдеров в java.security. В коде тоже нужно проверить, что нет вызовов вроде Security.insertProviderAt. Bouncycastle должен быть ниже JCP или JCSP по приоритету. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close