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

28 страниц

456.00 ₽

Купить ГОСТ 34.974-91 — официальный бумажный документ с голограммой и синими печатями. подробнее

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

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

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

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

Распространяется на синтаксис передачи данных в прикладном уровне базовой эталонной модели взаимосвязи открытых систем и устанавливает спецификацию базовых правил кодирования значений типов данных пользователя для абстрактно-синтаксической нотации версии 1 (АСН.1).

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

  Скачать PDF

Оглавление

0. Введение

1. Назначение и область применения

2. Ссылки

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

4. Сокращения и обозначения

4.1. Сокращения

4.2. Обозначения

5. Требования динамического и статического соответствия

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

6.1. Структура кодового представления

6.2. Октетов идентификатора

6.3. Октеты длины

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

6.5. Октеты признака конца содержимого

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

8. Кодовое представление целочисленного значения

9. Кодовое представление значения «строка битов»

10. Кодовое представление значения «строка октетов»

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

12. Кодовое представление значения «последовательность»

13. Кодовое представление значения «последовательность из»

14. Кодовое представление значение «множество»

15. Кодовое представление значения «множество из»

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

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

18. Кодовое представление тегированного значения

19. Кодовое представление значения произвольного типа

20. Кодовое представление значения «идентификатор объекта»

21. Кодовое представление значений типов «строка знаков»

22. Кодовые представления значений общеупотребительных типов ACH.1

23. Использование кодовых представлений при определении синтаксиса передачи

Приложение 1. Пример кодового представления

Приложение 2. Перечень присвоенных значений «идентификатора объекта»

Информационные данные

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

ГОСУДАРСТВЕННЫЙ СТАНДАРТ

СОЮЗА ССР

ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ

ВЗАИМОСВЯЗЬ ОТКРЫТЫХ СИСТЕМ

ОПИСАНИЕ БАЗОВЫХ ПРАВИЛ КОДИРОВАНИЯ ДЛЯ

АБСТРАКТНО-СИНТАКСИЧЕСКОЙ НОТАЦИИ ВЕРСИИ 1

(АСН.1)

ГОСТ 34.974-91

27 р. 50 к. БЗ 7-91/836

(ИСО 8825—87)

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

КОМИТЕТ СТАНДАРТИЗАЦИИ И МЕТРОЛОГИИ СССР

Москва

ГОСУДАРСТВЕННЫЙ СТАНДАРТ

СОЮЗА ССР

ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ ВЗАИМОСВЯЗЬ ОТКРЫТЫХ СИСТЕМ

ОПИСАНИЕ БАЗОВЫХ ПРАВИЛ КОДИРОВАНИЯ ДЛЯ АБСТРАКТНО-СИНТАКСИЧЕСКОЙ НОТАЦИИ

ВЕРСИИ I (ACH I)

ГОСТ 34.974-91 (ИСО 8825-87)

1991

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

Москва

ГОСТ 34.974-91 С. 9

7. КОДОВОЕ ПРЕДСТАВЛЕНИЕ БУЛЕВСКОГО ЗНАЧЕНИЯ

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

7.2.    Если булевское значение есть «ложь» («FALSE»)» то этот октет должен иметь нулевое значение.

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

Пример. Значение «истина» булевского типа может быть закодировано следующим образом:

Булевский тип Длина Содержимое

01    01 FF

8. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЦЕЛОЧИСЛЕННОГО ЗНАЧЕНИЯ

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

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

а)    они не должны все иметь значение «единица»;

б)    они не должны все иметь значение «нуль».

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

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

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

9. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «СТРОКА БИТОВ»

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

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

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

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

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

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

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

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

9.3.1.    Каждое из кодовых представлений, являющихся частью октетов содержимого, должно быть кодовым представлением значения типа «строка битов» («BIT STRING»).

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

9.3.2.    Биты кодируемого значения «строка битов», начиная с первого бита по порядку вплоть до замыкающего бита, помещаются в биты с первого по замыкающий первого значения данных, закодированного в октетах содержимого, затем в биты с первого по замыкающий второго значения данных, закодированного в октетах содержимого, затем в биты с первого по замыкающий каждого последующего, вплоть до последнего значения данных, закодированного в октетах содержимого.

ГОСТ 34.974-91 С. II

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

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

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

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

Примечание. Обычно кодовое представление каждого из значений данных бывает простым.

