Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 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;Скажите пожалуйста, а откуда получена такая дата? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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 =( , т.е. на старой все работало. Вообще это дата не из полей сертификата, а из атрибута подписи (см. пример в личке).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 44 Сказал «Спасибо»: 6 раз Поблагодарили: 19 раз в 17 постах
|
Как видите, X.509 содержит некоторое подмножество ASN.1.
На дату в подписи из личных сообщений продолжает ругаться dumpasn1, ViewBER не переводит её в человекочитаемый формат. ASN.1 Editor, похоже, не пытается интерпретировать даты, он только говорит "Generalized Time с такими-то данными внутри". Всё указывает на то, что проблема в подписи (и, соответственно, в коде, который её породил), а не в её разборе. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 44 Сказал «Спасибо»: 6 раз Поблагодарили: 19 раз в 17 постах
|
Починили в 4.0 и 5.0, раз уж кто-то в реальном мире генерирует такие данные. |
|
1 пользователь поблагодарил Зубов Иван за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close