Товары в корзине: 0 шт Оформить заказ
Стр. 1
 

32 страницы

456.00 ₽

Купить ГОСТ Р ИСО/МЭК 8825-1-2003 — официальный бумажный документ с голограммой и синими печатями. подробнее

Официально распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль".

Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

В настоящем стандарте определен набор базовых правил кодирования, который может использоваться для получения спецификации синтаксиса передачи для значений типов, определенных с использованием абстрактной синтаксической нотации версии 1 (АСН.1). Базовые правила кодирования также применимы для декодирования указанного синтаксиса передачи с целью идентификации передаваемых значений данных. В настоящем стандарте также определен набор канонических и отличительных правил кодирования, которые ограничивают кодирование значений ровно одной из альтернатив, предоставляемых базовыми правилами кодирования.

Эти правила кодирования используются во время передачи (поставщиком услуг уровня представления, когда это требуется контекстом представления)

  Скачать PDF

Показать даты введения Admin

Страница 1

Б! 1-2003/311

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология

ПРАВИЛА КОДИРОВАНИЯ АСН.1

Часть 1

Спецификация базовых (BER), канонических (CER) и отличительных (DER) правил кодирования

Издание официальное

ГОССТАНДАРТ РОСС ИИ Москва

Страница 2

Предисловие

1    РАЗРАБОТАН Государственным научно-исследовательским и конструкторско-технологическим институтом «ТЕСТ* Министерства Российской Федерации по связи и информатизации

ВНЕСЕН Министерством Российской Федерации по связи и информатизации

2    ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 13 мая 2003 г. № 140-ст

3    Настоящий стандарт содержит полный аутентичный текст международного стандарта ИСО/МЭК 8825-1—98 «Информационная технология. Правила кодирования ACH.I. Часть I. Спецификация базовых (ВЕК), канонических (СЕК) и отличительных (DER) правил кодирования* с учетом Поправки № I (1999 г.) и Дополнения № I (2000 г.)

4    ВВЕДЕН ВПЕРВЫЕ

О И ПК Издательство стандартов. 2003

Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Госстандарта России

II

Страница 3

ГОСТ Р ИСО/МЭК 8825-1-2003

Содержание

1    Область применения........................................................1

2    Нормативные ссылки........................................................I

3    Определения..............................................................2

4    Сокращения..............................................................2

5    Нотация.................................................................3

6    Соглашения...............................................................3

7    Соответствие..............................................................3

8    Базовые правила кодирования.................................................3

8.1    Общие правила кодирования...............................................3

8.2    Кодирование булевского значения...........................................6

8.3    Кодирование целочисленного значения.......................................7

8.4    Кодирование перечислимого значения.......................................7

8.5    Кодирование действительного значения......................................7

8.6    Кодирование значения «битовая строка*......................................9

8.7    Кодирование значения «строка октетов*......................................10

8.8    Кодирование вырожденного значения.......................................10

8.9    Кодирование значения «последовательность*.................................10

8.10    Кодирование значения «послсдовательность-из*..............................II

8.11    Кодирование значения «множество».......................................II

8.12    Кодирование значения «множество-из*.....................................II

8.13    Кодирование выборочного значения.......................................II

8.14    Кодирование тегированного значения......................................II

8.15    Кодирование открытого типа.............................................12

8.16    Кодирование значения «экземпляр-из*.....................................12

8.17    Кодирование значения типа«встросннос-эдп*................................12

8.18    Кодирование значения внешнего типа......................................12

8.19    Кодирование значения «идентификатор объекта».............................13

8.20    Кодирование значений ограниченных типов символьных    строк...................15

8.21    Кодирование значений неограниченного типа символьных    строк.................17

9    Канонические правила кодирования...........................................17

9.1    Формы длины.........................................................17

9.2    Формы кодирования строк...............................................17

9.3    Компоненты множества.................................................17

К) Отличительные правила кодирования..........................................18

10.1    Формы длины........................................................18

10.2    Формы кодирования строк..............................................18

10.3    Набор компонентов....................................................18

II Ограничения на BER. использующие CER и DER................................18

11.1    Булевские значения....................................................18

11.2    Неиспользованные биты................................................18

11.3    Действительные значения...............................................18

11.4    Значения GcncralString..................................................19

11.5 Компоненты множества и последовательности с принимаемыми по умолчанию значениями 19

III

Страница 4

ГОСТ I» ИСО/МЭК 8825-1-2003

11.6    Компоненты «множсство-из*............................................ I1)

11.7    Обобщенное время.................................................... 19

11.8    UTCTimc........................................................... 19

12 Использование BER. CER и DER в определении синтаксиса передачи................ 20

Приложение А Пример кодирования............................................ 21

А. I Описание АСН.1 структуры записи................................ 21

А.2 Описание АСН.1 значения записи................................. 21

А.З Представление этого значения записи.............................. 21

Приложение В Присвоение значений идентификаторов объектов...................... 23

Приложение С Пример кодирования значения действительного числа.................. 23

Приложение D Использование DER и СЕК в аутентификации источника данных......... 25

D. I Решаемая проблема........................................... 25

D.2 Подход к решению............................................ 26

D.3 Оптимизация реализации....................................... 26

IV

Страница 5

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология

ПРАВИЛА КОДИРОВАНИЯ ACII.I.

Часть I

Спецификации баговых (ВЕК), канонических (CER) и отличительных (DER) правил котирования

Information technology. ASN.l encoding rules. Part I.

Specification of Basic Encoding Rules (ВПК). Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)

Дата введения 2004 ^07—01

1    Область применения

В настоящем стандарте определен набор базовых правил кодирования, который может использоваться для получения спецификации синтаксиса передачи для значений типов, определенных с использованием абстрактной синтаксической нотации версии I (ACH.I), которая установлена в ГОСТ Р ИСО/МЭК 8824-1. ГОСТ Р ИСО/МЭК 8824-2. ГОСТ Р ИСО/МЭК 8824-3 и ГОСТ Р ИСО/МЭК 8824-4. Базовые правила кодирования также применимы для декодирования указанного синтаксиса передачи с целью идентификации передаваемых значений данных. В настоящем стандарте также определен набор канонических и отличительных правил кодирования, которые ограничивают кодирование значений ровно одной из альтернатив, предоставляемых базовыми правилами кодирования.

Эти правила кодирования используются во время передачи (поставщиком услуг уровня представления, когда это требуется контекстом представления).

2    Нормативные ссылки

В настоящем стандарте использованы ссылки на следующие стандарты:

ГОСТ 34.301-91 (ИСО 6429) Информационная технология. 7- и 8-битныс кодированные наборы символов. Управляющие функции

ГОСТ Р ИСО/МЭК 7498-1—97 Информационная технология. Взаимосвязь открытых систем. Базовая эталонная модель. Часть I. Базовая модель (см. также Рекомендацию МСЭ-Т Х.200)

ГОСТ Р ИСО/МЭК 8824-1—2001 Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть I. Спецификация основной нотации (см. также Рекомендацию МСЭ-Т Х.680)