Пример. Значение 0A3B5F291CD'H типа «строка битов» (BIT STRING) может быть закодировано, как показано ниже. В этом примере кодовое представление строки битов — простое.

Строка битов Длина Содержимое 03    07    040A3B5F291CD0

Строка битов

Длина

Содержимое

23

80

18

Строка битов

Длина

Содержимое

03

03

000АЗ В

03

05

045F291CD0

Признак конца содержимого

Длина

00

00

10. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «СТРОКА ОКТЕТОВ»

Приведенное выше значение может быть закодировано другим способом, показанным ниже. В этом примере кодовое представление строки битов, составное.

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

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

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

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

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

10.3.1.    Каждое из кодовых представлений, являющихся частью октетов содержимого, должно быть кодовым представлением значения типа «строка октетов» («OCTET STRING»).

Примечание В частности, все теги, закодированные в октетах содержимого, относятся к универсальному классу и имеют номер 4

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

Пр имечание Значение данных закодированное в октетах содержимого, может быть строкой сктетов нулевой д ’ины

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

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

Примечание. Обычно кодовое представление каждого из значений данных бывает простым

11. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ВЫРОЖДЕННОГО ЗНАЧЕНИЯ

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

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

Примечание Октет длины имеет нулевое значение

Пример. Вырожденное значение («NULL») вырожденного типа («NULL») кодируется следующим образом;

Вырожденное значение Длина

05    00

12. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «ПОСЛЕДОВАТЕЛЬНОСТИ

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

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

ГОСТ 34.974-91 С. 13

типа, перечисленного в определении типа «последовательность» (в нотации АСН.1), в том же порядке, в котором типы следовали в определении, за возможным исключением типов, отмеченных в определении ключевым словом «OPTIONAL» или ключевым словом «DEFAULT».

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

Если оно присутствует, то оно должно входить в кодовое представление в том месте, которое соответствует вхождению соответствующего типа в определение типа «последовательность» в нотации АСН.1.

Пример. Значение {name «Smith», okTRUE} типа

SEQUENCE {name lA5String, ok BOOLEAN} может быть закодировано следующим образом:

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

Длина

Содержимое

30

lA5String

Длина

Содержимое

16

05

«Smith»

Булевский тип

Длина

Содержимое

01

01

FF

13. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «ПОСЛЕДОВАТЕЛЬНОСТЬ ИЗ»

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

13.2.    Группа октетов содержимого должна состоять из полных кодовых представлений значений данных типа, приведенного в определении типа «последовательность из» в нотации АСН.1.

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

14. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «МНОЖЕСТВО»

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

14.2.    Группа октетов содержимого должна состоять из полных кодовых представлений значений данных, по одному из каждого типа, перечисленного в определении типа «множество» в нотации АСН.1, в порядке, определяемом отправителем, за возможным исключением типов, отмеченных в определении ключевым словом «OPTIONAL» или ключевым словом «DEFAULT».

С. 14 ГОСТ 34.974-91

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

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

15. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «МНОЖЕСТВО ИЗ»

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

15.2.    Требования те же, что и в п. 13.2.

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

16. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ВЫБОРОЧНОГО ЗНАЧЕНИЯ

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

При мечания:

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

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

17.    КОДОВОЕ ПРЕДСТАВЛЕНИЕ СЕЛЕКТИВНОГО ЗНАЧЕНИЯ

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

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

18.    КОДОВОЕ ПРЕДСТАВЛЕНИЕ ТЕГИРОВАННОГО ЗНАЧЕНИЯ

18.1.    Кодовое представление тегированного значения получается из полного кодового представления соответствующего значения данных того «типа», который задан в обозначении «тегированный тип» (называемого исходным кодовым представлением) способом, описанным в пп. 18.2 и 18.3.

18.2.    Если в определении тегированного типа не использовалось ключевое слово «IMPLICIT», то кодовое представление значения должно быть составным и группа октетов содержимого должна совпадать с полным исходным кодовым представлением.

18.3.    Если при определении типа использовалось ключевое слово «IMPLICIT», то должны быть выполнены следующие требования:

ГОСТ 34.974-91 С. 15

а)    кодовое представление должно-бытъ составным, если исходное кодовое представление составное;

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

Пример. Ниже приводятся кодовые представления значения «Jones» для следующих типов АСН.1:

