#author("2024-09-30T12:57:39+00:00","default:iseki","iseki")
#author("2024-10-22T10:27:02+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(構造型)
-- 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) 
-- 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