ГОСТ I* ИСО/МЭК 8824-2—2001 Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 2. Спецификация информационного объекта (см. также Рекомендацию МСЭ-Т X.68I)

ГОСТ Р ИСО/МЭК 8824-3—2002 Информационная технология. Абстрактная синтаксическая нотация версии один (ACH.I). Часть 3. Спецификация ограничения (см. также Рекомендацию М< ) ГХ.682)

ГОСТ Р ИСО/МЭК 8824-4—2003 Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 4. Параметризация спецификаций АСН.1 (см. также Рекомендацию МСЭ-Т Х.683)

ГОСТ I* ИСО/МЭК 9594-8—98 Информационная технология. Взаимосвязь открытых систем. Справочник. Часть 8. Основы аутентификации

И манне официальное

Страница 6

ИСО/МЭК 2022—94* Информационная технология. Структура кола символов и методы расширения

ИСО 6093—85* Обработка информации. Представление числовых значений в символьных строках .тля информационного обмена

ИСО/МЭК 6429—92* Информационная технология. Управляющие функции для колированных наборов символов

ИСО/МЭК 10646-1—93* Информационная технология. Универсальный, многооктстный кодовый набор символов (UCS). Часть I. Архитектура и основная многоязычная плоскость

3    Определения

В настоящем стандарте используются определения по ГОСТ Р ИСО/МЭК 7498-1. ГОСТ Р ИСО/МЭК 8824-1. а также следующие определения:

3.1    динамичеемк* соответствие: Установление требования к реализации придерживаться при передаче поведения, предписанного настоящим стандартом.

3.2    статическое соответствие: Установление требования к реализации обеспечивать допустимое множество возможностей из определенных настоящим стандартом.

3.3    шачение данных: Информация, заданная как значение типа: тип и значение определены с использованием ACH.I.

3.4    кодирование (значений данных): Полная последовательность октетов, используемая для представления значения данных.

3.5    октеты иленгнфикагора: Часть кодирования значения данных, которая используется для идентификации типа значения.

Примечание — В некоторых Рекомендациях МСЭ-Т дзя этой последовательности октетов применяют термин «элемент данных*, но в настоящем стандарте сто нс исполыуют. так как в других стандартах он применяется в смысле • шачение данных*.

3.6    октеты .пины: Часть кодирования значения данных, следующая за октетами идентификатора, которая используется дзя определения конца кодирования.

3.7    октеты содержимого: Часть кодирования значения данных, которая представляет конкретное значение.

3.8    окгегы конца содержимою: Часть кодирования значения данных, появляющаяся в его копие, которая используется для определения конца кодирования.

Примечи н и е — Не дзя всех кодирований требуются октеты конца содержимого.

3.9    простое кодирование: Кодирование значения данных, в котором октеты содержимого непосредственно представляют это значение.

3.10    составное кодирование: Кодирование значения данных, в котором октеты содержимого яазяюгея полным кодированием одного иди нескольких значений данных.

3.11    получатель: реализация декодирования октетов. созданных отправителем, для идентификации значения закодированных данных.

3.12    отправитель: Реализация кодирования значения данных для передачи.

3.13    завершающий 0 бит: 0 в последней позиции значения «битовая строка» (bitstring).

Примечание — Ов значении битном строки, состоящем из единственного бита 0. является эаверша-юшим 0 битом. Его удаление порождает пустую битовую строку.

4    Сокращении

В настоящем стандарте использованы следующие сокращения:

АСН.1 — абстрактная синтаксическая нотация версии I

здп — значение данных (уровня) представления

ВЕК — базовые правила кодирования (Basic Encoding Rules) ACH.I

CER — канонические правила кодирования (Canonical Encoding Rules) ACH.I

DER— отличительные правила кодирования (Distinguished Encoding Rules) ACH.I

* Международные стандарты — во ИНМИКИ Госстандарта России.

Страница 7

ГОСТ Р НСО/МЭК 8825-1-2003

5    Нотация

В настоящем стандарте использована нотация, определенная в ГОСТ Р ИСО/МЭК 8824-1.

6    Соглашении

6.1    В настоящем стандарте специфицировано значение каждого октега в кодировании с использованием терминов сгаршии значащий бит и младший значащий бит.

Примечание—В спецификациях нижних уровней используются те же самые обозначения лля определения порядка передачи битов в последовательной линии связи иди для распределения битов в параллельных каналах.

6.2    В настоящем стандарте биты октета нумеруют от 8 до I. где бит 8 — сгаршии значащий бит, а бит I — младшим значащий бит.

6.3    В настоящем стандарте могут сравниваться две строки октетов. Они равны, если имеют одну и ту же длину и совпадают в каждой позиции октета. Строка октетов S| больше строки S2 только в том случае, если:

а)    Sj и S2 имеют идентичные октеты в каждой позиции до конечного октета в S2 включительно, но S, длиннее.

или

б)    S| и S2 имеют различные октеты в одной или нескольких позициях и в первой такой позиции октет в S| больше, чем в S2. если рассматривать октеты как двоичные числа без знака, бит п которых имеет вес 2Я_|.

7    Соответствие

7.1    Динамическое соответствие устанавливается всеми разделами стандарта.

7.2    Статическое соответствие устанавливается теми стандартами, которые определяют применение одного или нескольких из этих правил кодировании.

7.3    Альтернативные кодирования допускаются базовыми правилами кодирования как факультативные возможности отправителя. Получатели, которые заявляют о соответствии базовым правилам кодирования, должны поддержать все альтернативы.

Примечание— Примеры таких альтернативных кодирований показаны в X. 1.3.26 и таблице 3.

7.4    Альтернативные кодирования запрещаются каноническими или отличительными правилами кодирования.

8    Базовые правила кодирования

8.1    Общие правила кодирования

8.1.1    Структура кодирования

8.1.1.1    Кодирование значения данных должно состоять из четырех компонентов, которые должны появляться в следующем порядке:

а)    октеты идентификатора (см. 8.1.2);

б)    октеты длины (см. 8.1.3):

в)    октеты содержимого (см. 8.1.4);

г)    октеты конца содержимого (см. 8.1.5).

8.1.1.2    Октеты конца содержимого должны присутствовать только в том случае, если их наличие требуется значением октетов длины (см. 8.1.3).

8.1.1.3    На рисунке I показана структура кодирования (простого или составного). На рисунке 2 показан один из вариантов составного кодирования.

8.1.1.4    Структура кодирования нс изменяется ни для нотации подтипа ACH.I. ни для нотации расширения типа АСН.1.

3

Страница 8

Октеты

Октеты

Октеты

идентификатора

длины

содержимого

Число октетов в октетах содержимого (см. 8.1.3.2)

Рисунок I — Структура кодировании

Октеты

Октеты

Октеты

Октеты конца

идентификатора

длины

содержимого

содержимого

Указывают, что октеты    Отмечают    завершение

содержимого заканчиваются    октетов содержимого

октетами конца содержимого (см 8 1.3.6)

Рисунок 2 — Вариант составного кодирования

8.1.2 Октеты идентификатора

8.1.2.1    Октеты идентификатора должны кодировать тег ACH.I (класс и номер) типа значения данных.