Туре! : : — VisibleString

Туре2 : : » [APPLICATION 3] [MPUCITTypel ТуреЗ : : = [2] Туре2

Туре4 : : = [APPLICATION 7] IMPLICIT ТуреЗ Туре5 : : = [2] IMPLICIT Туре2 Эти кодовые представления следующие; для Typel:

VisibleString Длина Содержимое 1А    05    4A6F6E6573

для Туре2:

[APPLICATION 3]

Длина

Содержимое

25

43

5

4A’6F6EI)73

для ТуреЗ;

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

А2 07

[APPLICATION 3]

Длина

Содержимое

43

05

4A6F6E65

для Туре4:

[APPLICATION 7]

Длина

Содержимое

67

07

[APPLICATION 7]

Длина

Содержимое

43

05

4A6F6E6573

для Туре5:

[2]

Длина

Содержимое

82

05

4A6F6E6573

19 КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ ПРОИЗВОЛЬНОГО ТИПА

Кодовое представление значения произвольного {«ANY») типа должно быть полным кодовым представлением, определяемым настоящим станлартом для того типа, к которому относится кодируемое значение.

20. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «ИДЕНТИФИКАТОР

ОБЪЕКТА»

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

20.2.    Октеты содержимого должны быть (упорядоченной) по-

следовательностью следующих друг за другом кодовых представлений субидентификаторов (пп. 20.3 и 20.4).

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

20.3.    Количество субидентификаторов (N) должно быть на единицу меньше количества компонентов идентификатора объекта в кодируемом значении «идентификатор объекта».

20.4.    Числовое значение первого субидентификатора вычисляется по двум первым значениям компонентов кодируемого значения «идентификатор объекта» по формуле

(Х^40 )+У,

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

Примечание. Это «упакованное» представление двух первых компонентов идентификатора объекта возможно в силу того, что выделено лишь три значения для ребер, выходящих из корневой вершины, и не более 39 последующих значений — для вершин, соответствующих X — 0 и Х=\.

20.5.    Числовое значение i-го субидентификатора (при 2с — iC <=N) совпадает с числовым значением (i+l)-ro компонента идентификатора объекта.

Пример. Значение типа OBJECT IDENTIFIER

(joint-iso-ccitt 100 3},

которое в другой форме записывается в виде

{2    100    3},

имеет первый субидентификатор, ргзный 180, и второй субидентификатор, равный 3. Получаемое в результате кодовое представление имеет вид:

OBJECT IDENTIFIER Длина Содержимое 06    03    813403

21. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЙ ТИПОВ «СТРОКА ЗНАКОВ»

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

ГОСТ 34.974-91 С. 17

21.2.    Каждое значение данных кодируется независимо от других значений данных того же типа.

21.3.    Каждый тип «строка знаков» кодируется так, как если бы он был объявлен как [UNIVERSAL х] IMPLICIT OCTET STRING, где х — номер тега универсального класса» присвоенный данному типу «строка знаков» в настоящем стандарте. Значение этой строки октетов (OCTET STRING) определяется в пп. 21.4 и 21.5.

21.4.    Если рассматриваемый тип «строка знаков» определен в настоящем стандарте ссылкой на таблицу, в которой перечислены входящие в этот тип знаки (типы NumericString и PrintableString), то значение вышеупомянутой строки октетов для кодируемого значения «строка знаков» формируется так же, как для такого же значения типа VisibleString, в соответствии с п. 21.5.

21.5.    Рассматриваемая строка октетов должна содержать октеты, определенные в настоящем стандарте для кодовых представлений в 8-битной операционной среде с использованием Esc-после-довательности и знаковых кодов, зарегистрированных в соответствии с настоящим стандартом.

2Л .Ъ.\.    гложет    ъъя.    ъ

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

21.5.2.    Предполагается, что в начале каждой строки задаются и вызываются по терминологии настоящего стандарта регистрационные номера категорий GO и/или СО, и/илИ С1. Эти регистрационные номера заданы для каждого типа в табл. 2, вместе с соответствующими Esc-последовательностями, использование которых подразумевается.

21.5.3.    Кодовые представления некоторых типов «строка знаков» не могут содержать явные Esc-последователъности, тогда как в других случаях любая Esc-последовательность, разрешенная в п. 21.5.1, может присутствовать в любом месте, в том числе в начале кодового представления. В табл. 2 указаны типы, для которых разрешается использование явных Esc-последовательностей.

