1

SETASN.1タイプの制限について混乱しています。一般に、コンポーネントの順序が重要でないことを除けば、SET型は基本的に と同じであることがわかります。SEQUENCE

Olivier Dubuisson によるASN.1に関する独創的な本、ASN.1 — Communication Between Heterogeneous Systems」では、SET について次のように述べられています。

SEQUENCE 型のコンポーネントの順序が問題にならない場合は、キーワード SET を使用して、そのような順序付けられていない構造をモデル化します。

 Description ::= SET {    
   surname IA5String,   
   first-name IA5String,  
   age INTEGER  }

この場合、アプリケーションはエンコーダーに最適な順序でコンポーネントを提供できます。


ここですぐに気付くのは、Dubuisson の例では、SET2 つのIA5String 型があることです。これは、このチュートリアルでここで読んだことと矛盾しているようです。

SET の型と値の表記は SEQUENCE と似ていますが、各コンポーネントの型は他のすべてのコンポーネントと区別する必要があり、値は任意の順序にすることができます。

SETでは、合法的に 2 つのIA5Stringタイプを持つにはどうすればよいでしょうか。SET私は、ランダムなインターネット チュートリアルよりも Olivier Dubuisson の本を信頼する傾向がありますが、型が同じ型の複数のコンポーネントを持つことができるということは意味がありません。その理由は、ASN.1 では型識別子がエンコードされていない(少なくとも BER のようなほとんどの一般的なエンコードでは) ため、デコーダーはどのコンポーネントにIA5String適用されるsurnameかを知る方法がないためfirstnameです。順序が重要でないかどうかを判断する方法はありません。

では、オリヴィエ・デュブイソンはここで大きな間違いを犯したのでしょうか? (彼はまた、型の長い説明のどこにも、 aが各型を複数持てないSETという事実について何も言及していません。)SET

4

2 に答える 2