Стр. 1
 

47 страниц

517.00 ₽

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

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

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

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

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

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

Правила кодирования, определенные в настоящем стандарте:

- используются во время передачи;

- предназначены для использования в случаях, когда при выборе правил кодирования большое значение имеет минимизация размера представления значений;

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

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

Страница 1

ГОСТ Р ИСО/МЭК 8825-2-2003 ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология ПРАВИЛА КОДИРОВАНИЯ АСН.1

Ч а с т ь 2

Спецификация правил уплотненного кодирования (PER)

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

БЗ 4 - 2002/58


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

Страница 2

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

Предисловие

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

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

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

3    Настоящий стандарт содержит полный аутентичный текст ИСО/МЭК 8825-2—'98 ‘■Информационная технология. Правила кодирования АСН.1. Часть 2. Спецификация правил уплотненного кодирования (PER)» с Изменением N° 1 (1999 г.) и Дополнением № I (2000 г.)

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

<£) И ПК Издательство стандартов, 2003

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

II

Страница 3

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

Содержание

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

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

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

3.1    Определение услуг уровня представления...................................2

3.2    Спецификация основной нотации.........................................2

3.3    Спецификация информационного объекта..................................2

3.4    Спецификация ограничения.............................................2

3.5    Спецификация параметризации ACH.I.....................................2

3.6    Правила основного кодирования..........................................2

3.7    Дополнительные определения............................................2

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

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

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

7    Правила кодирования, определенные в настоящем стандарте........................6

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

9    Подход к кодированию, используемый PER.....................................7

9.1    Применение нотации типа...............................................7

9.2    Использование тегов для обеспечения канонического порядка...................7

9.3    Видимые для PER ограничения ...........................................7

9.4    Модель типа и значения, используемые для кодирования.......................9

9.5    Структура кода.......................................................9

9.6    Кодируемые типы.....................................................10

10    Процедуры кодирования...................................................10

10.1    Создание полного кодирования..........................................10

10.2    Поля открытого типа..................................................10

10.3    Кодирование    как неотрицательное двоичное целое...........................11

10.4    Кодирование    как двоично-дополнительное до 2 целое.........................11

10.5    Кодирование    ограниченного целого числа..................................12

10.6    Кодирование    обычно маленького неотрицательного целого числа................13

10.7    Кодирование    полуограниченного целого числа..............................13

10.8    Кодирование    неограниченного целого числа................................13

10.9    Общие правила кодирования детерминанта длины............................14

11    Кодирование булевского типа...............................................16

12    Кодирование целочисленного типа...........................................17

13    Кодирование перечислимою типа............................................17

14    Кодирование действительного типа...........................................18

15    Кодирование типа    «битовая строка*...........................................18

16    Кодирование типа    «строка октетов*...........................................19

17    Кодирование вырожденного типа.............................................20

18    Кодирование типа «последовательность*.......................................20

Страница 4

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

19    Кодирование типа «последовательность-из».................................... 21

20    Кодирование типа «множество»............................................. 22

21    Кодирование типа «множество-из»........................................... 22

22    Кодирование выборочного типа............................................. 23

23    Кодирование типа «идентификатор объекта*.................................... 23

24    Кодирование типа «встроенное-длп».......................................... 24

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

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

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

28    Идентификаторы объектов синтаксисов передачи................................ 28

Приложение Л Пример кодирования........................................... 29

А.1 Запись, которая не использует ограничения подтипа.......................... 29

Л.2 Запись, которая использует ограничения подтипа............................ 31

Л.З Запись, используемая маркеры расширения................................. 34

А.4 Запись, которая использует расширяющие дополнительные группы............... 37

Приложение В Объединения видимых для PER ограничений......................... 40

Приложение С Поддержка алгоритмов PER...................................... 41

Приложение D Поддержка правил расширения ЛСН.1.............................. 42

Приложение Е Руководство по сцеплению кодирований PER......................... 42

Приложение F Присвоенные значения идогтифнкаторов объектов..................... 42

IV

Страница 5

ГОСТ Р ИСО/МЭК 8825-2-2003 ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология ПРАВИЛА КОДИРОВАНИЯ АСН.1 Ч асть 2

Спецификация правил уплотненного кодирования (PER)

Information technology. ASN.I encoding rules.

Part 2. Specification of Packed Encoding Rules (PER)

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

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

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

Правила кодирования, определенные в настоящем стандарте:

-    используются во время передачи;

-    предназначены для использования в случаях, когда при выборе правил кодирования большое значение имеет минимизация размера представления значений;

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

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

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

ГОСТ 34.971-91 (ИСО 8822—88) Системы обработки информации. Взаимосвязь открытых систем. Спецификация услуг уровня представления для режима с установлением соединения (см. также Рекомендацию МСЭ-Т X. 216)

ГОСТ 34.972-91 (ИСО 8823—88) Системы обработки информации. Взаимосвязь открытых систем. Спецификация протокола уровня представления для режима с установлением соединения (см. также Рекомендацию МСЭ-Т X. 226)

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

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

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

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

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

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

I

Страница 6

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

ГОСТ I1 ИСО/МЭК 8825-1—2003 Информационная технология. Правила кодирования АСН. I. Спецификация правил основного (BER), канонического (CER) и различающего (DER) кодирований (см. также Рекомендацию МСЭ-Т X. 690)

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

ИСО/МЭК 646 —91* Информационная технология. 7-битнокодированный набор символов ИСО для обмена информацией

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

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

3.1    Определение услуг уровня представления

В настоящем стандарте используют следующие термины, определенные в ГОСТ 34.971:

а)    множество определенных контекстов;

б)    идентификатор контекста уровня представления.

3.2    Спецификация основной нотации

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

3.3    Спецификация информационного объекта

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

3.4    Спецификация    ограничения

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

ГОСТ Р ИСО/МЭК 8824-3:

а)    ограничение связи компонентов;

б)    табличное ограничение.

3.5    Спецификация    параметризации АСН. 1

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

ГОСТ Р ИСО/МЭК 8824-4, — переменное ограничение.

3.6    Правила основного кодирования

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

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

а)    динамическое соответствие;

б)    статическое соответствие;

в)    значение данных;

г)    кодирование (значений данных);

д)    отправитель;

е)    получатель.

3.7    Дополнительные определения

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

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

Примечании

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

2    Целое число в данном контексте является синонимом математического термина «целое число». Его следует огличать от целочисленного типа integer АСН. 1.

3.7.2    значение абстрактного синтаксиса: Значение из абстрактного синтаксиса (определенного как множество значений единственного типа АСН. 1), которое должно быть закодировано PER или которое должно быть получено декодированием PER.

1

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

Страница 7

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

II римечание - Единственный тип ACH.I. связанный с абстрактным синтаксисом, формально идентифицируется объектом класса ABS-TRACT-SYNTAX.

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

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

3.7.5    составной тип: Тип «множество*, «последовательность», «множество-из», «последователь-ность-из», «встроенное-здп», выборочный, внешний или неограниченный тип символьных строк.

3.7.6    составное значение: Значение составного типа.

3.7.7    ограниченное целое число: Целое число, которое ограничено видимым для PER требованием, находится в диапазоне от lb до ub, где lb меньше или равно ub, и значения lb и ub являются допустимыми.

Примечание — Ограниченные целые числа встречаются в кодировании, идентифицирующем: выбранную альтернативу из выборочного типа, длину строк символов, октетов и битов, которая ограничена некоторой максимальной длиной видимым для PER образом, счетчик числа компонентов в типе «последова-тельноегь-из» или «множесгво-из». максимальное число которых ограничено видимым для PER образом, значение целочисленного типа, которое ограничено видимым для PER образом, и значение, которое обозначает перечисление в перечислимом типе.

3.7.8    эффективное ограничение размера (для ограничения типов строк): Единственное конечное ограничение размера, которое может быть применено к встроенному типу строки, результатом которого является допущение всех строк и только тех длин, которые могут иметь строки ограничиваемого типа.

Примечание — Например, следующая нотация имеет эффективное ограничение размера:

А :: - IA5String (S12E< 1..4)|SIZE< 10.. 15)), так как она может быть переписана с единственным ограничением размера, который относится ко всем значениям:

А :: - lASString (SIZE(l..4|10..1S)). тогда как следующая нотация не имеет эффективного ограничения размера, так как строка может быть произвольной длины, если она не содержит никаких символов, кроме 'а‘, V и V:

В :: « lASString (SIZE( l..4)|FROM («аЫ>))

3.7.9    эффективное ограничение допустимого алфавита «PermittedAlphabet» (для ограниченных типов символьных строк): Единственное ограничение PermittedAlphabet, которое может быть применено к встроенному типу символьной строки известной кратности, результатом которого яазяется допущение всех строк, содержащих только те символы, которые могут присутствовать в любой позиции любого значения ограниченного типа символьных строк.

П римечание —Ограничением эффективного допустимого алфавита (PermittedAlphabet) является либо весь алфавит неограниченного типа символьных строк, либо спецификация PermittedAlphabet. которая может оказаться супермножеством всех ограничений PermittedAlphabet. наложенных на тип. Например, в

Ах :: - lASString (FROM («AB»>|FROM (.CD*))

Bx :: « lASStnng (SIZE (1..4)|FROM («be.))

*Ах» имеет эффективное ограничение PermittedAlphabet, которое состоит из всего алфавит lASString. так как нет ограничения PermittedAlphabet, применимого ко всем значениям «Ах». То же самое справедливо и для «Вх». С другой стороны, следующий пример имеет эффективное ограничение PermittedAlphabet «ABCDE*. так как существует ограничение PermittedAlphabet. применимое ко всем значениям:

А :: - lASString (FROM (*AB»)|FROM <.CD.)|FROM («ABCDE.))

3.7.10    индекс перечисления: Неотрицательное целое число, связанное с «EnumerationItem» в перечислимом типе. Индексы перечисления определяются сортировкой -EnumerationItem» в возрастающем порядке их значений перечисления и назначением индексов перечисления, начиная с нуля для первого «Enumerationltem», единицы — для второго, и далее до последнего «Enumeration Item. в отсортированном перечне.

Г1 римечание — «Enumerationltem» в «RoolEnumeracion» сортируются отдельно от элементов перечисления в «AdditionalEnumcracion».

3

Страница 8

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

3.7.11    расширяемый для кодирования PER: Свойство типа, определение которого содержит маркер расширения, влияющий на кодирование PER.

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

Примечание — В модели, применяемой в настоящем стандарте, использован термин «список полей» для указания спя минога списка буферов, каждый из которых содержит кодирование «битового поля* или •выровненного по октету битового поля», его длину в битах и указатель выравнивании по октету. Каждое кодирование является кодированием значения типа ACH. I. Указатель выравнивания по октету сообщает. должно ли кодирование быть выравнено в полном кодировании по границе октета, когда оно используется для формировании полного кодирования значения абстрактного синтаксиса, или оно должно быть добавлено непосредственно после последнего бита предыдущего кодирования. Термин «список полем» существует только для целей описания, а не предлагает метод реализации.

3.7.13    неопределенная длина: Кодирование, длина которого более 64К— I или максимальная длина которого не может быть определена из нотации ACH. 1.

3.7.14    тин фиксированной длины: Тип, в кодировании которого крайнее значение детерминанта длины может быть определено (используя методы, установленные в настоящем стандарте) из нотации типа (после применения ограничений, видимых для PER), и это значение относится ко всем допустимым значениям типа.

3.7.15    фиксированное значение: Значение, которое может быть определено (используя методы, установленные в настоящем стандарте) как единственное допустимое значение (после применения ограничений, видимых для PER) управляющего типа.

3.7.16    тип символьной строки известной кратности: Ограниченный тип символьной строки, число октетов в кодировании которой для всех допустимых значений символьной строки равно произведению известного фиксированного числа на число символов в строке. Типами символьных строк известной кратности являются lA5String, PrintableString, VisibleString. NumericString, Univer-salString и BMPString.

3.7.17    детерминант длины: Счетчик (битов, октетов, символов или компонентов), определяющий длину части или всего кодирования PER.

3.7.IS обычно маленькое неотрицательное целое число: Часть кодирования, которая представляет значения неограниченного неотрицательного целого, в которой маленькие значения встречаются с большей вероятностью, чем большие.

3.7.19    обычно маленькая длина: Длина кодирования, которая представляет значения неограниченной длины, маленькие значения которой встречаются с большей вероятностью, чем большие.

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

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

Примечание — Значение дополненни до 2 двоичного числа получается нумерацией битов в октетах содержимого, начиная с бита 1 последнего октета как бита 0 и заканчивая битом Я первого окгета. Каждому биту присваивается чистовое значение 2, где \ — номер бита в описанной выше нумерации. Значение дополнении до 2 двоичного числа получается суммированием присвоенных числовых значений битов, равных единице.

3.7.22    видимое для PER ограничение: Использования нотации ограничения ACH. I. которое влияет на кодирование значения PER.

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

3.7.24    полуограниченное целое число: Целое число, ограниченное видимым для PER образом

Страница 9

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

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

Примечание — Полуотраниченныс целые числа встречаются в кодировании: длин неограниченных (или некоторых ограниченных) типов строк символов, октетов и битов, счетчиков числа компонентов в неограниченных (или некоторых ограниченных) типах «последовательность-из*, «множество-из» и значений целочисленного типа, ограниченных тем. что должны быть больше некоторого минимального значения.

3.7.25    простой тип: Тип, не являющийся составным.

3.7.26    текстуально зависимый: Применяется для идентификации случая, когда некоторое ссылочное имя используется для вычисления множества элементов; значение множества элементов рассматривается как зависящее от этого имени, даже если фактически сформированное окончательное арифметическое множество не зависит от фактического значения множества элементов, присвоенного ссылочному имени.