8.1.2.2    Для тегов с номером от 0 до 30 (включительно) октеты идентификатора должны содержать единственный октет, закодированный следующим образом:

а)    биты 8 и 7 представляют класс тега и должны колироваться гак. как определено в таблице 1:

б)    бит 6 должен быть нулем или единицей согласно правилам 8.1.2.5:

в)    биты с 5 но 1 должны колировать номер гсга как двоичное целое число с битом 5 в качестве старшего значащего бита.

Табл и па I — Кодирование класса тега

Класс

Бит s

Бит 7

Универсальный

0

0

Прикладной

0

1

Контекстно зависимый

1

0

Пользовательский

1

1

8.1.2.3 На рисунке 3 показан вил октета идентификатора для типа с номером тега от 0 ло 30 (включительно).

Октет идентификатора

8 7

6

5 4 3 2 1

Класс

П/С

Номер тега

— (

= простое

- 1 = составное

Рисунок 3 — Октет идентификатора (небольшой номер тега)

8.1.2.4 Для тегов с номерами, большими или равными 31. идентификатор должен состоять из головного октега. за которым следуют один или несколько октетов продолжения.

Страница 9

ГОСТ Р ИСО/МЭК 8825-1-2003

8.1.2.4.1    Головном октет должен быть закодирован следующим образом:

а)    биты 8 и 7 представляют класс тега и должны быть закодированы гак. как определено в таблице I;

б)    бит 6 должен быть нулем или единицей согласно правилам 8.1.2.5:

в)    биты от 5 до 1 должны быть закодированы как 1111 Ij.

8.1.2.4.2    Последующие октеты должны кодировать номер тега следующим образом:

а)    бит 8 каждого октета должен иметь значение I. если он нс яазяется последним октетом идентификатора;

б)    биты с 7 по 1 первого октета продолжения, за которыми следуют биты с 7 по 1 второго октета продолжения, за которыми, в свою очередь, следуют биты с 7 по I каждого следующего октета продолжения, до последнего, включительно, должны быть кодированием двоичного целого числа без знака, равного номеру тега, с битом 7 первого октета продолжения в качестве старшего значащего бита:

в)    биты с 7 по I первого октета продолжения не должны быть все равны нулю.

8.1.2.4.3    На рисунке 4 показана форма октетов идентификатора для типа с тегом, номер которого больше 30.

Октеты продолжения

Головной октет    2-й    октет    Последний    октет

Класс П/С 1 1 1 1 11 111 | |l|

hi 1 1°1

1 + 1

= Номер тега

Рисунок 4 — Октет идентификатора (большой номер тега)

8.1.2.5    Бит 6 должен быть равен нулю, если кодирование простое, и единице, если кодирование составное.

Примечание — I) последующих разделах для каждого типа определено, является его кодирование простым или составным.

8.1.2.6    В ГОСТ Р ИСО/МЭК 8824-1 установлено, что тег типа, определенного с использованием ключевого слова «CHOICE», принимает значение гсга того типа, значение данных которого выбрано.

8.1.2.7    В ГОСТ Р ИСО/МЭК 8824-2. 14.2 и 14.4 установлено, что тег типа, определенного с использованием конструкции «ObjcciClassFicldTypc*. псоирсдслен. если он является полем типа, полем значения переменного типа или падем множества значений переменного типа. Этот тип впоследствии определяется как тип ACH.I, и его пап нею кодирование идентично кодированию значения присвоенного типа (включая октеты идентификатора).

8.1.3 Окгеты дли н ы

8.1.3.1    Определены две формы октетов длины, а именно:

а)    определенная форма (см. 8.1.3.3);

б)    неопределенная форма (см. 8.1.3.6).

8.1.3.2    Отправитель должен использовать:

а)    определенную форму (см. 8.1.3.3), если кодирование простое;

б)    либо определенную (см. 8.1.3.3), либо неопределенные формы (см. 8.1.3.6). по своему выбору, если кодирование составное и непосредственно доступно целиком;

в)    неопределенную форму (см. 8.1.3.6), если кодирование составное и непосредственно доступно не пошостыо.

8.1.3.3    Для определенной формы октеты длины должны состоять из одного или нескольких октетов и прслстаазять число окгетов содержимого, используя короткую (см. 8.1.3.4) или длинную форму (см. 8.1.3.5). по выбору отправителя.

Мри меч а и не — Короткая <(к>рма может быть использована только в том случае, если число октетов солержнмого меньше или равно 127.

5

Страница 10

8.1.3.4    В короткой форме октеты .глины должны состоять из одного октета, в котором бит 8 является нулевым, а биты с 7 по 1 колируют число октетов содержимого (которое может быть нулевым) как двоичное целое число без знака с битом 7 в качестве старшего значащего бита.

Г1 р и м е р

L= 38 может быть закодирована как 001001102.

8.1.3.5    В длинной форме октеты длины должны состоять из начального октета и одного или нескольких последующих октетов. Начальный октет должен быть закодирован следующим образом:

а)    8 бит должен быть равен единице:

б)    биты с 7 по I должны кодировать число последующих октетов длины как двоичное целое число без знака с битом 7 в качестве старшего значащего бита:

в)    значение 111111112 нс должно использоваться.

При м с ч а н и с I — Эго ограничение введено для возможного последующего расширения.

Биты с 8 по I первого октета продолжения с последующими битами с 8 по I второго октета продолжения, с последующими битами с 8 по I каждого следующего октета, включая последний октет продолжения, должны быть кодированием двоичного целого числа без знака, равного числу октетов содержимого, с битом 8 первого октета продолжения в качестве старшего значащего бита.

Г1 р и м с р

L = 201 может быть закодирована как:

I (ХМКЮО12 I ИЮ 10012

Приме ч а и и с 2 — В длинной форме отправитель может выбирать, испольювать ли октетов длины больше, чем минимально необходимо.

8.1.3.6    Для неопределенной формы октеты длины указывают, что октегы содержимого заканчиваются октетами конец-содержимого (см. 8.1.5) и должны содержать единственный октет.

8.1.3.6.1    Единственный октет должен иметь 8 бит. равный единице, и биты с 7 по I. равные нулю.

8.1.3.6.2    Если используется неопределенная форма длины, то октеты конец-содержимого (см. 8.1.5) должны присутствовать в кодировании после октетов содержимого.

8.1.4    Октеты содержимого

Октегы содержимого должны состоять из нудя, одного иди нескольких октегов и кодировать значение данных гак. как определено в последующих разделах.

П р и м с ч а н и с — Октегы содержимого зависят от типа шачения данных; последующие ра целы расположены в том же порядке, что и определения типов в АСН.1.

8.1.5    Октеты конец-содержимого

Октеты конец-содержимого должны присутствовать, если длина закодирована так, как определено в 8.1.3.6. в противном случае они присутствовать нс должны.

Октеты конец-содержимого должны состоять из двух нулевых октетов.

II р и м с ч а и и с — Октеты конси-солсржимого могут рассматриваться как кодирование значения с тегом универсального класса, форма которого является простои, номер тега — нулевой, а содержимое отсутствует. Таким образом:

KOI 1C и - солсрж нмого

Длина

Содержимое

_00^_

0016

Отсутствует

8.2 Кодирование булевского значения

8.2.1    Кодирование булевского значения должно быть простым. Октеты содержимого должны состоять из одного октета.

8.2.2    Если булевское значение есть FALSE («ложь»), то октет должен быть нулем. Если булевское значение TRUE («истина»), то октет должен иметь любое ненулевое значение по выбору

отправителя.

Пример — Если тип BOOLEAN, то значение TRUE может быть закодировано как:

Ьулсвский тип

Длина

Содержимое

_2!и_

__

_ЕЕ*_

Страница 11

ГОСТ Р ИСО/МЭК 8825-1-2003

8.3 кодирование целочисленного (качения

8.3.1    Кодирование целочисленного значения должно быть простым. Окгегы содержимого должны состоять из одного или нескольких октетов.

8.3.2    Если октеты содержимого кодирования целочисленного значения содержат более одного октета, то биты первого октета и 8 бит второго октета:

а)    не должны все быть единицами:

б)    нс должны все быть нулевыми.

