晴耕雨読

working in the fields on fine days and reading books on rainy days

ASN.1 のタグ一覧

ASN.1 のタグ一覧について説明します。 ASN.1 で定義されているプリミティブ型の一覧は以下の表の通りです。

タグ番号 説明
0x00   予約済み
0x01 BOOLEAN 論理型 (00: False, それ以外: True)
0x02 INTEGER 整数型
0x03 BIT STRING ビット列型
0x04 OCTET STRING オクテット列型
0x05 NULL ヌル型 (長さフィールドは常に00)
0x06 OBJECT IDENTIFIER OID型 (例: 1.3.14.3.2.26)
0x07 ObjectDescriptor オブジェクト記述型 (OIDの説明文)
0x08 INSTANCE OF, EXTERNAL 外部型
0x09 REAL 実数型
0x0A ENUMERATED 整数列挙型
0x0B EMBEDDED PDV  
0x0C UTF8String UTF-8文字列型
0x0D RELATIVE-OID  
0x10 SEQUENCE, SEQUENCE OF 順序列型, 単一順序列型 ※
0x11 SET, SET OF 集合型, 単一集合型 ※
0x12 NumericString 数字列型 (0~9だけで構成される文字列)
0x13 PrintableString 出力可能文字列型 (ASCII文字列)
0x14 TeletexString, T61String  
0x15 VideotexString  
0x16 IA5String IA5文字列 (例: URI)
0x17 UTCTime UTC時刻型 (例: YYMMDDhhmmssZ, YYMMDDhhmmss±hhmm)
0x18 GeneralizedTime 時刻型 (例: YYYYMMDDhhmmss.dZ, YYYYMMDDhhmmss.d±hhmm)
0x19 GraphicString  
0x1A VisibleString, ISO646String  
0x1B GeneralString  
0x1C UniversalString  
0x1D CHARACTER STRING  
0x1E BMPString  

※の型のタグ番号は実際にそのまま使われることはなく、構造化フラグを含めた値が実際に使われるタグ番号となります。

構造化フラグとはオブジェクトの構造を表すもので、上記のタグ番号の右から6ビット目に追加されます。 構造化フラグは以下の意味を持ちます。

  • 0: 単一型。オブジェクトが1つの値だけを持っていることを表します。
  • 1: 構造型。オブジェクトが複数の値を持っていることを表します。

順序列型(SEQUENCE)や集合型(SET)は複数の値を持つことが当たり前なので、順序列型、集合型のタグ番号には常に構造化フラグが1となります。 構造化フラグを含めたときの型の一覧は以下のようになります。

構造化タグ番号 説明
0x30 SEQUENCE, SEQUENCE OF 順序列型, 単一順序列型
0x31 SET, SET OF 集合型, 単一集合型
  • SEQUENCE のタグ番号 0x10 と構造化フラグ 0b00100000 = 0x20 を足し合わせると 0x30
  • SET のタグ番号 0x11 と構造化フラグ 0b00100000 = 0x20 を足し合わせると 0x31

以上です。

参考文献