Примечание — Например следующее определение «Foo* текстуально зависит от «Ват», хотя «Ват» не влияет на набор значений «Foo* (таким образом, согласно 9.3.4. ограничение на «Роо» не является видимым для PER, так как для «Ваг» устанавливается табличное ограничение, a «Foo* текстуально зависит от *Ваг»>.

MY-С LASS :: - CLASS (&namc PrintableString. &age 1NTEGER| WITH SYNTAX {&name, &age|

MyObjectSet MY-CLASS :: - {(«Jack». 7}|{«Jill., 5|)

Bar :: =• MY CLASS. &age ((MyObjectSctj)

Foo : : - INTEGER (BaijL.lOO)

3.7.27    неограниченное целое число: Целое число, которое не ограничивается видимым для РЕК образом.

Прим с ч а н и с — Неограниченные целые числа встречаются только при кодировании значений целого

типа.

4    Сокращения

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

ACH. I — абстрактная синтаксическая нотация версии 1;

ВОС — взаимосвязь открытых систем;

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

BER — правила основного кодирования (Basic Encoding Rules) ACH. I;

PER — правила уплотненного кодирования (Packed Encoding Rules) ACH. 1;

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

DER (DER) — правила различающего кодирования (Distinguished Encoding Rules» ACH. I;

I6K - 16384;

32K - 32768:

48К - 49152;

64K - 65536.

5    Нотация

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

6    Соглашения

6.1    В настоящем стандарте значения октетов в кодировании определены с использованием терминов «старший значащий бит* и «младший значащий бит».

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

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

6.3    В настоящем стандарте термин «октет» используют вместо термина «восемь бит». Приме-

5

Страница 10

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

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

7 Правила кодирования, определенные в настоящем стандарте

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

7.2    Без знания типа закодированного значения невозможно определить структуру кодирования (по любому из алгоритмов правил кодирования PER). В частности, коней кодирования не может быть определен из самого кодирования без знания типа закодированного значения.

7.3    Кодирование PER всегда я&шегся надежно передающим при условии, что абстрактные значения типов EXTERNAL, EMBEDDED PDV и CHARACTER STRING не содержат идентификаторы контекста уровня представления.

7.4    Алгоритмом наиболее общего правила кодирования, из определенного в настоящем стандарте, является BASIC-PER. который в общем случае не приводит к каноническому кодированию.

7.5    Вторым алгоритмом правила кодирования, определенным в настоящем стандарте, является CANONICAL-PER, который приводит к каноническим кодированиям. Он определен как ограничение на зависящие от реализации альтернативы в кодировании BASIC-PER. CANONICAL-PER приводит к каноническим кодированиям, которые применяются, когда к абстрактным значениям необходимо применять аутентификаторы, как описано в ГОСТ Р ИСО/МЭК 8825-1.

Примечание— Любая реализация, соответствующая кодированию CANONIC'AL-PER. удовлетаоря-ет и кодированию BASIC-PER. Любая реализация, соответствующая декодированию BASIC-PER, удовлетворяет декодированию CANONICAL-PER. Таким образом, кодирования, созданные по CANONICAL-PER. являются кодированиями, которые допускакися BASIC-PER.

7.6    Если тип, кодируемый по BASIC-PER или CANONICAL-PER. содержит типы EMBEDDED PDV. CHARACTER STRING или EXTERNAL, то внешнее кодирование перестает быть надежно передающим, если синтаксис передачи, используемый для всех типов EMBEDDED PDV, CHARACTER STRING и EXTERNAL, не является надежно передающим. Если тип, кодируемый по BASIC-PER или CANONICAL-PER. содержит типы EMBEDDED PDV. CHARACTER STRING или EXTERNAL, то внешнее кодирование перестает быть каноническим, если синтаксис передачи, используемый для всех типов EMBEDDED PDV, CHARACTER STRING и EXTERNAL, не является каноническим.

П р и м сч а н и е — Символьные синтаксисы передачи, поддерживающие все символьные абстрактные синтаксисы вида {iso standard 10646 level-1 (1). . . являются каноническими. Символьные синтаксисы передачи, которые поддерживают {iso standard 10646 level-2 (2). . . .} и {iso standard 10646 level-3 (3). . . .}, не всегда являются каноническими. Все вышеуказанные символьные синтаксисы передачи являются надежно передающими.

7.7    Как BASIC-PER, так и CANONICAL-PER содержат по два варианта: ALIGNED (с выравниванием) и UNALIGNED (без выравнивания). В варианте ALIGNED вставляются заполняющие биты для восстановления выравнивания по октету. В варианте UNALIGNED заполняющие биты никогда не вставляются.

7.8    Между вариантами ALIGNED и UNALIGNED взаимодействие невозможно.

7.9    Кодирование PER яаляется саморазграниченным, только если известен тип кодируемого значения. Кодовые представления всегда кратны восьми битам. При передаче в типе EXTERNAL кодирования должны передаваться в альтернативе OCTET STRING, если только сам тип EXTERNAL не кодируется по PER. когда значение может быть закодировано как единственный тип АСН. 1 (то есть открытый тип). При передаче в протоколе уровня представления ВОС должно использоваться «полное кодирование* (как определено в ГОСТ 34.972) с выбранной альтернативой OCTET STRING.

7.10    Правила настоящего стандарта применяют к обоим алгоритмам и вариантам, если не оговорено иное.

7.11    Приложение С является справочным и содержит рекомендации, в каких комбинациях следует реализовывать PER для увеличения вероятности взаимодействия.

6

Страница 11

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

8    Соответствие

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

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

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

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

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

Примечания

1    Вообще говоря, нет альтернативных кодирований дли определенного в настоящем стандарте BASIC-PER. BASIC-PER становится каноническим, если в других стандартах определить надежно передающую операцию и ограничиться некоторыми из альтернатив кодирования. CANONICAL-PER представляет альтернативу для привил рахмчающего и канонического кодирования (см. ГОСТ Р ИСО/МЭК SS25-1), когда требуется каноническое и надежно передающее кодирование.

2    Копи для обеспечения канонического кодирования используется CANONICAL-PER. рекомендуется, чтобы каждое полученное из него хеш-кодирование было связано идентификатором алгоритма, который идентифицирует CANONICAL-PER как преобразование из значения абстрактного синтаксиса в исходную битовую строку (которая затем была хеширована).

9    Подход к кодированию, используемый PER

9.1    Применение нотации типа

9.1.1    Настоящие правила кодирования используют нотацию типа ЛСН. 1 и могут быть применены только для кодирования значений одного типа ЛСН. 1, определенного с использованием этой нотации.

9.1.2    В частности, но не исключительно, они зависят от следующей информации, находящейся в модели типа и значения ЛСН. I, лежащей в основе использования нотации:

а)    вложенность выборочных типов внутри выборочных типов;

б)    теги, установленные в компонентах типа «множество*, альтернативах выборочного типа и перечислимых значениях;

в)    являются ли компоненты типа «множество» или «последовательность» факультативными или нет?

г)    имеют ли компоненты типа «множество» или «последовательность* значение DEFAULT или нет?

д)    ограниченный диапазон значений типа, который возникает вследствие применения видимых (только) для PER ограничений;

е)    является ли компонент открытым типом?

ж)    присутствует ли маркер расширения?

9.2    Использование тегов для обеспечения канонического порядка

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

9.3    Видимые для PER ограничения

П р и м с ч а и и с — То обстоятельство, что некоторые ограничения ACM. 1 могут быть невидимыми для PER в отношении целей кодирования и декодирования, не влияет на использование ограничений при обработке ошибок, обнаруженных во время декодирования, и не подразумевает, что значения, нарушающие такие ограничения. яа1яются допустимыми для передачи соответствующим отправителем.

Страница 12

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

9.3.1    Ограничения, выраженные в удобочитаемом для человека тексте или в комментарии ЛСН. I, не являются видимыми для PER.

9.3.2    Переменные ограничения не являются видимыми для РЕК (см. ГОСТ Р ИСО/МЭК 8824-4, 10.4 и 10.5)

9.3.3    Табличные ограничения не являются видимыми для PER (см. ГОСТ Р ИСО/МЭК 8824-3).

9.3.4    Ограничения, вычисление которых текстуально зависит от табличного ограничения или ограничения связи компонентов, не являются видимыми для PER (см. ГОСТ Р ИСО/МЭК 8824-3).

9.3.5    Ограничения связи компонентов не являются видимыми для PER (см. ГОСТ Р ИСО/МЭК 8824-3).

9.3.6    Ограничения на ограниченные типы символьных строк, не являющиеся (см. ГОСТ Р ИСО/МЭК 8824-1, раздел 36) типами символьных строк известной кратности, не являются видимыми для PER (см. 3.7.16).

9.3.7    С учетом вышесказанного, все ограничения размера являются видимыми для PER.

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

9.3.9    Ограничения допустимого алфавита PermittedAlphabet в типах символьных строк известной кратности являются видимыми для PER.

9.3.10    Эффективное ограничение PermittedAlphabet для ограничиваемого типа является единственным и таким, что символ допустим только в том случае, если имеется некоторое значение ограниченного типа, которое содержит этот символ. Если все символы ограничиваемого типа могут быть представлены в некотором значении ограниченного типа, то эффективное ограничение PermittedAlphabet является набором символов, определенным для неограниченного типа.

Примечания

1    В определении ограниченного типа крашыс, видимые для PER ограничения, могут быть применены либо прямо, либо с использованием конструкции «ContainedSubtype*.

2    Результат совместного действия ограничений, которые по отдельности являются видимыми для PER. см. в приложении В.

9.3.11    Внутреннее ограничение типа, примененное к вещественному типу, является видимым для PER.

9.3.12    Внутреннее ограничение типа, примененное к неограниченному типу символьных строк или типу «встроеиное-здп», является видимым для PER только в том случае, когда оно используется для ограничения значения компонента -«syntaxes* до единственного значения или для ограничения «identification* до альтернативы «fixed* (см. разделы 24 и 27).

9.3.13    Ограничения на полезные типы (по ГОСТ Р ИСО/МЭК SK24-1) не являются видимыми для PER.

9.3.14    С учетом вышесказанного, все другие ограничения являются видимыми для PER только в том случае, если они применяются к целочисленному типу или, исключая ограничение до единственного значения, к типам символьных строк известной кратности.

9.3.15    Если видимое для PER ограничение имеет внешнюю альтернативу ElementSetSpec, которая создает расширяемое множество значений (в соответствии с ГОСТ Р ИСО/МЭК Х824-1, рахаел 46), то полученный тип является расширяемым для кодирований PER (пока он не ограничен далее, см. ГОСТ Р ИСО/МЭК 8S24-I. 47.5); в противном случае тип не является расширяемым для кодирований PER.

Примечания

1    Если маркер расширения присутствует в ограничении ConstraintSpec. которое не является видимым для PER. а другого маркера расширения в ограничении нет. то тип кодируется PER гак, как если бы у него отсутствовал маркер расширения.

2    Если имеется несколько спецификаций SizeConstraint, применяемых к тину, и одна из них является расширяемой, то ТИП кодируется PER гак, как если бы маркеры расширения присутствовали во всех спецификациях SuxConsiraint.

9.3.16    Тип яатяется расширяемым для кодирований PER. если выполнено любое из следующих условий:

а) он подучен из типа ENUMERATED (образованием подтипа, ссылкой на тип или тегированием) и имеется маркер расширения в продукции «Enumerations*, или

8

Страница 13

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

б)    он получен из типа SEQUENCE (образованием подтипа, типом, ссылкой на тип или тегированием) и имеется маркер расширения в продукциях «ComponentTypeLists* или «Sequence-Type», или

в)    он получен из типа SET (образованием подтипа, ссылкой на тип или тегированием) и имеется маркер расширения в продукциях «ComponentTypeLists* или «SetType*, или

г)    он получен из типа CHOICE (образованием подтипа, ссылкой на тип или тегированием) и имеется маркер расширения в продукции «AltemativeTypeLists*.

9.4    Модель типа и значения, используемая для кодирования

9.4.1    Тип ACH. I является либо простым, либо построен с использованием других типов. Нотация допускает использование ссылок на тип и тегирование типов. Для настоящих правил кодирования использование ссылок на тип и тегирование не влияет на кодирование и не видно в модели, за исключением требований, устаноапенных в 9.2. Нотация также допускает применение ограничений и спецификаций ошибок. Видимые для PER ограничения представлены в модели как ограничения значений типа. Другие ограничения и спецификации ошибок не влияют на кодирование и не видны в модели типа и значения PER.

9.4.2    Значение, которое должно быть закодировано, может рассматриваться либо как простое, либо как составное, построенное с помощью метода структурирования из компонентов, которые являются простыми или составными значениями, подобно структуре определения типа ACH. 1.

9.5    Структура кода

9.5.1 Настоящие правила кодирования специфицируют:

а)    кодирование простого значения в список полей, и

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

в)    преобразование списка полей самого внешнего значения в полное кодирование значения абстрактного синтаксиса (см. 10.1).

тяг

Длина

ХГ

Дина

Содар-

■401

Дгиш

Coqip-

жимм

тл я

Ссвдрсимм

Примечание — Преамбула, ллина и содержимое являются «полями», которые, сцепленные вместе, образуют «список полей». Список полей составного типа, отличного от выборочного, может состоять из полей нескольких значений, сцепленных вместе. Либо преамбула, либо длина и (или) содержимое любого значения могут быть опушены.

Рисунок 1 — Кодирование составного значения в список полей

9.5.2 Кодирование значения компонента данных либо:

а)    состоит из трех частей, показанных на рисунке 1. которые появляются в следующем порядке:

1)    преамбула (см. разделы 18, 20 и 22);

2)    детерминант длины (см. 10.9);

3)    содержимое, либо

б)    (когда содержимое большое) состоит из произвольного числа частей, как показано на рисунке 2, первая из которых является преамбулой (см. разделы 18, 20 и 22), а последующие являются парами выровненных по октету битовых полей: первое поле — детерминант длины для фрагмента содержимого, второе — фрагмент содержимого; последняя пара полей идентифицируется частью детерминанта длины, как определено в 10.9.

СояФ-

виио»

(ыаишт

отсут

ствовать)


ГЪиш*-

Бупй


Длина


Cwwp-

мМ


Дли*


Ссрвр-

шмОФ


Длина


Рисунок 2 — Кодирование значения длинных данных

9

Страница 14

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

9.5.3 Каждая часть. упомяп>тая и 9.5.2, порождает:

а) либо вырожденное поле (null), либо

в)    битовое поле, либо

г)    выровненное по октету битовое поле, либо

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

9.6 Кодируемые типы

9.6.1    Дальнейшие разделы специфицируют кодирование следующих типов в списках полей: булевского, целочисленного, перечислимого, действительного, «битовая строка», «строка октетов», вырожденного, «последовательность*, «иоследовательносгь-из», «множество*, «множество-из», выборочного, открытого, «идентификатор объекта*, «относительный идентификатор объекта», «встро-еннос-здп*, внешнего, ограниченных и неограниченных типов символьных строк.

9.6.2    Тип ANY. определенный в ГОСТ Р ИСО/МЭК 8824—93, должен кодироваться как открытый тип.

9.6.3    Селективный тип должен кодироваться как выбранный тип.

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

9.6.5    Следующие «полезные типы* раздела 40 ГОСТ I* ИСО/МЭК 8824-1 должны кодироваться так, как если бы они были заменены своими определениями по ГОСТ Р ИСО/МЭК 8824-1:

-    обобщенное время;

-    всемирное время;

-    описатель объекта.

Ограничения на полезные типы не являются видимыми для PER.

Ограничения на кодирование типов обобщенного и всемирного времени, установленные в CER и DER (ГОСТ Р ИСО/МЭК 8825-1, 11.7 и 11.8). должны применяться и здесь.

10 Процедуры кодирования

10.1    Создание полного кодирования

10.1.1    Список полей, полученный в результате применения настоящего стандарта к самому внешнему значению, должен использоваться для создания полного кодирования значения абстрактного синтаксиса следующим образом: каждое поле в списке рассматривают поочередно и присоединяют (с предшествующими дополнительными нулевыми битами заполнения) к концу битовой строки, которая должна образовать полное кодирование значения абстрактного синтаксиса.

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

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

Г1 рн м еч а н и е — Кодирование самого внешнего значения является пустой битовой строкой, если, например, значение абстрактного синтаксиса является вырожденным типом или ограниченным до единственного значения целочисленным типом.

10.1.4    Результирующая битовая строка является полным кодированием значения абстрактного синтаксиса.

10.2 Поля открытого типа

10.2.1 Ятя кодирования полей открытого типа значение фактического типа, занимающее поле, должно быть закодировано в списке полей, который затем должен быть преобразован в полное

10

Страница 15

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

кодирование значения абстрактного синтаксиса, как определено в 10.1. для создания строки октетов длиной п.

10.2.2 Затем список полей для значения, в которое должен быть вставлен открытий тип, должен быть добавлен (как определено в 10.9) к неограниченной длине п (в октетах) и соответствующему выровненному по октету полю битов, содержащему результат 10.2.1.

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

10.3 Кодирование как неотрицательное двоичное целое

Примечание — В настоящем подразделе дано точное определение термина «неотрицательное двоичное целое кодирование», которое размешает единственное целое в ноле, содержащем фиксированное чисто битов, фиксированное чисто октетов или минимальное количество октетов, необходимых для его размещения.

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

10.3.2    Головной бит поля определяется как старший значащий бит первого октета, а завершающий бит поля — как младший значащий бит последнего октета.

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

10.3.4    При неотрицательном двоичном целом кодировании значение целого числа, представленного этим кодированием, должно быть суммой значений, определенных каждым битом. Бит, равный *0», имеет нулевое значение. Бит с номером п. равный «1*. имеет значение Т.

10.3.5    Кодирование, сумма которого (определенная выше) равна кодируемому значению, является кодированием этого значения.

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

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

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

10.4 Кодирование как двоично-дополнительное до 2 целое

П р и м с ч а и и с — В настоящем подразделе дано точное определение термина «двоично-дополнительное до 2 целое кодирование», которое располагает единственное целое в иоле, содержащем минимальное количество октетов, необходимых для его размещения. На эти процедуры ссылаются последующие спецификации кодирования.

10.4.1    Последующие разделы ссылаются на генерацию двоично-дополнительного до 2 целого кодирования целого числа (которое может быть отрицательным, нулем или положительным) в минимальном для значения количестве октетов. Настоящий подраздел точно специфицирует кодирование. которое должно применяться при подобных ссылках.

10.4.2    Головной бит поля определяется как старший значащий бит первого октета, а завершающий бит тюля — как младший значащий бит последнего октета.

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

10.4.4    При двоично-дополнительном до 2 целом кодировании значение целого числа, представленного этим кодированием, должно быть суммой значений, определенных каждым битом. Бит, равный «0», имеет нулевое значение. Бит с номером л, равный «1*. имеет значение 2", если он не является головным; в последнем случае он имеет (отрицательное) значение —2".

10.4.5    Кодирование, сумма которого (определенная выше) равна кодируемому значению, является кодированием этого значения.

10.4.6    Двоично-дополнительное до 2 целое кодирование целого числа в минимальном кол ti

ll

Страница 16

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

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

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

10.5 Кодирование ограниченного целого числа

