#author("2025-10-15T03:08:22+00:00","default:iseki","iseki")
#author("2025-10-15T03:09:06+00:00","default:iseki","iseki")
** ASN.1 (Abstract Syntax Notation One:抽象構文記法1) [#k05692d6]

- 「識別子(タグ):コンテンツ長:コンテンツ」の繰り返し.
-- コンテンツの中に「識別子:コンテンツ長:コンテンツ」の繰り返し という入れ子構造を取れる.

- 符号化
-- BER(Basic Encoding Rules) 曖昧性がある.
-- DER(Distinguished Encoding Rules) 曖昧性がない.BERのサブセット版

- https://letsencrypt.org/ja/docs/a-warm-welcome-to-asn1-and-der/


*** DER [#m62b187c]

**** 識別子(タグ) [#mfd4eb60]
- 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) (セットは必ず構造型セットになる.順番無しの並び)
-- 0x10:シーケンス(SEQUENCE)「シーケンスは必ず構造型シーケンスになる.順番有の並び」
-- 0x11:セット(SET)「セットは必ず構造型セットになる.順番無しの並び」

-- 0x30:構造型シーケンス(SEQUENCE)入れ子
-- 0x31:構造型セット(SET) 入れ子


**** コンテンツ長 [#f4cdba1d]
- 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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS