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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline asmirnov84  
#1 Оставлено : 30 января 2013 г. 22:58:51(UTC)
asmirnov84

Статус: Участник

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

Подскажите, каким образом добавить дату и время подписи в CMS сообщение (просто дату и время на компьютере, где выполняется подписание)? Я так полагаю, нужено атрибут с OID 1.2.840.113549.1.9.5 добавить в signedAttrs (ну или unsigned)? Никак не могу сообразить, что нужно записать в значение - т.е. примерно так:
Attribute[] attr = new Attribute[1];
attr[0] = new Attribute(new int[] { 1, 2, 840, 113549, 1, 9, 5 }, new Attribute_values(1));
attr[0].values.elements[0] = А что писать сюда?
SignedAttributes sattr = new SignedAttributes(1);
sattr.elements[0] = attr[0];
cms.signerInfos.elements[0].signedAttrs = sattr;
Offline asmirnov84  
#2 Оставлено : 30 января 2013 г. 23:41:14(UTC)
asmirnov84

Статус: Участник

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

Собственно сам и нашел:
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();

Вопрос - а http://notary.cryptopro.ru/Detached.aspx тут время создания ЭЦП: не определено и значение "1.2.840.113549.1.9.5" не пишет. Будет писать только для signedAttrs???
Offline Андрей Писарев  
#3 Оставлено : 30 января 2013 г. 23:50:53(UTC)
Андрей *

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

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

Сказал «Спасибо»: 551 раз
Поблагодарили: 2235 раз в 1743 постах
Автор: asmirnov84 Перейти к цитате
Собственно сам и нашел:
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();

Вопрос - а http://notary.cryptopro.ru/Detached.aspx тут время создания ЭЦП: не определено и значение "1.2.840.113549.1.9.5" не пишет. Будет писать только для signedAttrs???


для signedAttrs пишет так:
Цитата:

В проверенном атрибуте подписи (1.2.840.113549.1.9.5) указано время подписания 30 января 2013 20:50:37 UTC

Техническую поддержку оказываем тут
Наша база знаний
Offline asmirnov84  
#4 Оставлено : 31 января 2013 г. 15:28:13(UTC)
asmirnov84

Статус: Участник

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

Время сервисом для проверки проверил.
Теперь не могу понять, как раскодировать атрибут со временем при проверке подписи и привести в человеко-читаемый вид.
final Attribute[] signAttrElem = info.signedAttrs.elements; // элементы SignAttr
final timeAttr = signAttrElem[0]; // Время
final Asn1Type openTime = timeAttr.values.elements[0];

что дальше делать с openTime? Вижу что там есть element Asn1UTCTime со значением 130131122949Z. Как из него вытащить время?
Offline Евгений Афанасьев  
#5 Оставлено : 31 января 2013 г. 15:43:18(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 710 раз в 671 постах
Автор: asmirnov84 Перейти к цитате
Как из него вытащить время?


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

Код:

Time sigTime = (Time)signTimeAttr.values.elements[0];
Asn1UTCTime time = (Asn1UTCTime) sigTime.getElement();
System.out.println("Signing Time: " + time);

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