Примечание — Па настоящий подраздел ссылаются другие разделы, а сам он ссылается на предыдущие подразделы при создании неотрицательного двоичного целого или двоично-дополнительного до 2 целого кодирования. Для варианта UNALIGNED значение всегда кодируется в минимальном количестве битов, необходимом для представления диапазона (определенного в 10.5.3). Остальная часть настоящего примечания относится к варианту ALIGNED. Когда лиалазон меньше или равен 255. значение кодируется в битовом поле минимального для диапазона размера. Когда диапазон равен 256. значение кодируется в единственном октете выровненного по октету битового поля. Когда диапазон от 257 до 64К, значение кодируется в два октета выровненного по октету битового поля. Когда диапазон больше 64К. он игнорируется, и значение кодируется в выровненное по октету битовое пше, которое содержит минимальное для значения количество октетов. В последнем случае дальнейшие процедуры (см. 10.9) кодируют и пше длины (обычно один октет) для указания длины кодирования. В других случаях длина кодирования не зависит от кодируемого значения и не кодируется явно.

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

10.5.2    Процедуры данного подраздела вызываются, если только ограниченное целое число, которое должно быть закодировано, доступно, а значения нижней границы, lb. и верхней границы, ub, были определены из нотации типа (после применения видимых для PER ограничений).

11 римечание — Нижняя граница не может быть определена, если MIN является бесконечным чис-лом, а верхняя граница ire может быть определена, если МАХ является бесконечным числом. Например ни верхняя, ни нижняя Гранины не могут быть определены для INTEGER (MIN..МАХ).

10.5.3    Определим диапазон «range» как целое значение (ub - lb + 1); пусть значение, которое должно быть закодировано, есть п.

10.5.4    Если -range* имеет значение 1, то результат кодирования должен быть пустим битовым полем (без битов).

10.5.5    Существует пять других случаев (приводящих к разным кодированиям), в одном из которых применяется вариант UNALIGNED. а в четырех других — вариант ALIGNED.

10.5.6    В случае варианта UNALIGNED значение (п — 1Ь) должно быть закодировано как неотрицательное двоичное целое в битовом поле, как определено в 10.3, с минимальным числом битов, необходимым для представления диапазона.

11 р и vi с ч а н и е — Если «range» удовлетворяет неравенству 2" < «range-» <. 2" ‘'. то число битов равно т + I.

10.5.7    В случае варианта ALIGNED кодирование зависит от того, что:

а)    ‘•range* меньше или равен 255 (случай битового поля);

б)    «range* равен 256 (случай одного октета);

в)    «range* больше 256, но меньше или равен 64К (случай двух октетов);

г)    «range* больше 64К (случай неопределенной длины).

10.5.7.1 (Случай битового паля). Если диапазон «range* меньше или равен 255, то применение настоящего раздела требует сгенерировать битовое поле с числом битов, указанным ниже в таблице и содержащим значение (/г — lb) в виде неотрицательного двоичного целого кодирования в битовом поле, как определено в 10.3.

Размер битового поля (в битах)

Диапазон «range*

2

3.4

5-8

9-16

17-32

33-64

65-128

129-255


3

4

5

6 7 S


12

Страница 17

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

10.5.7.2    (Случай одного октега). Если диапазон «range* имеет значение 256, то значение (/»— lb) должно быть закодировано в одном октете выровненного по октету битового поля в виде неотрицательного двоичного целого кодирования, как определено в 10.3.

10.5.7.3    (Случай двух октетов). Если диапазон «range» имеет значение большее или равное 257 и меньшее или равное 64К, то значение (п — 1Ь) должно быть закодировано в двух октетах выровненного по октету битового поля в виде неотрицательного двоичного целого кодирования, как определено в 10.3.

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

10.6    Кодирование обычно маленького неотрицательного целого числа

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

10.6.1    Если неотрицательное целое число п й 63. то к списку полей должно быть добавлено однобитовое пате с битом, равным 0, а п должно быть закодировано неотрицательным двоичным целым кодированием в 6-битовом поле.

10.6.2    Если п а 64, то к списку полей должно быть добавлено однобитовое поле с битом, равным 1. Затем значение п должно быть закодировано как полуограниченное целое чисто с lb = 0, и должны быть проведены процедуры 10.9 для его добавления к списку полей с предшествующим детерминантом длины.

10.7    Кодирование полуограниченного целого числа

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

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

10.7.2    Процедуры настоящего подраздела вызываются, если только полуограниченное целое число (обозначенное /»), которое должно быть закодировано, доступно, а значение lb было определено из нотации типа (после применения видимых для PER ограничений).

П р и меча н ие — Нижняя граница не может быть определена, если вычисление M1N приводит к бесконечному числу. Например нижняя граница не может быть определена для INTEGER (MIN..МАХ).

10.7.3    Процедуры настоящего подраздела всегда приводят к случаю неопределенной длины.

10.7.4    (Случай неопределенной длины). Значение (я —1Ь) должно быть закодировано как неотрицательное двоичное целое в выровненном по октету поле битов с минимальным количеством октетов, как определено в 10.3, а количество занятых под кодирование октетов 1еп используется в других разделах, которые ссылаются на настоящий подраздел для спецификации кодирования длины.

10.8    Кодирование неограниченного целого числа

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

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

10.8.2    Процедуры настоящего подраздела всегда приводят к случаю неопределенной длины.

10.8.3    (Случай неопределенной длины.) Значение п должно быть закодировано как двоично-дополнительное до 2 целое в выровненное по октету поле битов с минимальным количеством

13

Страница 18

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

октетов, как определено в 10.3, количество занятых под кодирование октетов 1еп используется в других разделах, которые ссылаются на настоящий подраздел для спецификации кодирования длины.

10.9 Общие правила кодирования детерминанта длины

Примсчани я

1    Процедуры настоящего подраздела вызываются для некоторой части кодирования, когда необходима явная длина поля независимо от того, офлничен сверху счетчик длины (видимыми для PER ограничениями) или нет. Часть кодирования, к которой относится длина, может быть битовой строкой (со счетчиком .мины в битах), строкой октетов (со счетчиком длины в октетах), символьной строкой известной кратности (со счетчиком длины в символах) или списком полей (со счетчиком длины в компонентах последовательности-из или множесгва-из).

2    В случае варианта ALIGNED, если счетчик длины ограничен верхней границей, которая меньше 64К. для длины используется кодирование ограниченного целого числа. Для достаточно маленьких диапазонов результатом является битовое поле, в противном Случае неограниченная длина (обозначенная я) кодируется в выровненном по октету поле битов одним из грех способов (в порядке увеличения размера):

а)    (л меньше 128) единственный октет, содержащий п с равным нулю битом 8:

б)    (л меньше 16К) два октета, содержащие я с битом 8 первого октета, равным 1, и битом 7, равным

нулю:

в)    (большое л) единственный октет, содержащий счетчик т с 8 и 7 битами, равными I. Счетчик т равен от 1 до 4. а длина указывает, какой фрагмент данных следует дальше (/и, умноженное на I6K. элементов). За определенным значением т фрагментом следует другая длина кодирования для оставшихся данных.

3    В случае варианта li N ALIGNED, если счетчик длины ограничен верхней границей, которая меньше (>4К. для кодирования длины в минимальном количестве битов, необходимых для представления диапазона, используется кодирование ограниченного целого числа. В противном случае неограниченная длина (обозначенная л) кодируется в битовое поле способом, описанным в примечании 2.

10.9.1    Процедуры настоящего подраздела не вызываются, если в соответствии со спецификациями последующих разделов значение детерминанта длины /; фиксировано определением типа (с видимыми для PER ограничениями), и это значение меньше 64К.

10.9.2    Процедуры настоящего подраздела вызываются в дополнение к списку полей, содержащему поля или списки полей, с предшествующим детерминантом длины п. который определяет:

а)    длину в октетах ассоциированною поля (единицами являются октеты), либо

б)    длину в битах ассоциированного поля (единицами являются биты), либо

в)    число компонентов, закодированных в ассоциированном списке полей (единицами являются компоненты множества-нз или последовательностн-из), либо

г)    число символов в значении ассоциированного типа символьной строки известной кратности (единицами являются символы).

10.9.3    (Вариант ALIGNED) Процедуры для варианта ALIGNED специфицированы в 10.9.3.1— 10.9.3.8.4. (Процедуры для варианта UNALIGNED специфицированы в 10.9.4.)

10.9.3.1    В результате анализа определения типа (установленного в последующих разделах) определяется, будет ли детерминант длины (целое число л):

а)    обычно маленькой длиной с нижней границей lb = I; либо

б)    ограниченным целым числом с нижней границей lb а 0 и верхней границей ub < 64К, либо

в)    полуограниченным целым числом с нижней границей 1Ь г 0 или ограниченным целым числом с нижней границей 1Ь £ 0 и верхней границей ub £ 64К.

10.9.3.2    Подраздел, вызывающий процедуры настоящего подраздела, должен определить значения для нижней 1Ь (равное нулю, если длина неограиичена) и верхней ub границ длины, ub не устанаативается, если нет верхней границы, определимой по видимым для PER ограничениям.

10.9.3.3    Когда детерминант длины яатяется ограниченным целым числом с ub < 64К, список полей будет добавлен к кодированию этого ограниченного целого числа для детерминанта длины, как определено в 10.5. Если п не равно нулю, то за ним должно следовать ассоциированное поле или список полей, и процедура завершается. Если п равно нулю, то к списку полей ничего не добавляется, и процедура завершается.

Примсчан >i я

1 Например:

А :: » Foo (SIZE (3..6)) — Длина кодируется в 2-битовом поле

В :: = Foo (SIZE (40000..40254)) -- Длина кодируется в 8-битовом поле

С ::    Foo    (SIZE    (Q..32000)) — Дтина кодируется в 2 октета, выровненною по октету битового поля

D :: = Foo (SIZE (64000)) — Дшна не кодируется

14

Страница 19

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

2 Результатом отсутствия дополнения в случае п, равного нулю, является отсутствие заполнения до фаницы октета. когда эти процедуры вызываются для дополнения выровненного но октету битового поля нулевой длины, если иное не требуется 10.5.

10.9.3.4    Когда детерминант длины является обычно маленькой длиной и п й 64, к списку полей должно добавляться однобитовое поле с битом, установленным в 0. а значение н — I должно быть закодировано как неотрицательное двоичное целое в 6-битовом поле. За этим должно следовать ассоциированное поле, завершающее эти процедуры. Если п больше 64. то к списку полей должно добавляться однобитовое поле с битом, установленным в 1, за которым следует кодирование /; как неограниченная детерминанта длины, с последующим ассоциированным полем, согласно процедурам 10.9.3.5-10.9.3.8.4.

Примечание — Обычно маленькие длины используются только для указания длины битовых отображений, которые 51влнются префиксами значений расширяющих дополнений типов «множество* или «последовательность».

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

Примечание- Нижняя граница lb не влияет на кодирования длины, определенные в 10.9.3.6— 10.9.3.8.4.

10.9.3.6    Если п <, 127, то п должно закодироваться как неотрицательное двоичное целое (используя процедуры 10.3) в битах с 7 (старший значащий) до I (младший значащий) единственного октета, а бит 8 должен быть установлен в нуль. Результат добавляется к списку полей как выровненное по октету битовое поле со следующим ассоциированным полем или списком полей, что завершает эти процедуры.

II римечание — Например, если следующее значение А имеет длину 4 символа, а значение В имеет длину 4 позиции:

А :: * IA5String

В :: - Foo (SIZE (4..I23456))

то оба значения кодируются с длиной, занимающей один октет, и с первым битом, установленным в 0, для указания, что значение длины меньше или равно 127:

I 0000100

4смеолаЛюйМ1МИ

Длим    Энмни»

10.9.3.7 Если п > 127, но меньше 16К. тогда п должно быть закодировано как неотрицательное двоичное целое (используя процедуры 10.3) с бита 6 первого октета (старший значащий) до бита I второго октета (младший значащий) выровненного по октету битового поля длиной 2 октета с битом 8 первого октета, установленным в 1, и битом 7 первого октета, установленным в нуль. Результат должен быть добавлен к списку полей с последующим ассоциированным полем или списком попей, что завершает эти процедуры.

П р и м е ч а н и е — Если в примере 10.9.3.6 значение А имеет длину 130 символов, а значение В имеет длину 130 позиций, то оба значения кодируются с компонентом длины, занимающим 2 октета, с первыми двумя битами, установленным и в 10 для указания значения длины, большей 127, но меньшей 16 К:

10 | 000000 10000010

1Э0 ашшопоаАтмицнй

Длин»    Эдоеиие

Ю.9.3.8 Если п £ 16К, то к списку полей должен быть добавлен единственный октет выровненного по октету битового поля с битами 8 и 7. установленными в I, и с битами с 6 по I. кодирующими значения I, 2, 3 или 4 как неотрицательное двоичное целое (используя процедуры 10.8). За этим единственным октетом должна следовать часть ассоциированного поля или списка палей, как установлено ниже.

Примечание — Значение битов с 6 по 1 офаничеио значениями I —4 (вместо теоретических пределов 0—63) для того, чтобы ограничить число элементов, о которых должно быть известно реализации, более управляемых! количеством (64К вместо 1024К).

Страница 20

ГОСТ I» НСО/МЭК 8825-2-2003

10.9.3.8.1 Для получения счетчика (обозначенного т) значение битов с 6 по 1 (1—4) должно быть умножено на 16К. Целое число н битах с 6 по 1 должно выбираться максимально возможным, но таким, чтобы содержимое ассоциированного поля или списка полей было больше или равно т октетам, битам, компонентам или символам соответственно.

Примечания

1    Нефрагментированный вид имеет дело с длинами до 16К. Следовательно, фрагментация обеспечивает длины до 64К с детали миней до I6K.

2    Если в примере 10.9.3.6 значение В имеет длину 144К +• 1 (то есть 64К + 64К + 16К * I) элементов, то значение (фрагментируется с первыми двумя битами первых трех (фрагментов, равными 11. для указания того, что далее следует от одного до чет ырех блоков по 16К позиций каждый и что сше один компонент длины будет следовать за последним блоком кажлого фрагмента:

111 000100

84К

апо-

ногтш

111000100

Ш

ало-

мянта»

111 000001

1вК

але-

MK1S

0 |0000001

1

ало-

мнт

Дгинв

Oi iri |л< аш

vtlU РШ PU

Дгинв

ОпспогРГО

Длине

VfRrtM PU

Дшнв

Значение

10.9.3.8.2    Эта часть содержимого, специфицированная т. должна затем добавляться к списку полей как:

а)    одно выровненное по октету битовое поле из т октетов, содержащее первые т октетов ассоциированного поля — при измерении длины в октетах, либо

б)    одно выровненное по октету битовое поле из т битов, содержащее первые т битов ассоциированного поля — при измерении длины в битах, либо

в)    список полей, кодирующих первые т компонентами в ассоциированном списке полей — при измерении длины в компонентах типов «множество-из» или «последовательность-из», либо

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

10.9.3.8.3    Затем следует повторно использовать процедуры 10.9 для добавления к списку полей оставшейся части ассоциированного поля ми списка полей с длиной, которая является полуогра-ниченным целым числом, равным (я — /я), с «гулевой нижней границей.

Примечание— Если последний фрагмент, содержащий часть кодируемого значения, имеет длину, точно кратную 16К. то за ним следует завершающий фрагмент, который состоит из единственного октета компонента длины, равного 0.

10.9.3.8.4    Добавление к списку полей только части ассоциированного (ых) поля (ей) с повторным применением настоящих процедур названо процедурой фрагментации.

10.9.4    (Вариант UNALIGNED) Процедуры для варианта UNALIGNED специфицированы в 10.9.4.1 — 10.9.4.2 (процедуры для варианта ALIGNED специфицированы в 10.9.3):

10.9.4.1    Если детерминант длины л, который должен быть закодирован, является ограниченным целым числом с диапазоном «range* (ub — lb + 1) меньшим 64К. то п должен быть закодирован как неотрицательное двоичное целое (как определено в 10.3), используя минимальное количество битов, необходимое для кодирования «range®. Если п не равен нулю, то за ним должно следовать ассоциированное поле или список полей, и настоящие процедуры завершаются. Если п равно нулю, то не должно быть дальнейшего дополнения к списку полей, и настоящие процедуры завершаются.

П р и м сча н и с — Если «range» удовлетворяет неравенству 2я < «range* £ 2lv'то число битов в детерминанте длины равно т + I.

