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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline pls  
#1 Оставлено : 22 декабря 2011 г. 20:04:33(UTC)
pls

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

Группы: Участники
Зарегистрирован: 04.10.2011(UTC)
Сообщений: 74
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
заметил странное поведение Asn1GeneralizedTime.getTime() и Asn1GeneralizedTime.compareTo().
Asn1GeneralizedTime.getTime() меняется от вызова к вызову на кол-во миллисекунд.
Asn1GeneralizedTime.compareTo() сравнивает две даты след. образом: если a > b, то a.compareTo(b) < 0. Должно быть a>b -> a.compareTo(b) > 0.

код:
Код:
public void test() throws IOException, CodecException, Asn1Exception, InterruptedException {
		byte[] data = getFile("/home/pls/Desktop/error.sig");
		data = Base64.decode(data);
		ContentInfo contentInfo = ASN1Utils.toASN1Obj(ContentInfo.class, data);
		SignedData sd = (SignedData) contentInfo.content;
		SignerInfo info = sd.signerInfos.elements[0];

		for (Attribute a : info.unsignedAttrs.elements) {
			if (a.values.elements[0] instanceof RevocationValues) {
				RevocationValues rv = (RevocationValues) a.values.elements[0];

				BasicOCSPResponse response = rv.ocspVals.elements[0];

				for (int i = 0; i < 20; i++) {
					System.out.println(response.tbsResponseData.producedAt.getTime().getTimeInMillis());
					Thread.sleep(17);
				}

				System.out.println("thisUpdate:" + response.tbsResponseData.responses.elements[0].thisUpdate.value);

				System.out.println("producedAt:" + response.tbsResponseData.producedAt.value);
				System.out.println("nextUpdate:" + response.tbsResponseData.responses.elements[0].nextUpdate.value);
				System.out.println("producedAt < nextUpdate " +
					  (response.tbsResponseData.producedAt.compareTo(response.tbsResponseData.responses.elements[0].nextUpdate) < 0));
			}
		}
}

вывод:
Цитата:

1324549092878
1324549092895
1324549092913
1324549092930
1324549092947
1324549092965
1324549092982
1324549092999
1324549092016
1324549092034
1324549092051
1324549092068
1324549092086
1324549092108
1324549092125
1324549092142
1324549092160
1324549092177
1324549092194
1324549092212
thisUpdate:20111222101812Z
producedAt:20111222101812Z
nextUpdate:20111123114502Z
producedAt < nextUpdate true


Вложение(я):
error.sig (19kb) загружен 9 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline pls  
#2 Оставлено : 26 декабря 2011 г. 15:50:14(UTC)
pls

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

Группы: Участники
Зарегистрирован: 04.10.2011(UTC)
Сообщений: 74
Откуда: Moscow

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
фидбэка нет, проблема у меня в коде?
Offline bor1  
#3 Оставлено : 26 декабря 2011 г. 20:57:47(UTC)
bor1

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

Группы: Участники
Зарегистрирован: 08.05.2008(UTC)
Сообщений: 41
Мужчина
Откуда: Крипто-Про

Поблагодарили: 1 раз в 1 постах
Нет, проблема не у вас в коде, проблема в классах objsys. Я посмотрю, что можно сделать.
Offline bor1  
#4 Оставлено : 27 декабря 2011 г. 17:27:48(UTC)
bor1

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

Группы: Участники
Зарегистрирован: 08.05.2008(UTC)
Сообщений: 41
Мужчина
Откуда: Крипто-Про

Поблагодарили: 1 раз в 1 постах
По поводу первого метода: как вы, наверное, догадываетесь, дело в том, что дата producedAt хранится с точностью до секунды. Она устанавливается в методе getTime в объект Calendar, который инициализируется при создании текущим временем (с точностью до миллисекунды). Поскольку при установки нового значения заменяются только значимые поля, установленные при инициализации объекта миллисекунды не обнуляются, а остаются текущими.
Offline bor1  
#5 Оставлено : 27 декабря 2011 г. 18:46:31(UTC)
bor1

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

Группы: Участники
Зарегистрирован: 08.05.2008(UTC)
Сообщений: 41
Мужчина
Откуда: Крипто-Про

Поблагодарили: 1 раз в 1 постах
По поводу второго вопроса: в классах asn1 runtime есть ошибка приведения типов (long к int), где возникает переполнение int. В следующих версиях провайдера мы выложим исправленный asn1 runtime.
Offline bor1  
#6 Оставлено : 27 декабря 2011 г. 18:58:01(UTC)
bor1

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

Группы: Участники
Зарегистрирован: 08.05.2008(UTC)
Сообщений: 41
Мужчина
Откуда: Крипто-Про

Поблагодарили: 1 раз в 1 постах
Спасибо за ваше сообщение об ошибке.
Offline pls  
#7 Оставлено : 27 декабря 2011 г. 19:06:35(UTC)
pls

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

Группы: Участники
Зарегистрирован: 04.10.2011(UTC)
Сообщений: 74
Откуда: Moscow

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