ASN.1 (Abstract Syntax Notation One:抽象構文記法1) †[edit]
- 「識別子(タグ):コンテンツ長:コンテンツ」の繰り返し.
- コンテンツの中に「識別子:コンテンツ長:コンテンツ」の繰り返し という入れ子構造を取れる.
- 符号化
- BER(Basic Encoding Rules) 曖昧性がある.
- DER(Distinguished Encoding Rules) 曖昧性がない.BERのサブセット版
- 1bit から数える(0bitからではない)
- 8,7bit Class:
- 0000(0x00) UNIVERSAL(汎用)(通常はこれ)
- 0100(0x40) APPLICATION(応用)
- 1000(0x80) Context-Specific(コンテキスト特定)
- 1100(0xc0) PRIVATE(私用)
- 6bit
- 0000(0x00)Primitive(基本型)
- 0010(0x20)Constructed(構造型)
- 汎用タグ(1~5bit)
- 0x02:整数(INTEGER)
- 0x03:ビット列(BIT STRING)
- 0x04:8bit文字列(OCTET STRING)
- 0x05:NULL(NULL)
- 0x06:オブジェクト(OBJECT IDENTIFIER)
- 0x0c:UTF8文字列(UTF8String)
- 0x10:シーケンス(SEQUENCE)
- 0x11:セット(SET)
- 0x30:構造型シーケンス(SEQUENCE)
- 0x31:構造型セット(SET)
- 0x7F 以下:長さを格納するバイトはこの1Byte のみ
- 0x80 以上:下位7bit(0x01~0x7f)がこれ以降に続く,長さを格納するバイト数.
- 0x81:この後の1Byteが長さを表す.
- ということは 0x80 はあり得ない.
- 126Byte: 0x7E
- 127Byte: 0x7F
- 128Byte: 0x81 0x80
- 129Byte: 0x81 0x81
- 255Byte: 0x81 0xff
- 256Byte: 0x82 0x01 0x00