10.9.4.2    Если детерминант длины п. который должен быть закодирован, является ограниченным целым числом, большим или равным 64К, или полуограниченным целым числом, тогда п должен быть закодирован, как определено в 10.9.3.4—10.9.3.8.4.

11 Кодирование булевского типа

11.1    Значение булевского типа должно быть закодировано как битовое поле, состоящее из единственного бита.

11.2    Бит должен быть равен 1 для TRUE и 0 — для FALSE.

11.3    Битовое поле должно быть добавлено к списку полей без детерминанта длины.

16

Страница 21

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

12    Кодирование целочисленного типа

Примечания

1    (Вариант ALIGNED) Диапазоны, которые допускают кодирование всех значений в одном октете или менее, попадают в битовое ноле минимальною (химера без счетчика длины. Диапазоны, которые допускают кодирование всех значений в двух октетах, попадают в выровненное по октету битовое поле без счетчика длины. В остальных случаях значение кодируется в минимальном количестве октетов (используя неотрицательное двоичное целое или двоично-дополнительное до 2 целое кодирование) и добавляется детерминант длины. В том случае, когда целочисленное значение может быть закодировано менее чем в 127 октетов (как смешение от некоторой нижней границы, которая может быть определена) и нет конечных верхней и нижней границ, имеется одинооктетный детерминант длины: иначе длина колируется в наименьшем необходимом количестве битов. Прочие случаи не имеют практического значения, но специфицированы дчя полноты.

2    (вариант UNALIGNED) Ограниченные целые кодируются в наименьшем необходимом для представления диапазона количестве битов независимо от их размера. Неограниченные целые числа кодируются, как в примечании I.

12.1    Если в спецификации ограничения целочисленного типа присутствует маркер расширения, то к списку полей в битовом поле длины должен быть добавлен один бит. Бит должен быть равен 1, если значение, которое должно кодироваться, не находится в пределах диапазона корня расширения, и нулю — в противном случае. В первом случае значение должно быть добавлено к списку полей как неограниченное целое значение, как определено в 12.2.4—12.2.6, и процедура завершается. Во втором случае значение должно быть закодировано так. как если бы маркер расширения отсутствовал.

12.2    Если маркер расширения не представлен в спецификации ограничения целочисленного типа, тогда применяется следующая процедура.

12.2.1    Если видимые для PER ограничения допускают для целого единственное значение, то не должно быть никакого дополнения к списку полей, и эта процедура завершается.

12.2.2    Если видимые для РЕК ограничения допускают ограниченное целое число в качестве целочисленного значения, то оно должно быть преобразовано в поле согласно процедурам 10.5 (кодирование ограниченного целого числа), а затем должны быть применены процедуры 12.2.5—12.2.6.

12.2.3    Если видимые для PER ограничения допускают полуограниченное целое число в качестве целочисленного значения, то оно должно быть преобразовано в поле согласно процедурам 10.7 (кодирование полуограниченного целого числа), а затем должны быть применены процедуры 12.2.6.

12.2.4    Если видимые для PER ограничения допускают целое не только как ограниченное или полуограниченное целое число, то оно должно быть преобразовано в пале согласно процедурам 10.8 (кодирование неограниченного целого числа), а затем должны быть применены процедуры 12.2.6.

12.2.5    Если процедуры, использованные для кодирования целочисленного значения в поле, не привели к случаю неопределенной длины (см. 10.5.7.4 и 10.8.2), то это поле должно быть добавлено в конец списка полей, и эта процедура завершается.

12.2.6    В противном случае (т. е. в случае неопределенной длины) должны быть применены процедуры 10.9 для добавления поля в список полей после одного из следующих элементов:

а)    ограниченного детерминанта длины 1еп (как определено 10.5.7.4). если видимое для PER ограничение удерживает тип в пределах верхней и нижней границ и (если тип расширяемый) значение находится в диапазоне корня расширения. Нижняя граница lb, используемая в детерминанте длины, должна быть равна 1, а верхняя граница ub должна быть счетчиком количества октетов, требуемых для хранения диапазона целочисленного значения.

П ри меча и и с — Значение «foo INTEGER (256.. 1234567) :: = 256» было бы закодировано как СЮххххххОООООООО. где каждый V представляет нулевой заполняющий бит, который может присутствовать или Отсутствовать в зависимости от того, в каком месте в октете находится длина (например, 00 хххххх 00000000, если длина начинается на границе октета, и 00 00000000. если она начинается во втором от конца бите октета);

б)    неограниченного детерминанта длины 1еп (как определено в 10.7 и 10.8), если видимые для PER ограничения не удерживают тип в пределах верхней и нижней границ или если тип расширяемый и значение не находится в диапазоне корня расширения.

13    Кодирование перечислимого типа

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

17

Страница 22

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

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

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

Примечание — ГОСТ Р ИСО/МЭК 8824-1 требует, чтобы каждое последующее расширяющее дополнение имело значение перечисления большее, чем последнее.

13.2    Если в определении перечислимого типа отсутствует маркер расширения, то должен быть закодирован индекс перечисления. Его кодирование должно быть таким, как если бы это было значение ограниченного целочисленного типа, для которого нет маркера расширения, с равной 0 нижней границей, а верхняя граница равна самому большому индексу перечисления, ассоциированному с типом, и эта процедура завершается.

13.3    Если маркер расширения присутствует, то к списку полей в битовом поле длины должен быть добавлен один бит. Он должен быть равен I. если значение, которое должно быть закодировано, не находится в корне расширения, и нулю — в противном случае. В первом случае дополнительные перечисления должны быть отсортированы в соответствии с 13.1, а значение должно быть добаааено к списку полей как обычно маленькое неотрицательное целое число, значением которого является индекс перечисления дополнительного перечисления при lb, равной 0, и эта процедура завершается. Во втором случае значение должно быть закодировано так, как если бы маркер расширения отсутствовал, как определено в 13.2.

Примечание — Нет видимых для PER ограничений, которые могут применяться к перечислимому

типу.

14    Кодирование действительного типа

П р и м с ч а и и с — Для действительного типа используют октеты содержимого CER/DER с предшествующим детерминантом длины, который на практике будет одним октетом.

14.1    Если основанием абстрактного значения является 10, то основанием закодированного значения должно быть И), а если основанием абстрактного значения является 2, то основанием закодированного значения должно быть 2.

14.2    Должно использоваться кодирование для REAL, определенное для правил канонического и различающего кодирования в ГОСТ Р ИСО/МЭК 8825-1, приводящее к выровненному по октету битовому полю, которые являются октетами содержимого кодирования CER/DER. Содержимое этого кодирования состоит из п октетов и размещается в выровненном по октету поле из я октетов. Д™ добавления этого выровненного по октету битового поля из п октетов к списку полей с предшествующим неограниченным детерминантом длины, равным /г, должны применяться процедуры 10.9.

15    Кодирование типа «битовая строка»

П рн м е ч а и и е — Битовые строки с ограниченной длиной, меньшей или равной двум октетам, не приводят к выравниванию по октету. Большие битовые строки выравниваются по октету. Если длина фиксирована ограничениями и верхняя (ранииа меньше 64К. то явное кодирование длины отсутствует, в противном случае включается кодирование дайны, которое может иметь любую из форм, установленную ранее для кодирования длины, включая фрагментацию для больших битовых строк.

15.1    Видимые для PER ограничения могут относиться только к длине битовой строки bitstring.

15.2    Когда нет видимого для PER ограничения и применяется ГОСТ Р ИСО/МЭК 8824-1, 21.7, значение должно быть закодировано без хвостовых битов 0 (означает, что значение без равных 1 битов всегда кодируется как пустая битовая строка).

15.3    Когда есть видимое для PER ограничение и применяется ГОСТ Р ИСО/МЭК 8X24-1, 21.7 (т. е. тип «битовая строка* определяется с конструкцией «NamedBitList»). значение должно быть

Страница 23

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

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

15.4    Обозначим максимальное число битов в битовой строке (с учетом видимых для PER ограничений на длину) ub, а минимальное число битов — lb. Если не существует конечного максимума, то говорят, что ub не установлена. Если не существует ограничений на минимум, тогда 1Ь имеет нулевое значение. Фактическую длину кодируемого значения битовой строки обозначим п.

15.5    Если в спецификации ограничения размера типа «битовая строка* присутствует маркер расширения, то к списку полей в битовом поле длины должен быть добавлен один бит. Он должен быть равен 1, если длина этого кодирования не находится в пределах диапазона корня расширения, и нулю — в противном случае. В первом случае должны быть выполнены процедуры 15.10 для добавления длины как полуограннченного целого числа к списку полей с последующим значением битовой строки. Во втором случае длина и значение должны быть закодированы, как будто маркер расширения отсутствует.

15.6    Если в спецификации ограничения типа «битовая строка* отсутствует маркер расширения, то применяются процедуры 15.7—15.10.

15.7    Если битовая строка ограничена нулевой длиной (ub = 0). то она не должна кодироваться (нет дополнений к списку полей), и процедуры этого раздела завершаются.

15.8    Если все значения битовой строки ограничены одной длиной (ub = lb) и эта длина меньше или равна 16 битов, то битовая строка должна быть помещена в битовое поле ограниченной длины ub. которое должно быть добавлено к списку полей без детерминанта длины, и процедуры этого раздела завершаются.

15.9    Если все значения битовой строки ограничены одной длиной (ub = lb) и эта длина больше 16 битов, по меньше 64К битов, то битовая строка должна быть помешена в выровненное по октету битовое пате длиной ub (которая не обязательно кратна восьми битам) и добавлена к списку полей без детерминанта длины, и процедуры этого раздела завершаются.

15.10    Если 15.7—15.9 неприменимы, то битовая строка должна быть помещена в выровненное по октету биговое поле длиной и битов и должны быть выполнены процедуры 10.9 для добавления этих п битов выровненного по октету поля к списку полей с предшествующим детерминантом длины, равным п битам, в виде ограниченного целого числа, если ub меньше 64К, или полуограннченного целого числа, если ub больше этого значения или не установлена. 1Ь устанавливается так, как определено выше.

Примечание — Фрагментация применяется для неограниченных или больших ub после 16К. 32К. 48К или 64К. битов.

16 Кодирование типа «строка октетов»

Примечание — Строка октетов фиксированной длины, меньшей или равной двум октетам, не выравнивается но октету. Все другие строки октетов выравниваются по октету. Строки октетов фиксированной длины кодируются без октетов длины, если они короче 64К. Для неограниченных строк октетов длина кодируется явно (в случае необходимости, с фрагментацией).

16.1    Видимые для PER ограничения могут относится только к длине строки октетов.

16.2    Обозначим максимальное количество октетов в строке октетов (с учетом видимых для PER ограничений на длину) ub. а минимальное число октетов — 1Ь. Если не существует конечного максимума, то говорят, что ub не установлена. Если не существует ограничения на минимум, то 1Ь имеет нулевое значение. Фактическую длину кодируемого значения строки октетов обозначим п (октетов).

16.3    Если есть видимое для PER ограничение размера и в нем присутствует маркер расширения, то к списку полей в поле битов длины должен быть добавлен один бит. Он должен быть равен I, если длина этого кодирования не находится в пределах диапазона корня расширения, и нулю — в противном случае. В первом случае должны быть выполнены процедуры 16.8 для добавления к списку полей длины в виде полуограннченного целого числа с последующим значением строки октетов. Во втором случае длина и значение должны быть закодированы гак, как будто маркер расширения отсутствует.

16.4    Если в спецификации ограничения типа «строка октетов» отсутствует маркер расширения, то применяются 16.5—16.8.

19

Страница 24

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

16.5    Если строка октетов ограничена кулевой длиной (ub = 0), то она не должна кодироваться (нет дополнений к списку полей), и процедуры этого раздела завершаются.

16.6    Если все значения строки октетов ограничены одной длиной (ub = lb) и эта длина меньше или равна двум октетам, то строка октетов должна быть помещена в битовое поле с числом битов, равным кратной восьми ограниченной длине ub, которое должно быть добавлено к списку полей без детерминанта длины, и процедуры этого раздела завершаются.

16.7    Если все значения строки октетов ограничены одной длиной (ub = ib> и эта длина больше двух октетов, но меньше 64К. то строка октетов должна быть помешена в выровненное по октету битовое поле с ограниченной длиной ub октетов, которое должно быть добавлено к списку полей без детерминанта длины, и процедуры этого раздела завершаются.

16.8    Если 16.5—16.7 не применимы, то строка октетов должна быть помещена в выровненное по октету поле битов длиной п октетов, и должны быть вызваны процедуры 10.9 для добавления этих п октетов выровненного по октету битового поля к списку полей с предшествующим детерминантом длины, равным п октетам, в виде ограниченного целого числа, если ub установлена, или в виде полуограннченного целого числа, если ub не устаноачена (1Ь устанаапивается так, как определено выше).

Примечание — Процедуры фрагментация могут применяться после 16К. 32К. 4SK или 64К октетов.

17    Кодирование вырожденного типа

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

Не должно быть дополнения к списку полей для вырожденного значения.

18    Кодирование типа «последовательность*

Примечание — Тип «последовательность» начинается с преамбулы, которая является битовой картой. Если тип «последовательность» не имеет маркера расширения, то в битовой карте, закодированной как битовое иоле фиксированной длины, записано только наличие или отсутствие в типе заданных по умолчании» и факультативных компонентов. Если тип «последовательность» имеет маркер расширения, то битовая карта следует за единственных! битом, который сообщает, присутствуют ли фактически в кодировании значения расширяющих дополнений. Преамбула кодируется без какого-либо детерминанта длины при условии, что она имеет длину меньше 64К битов, в противном случае детерминант длины кодируется для получения фрагментации. За преамбулой следуют поля, которые по порядку кодируют все компоненты. Если есть расширяющие дополнения, то непосредственно перед первым из них стоит кодирование (как полуограннченного целого числа) счетчика количества расширяющих дополнений в кодируемом типе, за которым следует битовая карта длиной, равной этому счетчику, в которой записано наличие или отсутствие значений каждого расширяющего дополнения. За этим следуют кодирования расширяющих дополнений так. как если бы они были значениями полей открытого типа.

IX. 1 Если тип «последовательность» имеет маркер расширения, то сначала к списку полей в поле битов длины должен быть добавлен один бит. Он должен быть единицей, если в данном кодировании присутствуют значения расширяющих дополнений, и нулем — в противном случае. (Далее по тексту этот бит называется «бит расширения»). Если маркер расширения отсутствует, то бит расширения не добаааяется.

18.2 Если тип «последовательность» имеет п компонентов в корне расширения, которые помечены как OPTIONAL или DEFAULT, то для добавления к списку полей должно быть создано одно битовое поле с п битами. Биты этого поля, взятые по порядку, должны кодировать наличие или отсутствие кодирования каждого факультативного или заданного по умолчанию компонента в типе «последовательность». Значение бита 1 колирует присутствие компонента, а значение бита 0 — отсутствие. Головной бит в преамбуле должен кодировать наличие или отсутствие первого факультативного или заданного по умолчанию компонента, а завершающий бит должен кодировать наличие или отсутствие последнего факультативного или заданного по умолчанию компонента.

1 S.3 Если п < 64К, то битовое поле должно быть добавлено к списку полей. Если п t 64К, то

20

Страница 25

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

должны быть использованы процедуры 10.9 для добавления этого битового поля из /; битов к списку полей с предшествующим детерминантом длины, равному п битам, в виде ограниченного целого числа с lib и lb. равными п.

Примечание — В этом случае ub и lb будут проигнорированы процедурами для длины. Здесь эти процедуры вызываются для обеспечения фрагментации большой преамбулы. Вероятно, такая ситуация будет возникать очень редко.

18.4    За преамбулой должны по порядку следовать списки полей каждого присутствующего компонента из значения последовательности.

18.5    Для CANON1CAL-PER всегда должны отсутствовать кодирования компонентов, отмеченных как DEFAULT, если значение, которое должно быть закодировано, является значением по умолчанию. Для BASIC-РНК всегда должны отсутствовать кодирования компонентов, отмеченных как DEFAULT, если значение, которое должно быть закодировано, является значением по умолчанию для простого типа (см. 3.7.25), в противном случае значение должно быть закодировано только тогда, когда оно явно присутствует в абстрактном значении последовательности.

18.6    Этим завершается кодирование, если бит расширения отсутствует или равен нулю. Если бит расширения присутствует и равен единице, то применяются следующие процедуры.

18.7    Обозначим количество расширяющих дополнений в кодируемом типе п. Тогда для добавления к списку полей должно быть создано битовое поле с л битами. Биты этого поля, взятые по порядку, должны кодировать наличие или отсутствие кодирования каждого расширяющего дополнения в кодируемом типе. Значение бита 1 соответствует присутствию, а значение бита 0 — отсутствию кодирования расширяющего дополнения. Головной бит в этом поле кодирует наличие или отсутствие первого расширяющего дополнения, а завершающий бит — наличие или отсутствие последнего расширяющего дополнения.

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

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

18.9    Далее следуют списки полей, содержащие по порядку кодирования каждого присутствующего расширяющего дополнения. Каждое расширяющее дополнение, являющееся «Сотро-петТуре* (т. е. не «ExtensionAdditionGroup»), должно быть закодировано так, как если бы оно было значением поля открытого типа, как определено в 10.2.1. Каждое расширяющее дополнение, являющееся «ExtensionAdditionGroup*, должно быть закодировано как последовательность в соответствии с 1S.2—18.6, которая затем кодируется так. как если бы она была значением поля открытого типа, как определено в 10.2.1. Если все компоненты значений «ExtensionAdditionGroup* отсутствуют, то «ExtensionAdditionGroup» кодируется как отсутствующее расширяющее дополнение (т. е. соответствующий бит в описанном в 18.7 битовом поле должен быть равен 0).

19 Кодирование типа «последовательность-из»

19.1    Видимые дня PER ограничения могут относится к числу компонентов типа «последовательность-из*.

19.2    Обозначим максимальное (с учетом видимых для PER ограничений) количество компонентов в «последовательности-из* ub. а минимальное — lb. Если не существует конечного максимума или ub > 64К. то говорят, что ub не установлена. Если не существует ограничения на минимум, то 1Ь имеет нулевое значение. Обозначим число компонентов в фактически кодируемом значении «последовательности-из» п.

19.3    Кодирование каждого компонента «последовательности-из» будет генерировать ряд полей, которые добавляются к списку полей для типа «последовательность-из*.

19.4    Если есть видимое для PER ограничение и в нем присутствует маркер расширения, то к списку полей в битовом поле длины должен быть добавлен один бит. Он должен быть равен I, если число компонентов в данном кодировании не находится в пределах диапазона корня расширения, и 0 - в противном случае. В первом случае должны использоваться процедуры 10.9 для добавления

21

Страница 26

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

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

19.5    Если количество компонентов фиксировано (ub = lb) и ub < 64К. то для «последователь-ности-из» не должно быть детерминанта длины, а поля каждого компонента должны быть по порядку добавлены к списку полей « поел едова тел ъности - и з».

19.6    В противном случае должны использоваться процедуры 10.9 для добавления списка полей, порожденных п компонентами, с предшествующим детерминантом длины. равным п компонентам, в виде ограниченного целого числа, если ub установлена, или в виде полуограннченного целого числа, если ub не установлена, lb устанавливается так. как определено выше.

II р и м с ч а и » я

! Процедуры фрагментации могут применяться после 16К. 32К, 4ХК или 64К компонентов.

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

20    Кодирование типа «множество*

Тин «множество* должен иметь в «Root Com ponentTy ре List* элементы, отсортированные в каноническом порядке, определенном ГОСТ Р ИСО/МЭК 8824-1, Н.4, и. кроме того, для определения порядка кодирования компонентов, когда один или несколько компонентов являются нете-гированными выборочными типами, каждый нетегиро ванный выборочный тип упорядочивается так, как если бы у него был тег, равный наименьшему тегу в *RootAlternativeTуреList» этого выборочного типа или в любом вложенном нетегированном выборочном типе. Элементы множества, которые встречаются в «Root ComponentType List*, должны быть закодированы так, как если бы они были значением типа ‘■последовательность». Элементы множества, которые встречаются в «ExtensionAd-dit ion List*, должны быть закодированы гак, как если бы они были компонентами типа «последовательность*, как определено в 18.9 (т. е. они кодируются в том порядке, в каком были определены).

Пример— В следующем примере, где подразумевается среда тегирования IMPLICIT TAGS:

А :: = SET

\

а |3| INTEGER,

Ь 111 CHOICE {

с 121 INTEGER d |4J INTEGER

Ь

e CHOICE

{

f CHOICE <

g |5| INTEGER, h |6| INTEGER

},

i CHOICE {

j |0| INTEGER

J

}

)

компоненты множества всегда будут кодироваться в порядке е, Ь, а. так как Tent сортируются в порядке |0|, |1|. |3|.

21    Кодирование типа «множество-из»

21.1 Ятя CANONICAL-PER кодирования значений компонентов типа «множество-нз» должны появляться в возрастающем порядке; кодирования компонентов сравниваются как битовые строки, заполненные нулевыми битами до границы октета.

22

Страница 27

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

II римечанис - Заполняющие биты, добавленные дли выравнивания по октету при сортировке, не поя или юте я в фактическом кодировании.

21.2 Для BAS1C-PER «множество-из* должно быть закодировано так. как если бы это был тип «последовательность-из*.

22    Кодирование выборочного типа

Примечание — Выборочный тип кодируется путем кодирования индекса, определяющего выбранную альтернативу. Индекс кодируется как ограниченное целое число (если в выборочном типе нет маркера расширения, когда индекс кодируется как обычно маленькое неотрицательное целое число) и. следовательно, занимает битовое иоле фиксированной длины с минимальным количеством битов, необходимых для кодирования индекса. (Хотя, в принципе, оно может быть произвольно большим). Далее следует кодирование выбранной алыернагивы с альтернативами, которые являкпея расширяющими дополнениями, декодированными так. как если бы они были значениями полей открытого типа. Когда выбор имеет только одну альтернативу, индекс не кодируется.

22.1    На кодирование выборочных типов видимые для PER ограничения не влияют.

22.2    Каждый компонент выбора имеет связанный с ним индекс, значение которого равно нулю для первой альтернативы в корне выбора (альтернативы берутся в каноническом порядке, определенном в ГОСТ Р ИСО/МЭК 8824-1, 8.4), равно единичному значению для второй, и так далее до последнего компонента в корне расширения выбора. Аналогично значение индекса присваивается каждому расширяющему дополнению, начиная с нуля, как и для компонентов корня расширения. Обозначим п значение самого большого индекса в корне.

При м е ч а н и е — ГОСТ Р ИСО/МЭК 8824-1. 28.4. требует, чтобы каждое последующее расширяющее дополнение имело значение тега большее, чем последнее, добавленное к •>AdditionalAltcrnativcTypcList».

22.3    Для канонического упорядочения альтернатив, которые содержат нетегированный выбор, каждый нетегированный тип выбора должен быть упорядочен так, как если бы он имел тег, равный наименьшему тегу в корне расширения данного выборочного типа или любого вложенного нетеги-рованного выборочного типа.

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

22.5    Если выборочный тип имеет маркер расширения, го сначала к списку полей в поле битов длины должен быть добаа!ен один бит. Он равен единице, если в данном кодировании присутствуют значения расширяющих дополнений, и нулю — в противном случае. (Далее по тексту этот бит называется «бит расширения»). Если маркер расширения отсутствует, то бит расширения не должен добавляться.

22.6    Если бит расширения отсутствует, то индекс выбранной альтернативы должен кодироваться в поле по процедурам раздела 12 как значение целочисленного типа (без маркера расширения в ограничении подтипа), заключенное в диапазоне от 0 до п, и это поле должно быть добавлено к списку полей. За этим полем должны следовать поля выбранной альтернативы, и процедуры настоящего раздела завершаются.

22.7    Если бит расширения присутствует и выбранная альтернатива находится в корне расширения, то индекс выбранной альтернативы должен быть закодирован так, как если бы маркер расширения отсутствовал, в соответствии с разделом 12, и процедуры настоящего раздела завершаются.

22.8    Если бит расширения присутствует и выбранная альтернатива не находится в корне расширения, то индекс выбранной альтернативы должен быть закодирован как обычно маленькое неотрицательное число с lb = 0, и это поле должно быть добавлено к списку полей. За этим полем должен следовать список полей, содержащих выбранную альтернативу, закодированную как значение поля открытого типа, как определено в 10.2, и процедуры этого раздела завершаются.

П р и ме ч а и и е — Скобки версии в определении расширяющих дополнений выбора не влияют на кодирование «ExlensioiiAdditionAlternativcs».

23    Кодирование типа «идентификатор объекта»

Примечание — Кодирование типа «идентификатор объекта» использует Октеты содержимого BER с предшествующим детерминантом длины, который, на практике, будет одним октетом.

23

Страница 28

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

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

23.1    Кодирование типа «относительный идентификатор объекта*

Примечание— Кодирование типа «относительный идентификатор объекта* использует октеты содержимого BER с предшествующим детерминантом длины, который, на практике, будет одним октетом. Последующий текст идентичен тексту раздела 23.

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

24    Кодирование типа «встроенное-здп*

24.1    Установлено два способа, которыми может быть закодирован тип «встроенное-здп*:

а)    альтернатива «syntaxes» типа «встроенное-здп* ограничена видимым для PER внутренним ограничением типа единственным значением или «identification» ограничена видимым для PER внутренним ограничением типа альтернативой «fixed*. В таком случае должно быть закодировано только значение данных «data-value»; этот случай называется «предопределенным»;

б)    внутреннее ограничение типа не используется для ограничения альтернативы «syntaxes* единственным значением или «identification* — альтернативой *fixed*. в таком случае должны быть закодированы как «identification», гак и «data-value»: этот случай называется «общим*.