[1 р и меча кис — Эти правила гарантируют, что целочисленное значение всегда колируется в наименьшем возможном числе октетов.

8.3.3    Октеты содержимого должны быть дополнительным кодом двоичного числа, равного кодируемому целочисленному значению, образованным битами с 8 по I первого октета, с последующими битами с 8 по I второю октета, с последующими битами с 8 но I каждого очередного октета, включая последний октет содержимого.

Примечание — Значение дополнительного кола двоичного числа получается путем нумерации битов в октетах содержимого, начиная с бита I последнего октета как бита 0 и заканчивая нумерацию битом 8 первого октета. Каждому биту присваивается числовое значение 2Л. где N — номер бита в описанной выше нумерации. Значение дополнительного кола двоичного числа получается суммированием числовых значений, присвоенных каждому биту, тех битов, которые равны единице, исключая бит 8 первого октета, и последующего уменьшения этой суммы на числовое значение, присвоенное биту 8 первого октета, если тот бит равен единице.

8.4    кодирование перечислимого значения

Кодирование перечислимого значения должно быть кодированием связанного с ним целочисленного значения.

Приме ч а и и е — Кодирование является простым.

8.5    кодирование действительного значения

8.5.1    Кодирование действительного значения должно быть простым.

8.5.2    Если действительное значение яазястся нулевым, то в кодировании нс должно быть никаких октетов содержимого.

8.5.3    Если действительное значение ненулевое, то используемое для кодирования основание /Г выбирается отправителем. Если /Г равно 2. 8 или 16. то должно использоваться двоичное кодирование, определенное в 8.5.5. Если /Г равно 10. то должно использоваться символьное кодирование, определенное в 8.5.6.

Примечание — Форма хранения, создания или обработки отправителями и получателями и форма, используемая в нотации значения ACH.I. полностью не зависят от основания, используемого при передаче.

8.5.4    Бит 8 первого октета содержимого должен быть установлен следующим образом:

а)    если бит 8 = I. то применяется двоичное кодирование, определенное в 8.5.5;

б)    если бит 8 = 0 и бит 7 = 0. то применяется десятичное кодирование, определенное в 8.5.6:

в)    если бит 8 = 0. а бит 7 = I. то «Special Real Value* (см. ГОСТ Р ИСО/МЭК 8824-1) кодируется гак. как определено в 8.5.7.

8.5.5    При использовании двоичного кодирования (бит 8=1). если мантисса Л/ ненулевая, го она должна быть представлена знаком .У. неотрицательным целочисленным значением /V и двоичным масштабным коэффициентом F, как то:

А/ - S х N х 2F:

0й F < 4:

S = +1 или —I.

Примечание — Коэффициент F требуется в некоторых случаях для выравнивания подразумеваемой точки мантиссы к позиции, требуемой правилами кодирования настоящего рл злела. Эго выравнивание нс всегда может быть достигнуто модификацией экспоненты Е. Если основание В', используемое для кодирования, равно 8 или 16. го изменениями компонента £ подразумеваемая точка может быть сдвинута только на 3 или 4 бита соответственно. Следовательно, для перемещения подразумеваемой точки в нужное положение могут потребоваться отличные от нуля значения коэффициента Е.

8.5.5.1 Бит 7 первого октега содержимого должен быть равен I, если S равен —I. в противном случае он равен 0.

7

Страница 12

8.5.5.2 Виты с 6 по 5 первого октета содержимого должны колировать значение основания В' стел у ютим образом:

Биты с 6 по 5    Основание

00    основание 2

01    основание 8

10    основание 16

11    зарезервировано    для    последующих

редакций настоящего стандарта.

8.5.5.3    Биты с 4 по 3 первого октета содержимого должны кодировать значение двоичного масштабного коэффициента /"как двоичное целое число без знака.

8.5.5.4    Биты со 2 по 1 первого октета содержимого должны кодировать формат экспоненты следующим образом: если биты со 2 по I равны:

а)    00. то второй октет содержимого колирует значение экспоненты в виде дополнительного кола двоичного числа;

б)    01. го второй и третий октеты содержимого колируют значение экспоненты в виде дополнительного кода двоичного чиста:

в)    10. то второй, третий и четвертый октеты содержимого колируют значение экспоненты в виде дополнительного кода двоичного числа;

г)    11. то второй октет содержимого кодирует (как двоичное чисто без знака) число октетов X. используемых для кодирования значения экспоненты, а октеты содержимогос третьего по (X + 3)-й включительно колируют значение экспоненты в виде дополнительного кода двоичного числа; значение Л'должно быть нс меньше единицы; первые девять битов переданной экспоненты нс все должны быть нулевыми или единичными.

8.5.5.5    Остающиеся октеты содержимого кодируют значение целого числа (см. 8.5.5) в виде двоичного числа бет знака.

Примечания

1    Для неканонических ВГ:К не требуется нормаликшия мантиссы с «плавающей» точкой. Это потволяет реализатору передавать октеты, содержащие мантиссу, бс» выполнения функций сдвига мантиссы в памяти. В канонических и отличительных правилах кодирования нормализация определена, и мантисса (если она не 0) должна сдвигаться до тех пор, пока наименьший значащий бит не станет равным 1.

2    Это представление действительных чисел сильно отличается от форматов, обычно используемых в аппаратуре с «плавающей* точкой, но оно предназначено для легкого преобразования в такие форматы и in таких форматов (см. приложение С).

8.5.6 Когда используется десятичное кодирование (биты с 8 по 7 = 00). все октеты содержимого после первого образуют поле, в смысле ИСО 6093. выбранной отправителем длины, закодированное в соответствии с ИСО 6093. Выбор представления числа по ИСО 6093 определяется битами с 6 по I первого октета содержимого следующим образом:

Биты с 6 по I 000001 ОШ) К) 000011

Прсдставлепне числа ИСО 6093. формат NRI ИСО 6093. формат NR2 ИСО 6093. формат NR3

