Перейти в оглавлению раздела

Часть XIII

13.3. Тег типа


    Каждый тип, используемый в ASN.1, содержит специальный признак, называемый тегом. Тег определяется либо самим стандартом, либо пользователем. Тегированием называется замена существующего (возможно, заданного по умолчанию) тега некоторого типа новым тегом.

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

    Тег состоит их идентификатора класса и неотрицательного целого, различающего теги внутри класса. Определено четыре класса тегов:

    UNIVERSAL - используется только для данных, представленных в соответствии с правилами ASN.1 и назначается либо одному из типов, либо одному из способов формирования сложных типов.

... ...
UNIVERSAL 1 BOOLEAN
UNIVERSAL 2 INTEGER
UNIVERSAL 3 BITSTRING
UNIVERSAL 4 OCTETSTRING
UNIVERSAL 5 NULL
... ...

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

    Примеры тегирования типа будут даны ниже. Формально синтаксис тегированного типа можно записать так:

    ТегированныйТип ::=

    Тег Тип |

    Тег IMPLICIT Тип |

    Тег EXPLICIT Тип

    Тег ::= [Класс НомерВКлассе]

    Класс ::=

     UNIVERSAL |

     APPLICATION |

     PRIVATE |

     пусто

    --для класса контекстно-зависимых тегов не вводится

    --специального наименования



Предыдущая глава Оглавление Следующая глава