ГОСТ 34.974-91 сторінка 2 з 4
-
В длинном формате октеты длины состоят из начального октета и одного или нескольких октетов продолжения. Кодовое представление первого октета должно быть следующим:
-
бит 8 должен иметь значение «единица»;
-
биты с 7-го по 1-й являются кодовым представлением количества последующих октетов длины в виде двоичного целого числа без знака с бцтом 7 в качестве старшего бита;двоичное значение 11111111 не должно использоваться.
При мече ние. Это ограничение вводится в целях совместимости с реко- ' мендаїцией МКК'ТТ Х.409, а также для возможных последующих расширений.
Биты с 8-го по 1-й первого октета продолжения, за которыми «следуют биты с 8-го по 1-й второго октета продолжения, за которыми следуют в свою очередь биты с 8-го по 1-й каждого из следующих октетов продолжения, до последнего включительно должны •быть кодовым представлением количества октетов содержимого в виде двоичного целого числа без знака, с битом 8 первого последующего октета в качестве старшего бита;
Пример. L= 201 должно быть закодировано следующим образом: 10000001 11001001.
примечание. При использовании! длинного формата отправитель может :по своему выбору использовать большее количество октетов длины, чем необходимый минимум.
-
-
В случае неявного формата октетов длины они указывают на то, что конец октетов содержимого задается октетами признака конца содержимого (п. 6.5). В этом случае группа октетов длины состоит из единственного октета.
-
Бит 8 этого единственного октета должен быть установлен в единицу, а биты с 7 по 1 должны быть установлены в нуль.
-
Если используется этот формат длины, то присутствие октетов признака конца содержимого (п. 6.5), следующих за октетами содержимого, является обязательным.
-
-
-
Октеты содержимого
Октеты содержимого могут состоять из пустого множества октетов, одного или более октетов, в которых должно быть закодировано значение данных, в соответствии с описанием, приведенным в последующих разделах.
Примечание. Кодовое представление октетов содержимого зависит от типа значения данных и описывается в последующих разделах, приведенных в той же последовательности, в которой приведены определения типов в стандарте на АСН.1.
-
Октеты признака конца содержимого
Октеты признака конца содержимого должны присутствовать ® том случае, когда длина закодирована так, как описано в п. 6.3.4, в противном случае они должны отсутствовать.
Октеты признака конца содержимого должны состоять из двух октетов с нулевым значением.
Примечание. Октеты признака конца содержимого могут рассматриваться как простое кодовое представление значения с тегом универсального класса и нулевым номером тега, в котором отсутствуют октеты содержимого, то есть:
Конец содержимого Длина Содержимое
00 00 Отсутствует
-
КОДОВОЕ ПРЕДСТАВЛЕНИЕ БУЛЕВСКОГО ЗНАЧЕНИЯ
-
Кодовое представление булевского значения должно быть- простым кодовым представлением. Октеты содержимого включают единственный'октет.
-
Если булевское значение есть «ложь» («FALSE»), то этот октет должен иметь нулевое значение.
-
Если булевское значение есть «истина» («TRUE»), то этот октет должен иметь произвольное (по выбору отправителя) значение, отличное от нуля.
-
-
Пример. Значение «истина» булевского типа может быть закодировано следующим образом:
Булевский тип Длина Содержимое
01 01 FF
-
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЦЕЛОЧИСЛЕННОГО ЗНАЧЕНИЯ
-
Кодовое представление целочисленного значения должно быть простым кодовым представлением. Группа октетов содержимого должна состоять из одного или более октетов.
-
Если октеты содержимого кодового представления целочисленного значения включают более одного октета, то биты первого октета и бит 8 второго октета должны удовлетворять следующим условиям:
-
-
они не должны все иметь значение «единица»;
-
они не должны все иметь значение «нуль».
Примечание. Эта правила гарантируют, что кодовое представление целочисленного типа будет состоять из наименьшего возможного количества октетов.
-
-
Октеты содержимого должны содержать двоичное число в дополнительном коде, которое равно кодируемому значению и образуется битами с 8-го по 1-й первого октета, за которыми следуют биты с 8-го по 1-й второго октета, за которыми следуют, в свою1 очередь, биты с 8-го по 1-й каждого последующего октета, до последнего октета содержимого включительно.
-
-
Примечание. Значение двоичного числа в дополнительном коде вычисляется следующим образом. Все биты в октетах содержимого нумеруются, Начиная с бита последнего октета, которому присваивается номер 0, и заканчивая: битом 8 первого октета. Каждому биту приписывается числовое значение 2 в степени N, где N — номер бита в описанной выше нумерации. Значение числа в дополнительном коде получается в результате суммирования числовых значений,, приписанных битам, установленным в единицу, за исключением бита 8- первого1 октета и последующего вычитания числового значения, приписанного биту S первого сктета, если он установлен в единицу.КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ <СТРОКА БИТОВ»
-
Кодовое представление значения «строка битов» может быть как простым, так и составным по выбору отправителя.
-
Примечание. При необходимости передать часть битовой строки до того, как вся строка станет доступной, используется составное кодовое представление.
-
Октеты содержимого простого кодового представления должны включать начальный октет, за которым следует нуль или более октетов продолжения.
-
Биты строки битов, начиная с первого бита и кончая замыкающим битом, располагаются по порядку в битах с 8-го по 1-й первого октета продолжения, затем в битах 8—1 второго октета продолжения, затем в битах 8—1 каждого из последующих октетов продолжения, вплоть до последнего октета продолжения, из которого используется столько битов, сколько нужно, начиная с бита
-
Начальный октет должен быть кодовым представлением, в виде двоичного целого числа без знака с битом 1 в качестве младшего бита, числа неиспользуемых битов в последнем октете продолжения. Это число должно заключаться в диапазоне от нуля до семи.
-
Если битовая строка не содержит ни одного бита, то в кодовом представлении отсутствуют октеты продолжения, а начальный октет должен иметь нулевое значение.
-
-
В случае составного кодового представления октеты содержимого должны включать некоторое количество (от нуля и более) полных кодовых представлений значений данных.
Примечание. Каждое из этих кодовых представлений включает октеты идентификатора, дайны и содержимого и может включать октеты признака конца содержимого, если оно само является составным.
-
Каждое из кодовых представлений, являющихся частью октетов содержимого, должно быть кодовым представлением значения типа «строка битов» («BIT STRING»).
Примечании е. В частности, все теги, закодированные в октетах содержимого относятся к универсальному классу м имеют номер 3.
-
Биты кодируемого значения «строка битов», начиная с первого бита по порядку вплоть до замыкающего бита, помещаются в биты с первого по замыкающий первого значения данных, закодированного в октетах содержимого, затем в биты с первого по замыкающий второго значения данных, закодированного в ок- +етах содержимого, затем в биты с первого по замыкающий каждого последующего, вплоть до последнего значения данных, закодированного в октетах содержимого.Количество битов, входящих в каждое значение данных, закодированное в октетах содержимого, за исключением последнего, должно быть кратно восьми.
Примечание. Значения данных, закодированных в октетах содержимого, <могут быть строкой битов нулевой длины.
-
При использовании составного кодового представления не должно придаваться никакого значения границе между значениями данных, закодированными в октетах содержимого.
-
Кодовое представление каждого из значений данных, закодированных в октетах содержимого, может быть либо простым, либо составным.
Примечание. Обычно кодовое представление каждого из значений данных бывает простым.
Пример. Значение /0A3B5F291CD'H типа «строка битов» (BIT STRING) может быть закодировано, как показано ниже. В этом примере кодовое представление строки битов — простое.
Строка битов Длина Содержимое
03 07 040A3B5F291CD0
Приведенное выше значение может быть закодировано другим способом, показанным ниже. В этом примере кодовое представление строки битов, составное.
|
Строка |
битов |
Длина |
Содержимое |
|
23 |
80 |
18 |
|
|
Строка |
битов |
Длина |
Содержимое |
|
03 |
03 |
000A3B |
|
|
03 |
05 |
045F291CD0 |
|
|
Признак |
конца содержимого |
Длина |
|
|
00 |
00 |
10. КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «СТРОКА ОКТЕТОВ»
-
. Кодовое представление значения «строка октетов» может быть как простым, так и составным, по выбору отправителя.
Примечание. При необходимости передать чіаість строки октетов до того, как вся строка станет доступной, используется составное кодовое представление.
-
. Простое кодовое представление содержит нуль или более октетов, равных по значению октетам значения данных, следующих в том же порядке, в котором они присутствуют в значении данных, причем позиции старших битов каждого из октетов значения данных должны совпадать с позициями старших битов октетов содержимого.
-
. В случае составного кодового представления октеты содержимого должны включать некоторое количество (от нуля и более) полных кодовых представлений значений данных.
Примечание. Каждое из этих кодовых представлений включает октеты идентификатора, длины и содержимого и может включать октеты признака конца содержимого, если оно само является составным.
-
. Каждое из кодовых представлений, являющихся частью октетов содержимого, должно быть кодовым представлением значения типа «строка октетов» («OCTET STRING»).
Примечание. В частности, все ітеги, закодированные в октетах содержимого, относятся к универсальному классу и имеют номер 4.
-
. Октеты кодируемого значения «строка октетов», начиная с первого октета по порядку вплоть до замыкающего октета, помещаются в октеты с первого по замыкающий первого значения данных, закодированного в октетах содержимого, затем в октеты с первого по замыкающий второго значения данных, закодированного в октетах содержимого, затем в октеты с первого по замыкающий каждого последующего, вплоть до последнего, значения данных, закодированного в октетах содержимого.
Примечание. Значение данных, закодированное в октетах содержимого, может быть строкой октетов нулевой д лины.
-
. При использовании составного кодового представления не должно придаваться никакого значения границе между значениями данных, закодированными в октетах содержимого.
-
. Кодовое представление каждого из значений данных, закодированных в октетах содержимого, может быть либо простым, либо составным.
Примечание. Обычно кодовое представление каждого из значений данных бывает простым.
-
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ВЫРОЖДЕННОГО ЗНАЧЕНИЯ
-
Кодовое представление вырожденного значения должно быть простым кодовым представлением.
-
Октеты содержимого не должны содержать ни одного октета.
-
Примечание. Октет длины имеет нулевое значение.
Пример. Вырожденное значение («NULL») вырожденного типа («NULL») кодируется следующим образом:
Вырожденное значение Длина
05 00
-
КОДОВОЕ ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЯ «ПОСЛЕДОВАТЕЛЬНОСТЬ»
-
Кодовое представление значения «последовательность» должно быть составным.
-
Группа октетов содержимого должна состоять из полных кодовых представлений значения данных, по одному из каждого типа, перечисленного в определении типа «последовательность» (в нотации АСН.1), в том же порядке, в котором типы, следовали в определении, за возможным исключением типов, отмеченных в определении ключевым словом «OPTIONAL» или ключевым словом «DEFAULT».
-
Кодовое представление значения данных, тип которого был отмечен ключевым словом «OPTIONAL» или «DEFAULT», может присутствовать в октетах содержимого, но необязательно.
Если оно присутствует, то оно должно входить в кодовое представление в том месте, которое соответствует вхождению соответствующего типа в определение типа «последовательность» в нотации АСН.1.
Пример. Значение {name «Smith», okTRUE} типа
SEQUENCE {name lA5String, ok BOOLEAN}
может быть закодировано следующим образом:
|
Длина |
Содержимое |
|
0А |
1 A5String |
|
Длина |
Содержимое |
|
05 |
«Smith» |
|
Длина |
Содержимое |
|
01 |
FF |
Побачили розбіжність з офіційним текстом?
Дивіться також
Сборник ГОСТ ЕСКД
Збірник із 154 стандартів