Остальные значения битов с 6 но 1 зарезервированы для настоящего стандарта.

Не должны использоваться масштабные коэффициенты, определенные в сопровождающей документации (ем. ИСО 6093).

II р и м с ч а н и я

1    Рекомендации ИСО 6093 относительно использования, по крайней мере, одной цифры слева от десятичного знака сохраняются и в настоящем стандарте, но не являются обязательными.

2    Использование нормированной формы (см. ИСО 6093) не существенно и остается на усмотрение отправителя.

8.5.7 Когда должны быть закодированы «Special Real Values» (биты с 8 по 7 = 01). то должен быть только один октет содержимого со следующими значениями:

01000000    значение равно PLUS-INFINITY;

01000001    шачение равно MINUS-INFINITY.

Ike другие значения, имеющие биты 8 и 7. равные 0 и I соответственно, зарезервированы для дополнений к настоящему стандарту.

Страница 13

ГОСТ Р ИСО/МЭК 8825-1-2003

8.6 Кодирование шачепня -оптовая строка*

8.6.1    Кодирование значения «битовая строка» должно быть простым или составным, по усмотрению отправителя.

II р и ч е ч а и и с — Если необходимо передать часть битовой строки до того, как она вся станет доступной. то используется составное кодирование.

8.6.2    Октеты содержимого для простого кодирования должны содержать начальный октет, с последующим нулем, одним или несколькими октетами продолжения.

8.6.2.1    Биты в битовой строке, с первого до последнего, должны размешаться в битах с 8 до 1 первого октета продолжения, далее — в битах с 8 до I второго октета продолжения, затем — в битах с 8 до I каждого следующего октета и завершаться тем количеством битов, которое необходимо в конечном октете продолжения, начиная с бита 8.

II р и ч с ч а II и е — Термины «первым бит- и • завершающий бит* определены в ГОСТ Р ИСО/МЭК 8824-1.

8.6.2.2    Начальный октет должен кодировать, в виде двоичного целого числа без знака с битом I в качестве наименьшего значащего бита, число неиспользованных битов в конечном октете продолжения. Число должно находиться в диапазоне от нуля до семи.

8.6.2.3    Если битовая строка пуста, то нс должно быть никаких октетов продолжения, а начальный октет должен быть нулевым.

5.6.2.4    При применении подраздела 21.7 ГОСТ Р ИСО/М ЭК 8824-1 колировшики/деколнров-шики ВЕК могут добавлять или убирать завершающие нулевые биты значения.

Примечание—Есш значение битовом строки нс имеет единичных битов, то кодировщик (по усмотрению отправителя) может колировать значение с начальным октетом, равным 0, или может колировать его как битовую строку с одним или несколькими нулевыми битами после начального октета.

8.6.3    Октеты содержимого для составного кодирования должны состоять из нуля, одного ши нескольких вложенных кодирований.

II р и меч а и нс — Каждое такое кодирование включает в себя октеты идентификатора, длины, содержимого и может включать октеты конси-солсржимого. если оно является составным.

8.6.4    Для кодирования значения битовой строки таким способом это значение должно быть сегментировано. Каждый сегмент должен состоять из ряда последовательных битов значения и должен, возможно, за исключением последнего, содержать число битов, кратное восьми. Каждый бит в обшем значении должен присутствовать ровно в одном сегменте, а размещение границ сегментов значения не имеет.

II р и м с ч а и и с — Сегмент может иметь нулевой размер, то есть нс содержать биты.

8.6.4.1    Каждое кодирование в октетах содержимого должно представлять сегмент обшей битовой строки, кодовое представление которой является результатом рекурсивного применения настоящего раздела. При этом применении каждый сегмент рассматривается как значение битовой строки. Кодовые представления сегментов должны появляться в окгегах содержимого в том порядке, в каком их биты появляются в общем значении.

П р и мечаи и я

1    Как следствие этой рекурсии, каждое кодирование в октетах содержимого само может быть простым или составным. Однако обычно такие кодирования являются простыми.

2    В частности, теги в октетах содержимого всегда универсального класса номер 3.

8.6.4.2    Пример. Если тип BIT STRING, то его значение ’0A3B5F29ICD*H может быть закодировано гак. как показано ниже. В данном примере BitSiring представлена как примитив:

BitSiring

Длина

Содержимое

_0^_

_«Lb_

040A3B5F29ICD0,#.

Это же значение может быть закодировано гак. как показано ниже. В данном примере BitSiring

представлена как конструкция:

BitSiring

Длина

Содержимое

23,6

80,6

BitSiring

Длина

Содержимое

ЕОС

_м*_

Длина 00.ь_

03.6

03.6

03.6

05.6

ОООАЗВ,б

045F29ICD0,6

Страница 14

8.7 Кодирование значения -строка октетов-

8.7.1    Кодирование значения -строка октетов- должно быть простым или составным, по усмотрению отправителя.

Примечание— Ест и необходимо передать часть строки октетов до того, как станет доступна вся строка, то используется составное кодирование.

8.7.2    Простое кодирование содержит нуль, один или несколько октетов содержимого, равных по значению октетам в значении данных, в порядке их появления в значении данных, и со старшим значащим битом октета значения данных, выровненным по старшему значащему биту октета содержимого.

8.7.3    Октеты содержимого для составного кодирования должны состоять из нудя, одного иди нескольких кодирований.

II ри м еча и ие — Каждое такое кодирование включает в себя октеты идентификатора, длины, содержимого и может включать октеты конец-содержимого, если оно является составным.

8.7.3.1    Для кодирования значения «строка октетов- таким способом это значение должно быть сегментировано. Каждый сегмент должен состоять из ряда последовательных октетов значения. Расположение границ сегментов значения нс имеет.

П р и м с ч а и и с — Сегмент может иметь нулевой ра »мер. то есть нс содержать октеты.

8.7.3.2    Каждое кодирование в октетах содержимого должно представлять сегмент общей строки октетов, кодовое представление которой яазястся результатом рекурсивного применения настоящего раздела. При этом применении каждый сегмент рассматривается как значение строки октетов. Кодовые представления сегментов должны поваляться в октетах содержимого в том порядке, в каком их октеты пояазяются в общем значении.

Примечания

1    Как следствие >той рекурсии, каждое кодирование в октетах содержимого само может быть простым или составным. Однако обычно такие кодирования являются простыми.

2    В частности, теги в октетах содержимого всегда универсального класса номер 4.

8.8 Кодирование вырожденною шачения

8.8.1    Кодирование вырожденного значения должно быть простым.

8.8.2    Окаты содержимого не должны содержать октетов.

Примечание — Октет длины равен нулю.

При м с р. Если тип NULL, то NULL может быть закодирован как:

NULL    Длина

05i6    0016

8.9 кодирование шачения -1нкмедовате.1ЬНость-

8.9.1    Кодирование значения «последовательность- должно быть составным.

8.9.2    Окгегы содержимого должны состоять из полного кодирования одного значения данных для каждого из типов, перечисленных в определении ACH.I типа «последовательность», в порядке их появления в определении, если только тип не был указан с ключевым словом «OPTIONAL- или «DEFAULT*.