24.2    В «предопределенном» случае кодированием значения типа «встроенное-здп» должно быть кодирование PER значения типа OCTET STRING. Значение OCTET STRING должно быть октетами, образующими полное кодирование единственного значения данных, указанного в ГОСТ Р ИСО/МЭК 8824-1, 32.3а.

24.3    В общем случае кодированием значения типа «встроенное-здп» должно быть кодирование PER типа, определенного в ГОСТ Р ИСО/МЭК 8824-1, 32.5, с исключенным элементом «descriptor* (а именно, не должно быть битового отображения «OPTIONAL» в заголовке кодирования SEQUENCE). Значение «data-value* OCTET STRING должно быть октетами, образующими полное кодирование единственного значения данных, указанного в ГОСТ Р ИСО/МЭК 8824-1, 32.3а.

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

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

[UNIVERSAL 8| IMPLICIT SEQUENCE (

direct-reference    OBJECT IDENTIFIER OPTIONAL,

indirect-reference    IDENTIFIER OPTIONAL,

data-value-descriptor Object Descriptor OPTIONAL, encoding    CHOICE {

single-ASNl-type    (0] ABSTRACT-S YNTAX.&Tvpe,

octet-aligned    111 IMPLICIT OCTET STRING,

arbitrary    |2| IMPLICIT BIT STRING}}

Примечание — Эгог тип «последовательность» является тем же типом, который был определен в

ГОСТ Р ИСО/МЭК 8824-93.

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

Страница 29

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

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

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

Таблица I — Альтернативные кодирования для «identification»

identification

diiect-rcfercncc

indirect-reference

syntaxes

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

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

syntax

syntax

ОТСУТСТВУЕТ

prcscntalion-contcxt-id

ОТСУТСТВУЕТ

presentation-context-id

context-negotiation

transfcr-syntax

prescntation-conicxl-td

transfcr-syntax

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

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

fixed

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

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

25.5    Значение данных должно быть закодировано согласно синтаксису передачи, идентифицированному кодированием, и помещено в альтернативу выбора «encoding», как указано ниже.

25.6    Если значение данных является значением единственного типа данных ACH. I и правила кодирования для этого значения данных являются теми же самыми, как и для полного типа данных «EXTERNAL», то отправляемая реализация должна быть «single-ASNI -type».

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

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

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

25.9    Если для «encoding» выбрано «single-ASN 1-type*, то тип ACH. 1 должен заменить открытый тип со значением, равным значению кодируемых данных.

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

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

25.11    Если для «encoding» выбрано «arbitrary*, то значение данных должно кодироваться в соответствии с согласованным или договорным синтаксисом передачи, а результат должен образовать значение битовой строки.

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

Примечания

1    (Вариант ALIGNED) Символьные строки фиксированной длины, меньшей или равной двум октетам, не выравниваются по октету. Символьные строки переменной длины, ограниченные максимальной длиной меньше двух октетов, не выравниваются по октету. Все другие символьные строки выравниваются по октету. Символьные строки фиксированной длины кодируются без октетов дтины. если они короче 64К символов. Для неограниченных или ограниченных символьных сгрок длиной свыше 64K-I длина кодируется явно (при необходимости, с фрагментацией). Каждый символ NumericString, PrintableString, VisiblcString (IS0646String). lASString, BMPString и UniversalString кодируется в число битов, которое является минимальной степенью двух, позволяющей разместить все символы, допускаемые эффективным ограничением PennittcdAlphabct.

2    (Вариант UNALIGNED) Символьные строки не выравниваются по октету. Если есть только одно возможное значение длины, то она не кодируется, если строки короче 64К символов. Для неограниченных или

25

Страница 30

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

ограниченных символьных строк длиной свыше 64К-1 длина кодируется явно (при необходимости, с фрагментацией). Каждый символ NumericString, PrinlableString, VisibleString (IS0646String). lA5String. BMPString и UnivenialSlring кодируется в число битов, которое яатяется минимальной степенью двух, позволяющей разместить все символы, допускаемые эффективным ограничением PermittedAlphabet.

3 (Размер закодированных символов) Кодирование каждою символа зависит от эффективного ограничения PcrmittcdAlphabct (см. 9.3.10). которое определяет используемый для типа алфавит. Пусть этот алфавит состоит из набор;! символов ALPHA. Для каждого типа символьных строк известной кратности (см. 3.7.16) есть целочисленное значение, связанное с каждым символом, полученное путем ссылки на некоторую таблицу кодов, связанную с ограниченным типом символьных строк. Набор значений BETA, соответствующих набору символов ALPHA, используется для определения кодирования, которое должна применяться, следующим образом: число битов для кодирования каждого символа полностью определяется числом элементов N в наборе BETA (или ALPHA). Для варианта UNALIGNED оно равно наименьшему количеству битов, в которых можно закодировать значение Д—1 как неотрицательное двоичное целое число. Для варианта ALIGNED оно равно минимальному количеству битов, которое является степенью двух и в которых можно закодировать значение jV—1. Пусть выбранное количество битов равно В. Тогда, если каждое значение в наборе BETA может быть закодировано (без преобразовании) в В битах, то значения в наборе ВЕГА используются для представления соответствующих символов в наборе ALPHA. В противном случае значения в наборе BETA берутся в возрастающем порядке и заменяются значениями 0, 1.2. и так далее до .V—I, и эти значения используются для представления соответствующих символов. В результате всегда используется минимум битов (в варианте ALIGNED — округленный до следующей степени двух). Предпочтение отдается использованию значений, обычно связанных с символами, но если какое-то из этих значений не может быть закодировано минимальным количеством битов, то применяется уплотнение.

26.1    Типами символьных строк известной кратности являются следующие ограниченные типы символьных строк: NumericString, PrinlableString, VisibleString (IS0646String), lA5String. BMPString и UniversalString. Эффективные ограничения PermittedAlphabet являются видимыми для PER только для этих типов.

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

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

П рн м еч а и и е — Видимые для PER ограничении применяются только к типам символьных строк известной кратности. Для других ограниченных типов символьных строк aub не устанавливается, и alb равняется нулю.

26.4    Если тип является расширяемым для кодирований PER (см. 9.3.15), то к списку попей должно быть добавлено битовое поле, состоящее из единственного бита. Этот бит должен быть равен пулю, если значение находится в диапазоне корня расширения, и единице — в противном случае. Если значение находится вне пределов диапазона корня расширения, то последующее кодирование должно быть таким, как если бы не было ни эффективного ограничения размера, ни эффективного ограиичения PermittedAlphabet.

Примечание — Только типы символьных строк известной кратности могут быть расширяемыми для кодирований PER. Маркеры расширения в других типах символьных строк не влияют на кодирование PER.

26.5    Настоящий подраздел для символьных строк известной кратности. Кодирование других ограниченных типов символьных строк специфицируется в 26.6.

26.5.1    Эффективный допустимый алфавит определяется как допускаемый ограничением PermittedAlphabet. или как весь алфавит встроенного типа, если нет ограничения PermittedAlphabet.

26.5.2    jV обозначает число символов в эффективном допустимом алфавите, В обозначает минимальное целое число, такое, что 2* 2 N. В2 — минимальный показатель степени 2, больший или равный В. Тогда в варианте ALIGNED каждый символ должен кодироваться в В2 битов, а в варианте UNALIGNED — в В битов. Число битов, определенных по этому правилу, обозначено Ь.

26.5.3    С каждым символом связывается числовое значение v ссылкой на ГОСТ Р ИСО/МЭК 8824-1, раздел 38, следующим образом. Ятя UniversalString это значение, которое используется для определения канонического порядка в ГОСТ Р ИСО/МЭК 8824-1, 38.4 (оно находится в диапазоне от 0 до 23' — 1). Для BMPString это значение, которое используется для определения канонического порядка в ГОСТ Р ИСО/МЭК 8824-1, ЗН.5 (оно находится в диапазоне от 0 до 216 — 1). Для NumericString, PrinlableString, VisibleString и IА5String это значение, которое определяется ИСО/МЭК 646 для кодирования соответствующего символа. (Для IA5String это диапазон от 0 до 127, для VisibleString - от 32 до 126, для NumericString - от 32 до 57. для PrintableString —

26

Страница 31

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

от 32 до 122. Для (ASString и VisibleString присутствуют все значения диапазона, а для NumericString и PrintableString используются не псе значения диапазона).

26.5.4    Наименьшее значение в диапазоне для набора символов допустимого алфавита обозначим lb, а наибольшее — ub. Тогда кодирование символа в b битах является неотрицательным двоичным целым кодированием значения v. идентифицированного следующим образом;

а)    если ub й 2" — 1, то v — указанное выше значение; в противном случае

б)    символы размешаются в каноническом порядке, определенном в ГОСТ Р ИСО/МЭК Н824-1, раздел 38. Первому из них присваивается нулевое значение, а следующему в каноническом порядке присваивается значение на единицу больше значения, присвоенного предшествующему символу в каноническом порядке. Это и будут значения v.

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

