2015-06-18 3 views
0

Разрешено ли в Правилах 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] 

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

+0

Является ли оно применимым для кодирования и декодирования UPER (Un-aligned). @ Ethan – user3019027

+0

Да; ограничения содержимого видны для всех вариантов PER (канонические/базовые, выровненные/без выравнивания) в дополнение к BER/CER/DER. (Я не уверен, применимы ли они к XER, хотя я не понимаю, почему они этого не сделали.) – Ethan

Смежные вопросы