Я смущен об ограничениях на тип ASN.1 SET
. В общем, я понимаю, что тип SET
в основном такой же, как и SEQUENCE
, за исключением того, что порядок компонентов не имеет значения.ASN.1 Ограничения типа SET
Семенной книга по ASN.1, "ASN.1 — Communication Between Heterogeneous Systems" Оливье Dubuisson, это сказать о множествах:
Если компонент порядок типа ПОСЛЕДОВАТЕЛЬНОСТИ не имеет значения, используется кнопочная слово SET для моделирования такой нЕУПОРЯДОЧЕННОЙ структуры:
Description ::= SET {
surname IA5String,
first-name IA5String,
age INTEGER }
В этом случае приложение может обеспечить компоненты к прил в лучшем случае для этого.
То, что я сразу же заметить здесь, что в примере Dubuisson, тем SET
имеет два типа IA5String в нем. Это, кажется, противоречит тому, что я прочитал here in this tutorial, который явно говорит, что:
тип и значение обозначения для SET аналогичны ПОСЛЕДОВАТЕЛЬНОСТИ, за исключением того, что тип каждого компонента должен быть отличным от всех другие и значения могут быть в любом порядке.
Итак, как может SET
юридически иметь два типа IA5String
? Я склонен доверять книге Оливье Дубюссона о каком-то случайном интернет-учебнике, однако не имеет никакого смысла, что тип SET
может иметь несколько компонентов одного типа. Причина в том, что в ASN.1 идентификаторы типов не кодируются (по крайней мере, для большинства распространенных кодировок, таких как BER), поэтому декодер не сможет узнать, к какому компоненту относится IA5String
- это surname
или firstname
? Невозможно сказать, не имеет ли порядок.
Так сделал Оливье Дубюссон здесь огромную ошибку? (Он также нигде не упоминает в своем длинном описании SET
что-либо о том, что SET
не может иметь более одного типа.)