Разрешено ли это в правилах ASN, если одна структура ASN имеет строку октетов, указывающую на другую структуру ASN. Я не могу декодировать в этом контексте, но одна структура ASN имеет строку октетов, указывающую на локальную структуру (NON_ASN).
Кодирование структуры ASN1
Ответы (1)
Да, это совершенно справедливо.
Обычно это делается двумя способами: по ограничению и по соглашению. "Правильный" способ сделать это - с помощью ограничений, но часто это делается по соглашению.
ASN.1 вызывает эти ограничения содержимого и использует ключевое слово CONTAINING
для их обозначения, например:
S ::= SEQUENCE {
name UTF8String,
age INTEGER
}
O ::= OCTET STRING (CONTAINING S)
Дополнительную информацию см. в разделе ITU-T X.682, §11. .
Закодированная таким образом строка октетов (или битов) кодируется оболочкой, соответствующей правилам кодирования. Предположим, например, что мы хотим закодировать s S ::= { name "Calvin", age 5 }
в строке октетов, используя BER:
SEQUENCE
кодируется в TLV следующим образом:
0x30 0x0b (UNIV 15, CONSTRUCTED, length 11)
0x0c 0x06 0x43 0x61 0x6c 0x76 0x69 0x63 (UNIV 13, length 6, "Calvin")
0x02 0x01 0x05 (UNIV 2, length 1, 5)
Эта последовательность будет заключена в дополнительный TLV для строки октетов:
0x04 0x0d (UNIV 4, length 13)
[TLV for S]
Независимо от того, используется ограничение содержимого или нет, кодировка идентична. Ограничение содержимого стандартизирует протокол и позволяет инструментам правильно проверять и анализировать сообщения.