8.9.3    Кодирование значения данных может, но нс обязательно, присутствовать язя типа, указанного с ключевым словом «OPTIONAL- иди -DEFAULT-. Если оно присутствует, то должно пояазягься в кодировании в точке, соответствующей появлению типа в определении ACH.I.

П р и м с р. Если тип

SEQUENCE {name IA5String. ok BOOLEAN}.

го значение

{name «Smith*, ok TRUE}

может быгь закодировано как:

Последовательность

Длина

Содержимое

30,6

16

lASString

Длина

Ю,6

05,6

BOOLEAN

Длина

01,6

01,6

Содержимое

-Smith-

Содержимое

FF|6

10

Страница 15

ГОСТ Р ИСО/МЭК 8825-1-2003

8.10    Колнроваиие значения «последовательность-из*

8.10.1    Кодирование значения «последовательность-из» должно быть составным.

8.10.2    Октеты содержимого должны состоять из нуля, одного или нескольких полных кодирований значений данных для типа, перечисленного в определении ACH.I.

8.10.3    Порядок колированных значений данных должен быть таким же. что и порядок значений данных в кодируемом значении «последовательность-из».

8.11    Кодирование значения «множество»

8.11.1    Кодирование значения «множество* должно быть составным.

8.11.2    Октеты содержимого должны состоять из полного кодирования значения данных для каждого из типов, перечисленных в определении ACH.I типа «множество», в порядке, выбранном отправителем, если тип не был указан с ключевым словом «OPTIONAL» или «DEFAULT*.

8.11.3    Кодирование значения данных может, но не обязательно, присутствовать для типа, который был указан с ключевым словом «OPTIONAL» или «DEFAULT*.

М р и м с ч а и и с — Порядок значений данных н значении «множество* не существенен и не устанавливает ограничений на порядок во время передачи.

8.12    Кодирование значения «множество-из»

8.12.1    Кодирование «множество-из» должно быть составным.

8.12.2    Применяется правило 8.10.2.

8.12.3    Порядок значений данных не должен сохраняться при кодировании и последующем декодировании.

8.13    Кодирование выборочного значения

Кодирование выборочного значения должно быть таким же. как кодирование значения выбранного типа.

П р и мечаи и я

1    Кодирование может быть простым или составным в зависимости or выбранного типа.

2    Тег. используемый в октетах идентификатора, является тегом выбранного типа, специфицированного в определении выборочного типа ACH.I

8.14    Кодирование тегированного значения

8.14.1    Кодирование тегированного значения должно быть получено из полного кодирования соответствующего значения данных типа, появляющегося в нотации «TaggedTypc» (называемого базовым кодированием), как определено в 8.14.2 и 8.14.3.

8.14.2    Если в определении типа не используется неявное тегирование (см. ГОСТ I* ИСО/МЭК 8824-1. 28.6). то кодирование должно быть составным, и октеты содержимого должны быть полным базовым кодированием.

8.14.3    Если в определении типа использовалось неявное тегирование, то:

а)    кодирование должно быть составным, если базовое кодирование составное, в противном случае оно должно быть простым:

б)    октеты содержимого должны быть такими же. как октеты содержимого базового кодирования.

При м с р. С определениями типов АСН. I (в среде явного тегирования)

T ype I :: = VisiblcString

Турс2 :: = |APPLICATION 3| IMPLICIT Typcl

ТурсЗ :: = |2| Турс2

Турс4 :: = |APPLICATION 7| IMPLICIT ТурсЗ

Туре5 :: = |2| IMPLICIT Турс2 значение

«Jones*

кодируется следующим образом:

Ятя Typcl:

VisiblcString

Длина

Содержимое

IA,6

05 щ

4A6F6E6573,6

Ятя Турс2:

