2013年1月4日金曜日

データ型 - タグ型

集合型のような構造型のデータ型から分かるように、同じASN.1型のデータを識別する手段が必要です。タグ型は既存のデータ型の構文を利用して、そのデータ型に新たなタグを付与します。汎用のクラスのタグ型は、アプリケーションに依存しない汎用的なデータ型を定義し、タグの指定は、[UNIVERSAL タグ番号]のように行います。
また、キーワードのIMPLICITとEXPLICITを使うことにより、既存のデータ型を置き換えるか否かを指定することもできます。


型の記法
  タグ型 ::= タグ 型 | タグ IMPLICIT 型 | タグ EXPLICIT 型
  タグ ::= [ クラス タグ番号 ]
  タグ番号 ::= 整数 | 定義値
  クラス ::= UNIVERSAL | APPLICATION | PRIVATE | empty 


タグ型で、 タグ 型 を指定した場合、モジュールのタグデフォルトで指定したキーワードと同じ振る舞いになります。モジュールでタグデフォルトが指定されていない場合は、タグ EXPLICIT 型 と同じ意味になります。

クラスは4種類のクラスに対応して、それぞれ以下のキーワードに対応します。


型の例
Accuracy ::= SEQUENCE {
  seconds        INTEGER           OPTIONAL,
  millis      [0] INTEGER  (1..999) OPTIONAL,
  micros     [1] INTEGER  (1..999) OPTIONAL }

ContentInfo ::= SEQUENCE {
     contentType              ContentType,
     content     [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }


値の記法
  タグ値 ::=

値の例
A ::= [PRIVATE 1] EXPLICIT OCTET STRING
myData A ::= '0123456789ABCDEF'H


0 件のコメント:

コメントを投稿