Таблица 4.4.13.2.1. Типы и их метки
Тип | Комментарий | Цифровая метка (шестнадцатеричное) |
INTEGER | Любое целое число | 02 |
BIT STRING | Произвольная строка бит | 03 |
OCTET STRING | Произвольная последовательность октетов | 04 |
NULL | 0 | 05 |
OBJECT IDENTIFIER | Последовательность целых компонент, идентифицирующих объект | 06 |
SEQUENCE and SEQUENCE OF | 10 | |
SET and SET OF | 11 | |
PrintableString | Последовательность печатных символов | 13 |
IA5String | Произвольная строка символов IA5 (ASCII) | 16 |
UTCTime | Универсальное время (по Гринвичу; GMT) | 17 |
ASN.1 типы и значения выражаются в нотации, близкой к используемой в языках программирования. Множественные пробелы и разрывы строк рассматриваются как один пробел. Комментарии выделяются парами дефисов или парой дефисов и переводом строки. Идентификаторы (имена значений и полей) и имена типов состоят из букв, цифр и пробелов. Идентификаторы начинаются со строчной буквы, а имена типов – с прописной.
В SMI (Structure of Management Information) не используется полный набор типов объектов, предусмотренный в ASN.1, разрешены только следующие типы примитивов: INTEGER, OCTET STRING, OBJECT IDENTIFIER и NULL.
Стандарт ASN.1 определяет форму представления информации и имен. Для строчных типов может быть введено ограничение на максимальный размер. В ASN.1 определено четыре структурированных типов:
SEQUENCE | упорядоченный набор из одного или более типов. |
SEQUENCE OF | упорядоченный набор из нуля или более представителей данного типа. |
SET | неупорядоченный набор из одного или более типов. |
SET OF | неупорядоченный набор из нуля или более представителей данного типа. |
Структурированные типы могут иметь опционные компоненты, в том числе со значениями по умолчанию.
Существуют типы помеченные явно и неявно. Неявно помеченные типы получаются из других типов путем изменения метки. Для неявной пометки используется ключевое слово IMPLICIT. Явно помеченные типы получаются из других типов путем добавления внешней метки.
Помеченный явно тип – это структурированный тип, состоящий из одного компонента основного типа. Для явной пометки используется ключевое слово EXPLICIT. Пометка (тэгирование) весьма удобна для различия типов в пределах одного приложения.
Тип CHOICE обозначает объединение одного или более альтернатив. Тип ANY служит для обозначения произвольной величины для произвольного типа.
Правила BER определяют один или более способов представить любую величину в виде строки октетов. Существует три метода кодирования величин (в рамках BER): примитивный с известной длиной; конструктивный при известной длине и конструктивный при неизвестной длине. Выбор метода зависит от типа величины и от того, известна ли длина преобразуемой величины. Для простых не строчных типов используется примитивный метод кодирования. В каждом методе BER-кодирование имеет три или четыре части:
Identifier octets | Определяет класс и числовую метку значения, а также указывает, является ли метод примитивным или конструктивным. |
Length octets | Для методов кодирования с известной длиной определяет число октетов содержимого. |
Contents octets | Для примитивных методов с заданной длиной дает конкретное выражение значения. |
End-of-contents octets | Для конструктивных методов с неопределенной длиной указывает на конец содержимого. |