Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline tandser  
#1 Оставлено : 20 апреля 2026 г. 8:17:51(UTC)
tandser

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.03.2024(UTC)
Сообщений: 4

Здравствуйте,

На форуме уже поднимали вопрос с ошибкой, возникающей при подписании CAdES_BES (https://cryptopro.ru/forum2/default.aspx?g=posts&t=22623):

Код:

Caused by: java.lang.NullPointerException: digest OID is null
    at org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder.find(Unknown Source)
    at org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder.find(Unknown Source)
    at org.bouncycastle.cms.SignerInfoGeneratorBuilder.createGenerator(Unknown Source)
    at org.bouncycastle.cms.SignerInfoGeneratorBuilder.build(Unknown Source)
    ... 30 more


Столкнулся с той же проблемой, но рекомендации, описанные в представленной ветке, не помогли.

Исходные данные:

Код:

Java                            : temurin21-jdk:21.0.9_10-debian-upd7
CryptoPro                       : 2.0.42119-A
org.bouncycastle:bcpkix-jdk18on : 1.78.1
org.bouncycastle:bcprov-jdk18on : 1.78.1


Проблемный фрагмент кода:

Код:

var cert0 = (X509Certificate) hdImageStore.getCertificate(alias);
var cert1 = (X509Certificate) null;
var cert2 = (X509Certificate) null;

try (
    var cert1Is = FileResourceUtils.readResourceAsInputStream("certs/kontur-q-2025.crt");
    var cert2Is = FileResourceUtils.readResourceAsInputStream("certs/guc2022.crt");
) {
    cert1 = (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(cert1Is);
    cert2 = (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(cert2Is);
}

var certificateChain = new Certificate[]{ cert0, cert1, cert2 };

var x509CertificateChain = new X509Certificate[certificateChain.length];

for (int i = 0; i < certificateChain.length; i++) {
    x509CertificateChain[i] = (X509Certificate) certificateChain[i];
}

var privateKey = (PrivateKey) hdImageStore.getKey(alias, password);

var algorithm = privateKey.getAlgorithm();

var cadesSignature = new CAdESSignature(true);

cadesSignature.setOptions((new Options()).disableCertificateValidation());

cadesSignature.addSigner(
    JCP.PROVIDER_NAME,
    AlgorithmUtility.keyAlgToDigestOid(algorithm),       // 1.2.643.7.1.1.2.2
    AlgorithmUtility.keyAlgToKeyAlgorithmOid(algorithm), // 1.2.643.7.1.1.1.1
    privateKey,
    Arrays.asList(x509CertificateChain),
    CAdESType.CAdES_BES,
    null,
    false
);

var baos = new ByteArrayOutputStream();

cadesSignature.open(baos);
cadesSignature.update(data);
cadesSignature.close();

baos.close();

Отредактировано пользователем 20 апреля 2026 г. 8:19:00(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 20 апреля 2026 г. 12:41:10(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,087
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 747 раз в 704 постах
Здравствуйте.

А если так передать?

Код:

cadesSignature.addSigner(
    JCP.PROVIDER_NAME,
    null, // <---
    null, // <---
    privateKey,
    Arrays.asList(x509CertificateChain),
    CAdESType.CAdES_BES,
    null,
    false
);
Offline Евгений Афанасьев  
#3 Оставлено : 20 апреля 2026 г. 13:20:51(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,087
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 747 раз в 704 постах
Еще тут у 2.0.42119-A версия BC должна быть 1.60, как в папке dependencies дистрибутива. Иначе могут быть проблемы, т.к. BC тоже меняется.

Отредактировано пользователем 20 апреля 2026 г. 13:21:57(UTC)  | Причина: Не указана

Offline tandser  
#4 Оставлено : 20 апреля 2026 г. 13:31:02(UTC)
tandser

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.03.2024(UTC)
Сообщений: 4

Проблема в BC. Возвращение на org.bouncycastle:bcpkix-jdk15on:1.60 и org.bouncycastle:bcprov-jdk15on:1.60 решает проблему. Спасибо.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.