26.5.5    Кодирование всей символьной строки будет получено неотрицательным двоичным целым кодированием каждого символа (используя соответствующее значение v) в Л битах, которые должны быть сцеплены для формирования битового поля, кратного b битам.

26.5.6    Если aub равно alb и меньше 64К. то битовое поле должно быть добавлено к списку полей как выровненное, если aub более чем в 16 раз превышает b, или, в противном случае, как невыровненное по октету. Этим завершаются процедуры настоящего подраздела.

26.5.7    Если aub не равно alb или больше или равно 64К. то должны быть применены процедуры 10.9 для добавления детерминанта длины с п в качестве счетчика символов в строке, с нижней границей детерминанта длины alb и верхней границей aub. Затем битовое поле должно быть добавлено к списку полей как выровненное, если aub более чем в 16 раз превышает Ь, или. в противном случае, как невыровненное по октету. Этим завершаются процедуры настоящего подраздела.

26.6 Настоящий подраздел применяется к символьным строкам, которые не являются символьными строками известной кратности. В этом случае ограничения являются невидимыми для PER, а тип не может быть расширяемым для кодирования PER.

26.6.1    Используемый ниже термин «базовое кодирование* означает ОПК для BASIC-PER и CANONICAL-BER для CANONICAL-PER.

26.6.2    К символьной строке должно быть применено «базовое кодирование», даюшее пате из п октетов.

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

27 (Солирование неограниченного типа символьных строк

27.1    Установлены два способа, которыми может быть закодирован неограниченный тип символьных строк:

а)    альтернатива «syntaxes» неограниченного типа символьных строк ограничена видимым для PER внутренним ограничением типа единственным значением или «identification» ограничен видимым для PER внутренним ограничением типа альтернативой «fixed*; в этом случае должно быть закодировано только значение «string-value»; этот случай называется «предопределенным»;

б)    внутреннее ограничение типа не используется для ограничения альтернативы «syntaxes* единственным значением или «identification» — альтернативной «fixed*; в гаком случае должны быть закодированы как «identification*, так и «string-value»; этот случай называется «общим».

27.2    В «предопределенном» случае кодированием значения типа CHARACTER STRING должно быть кодирование PER значения типа OCTET STRING. Значение OCTET STRING должно быть октетами, образующими полное кодирование значения символьной строки, указанной в ГОСТ Р ИСО/МЭК 8824-1, 39.3а.

27.3    В обшем случае кодированием значения типа CHARACTER STRING должно быть кодирование PER типа, определенного в ГОСТ Р ИСО/МЭК 8824-1, 39.5. с исключенным элементом «descriptor* (а именно не должно быть битового отображения «OPTIONAL» в заголовке кодирования SEQUENCE). Значение «string-value* OCTET SIRING должно быть октетами, образующими полное кодирование единственного значения данных, указанного в ГОСТ Р ИСО/МЭК 8824-1, 39.3а.

27

Страница 32

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

28 Идентификаторы объектов синтаксисов передачи

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

2Х.2 Следующие идентификаторы объектов и значения описателей объектов предназначены для идентификации и описания правил кодирования, определенных в настоящем стандарте:

Для BASIC-PER. вариант ALIGNED:

(joint-iso-itu-t asnl (1) packed-encoding (3) basic (0) aligned (0)}

♦Packed encoding of a single ASN. 1 type (basic aligned)*

Для BASIC-PER. вариант UNALIGNED:

{joint-iso-itu-t asnl (1) packed-encoding (3) basic (0) unaligned (1)}

«Packed encoding of a single ASN. 1 type (basic unaligned)*

Для CANONICAL-PER. вариант ALIGNED:

{joint-iso-itu-t asnl (1) packed-encoding (3) canonical (1) aligned (()))

«Packed encoding of a single ASN. 1 type (canonical aligned)»

Для CANONICAL-PER. вариант UNALIGNED:

{joint-iso-itu-t asnl (1) packed-encoding (3) canonical (1) unaligned (1)}

«Packed encoding of a single ASN. 1 type (canonical unaligned)*

28.3    Когда прикладной стандарт определяет абстрактный синтаксис как множество абстрактных значений, каждое из которых является значением некоторого конкретно названного типа АСН. I. определенного с использованием нотаини АСН. I, тогда значения идентификаторов объектов. указанные в 28.2, вместе с именем абстрактного синтаксиса могут быть использованы для идентификации того синтаксиса передачи, который является результатом применения определенных в настоящем стандарте правил кодирования к конкретно названному типу АСН. 1, использованному при определении абстрактного синтаксиса.

Примечание — В частности, эти идентификаторы правил кодирования могут появиться в поле «имя синтаксиса передачи» протокола уровня представления (ГОСТ 34.972).

28.4    Имена, определенные в 28.2, не должны использоваться с именем абстрактного синтаксиса для идентификации синтаксиса передачи, если не удовлетворяются условия 28.3 для определения абстрактного синтаксиса.

28

Страница 33

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

ПРИЛОЖЕНИЕ А

(справочное)

Пример кодирования

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

А. 1 Запись, которая не использует ограничения полтипа

А. 1.1 Описание ACH. I структуры записи

Ниже формально описана структура гипотетической персональной записи с использованием АСИ. 1, специфицированной в ГОСТ Р ИСО/МЭК S824-I для определения типов. Описание идентично примеру, приведенному в ГОСГ Р ИСО/МЭК 8825-1, приложение А.

Personnel Record :: - (APPLICATION 01 IMPLICIT SET {

name    Name,

title    |0| Visible St ring,

number    EmployccNumber,

dateOfHire    11 ] Date.

nameOftpousc |2) Name, children    J31 IMPLICIT

SEQUENCE OF Childlnformation DEFAULT {} }

Child Information :: « SET

{name    Name.

dateOfBirth    |0) Date}