Таблица 2

Использование Esc-последоват^льностей

Тип

Прздполага-емьй кодовый набор GO (рс гистраци-

ОННЫЙ НОЧС'Р)

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

Предполагаемая £§с-последовательность и перевод регистра (если он применяется)

Допустимы ли явные Esc-последовательности

NumericString

2

Отсутствует

ESC2/8 4/0 LSO

НЕТ

С. 18 ГОСТ 34.974-91

продолжение табл, f

Тип

Предполагав* мый кодовый набор ОО (регистрационный номер)

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

Предполагаемая Бес-последовательность и перевод регистра (если он применяется)

Допустимы ли. явные Esc-no-следователь-ности

PrintableString

2

Отсутствует

ESC2/8 4/0 LSO

НЕТ

TeletexString (Тб 1 String)

102

106    (СО)

107    (С1)

Esc2/8 7/5 LSO Esc2/1 4/5 Esc2/2 4/8

ДА

Videotexstring

102

1 (СО) ТЗ (С1)

Esc2/8 7/5 LSO Esc2/1 4/0 Esc2/2 4/1

ДА

VisibleString (IS06 46String—

2

Отсутствует

ESC2/8 4/0 LSO

НЕТ

lA5String

2

1 (СО)

ESC2/8 4/0 LSO ESC2/1 4/0

НЕТ

GraficString

2

Отсутствует

ESC2/8 4/0 LSO

ДА

GeneralString

-2

1 (СО)

ESC2/8 4/0 LSO ESC2/1

ДА

Примечание. Многие из часто используемых знаков (например от А до Z) входят в несколько знаковых наборов с различными регистрационными номерами и Esc-последовательностями В тех случаях, когда строка знаков относится к типу, для которого разрешается использование Esc-последовательностей, возможно несколько различных способов его кодирования (п 5 3)

21.5.4. Использование описателей не допускается, за исключением случаев, когда это явно разрешается пользователем ACH.I,

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

Пример. Пусть определение типа в нотации АСН.1 имеет вид: Name : : = VisibleString.

Тогда значение этого типа «Jones»

может быть закодировано (в простой форме) так:

VisibleString Длина Содержимое 1А    05    4A6F6E6573

УДК 681.224:621.391:006.354

Группа П85

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

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

ВЗАИМОСВЯЗЬ ОТКРЫТЫХ СИСТЕМ

ГОСТ 34.974-91 (ИС0 8825—87)

Описание базовых правил кодирования для

абстрактно-синтаксической нотации версии 1 (АСН.1)

Information technology.

Open systems interconnection.

Specification of basic encoding rules for abstract syntax notation one (ASN.l)

0КСТУ 0034

Дата введения 01.07.92

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

Настоящий стандарт эквивалентен стандарту Международной организации по стандартизации ИСО 8825, за исключением упорядочения использования аббревиатур.

0. ВВЕДЕНИЕ

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

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

В приложении 1 приведен пример кодового представления.

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

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

© Издательство стандартов, 1991 Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен без разрешения Госстандарта СССР

ГОСТ 34.974-91 С. 19

либо (в составной форме, с явным заданием длины) как:

VisibleString

ЗА

Длина

09

Содержимое

Строка октетов

Длина

Содержимое

04

03

4A6F6E

Строка октетов

Длина

Содержимое

04

02

6573

либо (в составной форме, с неявным заданием длины) как:

VisibleString

Длина

Содержимое

ЗА

80

30

Строка октетов

Длина

Содержимое

04

03

4A6F6E

Строка октетов

Длина

Содержимое

04

02

6573

Конец содержимого Длина 00 00

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

22. КОДОВЫЕ ПРЕДСТАВЛЕНИЯ ЗНАЧЕНИЙ ОБЩЕУПОТРЕБИТЕЛЬНЫХ ТИПОВ АСН.1

Кодовое представление получается в результате применения правил, определенных в настоящем стандарте, в соответствии с определением типа.

23. ИСПОЛЬЗОВАНИЕ КОДОВЫХ ПРЕДСТАВЛЕНИЙ ПРИ ОПРЕДЕЛЕНИИ СИНТАКСИСА ПЕРЕДАЧИ

23.1.    Ссылка на правила кодирования, определенные настоящим стандартом, и их применение дают возможность определить для каждого значения данных какого-либо одного типа АСН.1 кодовое представление в виде единой строки октетов, содержащей в себе признак окончания и однозначно задающей закодированное значение.

Примечание Все такяе строки октетов являются однозначно интерпретируемыми в рамках одного типа АСН 1 При чередовании кодовых представлений значений различных типов однозначность может не сохраняться

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

{joint-iso-ccitt asnl (1), basic-encoding (1)} и описатель объекта

«Basic Encoding of a single ASN 1 type»

С. 2 ГОСТ 34.974-91

1. НАЗНАЧЕНИЕ И ОБЛАСТЬ ПРИМЕНЕНИЯ

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

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

Требования стандарта являются обязательными.

2. ССЫЛКИ

ГОСТ 27466 (ИСО 2022) «Обработка информации. 7-ми и 8-ми — битные кодовые наборы знаков ИСО. Методы расширения кода».

ГОСТ 28906 (ИСО 7498) «Системы обработки информации.

Взаимодействие открытых систем. Эталонная (справочная) модель».

МККТТ X. 409 «Системы обработки сообщений. Синтаксис и нотация представления информации при передаче».

3. ОПРЕДЕЛЕНИЯ

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

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

3.3.    Значение данных — информация, определенная как значение некоторого типа; тип и значение определены с помощью АСН.1.

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

Примечание. В некоторых рекомендаииях МККТТ используется термин «элемент данных», в других — «значение данных» для этой последовательности октетов.

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

ГОСТ 34.974-91 С. 3

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

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

Примечание Не все кодовые представления требуют наличия октетов признака содержимого

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

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

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

3.11.    Отправитель — компонент реализации, кодирующий значение данных для передачи.

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

4. СОКРАЩЕНИЯ И ОБОЗНАЧЕНИЯ

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

4.1.    Обозначения

4.1.1.    Настоящий стандарт использует обозначения, определенные.

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

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

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

5. ТРЕБОВАНИЯ ДИНАМИЧЕСКОГО И СТАТИЧЕСКОГО

СООТВЕТСТВИЙ

5.1.    Требования динамического соответствия определяются разд. 6—21.

5.2.    Требования статического соответствия определяются стандартами, описывающими применение базовых правил кодирования.

5.3. Настоящим стандартом допускаются Различные варианты кодового представления одного и того же значения по выбору отправителя. Получатели должны обеспечив<дть п°ДДеРжкУ всех ва~ риантов.

Примечание. Примеры вышеупомянутых ваРиант0в кодовых представлений приводятся в п. 6 3.2 (перечисление б) и в табл

6. ОБЩИЕ ПРАВИЛА КОДИРС*ВАНИЯ

6.1.    Структура кодового представления

6.1.1.    Кодовое представление значения ДаннЬ1х Должно состоять из четырех составных частей:

а)    октетов идентификатора (п. 6.2);

б)    октетов длины (п. 6.3);