(APPLICATION 3|

Длина

Содержимое

43,6

05,6

4A6F6E6573,6

II

Страница 16

Для ТурсЗ:

|2|

Длина

Содержимое

А2

07,6

(APPLICATION 3| 43,6

Длина

05,6

Содержимое

4A6F6E6573,,,

Для Турс4: (APPLICATION 7|

Длина

Содержимое

<>7,6

07,6

[APPLICATION 3|

43,6

Длина

05,6

Содержимое

4A6F6E6573I6

Для Туре5:

|2|

Длина

Содержимое

S2,6

05,6

4A6F6E6573,6

8.15    Кодирование открытого типа

Значение открытого типа яалястся также значением некоторого (другого) типа ACH.I. Кодирование такого значения должно быть полным кодированием, специфицированным дли этого другого тина.

8.16    Кодирование шачения «экземпляр-из»

8.16.1 Кодирование типа «экземпляр-из* должно быть кодированием BER следующего типа «последовательность» со значением, определенным в 8.16.2:

IUNIVERSAL 8| IMPLICIT SEQUENCE

I

type-id <DefincdObjcctClass>.&id,

value |0| EXPLICIT <DcfincdObjcctClass>. &Tvpc

>

где «<DcfincdObjcctClass>* замешается конкретным классом • DcfinedObjcctClass». использованным в нотации «InstanccOITypc*.

Примечание — Когда значение яалястся значением единственного типа ACH.I и для него используется кодирование ВПК. то кодирование этого данного типа идентично кодированию соответствующего значения внешнего типа, где для представления абстрактного значения используется альтернатива «syntax».

8.16.2 Значение компонентов типа «последовательность» в 8.16.1 должно быть таким же. как значения соответствующих компонентов ассоциированного типа в ГОСТ Р ИСО/МЭК 8824-2. приложение С.7.

8.17    Кодирование значения типа «встроенное-зли*

8.17.1    Кодирование значения типа «встроенное-зли» должно быть кодированием BER типа, определенного в ГОСТ Р ИСО/МЭК 8824-1.

8.17.2    Содержимое «data-valuc* OCTET STRING должно быть кодированием значения абстрактных данных типа «всгроеннос-здп» (см. ГОСТ Р ИСО/МЭК 8824-1, 32.3а). использующим идентифицированный синтаксис передачи, значения всех других полей должны быть теми же. что и значения в абстрактном значении.

8.18    Кодирование значения внешнею типа

8.18.1 Кодирование значения внешнего типа должно быть кодированием BER следующего типа «последовательность», принимаемого как определенного в контексте EXPLICIT TAGS (явные теги), со значением, определенным в последующих подразделах:

IUNIVERSAL 8| IMPLICIT SEQUENCE

direct-reference indi reel - re fere nee data-value-descriptor encoding

singlc-ASN I -type

octet-aligned

arbitrary

OBJECT IDENTIFIER OPTIONAL. INTEGER OPTIONAL.

Object Descriptor OPTIONAL.

CHOICE |

|0| ABSTRACT-SYNTAX. &Typc. |l| IMPLICIT OCTET STRING. |2| IMPLICIT BIT STRING} }

Примечание —Этот тип «последовательность» является гем же. который был определен н ГОСТ I* ИСО/МЭК 8824—93. и результирующее кодирование значения внешнего типа не изменяется.

Страница 17

ГОСТ Р ИСО/МЭК 8825-1-2003

8.18.2    Значение полем зависит от передаваемых абстрактных значений, и является значением типа, определенного в 32.5 ГОСТ Р ИСО/МЭК 8824-1.

8.18.3    Компонент «data-valuc-descriptor* должен присутствовать только в том случае, если •data-value-descriptor» присутствует в абстрактном значении, и должен иметь то же значение.

8.18.4    Значения -direct-reference* и -indirect-reference» должны присутствовать или отсутствовать согласно таблице 2. Таблица 2 отображает альтернативы «identification» внешнего типа, приведенные в ГОСТ Р ИСО/МЭК 8824-1. 32.5. в определенные в 8.18.1 компоненты внешнего типа «direct-reference» и «indirect-reference*.

8.18.5    Значение данных должно быть закодировано в соответствии с синтаксисом передачи, идентифицированного кодированием, и должно быть размещено в альтернативе -encoding*, выбранной. как определено ниже.

Табл и па 2 — Альтернативные кодирования для •identification»

identification

direct-reference

indirect-reference

syntaxes

•••НЕДОПУСТИМО”*

"•НЕДОПУСТИМО”'

syntax

syntax

ОТСУТСТВУЕТ

presentation-context-id

ОТСУТСТВУЕТ

presentation-context-id

context-negotiation

transfer-syntax

prcscntation-context-id

transfer-syntax

•••НЕДОПУСТИМО'”

•••НЕДОПУСТИМО*”

fixed

•••НЕДОПУСТИМО'”

•••НЕДОПУСТИМО”*

8.18.6    Если значение данных является значением единственного типа данных ACH.I и если правила кодирования для этого значения данных определены в настоящем стандарте, то реализация отправителя должна использовать, по своему усмотрению, любой из следующих выборов для «Encoding»:

-    single-ASN.I-typc:

-    octet-aligned:

-    arbitrary.

8.18.7    Если кодированное значение данных, использующее согласованное кодирование, содержит целое число октетов, то реализация отправителя должна использовать, по своему усмотрению. любой из следующих выборов для -Encoding»:

-    octet-aligned:

-    arbitrary.

И р и м е ч а и и с — Значение данных, которое является последовательностью типов ACM. 1 и для которого синтаксис передачи специфицирует простое спсплепнс строк октетов, созданных применением ба ювых правил кодирования АО 1.1 для каждого типа ACH.I. попадает в чту категорию, а не в категорию 8.18.6.

8.18.8    Если колированное значение данных, использующее согласованное кодирование, содержит не целое число октетов, то для -Encoding» должно быть выбрано.

-    arbitrary.

8.18.9    Если для -Encoding- выбрано «single-ASN'1-typc*. то тип ACH.I должен заменить открытый тип со значением, равным значению кодируемых данных.

П ри меч а и не — Диапазон значений, которые могут встретиться в открытом типе, определяется регистрацией значения идентификатора объекта, ассониированногос «direct-reference», и/или значением целого числа, ассоциированного с -indirect-reference*.

8.18.10    Если для -Encoding* выбрано -octet-aligned», то значение данных должно кодироваться в соответствии с согласованным синтаксисом передачи, а получающиеся октеты должны образовывать значение «строка октетов».

8.18.11    Если для -Encoding* выбрано «arbitrary», го значение данных должно кодироваться в соответствии с согласованным синтаксисом передачи, а получающиеся октеты должны образовывать значение «битовая строка*.

8.19 Кодирование значения -идентификатор объекта*

8.19.1    Кодирование значения «идентификатор объекта* должно быть простым.

8.19.2    Содержимое октетов должно быть (упорядоченным) списком кодирований полиленти-фикагоров (ем. 8.19.3 и 8.19.4). соединенных вместе.

13

Страница 18

Каждый пол идентификатор представляется как последовательность (одного или нескольких) октетов. Бит 8 каждого октета указывает, является ли он последним в последовательности: бит 8 в последнем октете — нулевой: бит 8 в каждом предшествующем октете — единица. Биты 7—1 всех октетов в последовательности вместе колируют полилентификатор. Сцепляясь, эти группы бит образуют двоичное число без знака, наиболее значащий бит которого является битом 7 первого октета, а наименее значащий бит — битом I последнего октета. Подидентификатор должен быть закодирован в минимально возможном количестве октетов, то есть головной октет пол идентификатора нс должен иметь значение 80,6.

8.19.3    Чисто полилентифнкаторов (/V) должно быть на единицу меньше, чем число компонентов идентификатор;! объекта в кодируемом значении.

8.19.4    Чистовое значение первого пат идентификатора получается из значений первых двух компонентов идентификатора объекта в колируемом значении по формуле

(Л*40) + К.

где X — значение первого компонента идентификатора объекта, а Г— второго.

Примечание — Эта упаковка первых двух компонентов идентификатора объекта учитывает, что из корневого узла присвоены только три значения.

8.19.5    Чистовое значение /-то поднлентификатора (2 £ / £ N) яатястся (/' + 1)-м компонентом идентификатора объекта.

П р и мс р. Значение OBJECT IDENTIFIER (joint-iso-ccitt 100 3) или. что гоже,

{2 100 3}

имеет первый полилентификатор 180 и второй подидентификатор 3. Получается следующее кодирование:

OBJECT IDENTIFIER

Длина Содержимое

06,6    «316    813403,6

8.191т Кодирование шачсиия относительного идентификатора объекта

Примечание — Кодирование компонентов идентификатора объекта в относительном идентификаторе объекта такое же. как и кодирование компонентов (после второго) в идентификаторе объекта.

8.l9bis.l Кодирование значения относительного идентификатора объекта должно быть простым.

8.19bis.2 Октеты содержимого должны быть упорядоченным списком сцепленных кодирований подилентификаторов (см. 8.19bis.3. 8.l9bis.4). Каждый полилентификатор представляется как серия (из одного или нескольких) октетов. Бит 8 каждого октета указывает, яатястся ли этот октет последним в серии: бит 8 последнего октета равен нулю, бит 8 каждого предшествующего октета равен единице. Биты 7—1 октетов в серии кодируют полилентификатор. Концептуально эти группы битов сцеплены так. что образуют целое двоичное число без знака, старшим значащим битом которого яазяется бит 7 первого октета, а младшим — бит I последнего октета. Полилентификатор должен быть закодирован в минимально возможном количестве октетов, т. с. первый октет полилентифпкагора нс должен иметь значение 8016.

8.l9bis.3 Количество полидентификаторов (/V) должно быть равно количеству луг идентификатора объекта в колируемом значении относительного идентификатора обьекта.

8.l9bis.4 Численное значение /-го поднлентификатора (I £ / £ /V) должно быть значением /-й дуги идентификатора объекта в кодируемом значении относительного идентификатора объекта.

8.19bis.5 Пример. Значение относительного идентификатора объекта

{8571    3    2}

имеет полилентификаторы 8571. 3 и 2. Для него получается следующее кодирование:

Относительный идентификатор

объекта    Длина    Содержимое

OD16    0416    С27В030216

Страница 19

ГОСТ Р ИСО/МЭК 8825-1-2003

8.20 Кодирование шачсннн ограниченных типов символьных строк

8.20.1    Значение данных состоит из строки символов из набора символов, специфицированного в определении типа ACH.I.

8.20.2    Каждое значение данных должно быть закодировано независимо от других значений данных того же типа.

8.20.3    Каждая символьная строка должна быть закодирована гак. как если бы она была объявлена

lUNIVERSALxl IMPLICIT OCTET STRING.

где x — номер тега универсального класса, присвоенный типу символьной строки в ГОСТ Р ИСО/МЭК 8824-1. Значение строки октетов специфицируется в 8.20.4 и 8.20.5.

8.20.4    Когда символьная строка специфицирована в ГОСТ I* ИСО/МЭК 8824-1 прямой ссылкой на таблицу перечислений (Numeric St ring и PrintableString). значение строки октетов должно быть таким, как установлено в 8.20.5 для типа VisiblcString с тем же значением символьной строки.

8.20.5    Для ограниченных символьных строк, кроме Universal St ring и BMPString. строка содержит октеты, определенные в ИСО/МЭК 2022 для кодирования в 8-битном контексте, используя управляющую последовательность и кодирования символов, зарегистрированные в соответствии с ИСО 2375.

8.20.5.1    Может использоваться только га управляющая последовательность, которая специфицирована одним из регистрационных номеров, используемых для определения типа строки символов в ГОСТ Р ИСО/МЭК 8824-1.

8.20.5.2    В начале каждой строки должны быть присвоены определенные регистрационные номера для обозначения и вызова GO. и/или СО. и/или О (используя терминологию ИСО/МЭК 2022). Для каждого типа эти номера устаноазсны в таблице 3 вместе с подразумеваемыми ими упраазяюшими последовательностями.

8.20.5.3    Некоторые типы символьных строк нс должны содержать явных упраазяюших последовательностей в своих кодированиях; во всех остальных случаях любая упраазяюшая последовательность. разрешенная 8.20.5.1. может появиться в любое время, включая начато кодирования. В таблице 3 перечислены типы. для которых допускаются явные улраазяюшис последовательности.

8.20.5.4    Объявлении не должны использоваться, если они явно не ра (решены пользователем ACH.I.

П р и м с ч а и и с — Выбор типа АСИ.I предоставляет ограниченные возможности функций объявлений. Конкретные прикладные протоколы могут передавать объявления в других элементах протокола или подробно указывать способ использования объявлении.

Табл и на 3 — Использование управляющих последовательностей

Тип

Присвоенный GO (регистрационный номер)

Присвоенный СО или С1 (регистрационный номер)

Присвоенные управляющие последовательности и фиксация регистра (тле применимо»

Явные последовательности pa «решены?

NumcricString

6

Нет

ESC 2/8 4/2 LS0

Ист

PrintableString

6

Нет

ESC 2/8 4/2 LS0

Нет

TektexString (T6I String)

102

106    (СО)

107    <С1)

ESC 2/8 7/5 I.S0 ESC 2/1 4/5 ESC 2/2 4/8

Да

VideotexString

2

1 (СО) 73 (CI)

ESC 2/8 7/5 l.SO ESC 2/1 4/0 ESC 2/2 4/1

Да

VisiblcString (IS0646String)

6

Нет

ESC 2/8 4/2 LS0

Нет

IA5String

6

1 (СО)

ESC 2/8 4/2 l.SO ESC 2/1 4/0

Нет

Graphic-String

б

Нет

ESC 2/8 4/2 LS0

Да

GcncralString

6

1 (СО)

ESC 2/8 4/2 I.S0 ESC 2/1 4/0

Да

Примечание— Многие m обычно используемых символов (например. A—Z) появляются в ряде символьных репертуаров с индивидуальными регистрационными номерами и управляющими послсловагель-ностями. Когда типы АСН.1 допускают управляющие последовательности, возможно несколько кодирований для конкретной символьной строки (см. также 7.3).

Страница 20

П р и мер. С определением типа АСН. I Name:: = VisiblcString

значение

«Jones*

может быть закодировано (простая (|юрма) как

VisiblcString    Длина

16    05

или (составная форма, определенная длина)

VisiblcString    Длина

ЗА16    09,6

или (сосгавная форма, неопределенная длина

VisiblcString    Длина

ЗА,6    80,6

Содержимое

4A6F6E6573,6

а к

Содержимое

OctctString

Длина

Содержимое

04,6

03,6

4А6Р6Е,6

OctctString

Длина

Содержимое

04,6 i как

023,6

6573,6

Содержимое

OctctString

Длина

Содержимое

04,6

03,6

4A6F6EI6

OctctString

Длина

Содержимое

04,6

023,6

6573,6

EOC

Длина

00|6

00,6

8.20.6    Приведенный пример иллюстрирует три из (многих) возможных форм (по усмотрению отправителя). Получатели обязаны обрабатывать все допустимые формы (см. 7.3).

8.20.7    Для тина «UnivcrsalString* строка октетов должна содержать октеты, определенные в ИСО/МЭК 10646-1. используя четырсхоктстную каноническую форму (см. 14.2 ИСО/МЭК 10646-1). Сигнатуры использоваться не должны. Управляющие функции могут использоваться при условии их соответствия ограничениям 8.20.9.

8.20.8    Для типа «BMPString* строка октетов должна содержать октеты, определенные в ИСО/МЭК 10646-1. используя лвухоктстную BMP форму (см. 14.2 ИСО/МЭК 10646-1). Сигнатуры использоваться нс должны. Управляющие функции могут использоваться при условии их соответствия ограничениям 8.20.9.

8.20.9    Управляющие функции СО и О по ГОСТ 34.301 могут использоваться за следующими исключениями.

Примечания

1    Цель настоящего подраздела — paзрешить полезные управляющие функции, такие как LF. CR. ТАИ и т. д.. но запретить использование переходов к другим наборам символов.

2    Управляющие функции СО и СI колируются в два октета для ВМ PString и в четыре — язя UnivcrsalString.

а)    Не должны использоваться управляющие последовательности объявления, определенные в ИСО/МЭК 2022.

Примеч а к нс 3 — Примят контекст кодирования символов по ИСО/МЭК 10646-1.

б)    Не должны использоваться назначающие и идентифицирующие управляющие последовательности. определенные в ИСО/МЭК 2022. включая идентифицирующие управляющие последовательности. ра(решенные ИСО/МЭК 10646-1. 17.2 17.4.

Примечание 4 — ACM.I позволяет использовать нотацию подтипа PcrmittcdAlphabct для выбор;! набора разрешенных символов. PcrmittcdAlphabct используется также ятя выбора уровня реализации по ИСО/МЭК 10646-1. Строка BMPString всегда использует лвухоктстную форму, a UnivcrsalString — четырехок-тстную.

в)    Не должны использоваться вызывающие иди конгролируюшис управляющие последовательности ИСО/МЭК 2022. такие как SHIFT IN (SI). SHIFT OUT (SO) иди LOCKING SHIFT FOR G3 (SS3).