集合型のような構造型のデータ型から分かるように、同じ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 件のコメント:
コメントを投稿