в)    октетов содержимого (п. 6.4);    ,

г)    октетов признака конца содержимого 'п*

6.1.2.    Октеты признака конца содержимого с°ДеРжатся в К0‘ довом представлении только в том случ^е* если их наличие вытекает из значения октетов длины (п. 6.3).

6.1.3. На черт, i показана структура не^0Т0Р°Г0 кодового представления (простого или составного). На йеРт* ^ показан один из вариантов составного кодового представле^ия

6.2. Октеты идентификатора *

6.2.1.    В октетах идентификатора должея ®ыть закодирован тег того типа (класс и номер), к которому отн^сится значение данных.

6.2.2.    Для тегов, имеющих номер от нул*1 до 30 (включительно), октеты идентификатора представлены одни^ октетом’ закодированным следующим образом:

а) биты 7 и 8 представляют класс те(*а и Д°лжны иметь кодовое представление, приведенное в табл. U

Структура кодового предста^ления

Октеты ийентщрик шпора

Октгты d mot 1(

Октеты

содержимого

1

(ПОгрьимисп (гм п Ь J Z)    ^

Черт. I

ГОСТ 34.974-91 С. 5

Один из вариантов составного кодового представления

Октеты

Ой mg ты

Отты

Октеты признака

идентифапатооа

длины

содержимого

шар. содержимого

Содержит при знак того,что октеты содержимого окон-чидаюжя on глетами при типа жанра содержимого (см п 6 5 *+)

Уд/Ш'опср призма пом то и, *~тз 8 опте та л сойер тимосо ме содер тится долее пипа кил кодовых пред-стад с амий


Черт. 2

Таблица 1

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

Класс

Бит 8

Бит 7

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

0

0

Прикладной (APPLICATION)

0

1

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

1

0

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

1

1

б)    бит 6 должен быть нулем или единицей в соответствии с п. 6.2.5;

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

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

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

6.2.4.1. Кодовое представление головного октета должно быть следующим:

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

б)    бит 6 должен быть нулем или единицей в соответствии с правилами п. 6.2.5;

в)    биты с 5-го по 1-й должны иметь кодовое представление 11111.

