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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline HelenKlimova  
#1 Оставлено : 14 июля 2026 г. 11:43:12(UTC)
HelenKlimova

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Добрый день!

Возникла необходимость подписывать информацию подписью со штампом времени, CAdES-T. Из 3 получателей информации только 1 принимает нашу подпись, остальные говорят, что подпись неверная.
Используем Java 8, КриптоПро JCP 2.0.41789. Пробовали обычную подпись CAdES-T и усовершенствование подписи CAdES-BES до CAdES-T. Результат один и тот же. После длительной переписки с одним из получателей информации, нам задали вопрос. "Уточните пожалуйста, в атрибуте signingCertificateV2 присутствует ли у Вас расчет дайджеста, и указан ли алгоритм по которому выполняется расчет?" Сами мы никаких атрибутов не формируем и читали на форуме и в документации, что при использовании CAdES они формируются автоматически. Не можете ли подсказать, где возможна проблема? Пример кода формирования подписи CAdES-T

Код:


	        CAdESSignature cadesSignature = new CAdESSignature(detached);

	        cadesSignature.addSigner(
	            JCP.PROVIDER_NAME,
	            JCP.GOST_DIGEST_2012_256_OID,
	            JCP.GOST_EL_SIGN_2012_256_OID_WITH,
	            privateKey,
	            certList,
	            CAdESType.CAdES_T,
	            tsUrl,
	            false
	        );


	        
	        ByteArrayOutputStream signatureStream = new ByteArrayOutputStream();

	        cadesSignature.open(signatureStream); 
	        cadesSignature.update(source); 

	        cadesSignature.close(); 
	        signatureStream.close();

	        byte[] cadesCms = signatureStream.toByteArray();
		        
	        // Проверка
	        CAdESSignature checkedSignature = new CAdESSignature(cadesCms, source, CAdESType.CAdES_T);
	        checkedSignature.verify(new HashSet<>(certList), null);


КриптоПро JCP в java.security стоит выше BC.
Offline Евгений Афанасьев  
#2 Оставлено : 14 июля 2026 г. 12:31:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 750 раз в 707 постах
Добрый день.
Возможно, проблема в том, что в подписи отсутствует сертификат подписи. Его можно добавить один из способов:
* с помощью setCertificateStore перед addSigner (добавятся конкретные преданные сертификаты), или
* передать в расширенную версию addSigner параметр addCertificateChain=true (добавится вся цепочка в подпись).
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.