Name :: - [APPLICATION l| IMPLICIT SEQUENCE (givenName    VisibleString,

initial    VisibleString,

I'amilyName    VisibleString)

EmployccNumber :: - 1APPL1CATION 2| IMPLICIT INTEGER

Date :: - [APPLICATION 3| IMPLICIT VisiblcStnng - - YYYYMMDD

A.1.2 Описание ACH. 1 значения записи

Ниже приведено формальное описание с использованием ACH. I значения персональной записи для Джона Смита (John Smith):

| name {givenName «John», initial «Р», I'amilyName «Smith»}, title    «Director*,

number    51.

dateOfHire    .19710917»,

nameOfSpouse {givenName «Mary*, initial «Т*. family Name «Smith»}, children {{name{givenName «Ralph®, initial «Т*, familyName «Smith»}. dateOfBirth «19571111*},

{name{givenName «Susan», initial «В». familyName «Jones*}, dateOfBirth «19590717»}}}

A. 1.3 П ре д с та в л с и ие PER (ALIGNED) да н н о го значения записи

Далее показано представление приведенного выше значения записи (после применения варианта ALIGNED установленных в настоящем стандарте правил уплотненного кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями.

Длина ЭТОГО кодирования составляет 94 октета. Для сравнения, то же самое значение Personnel Record, -закодированное с использованием варианта UNALIGNED PER. занимает 84 октета, BER с определенной формой длины — по крайней мере 136 октетов, a BER с неопределенной формой длины — по крайней мерс 161 октет.

А. 1.3.1 Шестнадцатеричное представление 80044A6F 686 Е0150 055361)69 74680133 08446972 6563746F 72083139 37313039 3137044D 61727901 5405536D 69746802 0552616С 70680154 05536D69 74680831 39353731 31313105 53757361 6Е014205 4A6F6E65 73083139 35393037 3137

А. 1.3.2 Двоичное представление

Дзя облегчения чтения данных в двоичном представлении использованы пустые строки для группировки логически связанных полей (обычно эго пары длина/значение); дли разделения полей использован конец

29

Страница 34

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

строки; дня выделения символов в символьной строке использован пробел; 'х' представляет нулевой бит заполнения, который иногда используется для выравнивания полей но (ранние октета.

1 ххххххх    Битовая карта •= 1 указывает, что есть «children®

00000100    Дли на naine.gjvcnNamc = 4

01001010 01101111 01101000 01101110    namc.givcnNamc (имя) = «John*

00000001    Длина name.initial = I

01010000    name, initial = «Р*

00000101    Длина namc.famiiyName = 5

01010011 01101101 01101001 01110100 01101000 namc.famiiyName - .Smith.

00000001    Дтина    number =» I

00110011    number я 51

00001000    Длина    title - 8

01000100 0II0I001 01110010 01100101 011000II 01110100 01101 111 01110010 title «.Director*

00001000    Дтина dateOfHirc * 8

00110001 00111001 001101II 00110001 00110000 0011IOOI 00110001 00111111 dateOfHirc - .1959071?»

00000100    Дтина namcOfSpousc.givcnNamc “ 4

01001101 01100001 01110010 01111001 nameOfSpouse .given Name = -Mary*

00000001    Длина namcOfSpouse.initial “    I

01010100    namcOfSpouse.initial => *T*

00000101    Длина nameOfSpousc.familyName = 5

01010011 01101101 01101001 01110100 01101000 nameOfSpouse.familyName - .Smith.

00000010    Количество «children.

00000101    Дтина    children |0).    givcnNamc = 5

01010010    01100001 01101100 01110000 01101000 children |0J. givcnNamc - «Ralph»

00000001    Дтина children |0). initial ■    1

01010100    children |0J. initial *■ «Т*

00000101    Длина    children |0).    familyName ■= 5

01010011    01101101 01101001 01110100 01101000 children |0|. familyName - -Smith»

00001ООО    Дтина    children |0|.    datcOfBirth « 8

<«110001 00111001 00110101 00110111 00110001 00110001 00110001 00110001 children (0|. datcOfBirth - «19571111» 00000101    Длина    children [1|.    givcnNamc “ 5

01010011 01110101 01110011 01100001 01101110 children |l|. givcnNamc - «Susan»

00000001    Длина children 11|. initial “    I

01000010    children [l|. initial ■= «В»

00000101    Длина    children 111.    familyName =■ 5

01001010 01101 111 01101110 01100101 01110011 children |1|. familyName - .Jones»

00001ООО    Длина    children 11J.    datcOfBirth ■ 8

00110001 0011 IOOI 00110101 00111001 00110000 00110111 00110001 00110111 children 11]. datcOfBirth - . 19590717.

A. 1.4 Представле н ие PER (UNALIGNED) дан но го значении записи Далее показано представление приведенного выше значения записи (после применения варианта UNALIGNED установленных в настоящем стандарте правил уплотненного кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями. Биты заполнения не встречаются в варианте UNALIGNED. а символы кодируются в минимально возможное число битов.

Длина этого кодирования составляет 84 октета. Для сравнения, то же самое значение PersonnelRccord, закодированное с использованием варианта ALIGNED PER. занимает 94 октета. BER с определенной формой длины — по крайней мерс 136 октетов, a BER с неопределенной формой длины — но крайней мерс 161 октет.

А. 1.4.1 Шестнадцатеричное представление 824ADFA3 700D005A 7B74F4D0 02661113 4F2CB8FA 6FE410C5 CB762CIC В16Е0937 0F2F2035 0I69EDD3 D340I02D 2C3B3868 0IA80B4F 6Е9Е9А02 I8B%ADD 8BI62C4I 69F5E787 700С2059 5BF765E6 10С5СВ57 2CIBBI6E

Страница 35

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

А. 1.4.2 Двоичное представление

Для обличения чтения данных и двоичном представлении использованы пустые строки для группировки логически связанных полей (обычно это пары длина/значение); для разделения полей использован конец строки: для выделения символов н символьной строке использован пробел: точка (.) отмечает границу октета; V предста&тяет кулевой бит, использованный для заполнения последнего октета до границы октета.

I    Битовая карга ■= I указывает, что есть «children»

0000010.0    Длина namc.givenName = 4

1001010.1101    III 1.101000 11.01110 namc.givenName « «John»

000.00001    Длина name.initial ** I

101.0000    name.initial *■= «Р»

0000.0101    Длина namc.familyName * 5

1010.011 11011.01 110100.1 1110100 .1 lOiOOO namc.familyName = «Smith*

0.0000001    Диша number w 1

0.0110011    number » 51

0.0001000    Д'шна title ™ S

1.000100    11.01001 111.0010 1100.101 11000.11 111010.0 1101111 .1110010 title » «Director»

0.0001000    Длина dateOfHire 8

0.110001 01.11001 011.0111 0110.001 01100.00 011100.1 0110001 .0111111 dateOfHire - «19590717*

0.0000100    Длина namcOfSpouse.givcnName =4

1.001101    11 .СККЮ1 111.0010 1111.001 nameOfSpouse.givenName ■ «Maty»

00000.001    Длина nameOfSpouse.initial « I

10101.00    nameOfSpouse.inhial = «Т»

000001.01    Диша name.OfSpousefamilyName *» 5

101001.1    1101101 .1101001 1.110100 11.01000 nameOfSpouse.familyName * «Smith*

000.00010    Количество «children»

000.00101    Длина children (0J. givenNamc = 5

101.0010    1100.001 11011.00 111000.0 1101000 children |0|. givenNamc - «Ralph»

.00000001    Д’шна children [0|. initial “    I

.1010100    children [0|. initial » «Т»

0.0000101    Длина children (0J. familyName ** 5

1.010011 11.01101 110.1001 1110.100 11010.00 children {0]. familyName - «Smith-

000010.00    Длина children [0|. dateOfBirth « 8

011000.1    0111001 .0110101 0.110111 01.10001 011.0001 0110.001 01100.01 children |0|. dateOfBirth - «19571111»

000001.01    Длина children 11|. givenNamc = 5

101001.1    1110101.1110011 1.100001 11.01110 children [ 1 j.givcnName « .Susan»

000.00001    Длина children 11 j. initial =    1

100.0010    children |lj. initial = «В»

0000.0101    Длина children 11 ]. familyName — 5

1001.100    11011.11 110111.0 1100101 .1110011 children |l). familyName ~ «Jones*

0.0001000    Длина children [I). dateOfBirth » 8

0.110001 01.11001 011.0101 0111.001 01100.00 011011.1 0110001 .011011 Ix children 111. dateOfBirth = «19590717. A.2 Запись, которая использует ограничения подтипа

Это тот же самый пример, который показан в разделе А. 1. за исключением того, что в нем использована нотация подтипа для наложения ограничений на некоторые элементы.

А.2.1 О п и са н и е АСИ.1 стру ктуры записи

Ниже формально описана структура гипотетической персональной записи с использованием АСН. 1. специфицированной в ГОСТ Р ИСО/МЭК 8824-1 для определения типов.

Personnel Record :: « (APPLICATION 01 IMPLICIT SET { name    Name,

title    [0| VisibleString.

number    EmplovccNuinber,

31

Страница 36

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

datcOfHirc    |l| Date,

namcOfSpousc    |2| Name,

children    [31 IMPLICIT

SEQUENCE OF Childlnformation DEFAULT {} }

Childlnformation :: = SET

{name    Name,

datcOfBirth    |0| Date}

Name :: - [APPLICATION I] IMPLICIT SEQUENCE {givenName    VisiblcString,

initial    Visible Si ring    (SIZE<1)),

familyName    VisiblcString)

EmployeeNumbcr :: ~ [APPLICATION 2| IMPLICIT INTEGER

Date :: = [APPLICATION 3| IMPLICIT VsiblcStimg (FROM(«0*..«9») A SIZE (8» - - YYYYMMDD NamcString :: ™ VisibleString (FROM<*a»..«z»|«A*..*Z*|*--») л SIZE (I..64))

A.2.2 Описание ACH. 1 знамени я записи

Далее формально. с использованием ACH. I. описано значение персональной записи для Джона Смита (John Smith).

{ name [givenName «John», initial «Р». famillyName «Smith»}, title    «Director»,

number    51,

datcOfHirc «19710917*,

namcOfSpousc {givenName «Магу», initial «Т*. familyName «Smith»), children {{name{givenName «Ralph*, initial «Т*. familyName «Smith*}. datcOfBirth *19571111*},

(namcjgivcnName «Susan», initial «В». familyName «Jones»}. datcOfBirth «19590717»}}}

A.2.3 Представление PER(ALIGNED) данного значения записи

Далее показано представление приведенного выше значения записи (после применения варианта ALIGNED установленных в настоящем стандарте правил уплотненною кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями.

Длина лого кодирования составляет 74 октета. Для сравнения, то же самое значение Personnel Record, закодированное с использованием варианта IJNALIGNED PER. занимает 61 октет. BER с определенной формой длины — по крайней мерс 136 октетов, a BER с неопределенной формой длины — по Крайней мере 161 октет.

А. 13.1 Шестнадцатеричное представление 864A6F6X 6ES01053 6D697468 0I330S44 69726563 746F7219 7109I70C 4D6I7279 54I0536D 69746S02 1052616С 70685410 536 D6974 68195711 11105375 73616Е42 104A6F6E 65731959 0717 А.2.3.2 Двоичное представление

Для облегчения чтения данных в двоичном представлении исполыованы пустые строки для группировки логически связанных полей (обычно это пары длина/значение); для разделения полей использован коней строки: для выделения символов в символьной строке использован пробел; V представляет нулевой бит заполнения, который иногда используется для выравнивания полей по границе октета.

I    Битовая карга » I указывает, что есть «children»

000011х    Длина name .given Name * 4

01001010 01101111 011010(H) 01101110 name .given Name - «John»

01010000    name.initial = «Р*

OOOIOOxx    Длина name.familyName =• 5

01010011 01101101 01101001 01110100 01101000 name.familyName - «Smith*

00000001    Длина number = I

00110011    number’» 51

00001000    Длина title - 8

01000100 01101001 01110010 01100101 0110(1011 01110100 01101111 01110010 title - «Director»

0001 1001 0111 0001 0000 1001 0001 0111 datcOfHirc “ «19590717*

00001 Ixx Длина namcOfSpousc. givenName “ 4

Страница 37

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

01001101 01100001 01110010 01111001 namcOfSpousc.givcnName = «Магу*

01010100    namcOfSpousc. initial •» *Т»

ОООКЮхх    Длина namcOfSpousc. familyNamc    =    5

01010011 01101101 01101001 01110100 01101000 namcOfSpousc. familyNamc - «Smith»

00000010    Количество «children»

OOOlOOxx    Длина children |0|. givenNamc = 5

01010010    01100001 01101100 01110000 01101000 children |0|. givenNamc = «Ralph»

01010100    children [0|. initial “ *T*

OOOlOOxx    Длина children |0|. familyNamc    «*    5

01010011    01101101 01101001 01110100 01101000 children |0|. familyNamc « «Smith.

0001 1001 0101 0111 0001 0001 0001 0001 children |0|. datcOffiirth = *19571111»

OOOlOOxx    Длина children |l|. givcnNamc » 5

01010011 01110101 01110011 01100001 01101110 children 111. givcnNamc = «Susan*

01000010    children |l). initial = «В»

OOOlOOxx    Длина children |l|. familyNamc    ™    5

01001010 01101111 01101110 01100101 01110011 children [1]. familyNamc = «Jones*

0001 1001 0101 1001 0000 Oil I 0001 0111 children |1|. dalaOffiirth - .19590717»

A.2.4 Представление PER (UNALIGNED) данно г о значения записи Далее показано прсдстааление приведенного выше значения записи (после применения варианта UNALIGNED установленных в настоящем стандарте правил уплотненного кодирования). Кодирование прслслав-лено в шестнадцатеричном виде и сопровождается лвоичным видом с описательными комментариями. Биты заполнения не встречаются в варианте UNAL1GNED. а символы кодируются в минимально возможное число битов.

Длина этого кодирования составляет 61 октет. Для сравнения, то же самое значение PersonnclRccord, закодированное с использованием варианта ALIGNED PER. занимает 74 октета. BER с определенной формой длины — по крайней мерс 136 октетов, a BER с неопределенной формой длины — но крайней мерс 161 октет.

A.2.4.1 Шестнадцатеричное представление 865D5ID2 S8SA5I25 FI809984 44D3CB2E 3E9BF90C BS84XB86 7396ESA8 SA5I25F1 SWS9B93 D71AA229 4497С632 АЕ222222 985CE52I 885D54C1 70САС838 В8 А.2.4.2 Двоичное предстамение

Для облегчения чтения ланных в двоичном представлении использованы пустые строки для группировки логически связанных полей (обычно это пары длина/значение): дчя разделения полей использован конец строки; для выделения символов в символьной строке использован пробел; точка (.) отмечает границу октета; Y представляет нулевой бит, использованный дчя заполнения последнего октета до грспншы октета.

I    Битовая карга = I указывает, что есть «children*

000011    Длина name. givcnNamc    =    4

0.01011 101.010 10001.1 101001 name. givcnNamc *» «John»

0.10001    name, initial «Р»

000.100    длина name. familvName    *    5

01010.0    101000 1.00100 101.111 10001.1 name.familyNamc - «Smith*

0000000.1    Длина number ■= 1

OOI 1001.1    number = 51

0000100.0    Длина title ® 8

1000100 .1101001 1.110010 11.00101 110.0011 1110.100 11011.11 1 IKK)I.Otitic» .Director»

0001 100.1 0111 000.1 0000 100.1 0001 011.1 datcOfHirc = <19590717»

000011    Длина namcOfSpousc. givenNamc = 4

0.01110 011.100 10110.! 110100 namcOfSpousc. givcnNamc = «Магу»

0.10101    namcOftpousc. initial = «Т»

000.100    Длина namcOfSpousc. familyNamc — 5

Страница 38

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

01010.0    101000 1.00100 101.111 10001.1 namcOfSpousc. familyName « «Smith»

0000001.0    Количество «children*

000100    Длина children |0|.    givcnNamc “ 5

0.10011 011.100 10011.1 101011 1.00011 children |0|. givcnNamc - .Ralph»

010.101    children |0|. initial e «Т»

00010.0    Дпина children |0], familyName « 5 010100 1.01000 100.100 10111.1 100011 children (0|. familyName - «Smith-

0.001 1001    0.101 01II 0.001 0001 0.001 0001 children    |0|. dataOfBirth = .19571111.

0.00100    Длина children [1|.    givcnNamc = 5

010.100 11000.0 101110 0.11100 101.001 children 111. givcnNamc - .Susan.

00001.1    children |1|. initial = «В»

000100    Длина children |l|. familyName ~ 5

0.01011 101.010 10100.1 100000 1.01110 children |1|. IkmilyNamc * «Jones.

000.1 1001 010.1 1001 000.0 0111 00.1 011 Ixxx children |l|. datcOfBirth = -19590717»

Л.З Запись, используюшая маркеры расширения

А.З. I Описание ACH. 1 структуры записи

Ниже формально описана структура гипотетической персональной записи с использованием ACH. 1, описанной в ГОСТ Р ИСО/МЭК 8824-1 для определении типов.

Personnel Record :: - (APPLICATION 0| IMPLICIT SET { папк    Name,

title    (0] VisjblcString.

number    EmpioyeeNumbcr.

datcOfHire    |l| Date,

nameOfSpousc    |2| Name,

children    |3J IMPLICIT

SEQUENCE (SIZE(2____)) OF Childlnformation OPTIONAL____)

Child Information :: ■» SET

{name    Name.

datcOfBirth    |0) Date}

sex    111 IMPLICIT ENUMERATED {male (1), female (2). unknown (3)} OPTIONAL

I

Name :: - (APPLICATION 11 IMPLICIT SEQUENCE {givcnNamc    VisiblcStnng.

initial    VisiblcStnng (SIZE    (1)),

familyName    VisiblcStnng.

... \

EmpioyeeNumbcr :: = (APPLICATION 2| IMPLICIT INTEGER (0..9999, .. .)

Date(APPLICATION 3| IMPLICIT VisiblcStnng(FROM(«0...«9»>" SIZE (8.....9..20))-- YYYYMMDD

NamcString :: ■= VisiblcStnng (FROM («a»..*£»|*A»..«Z»|«-. ») Л SIZE (1..64. . . . ))

A.3.2 Описание ACH. 1 значения записи

Далее формально, с использованием ACH. 1, описано значение персональной записи для Джона Смита (John Smith).

{name {givcnNamc .John», initial «Р», familyName «Smith»}, title    «Director»,

number    51,

datcOfHire    .19710917..

namcOfSpousc {givcnNamc «Mary*, initial «Т», familyName «Smith»}, children {(name{givcnNamc «Ralph», initial «Т», familyName «Smith»}. datcOfBirth «19571111»}, jnamc{givcnNamc «Susan, initial »B«. familyName «Jones»}. datcOfBirth «19590717», sex female}}}

Страница 39

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

А.3.3 Л редета в л с н и с PER (ALIGNED) да н и ого значения записи

Далее показано представление приведенного выше значения записи (после применения варианта ALIGNED установленных в настоящем стандарте правил уплотненного кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями.

Длина этого кодирования составляет S3 октета. Для сравнения, то же самое значение PersonnelReconJ, закодированное с использованием варианта UN ALIGNED PER. занимает 65 октетов, BER с определенной формой длины — по крайней мере 139 октетов, a BER с неопределенной формой длины — по крайней мерс 164 октета.

А. 3.3.1 Шестнадцатеричное представление 40C04A6F 6S6E5008 536D6974 68000033 08446972 6563746F 72001971 0917034D 61727954 08536D69 74680100 526I6C70 68540853 6D697468 00195711 11820053 75736I6E 42084A6F 6Е657300 19590717 010140

А.3.3.2 Двоичное представление

Для облегчения чтения данных в двоичном представлении использованы пустые строки для группировки логически связанных полей (обычно это пары длина/значение): для разделения полей использован конец строки; для выделения символов в символьной строке использован пробел: У представляет нулевой бит заполнения, который иногда используется для выравнивания полей но границе октета.

0    В PersonnclRecord нет значений расширения

1    Битовая карга ™ I указывает, «по есть «children»

0    В «паше» нет значений расширения

0    Длина находится в диапазоне корня расширения

0000 1 Ixxxxxx    Длина паше, given Name = 4

01001010 01101111 01101000 01101110 name. givenName ~ .John*

01010000    name, initial ■= «Р*

0    Д'шна находится в диапазоне корня расширения

ОООЮОх    длина rume. familvName = 5

01010011 01101101 01 №1001 01110100 01101000 name. familyName =• «Smith*

Оххххххх    Значение находится в диапазоне корня расширения

ООООООООООПООП    number « 51

00001000    Длина title - 8

01000100 01101001 01110010 01100101 01100011 01110100 01101 111 01110010 title = -Director*

Оххххххх    Длина находится в диапазоне корня расширения

0001    1001 0111 0001 0000 1001 0001 0111 dateOfHire = *19590717.

0    В namcOfSpousc нет значений расширения

0    Д'шна находится в диапазоне корня расширения

000011    Длина namcOfSpouMr.givcnN'ame = 4

01001101 01100001 0111 СЮ 10 01111001 namcOfSpousc.givcnNamc =» «Магу»

01010100    namcOfSpousc. initial = «Т»

0    Д'шна находится в диапазоне корня расширения

ОООЮОх    Длина nameOfSpou.se. familvName = 5

01010011 01101101 01101001 01110100 01101000 namcOfSpousc. familyName - .Smith*

0    Количество «children» находится в диапазоне корня расширения

0    В children |0| нет значений расширения

0    В children (0J. name нет значений расширения

0    Длина находится в диапазоне корня расширения

QOOIOOxx хххх    Длина children 10]. givenName ™ 5

01010010    01100001 01101100 01110000 01101000 children (0]. givenName - «.Ralph»

01010100    children |0|. initial » *T*

0    Длина находится в диапазоне корня расширения

ОООЮОх    Длина children |0]. familyName » S

01010011    01101101 01101001 01110100 01101000 children |0|. familyName - «Smith»

Оххххххх    Длина находится в диапазоне корня расширения

0001 1001 0101 0111 ООО! 0001 0001 0001 children |0|. dateOfBirth - .19571111»

Страница 40

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

I    В children |1| есть значение (я) расширения

0    В children 111. name нет значений расширения

0    Длина находится в диапазоне корня    расширения

00010 Оххххххх    Длина children |l|. givenName = 5

01010011 01110101 Oil 10011 01I00001 01101110children 11|. givenName-«Susan*

OIOOOOIO    children 11|. initial ™ «В*

0    Длина находится в диапазоне корня    расширении

ОООЮОх    Длина children |l|. familyName = 5

0100I010 01101 III 01101110 01100101 Oil 10011 children (I). familyName - «Jones*

Оххххххх    Длина находится в диапазоне корня расширения

0001    1001 0101 1001 0000 0111 0001 0111 children |l|. dateOfBirth - *19590717*

0000000    Диша битовой карты расширяющего дополнения для children 111 = I

1    Указывает , что есть значение расширения для «sex*

00000001    Длина полного кодирования «sex*

Olxxxxxx    Полное кодирование «sex* = female

А.3.4 П р е д ста вл с н и с PER (UNAL1GNED) д а н н о г о значения записи Далее показано представление приведенного выше значения записи (после применения варианта UNALIGNED установленных в настоящем стандарте правил уплотненного кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями. Биты заполнения не встречаются в варианте UNALIGNED. а символы кодируются в минимально возможное число битов.

Длина этого кодирования составляет 65 октетов. Для сравнения, то же самое значение Personnel Record, закодированное с использованием варианта ALIGNED PER, занимает 83 октета. BER с определенной формой длины — по крайней мере 139 октетов, a BER с неопределенной формой длины — по крайней мере 164 октета.

А.3.4.1 Шестнадцатеричное представление 40СВААЗА 5I08A5I2 5F180330 889А7965 C7D37F20 СВ8848В8 19СЕ5ВА2 A1I4A24B E301I372 7АЕ35422 94497С61 95711118 22985СЕ5 2IX42EAA 60В832В2 0Е2Е0202 80 А.3.4.2 Двоичное представление

Для облегчения чтения данных в двоичном представлении использованы пустые строки для группировки логически связанных полей (обычна это пары длина/значение); для разделения полей использован коней строки; для выделения символов в символьной строке использован пробел; точка (.) отмечает границу октета; 'х' представляет нулевой бит. использованный для заполнения последнего октета до границы октета.

0    В PcrsonnelRecord нет значений расширения

1    Битовая карга = 1 указывает, что есть «children*

0    В «пате* нет значений расширения

0    Длина находится в диапазоне корня расширения

0000.11    Длина name. givenName    =    4

001011 .101010 10.0011 1010.01 паше. givenName » «John*

01000I    name.initial ~ *P*

.0    Длина находится в диапазоне корня расширения

ООО 100    длина name. familyName - 5

0.10100 101.000 10010.0 101111 1.00011 name. familyName - .Smith*

0    Значение находится    в диапазоне корня расширения

00. 00000011.0011    number - 51

0000.1 ООО    Длина title - 8

1000.100 11010.01 111001.0 1100101 1100011 1.110100 11.01111 111.0010 title » «Director*

0    Длина находится в диапазоне корня расширения

000.1 1001 011.1 0001 000.0 1001 000.1 0111 dateOfHirc - *19590717*

0    В nameOfSpouse нет значений расширения

0    Длина находится в диапазоне корня расширения

0.00011    Длина nameOlSpouse. gjvcnName = 4

Страница 41

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

001.110 01110.0 101101 1.10100 nameOfSpouse. givenName = «Магу»

010.101    namcOfSpousc. initial ™ «Т*

О    Диша находится в диапазоне корня расширения

0001.00    Длина namcOfSpousc. familyName = 5 010100 .101000 10.0100 1011.11 100011 namcOfSpousc. familyName =■ «Smith»

.0    Количество «children» находится в диапазоне    корня расширения

0    В    children |0| нет значений расширения

0    В    children |0j. name нет значений расширения

0    Длина находится в диапазоне корня    расширения

0001.00    Длина children |0|. gi4enName =■ 5 010011 .011100 10.0111 1010.11 100011 children |0|. givenName - -Ralph»

.010101    children |0j. initial = «Т»

0    Длина находится в диапазоне корня    расширения

0.00100    Диша children (0). familvName «*■ 5

010.100    10100.0 100100 1.01111 100.011 children |0|. familyName - «Smith»

0    Длина находится в диапазоне корня    расширения

0001    .1001 0101 .0111 0001 .0001 0001 .0001 children [0]. dalcOfBirlh =• «19571111*

1    В    children |1] есть значение (я) расширения

0    В    children |1|. пате нет значений расширения

0    Дтина находится в диапазоне корня    расширения

0.00100    Диша children |1|. givenName “ 5

010.100    11000.0 101110 0.11100 101.001 children |l|. givenName = «Susan*

00001.1    children 11|. initial " «В»

0    Длина находится в диапазоне корня    расширения

000100    Дтина children |1J. familvName » 5

.001011 10.1010 1010.01 100000 .101110 children 11). familyName - *Jones»

0    Диша находится в диапазоне корня    расширения

0.001 1001 0.101 1001 0.000 0111 0.001 0111 children |1). dateOfBirth * *19590717*

0.000000    Днина битовой карты расширяющего дополнения    для children |1| = 1

1    Указывает, что есть значение расширения для    «sex»

0.0000001    Длина полного кодирования «sex»

O.lxxxxxx    Полное кодирование «sex* = female

х    Бит заполнения для создания полного кодирования PersonnelRecord

А.4 Запись, которая использует расширяющие дополнительные группы

А.4.1 Описание АСЫ. (структуры записи

Ниже формально описана структура гипотетической записи покупателя с использованием АСИ. I. специфицированной в ГОСТ Р ИСО/МЭК 8824-1 для определения типов. Принята среда AUTOMATIC TAGS.

Ах :: - SEQUENCE 1 a INTEGER (250..253), b BOOLEAN, с CHOICE { d INTEGER,

if’ с BOOLEAN, f IA5String

37

II.

Страница 42

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

II

g NumcricString (SIZE (3», h BOOLEAN OPTIONAL

1),

’ i BMPString OPTIONAL, j PrintableString OPTIONAL

)

A.4.2 О и и с а к и с ACH. 1 значения записи

Ниже значение Ах формально описано с использованием ACH. I:

<а 253, b TRUE, с с: TRUE, g «123., h FALSE}

A.4.3 Представление PER (ALIGNED) данного значения записи

Далее показано представление приведенного выше значения записи (после применения варианта ALIGNED установленных в настоящем ста ила pie правил уплотненного кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями. В двоичном виде V используется для представления битов заполнения, которые кодируются как нулевые: они используются для выравнивания полей.

Длина лого кодирования составляет 8 октетов. Для сравнения, то же самое значение, закодированное с использованием варианта UN ALIGNED PER. занимает 8 октетов, BER с определенной формой длины — по крайней мере 22 октета, a BER с неопределенной формой длины — по крайней мере 26 октет.

A.4.3.1 Шестнадцатеричное представление

9Е000180 0I029IA4

А.4.3.2 Двоичное представление

Для облегчения чтения данных в двоичном представлении использованы пустые строки для группировки логически связанных полей (обычно это пары длина/значение); для разделения полей использован конец строки; для выделения символов в символьной строке использован пробел: Y представляет нулевой бит заполнения, который иногда используется для выравнивания нолей по границе октета.

I    В Ах есть дополнительные расширяющие значения

00    Битовая карт =■ 0 указывает, что факультативные поля    (i. j)    отсутствуют

II    а ■“ 253

1    b = TRUE

I    Выбор значения с является дополнительным расширяющим значением

0000000    хх    Выбрано с. с

00000001    Длина с. с

Ixxxxxxx    с. с = TRUE

0000000    Количество расширяющих дополнений, определенных в Ах.    =    I

1    Первое расширяющее дополнение присутствует

00000010    Длина кодирования    расширяющего    дополнения = 2

1    Битовая карга    =    1 указы вает, что h    присутствует

0010 0011 0100    g = *123»

Ixx    h = TRUE

А.4.4 П ред ста в л с н и с PER (UNALIGNED) д а н и о г о значения записи Далее показано представление приведенного выше значения записи (после применения варианта UN-ALIGNED установленных в настоящем стандарте правил уплотненного кодирования). Кодирование представлено в шестнадцатеричном виде и сопровождается двоичным видом с описательными комментариями. Биты заполнения не встречаются в варианте UNALIGNED. за исключением, возможно, конца кодирования самого внешнего значения.

Длина ЭТОГО кодирования составляет 8 октетов. Для сравнения, то же самое значение, закодированное с использованием варианта ALIGNED PER. занимает 8 октетов, BER с определенной формой длины — по крайней мерс 22 октета, a BER с неопределенной формой длины — по крайней мере 26 октет.

А.4.4.1 Шестнадцатеричное представление

9Е000600 040А4690

А.4.4.2 Двоичное представление

Для облегчения чтения данных и двоичном представлении использованы пустые строки для группировки логически связанных полей (обычно это пары длина/значение»; для разделения полей использован конец

38

Страница 43

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

строки; для выделения символов в символьной строке использован пробел: точка (.) отмечает границу октета; V представляет нулевой бит. использованный для заполнения последнего октета до границы октета.

I    В Ах есть дополнительные расширяющие значения

(К)    Битовая карта = 0 указывает, что факультативные поля (i, j) отсутствуют

II    а - 253

I    b = TRUE

I    Выбор значения с является дополнительным расширяющим значением

0.000000    Выбрано с. е

00.000001    Длина с. с

Ixxxxxxx    с. с ~ TRUE

00.00000    Количество расширяющих дополнений, определенных в Ах. = 1

1    Первое расширяющее дополнение    присутствует

00.000010    Длина кодировании расширяющего дополнения - 2

I    Битовая карга = I указывает, что h присутствует

0.010 00110.100    g - «123»

Ixxxx    h - TRUE

39

Страница 44

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

ПРИЛОЖЕНИЕ В

(справочное)

Объединения видимых для РЕК ограничений

Некоторые свойства могут оставаться видимыми при объединении элементов подтипа, каждый из которых по отдельности может быть видимым для PER. Ниже приведены примеры таких свойств:

B.I Эффективным ограничением размера для

А - lA5String (SIZE (I..4) | SIZE (9.. 10»

является

А - lASStnng (SIZE (I..4) | (9.. 10))

В.2 Когда ограничение PcrmittcdAlphabct объединяется в одну спецификацию подтипа с другими ограничениями PermittcdAlphabel. иег эффективного ограничения PcrmitledAlphabct, содержащего меньше, чем все символы в неограниченном типе, если нет единственной спецификации PcrmillcdAlphabei. которая является супермножеством всех других спецификаций PcrmittcdAlphabct в этой спецификации подтипа. Кроме того, если в эти спецификации ограничений включены ограничения размера, то супсрмножсство спецификации Рег-mittedAlphabet должно иметь эффективное ограничение размера, объединенное с ним операцией INTERSECTION. которое является супермножеством всех других ограничений размера, наложенных на тип. Например. В - lAfString (FROM («АВ») A SIZE (I..2) 1 PROM (*DE*) ' SIZE (3) |

FROM (.ABODE.) A SIZE (I..5)) имеет эффективное ограничение размера и эффективное ограничение алфавита PcrmittcdAlphabct

В :: = lA5Stnng (FROM («ABCDE*) л (SIZE (1..5»

так как это является супермножеством более сложного выражеггия. приведенного выше, таким образом оно становится видимым для PER. С другой стороны, в следующем примере эффективное ограничение PcrmrttcdAl-phabct является полным набором символов, допустимых для IA5String, так как нет единственного эквивалента ограничения PcrmittcdAlphabct. Таким образом, следующее ограничение не является видимым для PER:

С :: e lASStnng (FROM («АВ») | (FROM («CD*)) — не эквивалентно (FROM («ABCD»»

В.З Ограничения размера могут произвольно объединиться, если нсг ограничения PcrmittcdAlphabct. Например.

Е :: - lASStnng (SIZE (I..4) | (SIZE (S..10) л FROM («ABCD») | SIZE (6..10))

является невидимым для PER ограничением размера (так как размер 5 допустим не для всех возможных символов), тогда как

Е :: - lASStnng (SIZE (I..4) | (SIZE (6.. 10) А FROM («ABCD») | SIZE (6.. 10»

является видимым для PER ограничением размера SIZE (1..4) | (6.. 10), так как эффективное ограничение PcrmittcdAlphabct является набором всех символов lASStnng. В этом случае FROM («ABC'D») не является видимым для PER ограничением, так как оно неприменимо ко всем возможным значениям Е (например, если длина строки равна I, то символ не ограничивается одним из «ABCD»).

40

Страница 45

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

ПРИЛОЖЕНИЕ С

(справочное)

Поддержка алгоритмов PER

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

Когда есть требования использовать надежно передающее и/или каноническое кодирование в EMBEDDED PDV (или в EXTERNAL) либо в CHARACTER STRING, то они должны быть явно сформулированы.

Ниже дано руководство по разработке нормативных текстов.

С.1 Каноническое кодирование предназначено для использования, когда возможности защиты применяются к кодированию (см. ГОСТ Р ИСО/МЭК 8825-1. приложение D>. Использование CANONICAL-PER может повлечь за собой существенные дополнительные издержки использования центрального процессора, когда колируемое значение содержит тип «множество-изо, и, вообще говоря, не рекомендуется для протоколов, если возможности зашиты не требуются.

С.2 Когда значение абстрактного синтаксиса содержит вложенные данные, которые закодированы с использованием синтаксиса передачи или абстрактного синтаксиса, отличного от связанного со значением абстрактного синтаксиса, настоятельно рекомендуется, чтобы для вложенных данных использовалось надежно передающее кодирование. Если существенны возможности защиты, то потребуются канонические правила кодирования. В данном контексте особое внимание следует уделить уровню ИСО/МЭК 10646-1, который должен использоваться для типа BMPString или UniversalString, так как только реализация уровня 1 ИСО/МЭК 10646-1 будет гарантированно канонической.

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

С.4 Когда контекст представления устанавливается для двустороннего потока данных, применение BASIC-PER может дать существенные преимущества гибкости и 'экономии.

С.5 Настоятельно рекомендуется, чтобы все реализации, поддерживающие декодирование какого-либо варианта ALIGNED PER синтаксиса передачи, поддерживали декодирование BASIC-PER. вариант ALIGNED (и. следовательно, CANONICAL-PER. вариант ALIGNED) и принимали контексты представления, идентифицированные с любым из лих двух правил кодирования, при условии, что контексты для получения данных устанавливаются этой реализацией. Аналогичная рекомендация справедлива для варианта UNALIGNED.

С.6 В интересах обеспечения взаимодействия рекомендуется, чтобы все реализации PER поддерживали как вариант ALIGNED, так и вариант UNALIGNED (дополнительное усложнение реализации невелико). Какой из них (или оба) предоставляется для конкретного сеанса связи, является локальным вопросом управления, как и вопрос о том, какой из них принимается, если прелое та влены оба. Если предложен только один вариант, то он должен быть принят.

С.? Следование настоящим рекомендациям важно, в частности, для поставщиков средств общего назначения. Когда реализация является специфической для некоторого конкретного приложения, то поддержка единственного синтаксиса передачи PER (возможно, определенного прикладным разработчиком) может быть вполне допустимой.

41

Страница 46

ГОСТ I» НСО/МЭК 8825-2-2003 ПРИЛОЖЕНИЕ D

(справочное)

Поддержка правил расширения АСН. 1

D.1 Настоящие правила уплотненного кодировании зависят от полною определения типа, к которому они применяются. В общем случае, любые изменения в определении типа, отличные от чисто синтаксических, будут влиять на кодирование всех значений, использующих соответствующую часть спецификации. В частности, добавление новых факультативных компонентов к последовательности, преобразование компонента в тип CHOICE из компонента этого и некоторой» другою типа, ослабление или ужесточение ограничений на некоторый компонент, вероятно, изменят кодирования значений типа.

D.2 Однако настоящие правила кодирования гарантируют, что требования к правилам кодирования, установленные в модели расширения типа АСН. I (см. ГОСТ Р ИСО/МЭК 8824-1). удовлетворяются.

D.3 Котла тип не является частью последовательности расширения (нет маркера расширения), то. в соответствии со сказанным выше. PER не обеспечивают поддержку расширения этою типа. Когда тип •последовательность» или «множество» имеет маркер расширения, но расширяющих дополнений нет, есть один дополнительный бит (который в вариантах ALIGNED может стать одним октетом из-за заполнения) по сравнению с тем же самым типом без маркера расширения. Когда в типе присутствуют дополнения и они фактически передаются в сеансе связи, есть дополнительные издержки приблизительно в один октет, плюс дополнительное поле длины для каждого передаваемого расширяющею дополнения по сравнению с тем же самым типом без маркера расширения.

D.4 Важно иметь в виду, что добавление или удаление маркер;! расширения изменяет биты в строки и. в общем случае, потребует изменения номера версии протокола.

D.5 Кодирование не изменяется из-за включении маркера расширения в набор информационных объектов из-за добавления или удалении спецификаций исключений, но они могут потребовать изменений в поведении реализации и изменения номера версии протокола.

ПРИЛОЖЕНИЕ Е (справочное)

Руководство по сцеплению кодирований PER

Е.1 Кодирования PER являются саморазтраниченными при знании правил и типа кодирования. Полные кодирования для вариантов ALIGNED и UNALIGNED всегда кратны 8 битам.

Е.2 Для передачи кодирований PER в протоколе уровня представления В ОС, кодирования вариантов ALIGNED и UNALIGNED могут быть сцеплены в строку октетов.

I

ПРИЛОЖЕНИЕ Г (справочное)

Присвоенные шачения идентификаторов объектов

В настоящем стандарте присвоены следующие значения идентификаторов и описателей объектов: Для BASIC-PER. вариант ALIGNED:

(joint-iso-itu-t asnl (I) packed-encoding (3) basic (0) aligned (0)}

«Packed encoding of a single ASN. I type (basic aligned)»

Для BASIC-PER. вариант UNALIGNED:

(joint-iso-im-t asnl (1) packed-encoding (3) basic (0) unaligned (l)J «Packed encoding of a single ASN. I type (basic unaligned)»

Для CANONICAL-PER. вариант ALIGNED:

(joint-iso-itu-t asnl (1) packed-encoding (3) canonical (I) aligned (())}

•    Packed encoding of a single ASN. I type (canonical aligned)»

Для CANONICAL-PER. вариант UNALIGNED:

(joint-iso-itu-t asnl (1) packed-encoding (3) canonical (I) unaligned (1)}

•    Packed encoding of a single ASN. I type (canonical unaligned)»

42

Страница 47

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

УДК 681.324:006.354    ОКС 35.100.60    П85    О КС ТУ 4002

Ключевые слона: обработка данных, информационный обмен, сетевое взаимодействие, взаимосвязь открытых систем, коммуникационная процедура, преобразование данных, кодирование, правила (инструкции).

Редактор Р.Г. Гоосрдгнккая Технический редактор О Н. Власова Корректор В.И. Каиуркипа Компьютерная верстка Н.Л. Налейкыпаа

Изд. лии. Si 023S4 от 14.07.2000. Сдано в набор 22.05.2003. Подписано в печать 27.06.200J. Уел. иечл. S.I2. Уч.-и:«.л. 5.10;

Тираж 262 «V С 10992. Зак. 544.

ИПК Издательство стандартов. 107076 Москва. Кидолсшыи пер.. 14. http://www.iilandards.ru    e-mail:    infoii?:itandards.ru

Набрани в Издательстве на ПЭВМ Филиал ИПК Имательгтво стандартов — тип. «Московский печатник». 105062 Москва. Лилин пер., 6.

Плр М- OS0102,