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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

00 00 Отсутствует

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

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

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

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

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

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

01 01 FF

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

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

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

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

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

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

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

  1. Примечание. Значение двоичного числа в дополнительном коде вычис­ляется следующим образом. Все биты в октетах содержимого нумеруются, Начи­ная с бита последнего октета, которому присваивается номер 0, и заканчивая: битом 8 первого октета. Каждому биту приписывается числовое значение 2 в сте­пени N, где N номер бита в описанной выше нумерации. Значение числа в до­полнительном коде получается в результате суммирования числовых значений,, приписанных битам, установленным в единицу, за исключением бита 8- первого1 октета и последующего вычитания числового значения, приписанного биту S первого сктета, если он установлен в единицу.КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ <СТРОКА БИТОВ»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

03 07 040A3B5F291CD0

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

Строка

битов

Длина

Содержимое

23


80

18

Строка

битов

Длина

Содержимое

03


03

000A3B

03


05

045F291CD0

Признак

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

Длина


00


00


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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

05 00

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

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

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

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

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

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

SEQUENCE {name lA5String, ok BOOLEAN}

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

Длина

Содержимое

1 A5String

Длина

Содержимое

05

«Smith»

Длина

Содержимое

01

FF