2 Зак. 1721

С 6 ГОСТ 34.974-91

Октет идентификатора (для небольших номеров меток)

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

Ьиты

в 1

b 5

'/ 5 L t

Класс

п/с

Напер петки j

t

0    = простое

1    =соша6ное

Черт. 3

Октеты идентификаторов (для больших номеров меток)

(опоЬнои октет — ■— - 1

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

| Mate \п/с \,Щ,

Второй октет Наследниц октет

Ш ЕЛ.....GD ЕЮ

+ О] Id - □

- Номер метки

Черт. 4

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

а)    бит 8 каждого октета, з:> исключением последнего октета идентификатора, должен быть установлен в единицу;

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

в)    биты с 7-го по 1-й первого последующего октета не должны быть все равны нулю.

ГОСТ 34.974-91 С. 1

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

6.2.5.    Бит 6 должен иметь значение «нуль», если кодовое представление простое, и «единица», если оно составное.

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

6.2.6.    Тег типа, определенного с помощью ключевого слова «CHOICE» (выборочный тип), принимает значение тега того типа, из которого было выбрано значение.

6.2.7.    Тег типа, определенного с помощью ключевого слова «ANY» (произвольный тип), не определен. Произвольный тип должен быть впоследствии определен как некоторый тип АСН.1, и тогда полное кодовое представление будет кодовым представлением значения этого нового типа (включая октеты идентификатора).

6.3.    Октеты длины

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

а)    явный формат (п. 6.3.3);

б)    неявный формат (п. 6.3.4).

6.3.2.    Отправитель должен придерживаться следующих правил:

а)    использовать явный формат, (п. 6.3.3), если кодовое представление простое;

б)    использовать по выбору либо явный, либо неявный формат, (п. 6.3.4), если кодовое представление составное и сразу доступно полностью;

в)    использовать неявный формат (п. 6.3.4), если кодовое представление составное и сразу полностью недоступно.

6.3.3.    В случае явного формата группа «октеты длины» состоит из одного или нескольких октетов (определяющих количество октетов содержимого) в одном из двух форматов: коротком (п. 6.3.3.1) или длинном (п. 6.3.3.2) по выбору отправителя.

Примечание. Короткий формат может быть использован только в том случае, когда количество октетов содержимого меньше или равно 127.

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

Пример L = 38 должно быть закодировано как 00100110,

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

а)    бит 8 должен иметь значение «единица»;

б)    биты с 7-го по 1-й являются кодовым представлением количества последующих октетов длины в виде двоичного целого числа без знака с битом 7 в качестве старшего бита;

С 8 ГОСТ 34.974—91

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

Пр и меча н не Это ограничение вводится в целях совместимости с рекомендацией МККТТ Х409, а также для возможных последующих расширений

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

Пример. L= 201 должно быть закодировано следующим образом: 10000001 11001001.

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

6.3.4.    В случае неявного формата октетов длины они указывают на то, что конец октетов содержимого задается октетами признака конца содержимого (п. 6.5). В этом случае группа октетов длины состоит из единственного октета.

6.3.4.1.    Бит 8 этого единственного октета должен быть установлен в единицу, а биты с 7 по 1 должны быть установлены в нуль.

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

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

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

Пр имечание Кодовое представление октетов содержимого зависит от типа значения данных и описывается в последующих разделах, приведенных в той же последовательности, в которой приведены определен ш типов в стандарте на АСН 1

6.5.    Октеты признака конца содержимого

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

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

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

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

Конец содержимого Длина Содержимое 00    00 Отсутствует