Кодирование структуры ASN1

Разрешено ли это в правилах ASN, если одна структура ASN имеет строку октетов, указывающую на другую структуру ASN. Я не могу декодировать в этом контексте, но одна структура ASN имеет строку октетов, указывающую на локальную структуру (NON_ASN).


person user3019027    schedule 18.06.2015    source источник


Ответы (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]

Независимо от того, используется ограничение содержимого или нет, кодировка идентична. Ограничение содержимого стандартизирует протокол и позволяет инструментам правильно проверять и анализировать сообщения.

person Ethan    schedule 18.06.2015
comment
Применимо ли это для кодирования и декодирования UPER (Un-aligned). @Ethan - person user3019027; 23.06.2015
comment
Да; ограничения содержимого видны для всех вариантов PER (канонический/базовый, выровненный/не выровненный) в дополнение к BER/CER/DER. (Я не уверен, применимы ли они к XER, хотя не понимаю, почему бы и нет.) - person Ethan; 23.06.2015