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

Уведомление

Icon
Error

5 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline lartok  
#1 Оставлено : 15 февраля 2018 г. 17:02:38(UTC)
lartok

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

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Здравствуйте. Собственно вопрос в описании. Подпись без штампа получается,спасибо https://www.cryptopro.ru...s&m=23241#post23241.

Можно ли добавить этот штамп времени?
Offline lartok  
#2 Оставлено : 16 февраля 2018 г. 16:29:58(UTC)
lartok

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

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Подпись формата CADES BES тоже получается, т.е. подписантом выступает сервис штампа времени.

Возможно ли включить в подпись CryptoproPDF штамп времени используя CryptoPro JCP, чтобы в свойствах подписи была активна кнопка штампа времени - а не "Дата и время создания подписи взяты с часов на компьютере подписанта".

Неужели никто не делал? Разработчики помогите пожалуйста - есть ли такая возможность?
Offline lartok  
#3 Оставлено : 19 февраля 2018 г. 10:16:58(UTC)
lartok

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

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Up
Offline Евгений Афанасьев  
#4 Оставлено : 19 февраля 2018 г. 11:27:50(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Автор: lartok Перейти к цитате
Можно ли добавить этот штамп времени?

Можно добавить, создав CAdES-T или поместив штамп в неподписанные атрибуты. Но как он будет отображаться и к какой кнопке привязан в свойствах подписи (кнопка с датой - подписанный атрибут signingTime) - лучше спросить в разделе CryptoPro PDF, возможно, так подскажут.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
lartok оставлено 19.02.2018(UTC)
Offline lartok  
#5 Оставлено : 20 февраля 2018 г. 11:36:44(UTC)
lartok

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

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
Здравствуйте.
Автор: lartok Перейти к цитате
Можно ли добавить этот штамп времени?

Можно добавить, создав CAdES-T или поместив штамп в неподписанные атрибуты.



Код:
	    //////////////TIME/////////////////
	    cms.signerInfos.elements[0].unsignedAttrs = new UnsignedAttributes(1);
		
	    cms.signerInfos.elements[0].unsignedAttrs.elements[0] = new Attribute(new OID("1.2.840.113549.1.9.5").value,
	    		new Attribute_values(1));
	    final Time time = new Time();
	    final Asn1UTCTime UTCTime = new Asn1UTCTime();
	    UTCTime.setTime(Calendar.getInstance());
	    time.set_utcTime(UTCTime);
	    cms.signerInfos.elements[0].unsignedAttrs.elements[0].values.elements[0] = time.getElement();    
	    ///////////////TIME////////////////



Можно как-то добавить ответ от TSA службы или это только формат CAdES-T?
Offline Евгений Афанасьев  
#6 Оставлено : 20 февраля 2018 г. 13:44:47(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
В вашем примере в список неподписанных атрибутов unsignedAttrs помещается signingTime (обычно подписанный это атрибут, помещаемый в signedAttrs). Получение штампа потребуется реализовать самостоятельно (формирование запроса, отправка, получение ответа) либо использовать CAdES.jar и формирование CAdES-T подписи.

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

Offline lartok  
#7 Оставлено : 20 февраля 2018 г. 14:00:14(UTC)
lartok

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

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
В вашем примере в список неподписанных атрибутов unsignedAttrs помещается signingTime (обычно подписанный это атрибут, помещаемый в signedAttrs). Получение штампа потребуется реализовать самостоятельно (формирование запроса, отправка, получение ответа) либо использовать CAdES.jar и формирование CAdES-T подписи.


Код:
            Calendar cal = Calendar.getInstance();
            TSAClientBouncyCastle tsaClient = new TSAClientBouncyCastle(tsa_url);
            byte[] respBytes=tsaClient.getTimeStampToken(data);
            TimeStampResponse response = new TimeStampResponse(respBytes);
            
            cal.setTime(response.getTimeStampToken().getTimeStampInfo().getGenTime());
	    final Time time = new Time();
	    final Asn1UTCTime UTCTime = new Asn1UTCTime();
	    UTCTime.setTime(cal);
	    time.set_utcTime(UTCTime);
	    cms.signerInfos.elements[0].unsignedAttrs.elements[0].values.elements[0] = time.getElement(); 


