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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline koviryalkin  
#1 Оставлено : 15 января 2018 г. 15:53:07(UTC)
koviryalkin

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

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

Сказал(а) «Спасибо»: 5 раз
Всем привет! С прошедшими!

Еще одна проблема при вызове CryptoAPI под Linux:
При декодировании даты [0x18, 0x13, 0x32, 0x30, 0x31, 0x37, 0x30, 0x33, 0x32, 0x37, 0x31, 0x38, 0x33, 0x32, 0x33, 0x37, 0x2e, 0x34, 0x30, 0x33, 0x5a] (X509_CHOICE_OF_TIME) функцией CryptDecodeObject под Linux возвращается 0, при этом GetLastError также возвращает 0.
При тех же самых действиях под виндой все ОК. В чем может быть причина?

ЗЫ: CSP (Type:80) v4.0.9016 KC1 Release Ver:4.0.9929 OS:Linux CPU:AMD64

Отредактировано пользователем 15 января 2018 г. 17:07:01(UTC)  | Причина: Не указана

Offline Зубов Иван  
#2 Оставлено : 19 января 2018 г. 18:31:10(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 6 раз
Поблагодарили: 19 раз в 17 постах
Здравствуйте!

Похоже, что наше поведение под Linux правильное. Откроем файл с указанными вами байтами утилитой dumpasn1:
> dumpasn1 -hh date.asn
<18 13 32 30 31 37 30 33 32 37 31 38 33 32 33 37 2E 34 30 33 5A>
0 19: GeneralizedTime '20170327183237.403Z'
: Error: Time is encoded incorrectly.
0 warnings, 1 error.


Удалим байты, отвечающие за доли секунд, и voila:
> dumpasn1 -hh date_fix.asn
<18 0F 32 30 31 37 30 33 32 37 31 38 33 32 33 37 5A>
0 15: GeneralizedTime 27/03/2017 18:32:37 GMT
0 warnings, 0 errors.


Вот что говорит документация Microsoft:
X509_CHOICE_OF_TIME
For X509_ASN_ENCODING, if the time is after 1950 and before 2050, it is UTC time encoded with a two-digit year. Otherwise, it is Generalized time encoded with a four-digit year, The date is precise to seconds.


Вот что говорит стандарт RFC 5280 "Internet X.509 PKI Certificate and CRL Profile" в секции "4.1.2.5.2. GeneralizedTime":
The generalized time type, GeneralizedTime, is a standard ASN.1 type for variable precision representation of time. Optionally, the GeneralizedTime field can include a representation of the time differential between local and Greenwich Mean Time. For the purposes of this profile, GeneralizedTime values MUST be expressed in Greenwich Mean Time (Zulu) and MUST include seconds (i.e., times are YYYYMMDDHHMMSSZ), even where the number of seconds is zero. GeneralizedTime values MUST NOT include fractional seconds.

Вот какой фрагмент в коде dumpasn1 предположительно приводит к выводу ошибки:
if( ( strOption == STR_UTCTIME && length != 13 ) || ( strOption == STR_GENERALIZED && length != 15 ) ) warnTime = TRUE;

Скажите пожалуйста, а откуда получена такая дата?
Техническую поддержку оказываем тут
Наша база знаний
Offline koviryalkin  
#3 Оставлено : 22 января 2018 г. 14:49:01(UTC)
koviryalkin

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

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

Сказал(а) «Спасибо»: 5 раз
Хм, но в описании формата ASN.1 написано:
Цитата:
GeneralizedTime

Type GeneralizedTime takes values of the year, month, day, hour, time, minute,second, and second fraction in any of three forms.

Local time only. ``YYYYMMDDHH[MM[SS[.fff]]]'', where the optional fff is accurate to three decimal places.
Universal time (UTC time) only. ``YYYYMMDDHH[MM[SS[.fff]]]Z''.
Difference between local and UTC times. ``YYYYMMDDHH[MM[SS[.fff]]]+-HHMM''.

, да и проблема всплыла при переходе на 4-ю версию КриптоПРО с 3.6.7777 =( , т.е. на старой все работало.


Вообще это дата не из полей сертификата, а из атрибута подписи (см. пример в личке).
Offline Зубов Иван  
#4 Оставлено : 22 января 2018 г. 15:31:54(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 6 раз
Поблагодарили: 19 раз в 17 постах
Как видите, X.509 содержит некоторое подмножество ASN.1.

На дату в подписи из личных сообщений продолжает ругаться dumpasn1, ViewBER не переводит её в человекочитаемый формат. ASN.1 Editor, похоже, не пытается интерпретировать даты, он только говорит "Generalized Time с такими-то данными внутри". Всё указывает на то, что проблема в подписи (и, соответственно, в коде, который её породил), а не в её разборе.
Техническую поддержку оказываем тут
Наша база знаний
Offline Зубов Иван  
#5 Оставлено : 13 июня 2018 г. 10:46:55(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 6 раз
Поблагодарили: 19 раз в 17 постах
Починили в 4.0 и 5.0, раз уж кто-то в реальном мире генерирует такие данные.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Зубов Иван за этот пост.
koviryalkin оставлено 23.08.2018(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.