次の方法で共有


OCTET 文字列

ASN.1 OCTET STRING データ型は、 0x04 の Tag バイトで始まる TLV トリプレットにエンコードされます。 OCTET STRING データ型と BIT STRING データ型は非常によく似ています。 したがって、2 つの型は同様の方法でエンコードされます。 ただし、OCTET STRING の末尾のバイトに未使用のビットを含めることはできません。先頭のバイトをコンテンツに追加する必要はありません。 CMC でエンコードされた ASN.1 トピックに適合した次の例は、証明書テンプレートの名前をバイト配列としてエンコードする方法を示しています。

30 17                                 ; SEQUENCE (17 Bytes)
|  06 09                              ; OBJECT_ID (9 Bytes)
|  |  2b 06 01 04 01 82 37 14  02     ;   1.3.6.1.4.1.311.20.2
|  04 0a                              ; OCTET_STRING (a Bytes)
|     1e 08 00 55 00 73 00 65  00 72  ;   ...U.s.e.r

バイト配列に含まれるバイト数が 128 バイト未満の場合、TLV トリプレットの Length フィールドは、コンテンツ長を指定するために 1 バイトしか必要としません。 127 バイトを超える場合、 Length フィールドのビット 7 は 1 に設定され、ビット 6 から 0 はコンテンツ長を識別するために使用される追加バイト数を指定します。 次の例では、最初の行の 2 番目のバイトの上位ビットが 1 に設定され、バイトが末尾の Length バイトがあることを示しています。 したがって、3 番目のバイトは、コンテンツが 0x80 バイト長であることを指定します。

04 81 80                       ; OCTET_STRING (80 Bytes)
   38 10 60 e2 70 69 91 4a     ;   8.`.pi.J
   8b b5 22 57 2a 62 ef de     ;   .."W*b..
   15 7d 59 d6 4e 20 9a 45     ;   .}Y.N .E
   2b e3 fd fc 68 ba af bf     ;   +...h...
   9c 17 b0 8e 6d c4 29 1e     ;   ....m.).
   e3 21 ac bb 5a 8a c9 67     ;   .!..Z..g
   0a d4 45 93 10 c0 26 eb     ;   ..E...&.
   0a 83 c2 b1 40 87 36 f7     ;   ....@.6.
   a0 26 da b9 bb 46 73 88     ;   .&...Fs.
   7a 67 b9 e6 b3 6f ea 59     ;   zg...o.Y
   28 8a d3 92 72 f6 7b 89     ;   (...r.{.
   a0 d8 2d 9e 40 eb 1e bb     ;   ..-.@...
   6e ae f0 5a ed 16 c9 e3     ;   n..Z....
   27 59 37 8f f3 4a 98 60     ;   'Y7..J.`
   f8 fb a7 0a ee 1b 6e 91     ;   ......n.
   95 96 cf 0d 56 ac ab 35     ;   ....V..5

ASN.1 型システム

ASN.1 型の DER エンコード