データ型の 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 型の DER エンコード