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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline alexey777  
#1 Оставлено : 27 июня 2024 г. 14:58:28(UTC)
alexey777

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

Группы: Участники
Зарегистрирован: 19.06.2024(UTC)
Сообщений: 9
Российская Федерация
Откуда: Moscow

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

Пытаемся подписать информацию с помощью класса CAdESSignature с помощью следующего кода:

Код:

public static byte[] sign(KeyStore keyStore, String alias, char[] password, byte[] data) throws Exception {

        keyStore.load(null, null);

        PrivateKey privateKey = (PrivateKey)
                keyStore.getKey(alias, password);

        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");

        System.setProperty("com.sun.security.enableAIAcaIssuers", "true");
        System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");

        Certificate[] certificates = keyStore
                .getCertificateChain(alias);

        List<X509Certificate> chain =
                new ArrayList<X509Certificate>();

        for (Certificate cert : certificates) {
            chain.add((X509Certificate) cert);
        }

        CAdESSignature cAdESSignature = new CAdESSignature(true);

        cAdESSignature.addSigner(
                JCP.PROVIDER_NAME, // signature provider // провайдер подписи
                JCP.GOST_DIGEST_2012_256_OID,
                JCP.GOST_PARAMS_EXC_2012_256_KEY_OID,
                privateKey, // signing key // ключ подписанта
                chain,      // signing certificate chain // цепочка сертификатов подписанта
                CAdESType.CAdES_BES,
                null,
                false,
                null,
                null,
                null, // no CRL files
                true  // add the signing certificate chain to the signature // добавить цепочку подписанта в подпись
        );

        ByteArrayOutputStream signatureStream
                = new ByteArrayOutputStream();

        try {
            cAdESSignature.open(signatureStream);
            cAdESSignature.update(data);
            cAdESSignature.close();
        } finally {
            signatureStream.close();
        }

        return signatureStream.toByteArray();
    }


При комплияции проекта появляется ошибка:
Цитата:
java: cannot access org.bouncycastle.asn1.cms.AttributeTable
class file for org.bouncycastle.asn1.cms.AttributeTable not found


Без обращения к классу CAdESSignature ошибки нет.
KeyStore работает корректно, считывает данные с носителя при помощи JCSP.

Пытались через мавен подключать разные версии библиотеки org.bouncycastle - результат не меняется, ошибка остается.

CAdES.jar импортируем через внутренние библиотеки проекта, также импортированы прочие библиотеки: Skrinshot 27-06-2024 144844.jpg (49kb) загружен 7 раз(а).

Подскажите, пожалуйста, как решить данную проблему?
Offline Евгений Афанасьев  
#2 Оставлено : 27 июня 2024 г. 17:39:55(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Добрый день.
Надо положить в lib/ext bouncycastle версии, как в папке dependencies в дистрибутиве.
Offline alexey777  
#3 Оставлено : 27 июня 2024 г. 17:45:02(UTC)
alexey777

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

Группы: Участники
Зарегистрирован: 19.06.2024(UTC)
Сообщений: 9
Российская Федерация
Откуда: Moscow

Автор: Евгений Афанасьев Перейти к цитате
Добрый день.
Надо положить в lib/ext bouncycastle версии, как в папке dependencies в дистрибутиве.


Какую-то определенную версию bouncycastle нужно взять?
Offline Евгений Афанасьев  
#4 Оставлено : 27 июня 2024 г. 18:17:42(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 701 раз в 662 постах
Версии, как в папке dependencies в дистрибутиве JCP/JCSP.
Offline alexey777  
#5 Оставлено : 29 июня 2024 г. 18:18:54(UTC)
alexey777

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

Группы: Участники
Зарегистрирован: 19.06.2024(UTC)
Сообщений: 9
Российская Федерация
Откуда: Moscow

https://mvnrepository.co...ncycastle/bcutil-jdk18on
этот пакет баунсикасла нужно выбирать?
Offline alexey777  
#6 Оставлено : 8 июля 2024 г. 14:10:28(UTC)
alexey777

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

Группы: Участники
Зарегистрирован: 19.06.2024(UTC)
Сообщений: 9
Российская Федерация
Откуда: Moscow

Подскажите, пожалуйста, как исправить эту ошибку:

Error occurred during building the certification path for the target:
serial: ***
subject: ***
issuer: ***
not before: ***
not after: ***
signature provider: JCSP
validation date: null
native implementation: true
: unable to find valid certification path to requested target


Используем следующий код для подписи:

Код:
public static byte[] sign(KeyStore keyStore, String alias, char[] password, byte[] data) throws Exception {
        keyStore.load(null, null);
        PrivateKey privateKey = (PrivateKey)
                keyStore.getKey(alias, password);
        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");
        System.setProperty("com.sun.security.enableAIAcaIssuers", "true");
        System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");
        System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
        Certificate[] certificates = keyStore
                .getCertificateChain(alias);
        List<X509Certificate> chain =
                new ArrayList<X509Certificate>();
        for (Certificate cert : certificates) {
            chain.add((X509Certificate) cert);
        }
        CAdESSignature cAdESSignature = new CAdESSignature(false);
        cAdESSignature.addSigner(
                JCSP.PROVIDER_NAME, JCP.GOST_DIGEST_OID,
                JCP.GOST_EL_KEY_OID, privateKey, chain, CAdESType.CAdES_BES, null, false
        );
        ByteArrayOutputStream signatureStream
                = new ByteArrayOutputStream();
        try {
            cAdESSignature.open(signatureStream);
            cAdESSignature.update(data);
            cAdESSignature.close();
            signatureStream.close();
        } finally {
            signatureStream.close();
        }
        return signatureStream.toByteArray();
    }
Offline Санчир Момолдаев  
#7 Оставлено : 11 июля 2024 г. 17:12:28(UTC)
Санчир Момолдаев

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

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,072
Российская Федерация

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 234 раз в 221 постах
Добрый день!

в случае актуальной версии JCSP необходимо установить корневой либо в cacerts либо в хранилище "Доверенные корневые" через КриптоПро CSP
Техническую поддержку оказываем тут
Наша база знаний
Offline alexey777  
#8 Оставлено : 17 июля 2024 г. 13:39:53(UTC)
alexey777

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

Группы: Участники
Зарегистрирован: 19.06.2024(UTC)
Сообщений: 9
Российская Федерация
Откуда: Moscow

Автор: Санчир Момолдаев Перейти к цитате
Добрый день!

в случае актуальной версии JCSP необходимо установить корневой либо в cacerts либо в хранилище "Доверенные корневые" через КриптоПро CSP



keytool -import -trustcacerts -keystore "C:\Program Files\Java\jre1.8.0_121\lib\security\cacerts" -storepass changeit -alias mincif -file c:\mincif.cer

правильная команда для добавления?

имеет ли значение название элиас?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.