Что-то в этом роде?
Или вы имеете ввиду добавить время подписи в подписанные атрибуты?
Может быть еще подскажите можно ли и как присвоить:
Код:
cms.signerInfos.elements[0].signedAttr = (TimeStampResponse)response.getTimeStampToken().getSignedAttributes()

Отредактировано пользователем 20 февраля 2018 г. 14:11:50(UTC)  | Причина: Дополнение

Offline Евгений Афанасьев  
#8 Оставлено : 20 февраля 2018 г. 14:19:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
В неподписанные атрибуты целиком штамп помещается с соответствующим oid'ом (signature-timestamp - штамп на подпись, то есть на signature размером 64 или 128 байт). tsaClient должен мочь сформировать хеш (imprint) с данных (в этом случае - с подписи signature размером 64 или 128 байт).
На счет
Код:

cms.signerInfos.elements[0].signedAttr = (TimeStampResponse)response.getTimeStampToken().getSignedAttributes()

не уверен, т.к. это разные классы, разные сущности, и не совсем понятно, зачем в подписанные атрибуты подписи помещать подписанные атрибуты штампа.
Offline lartok  
#9 Оставлено : 20 февраля 2018 г. 15:49:38(UTC)
lartok

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

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате
В неподписанные атрибуты целиком штамп помещается с соответствующим oid'ом (signature-timestamp - штамп на подпись, то есть на signature размером 64 или 128 байт). tsaClient должен мочь сформировать хеш (imprint) с данных (в этом случае - с подписи signature размером 64 или 128 байт).
На счет
Код:

cms.signerInfos.elements[0].signedAttr = (TimeStampResponse)response.getTimeStampToken().getSignedAttributes()

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


соответствующий oid - "1.2.840.113549.1.9.16.2.14", видимо это так // RFC 3161 id-aa-timeStampToken

штамп получаю так:
Код:
	        final Signature signature =
	                Signature.getInstance(JCP.GOST_EL_SIGN_NAME);
	        signature.initSign(key);
	        signature.update(data);
	        final byte[] sign = signature.sign();

                byte[] tsImprint = MessageDigest.getInstance(tsaClient.getDigestAlgorithm()).digest(sign);
                byte[] tsToken = tsaClient.getTimeStampToken(tsImprint);

без примеров очень трудно - т.к. я не сижу на Java. До этого наверно все правильно идет - поправьте пожалуйста если нет.
Теперь как вписать это в cms.signerInfos.elements[0].unsignedAttrs ума не приложу - примерчик бы.
Или это все неправильно - в теме "КриптоПро PDF" молчат.
Offline Евгений Афанасьев  
#10 Оставлено : 20 февраля 2018 г. 16:39:00(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Формируете как будто правильно. Добавление неподписанных выполняется по аналогии с подписанными (пример с последними есть в CMSSign, пакет CMS, архив samples-sources), только используется unsignedAttrs = new UnsignedAttributes(<количество>) c заполнением элементов или сразу с передачей в new UnsignedAttributes(<атрибуты>) атрибутов, примерно:
Код:

cms.signerInfos.elements[<n>].unsignedAttrs = new UnignedAttributes(1); 
cms.signerInfos.elements[<n>].signedAttrs.elements[0] = new Attribute(<1.2.840.113549.1.9.16.2.14>, new Attribute_values(1));
Asn1Type value = new Asn1OctetString(<timestamp>);
cms.signerInfos.elements[<n>].unsignedAttrs.elements[0].values.elements[0] = value;
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
lartok оставлено 21.02.2018(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
5 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.