СТРОКА OCTET
Тип данных ASN.1 OCTET STRING кодируется в триплет TLV, начинающийся с тега байтов 0x04. OCTET STRING и типы данных BIT STRING очень похожи. Таким образом, два типа кодируются аналогичным образом, за исключением того, что, поскольку конечный байт OCTET STRING не может иметь неиспользуемые биты, в содержимое не нужно добавлять начальные байты. В следующем примере, адаптированном из раздела CMC Encoded 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 байт, поле length tLV triplet требует только одного байта, чтобы указать длину содержимого. Если это более 127 байт, то для определения длины содержимого задано значение 7 из поля Длина значение 1 и биты 6–0. Это показано в следующем примере, где в первой строке задано значение 1, а для байта большого порядка задано значение 1, а байт указывает, что имеется конечный длина байтов. Таким образом, третий байт указывает, что содержимое 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
Связанные разделы