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
以上です。
参考文献
- 抽象記法 - Samayou Oharikui
- ASN.1 バイナリ変換規則 (BER) (転載) - nliao - 博客园 (Wayback Machine)
- ASN.1
- der - ASN.1 SEQUENCE tag number encoding - Stack Overflow
- A Layman's Guide to a Subset of ASN.1, BER, and DER
- SEQUENCE - Win32 apps | Microsoft Docs
- A Warm Welcome to ASN.1 and DER - Let's Encrypt - Free SSL/TLS Certificates