Структура тега АСН.1.
Кодовое представление тега должно состоять из четырех составных частей, следующих в порядке перечисления:
На рис.1. представлена структура кодового представления:
а) явный формат длины тега
октеты идентификатора | октеты длины | октеты содержимого |
б) неявный формат длины тега, используется в случае невозможности задать длину сразу
октеты идентификатора |
октет длины = 10000000 ( признак неявного формата) |
октеты содержимого | 00000000 00000000
(признак завершения тега) |
Октеты идентификатора
В октетах идентификатора должен быть закодирован тег АСН.1 того типа (класс и номер), к которому относится значение данных. Для тегов, имеющих номер от нуля до 30 включительно, октеты идентификатора представлены одним октетом, закодированным следующим образом (рис.2.):
а) биты 7 и 8 представляют класс тега (табл.3.);
Табл.3.
Класс | Бит 8 | Бит 7 |
Универсальный | 0 | 0 |
Прикладной | 0 | 1 |
Контекстно-зависимый | 1 | 0 |
Пользовательский | 1 | 1 |
б) бит 6 должен иметь значение “ноль”, если кодовое представление простое, и “единица”, если оно - составное;
в) биты с 5 по 1 должны быть кодовым представлением номера тега в виде двоичного целого с битом 5 в качестве старшего бита.
Для тегов с номерами большими 30, идентификатор должен состоять из головного октета, за которым следуют один или более октетов продолжения. Кодовое представление головного октета должно быть следующим (см. рис.3.):
Рис.3.
а) биты 7 и 8 задают класс тега (табл.3.);
б) бит 6 должен иметь значение “ноль”, если кодовое представление простое, и “единица”, если оно - составное;
в) биты с 5 по 1 должны иметь кодовое представление 111112.
Октеты продолжения являются кодовым представлением номера тега; они должны иметь следующий вид (рис.):
а) бит 8 каждого октета, за исключением последнего октета идентификатора, должен быть установлен в единицу;
б) биты с 7 по 1 первого октета продолжения , сцепленные с битами 7-1 второго октета продолжения , сцепленные, в свою очередь, с битами 7-1 каждого из октетов продолжения, до последнего включительно, должны быть кодовым представлением номера тега в виде двоичного целого числа без знака, с битом 7 первого октета продолжения в качестве старшего бита.;
в) биты с 7 по 1 первого последующего октета не должны быть все установлены в ноль.
Рис.4.
Октеты длины
Октеты длины могут быть представлены в явном или неявном формате. Явный формат используется, если кодовое представление простое. Неявный формат используется, если кодовое представление составное и недоступно сразу полностью. В остальных случаях формат определяется отправителем.
При использовании явного формата октеты длины включат один октет - короткий формат ( когда количество октетов содержимого меньше или равно 127 ) , или несколько октетов - длинный формат ( когда количество октетов содержимого больше 127 ).
В коротком формате бит 8 единственного октета установлен в ноль , а биты с 7 по 1 являются кодовым представлением количества октетов содержимого в виде двоичного целого числа без знака с битом 7 в качестве старшего разряда. Например, число 42 будет закодировано как 001010102
.
В длинном формате октеты длины состоят из начального октета и одного или более октетов продолжения. Кодовое представление начального октета должно быть следующим:
а) бит 8 должен быть установлен в единицу;
б) биты с 7 по 1 являются кодовым представлением количества последующих октетов длины в виде двоичного целого числа без знака с битом 7 в качестве старшего разряда;
в) двоичное значение 111111112 не должно использоваться.
Биты с 8 по 1 первого октета продолжения , сцепленные с битами 8-1 второго октета продолжения , сцепленные, в свою очередь, с битами 8-1 каждого из октетов продолжения, до последнего включительно, должны быть кодовым представлением номера тега в виде двоичного целого числа без знака, с битом 8 первого октета продолжения в качестве старшего бита. Например число 342 будет закодировано как
100000102 000000012 010101102 (при использовании длинного формата отправитель может по своему выбору использовать большее количество октетов, чем необходимый минимум).
В случае неявного формата октеты длины состоят из единственного октета 100000002 . При этом конец октетов содержимого задается двумя октетами признака конца содержимого, имеющими нулевое значение (000000002 000000002 ) .
Тег также может быть простым или составным. Составной тег включает в свое информационное поле набор простых или составных тегов. Простой тег содержит конечную последовательность данных одного типа.
table border="0" cellpadding="0" cellspacing="0" width="100%">