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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline IvanEdovin  
#1 Оставлено : 6 сентября 2018 г. 13:32:43(UTC)
IvanEdovin

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

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

Добрый день.
Пишу программу для обмена с ИС Маркировка.
В системе установлена Крипто-Про, лицензионная.
Есть ключи.
Строка для подписания файла
csptest.exe -sfsign -sign -in d:\text.txt -out d:\out.txt -my "ООО Фирма" -detached -base64 -add
успешно выполняется. Только требует выбрать ключ т.к. в реестре из несколько.
Как реализовать подпись в java? Куда смотреть?
Offline Евгений Афанасьев  
#2 Оставлено : 6 сентября 2018 г. 13:51:38(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте.
Посмотрите примеры создания/проверки подписи в архиве samples-sources.jar дистрибутива jcp, пакет CMS_samples, примеры CMS, CMSSign, CMSVerify, в пакете CAdES - примеры работы с подписью формата CAdES.
Offline IvanEdovin  
#3 Оставлено : 7 февраля 2019 г. 13:30:01(UTC)
IvanEdovin

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

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

Пытаюсь выполнить код.
Код:

 CAdESUtility.initJCPAlgorithms();

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

            PrivateKey privateKey = CMStools.loadKey("oootf", "123456".toCharArray());
            
            Certificate cc = CMStools.loadCertificate("oootf");
            

            X509Certificate cert = (X509Certificate) cc;

            chain.add(cert);

            Store certStore = new JcaCertStore(chain);

          
            CMSSignedDataGenerator generator = new CMSSignedDataGenerator();

            ContentSigner contentSigner = new GostContentSignerProvider(
                    privateKey, JCP.PROVIDER_NAME);

            SignerInfoGenerator signerInfoGenerator = new JcaSignerInfoGeneratorBuilder(
                    new GostDigestCalculatorProvider(privateKey, JCP.PROVIDER_NAME)).build(contentSigner, cert);

            generator.addSignerInfoGenerator(signerInfoGenerator);
            generator.addCertificates(certStore);
          
            // Создаем совмещенную подпись PKCS7.            
            CMSProcessable content = new CMSProcessableByteArray(ss.getBytes());
            CMSSignedData signedData = generator.generate((CMSTypedData) content, true);

            // Сформированная подпись.
            byte[] pkcs7 = signedData.getEncoded();           
           
            return new String(Base64.getEncoder().encode(pkcs7));

Код выполняется, получаю строку, но сервер не понимает.
Это вообще правильный код для строки
csptest.exe -sfsign -sign -in d:\text.txt -out d:\out.txt -my "ООО Фирма" -detached -base64 -add
или нет?
Спасибо.
Offline Евгений Афанасьев  
#4 Оставлено : 7 февраля 2019 г. 15:48:59(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Сравните подписи в asn1 декодировщике (https://lapo.it/asn1js/).
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.