ГОСТ Р 56845—2015
пользовать символ NULLдля дополнения. Необходимо отметить, что строки, которые содержат четное число октет,
могут не завершаться символом NULL.
Как показано на рисунке F.4. MDER различают тип OCTET STRING с переменнойдлиной строки и тип OCTET
STRING с фиксированной длиной строки.
Фиксированный (ограниченный по размеру) тип: OCTET STRING ((SIZE(n))
170Б4321
070fi4&21
О к т г1
О к т 2
Otrer/ИО к т о
---------------1---------------
Типы OCTET STRING переменной длины
0 7 0 0 4 8 2 11 7 6 8 4 3 2 10 7 0 0 4 8 2 10 7 6 0 4 8 2 1
1
1
--
>
1 6 б и т о в код и р о ван и з д л и н ы
Oicmrl
О г « г
2
O
ktwt т
-1
О к п г т
------------------------------ -----------------
----
---------------------------1
----------------
Рисунок F.4 — Кодирование типов OCTET STRING
Тип OCTET STRING с фиксированной (т. е. ограниченной по размеру) длиной строки кодируется только с со
ответствующим набором октет.
Типы OCTET STRING переменной длины кодируются полем с длиной 16 бит (целое число без знака в до
полнительном двоичном коде), за которым следует определенное число октет с данными.
П рим ер
—
С ледую щ ие определения
fixed-sized-label
variable-label
::= OCTET STRING (SIZE(12))
::= OCTET STRING
м огут бы т ь от ображ ены в предст авлении т ипа язы ка С следую щ им образом:
typedef unsigned char fixed_size_label[12);
typedef struct {
unsigned short length;
unsigned char data[1];
Г
Это место для заполнения подходящим по размеру’/
Г
массивом соответствующей длины 7
} variableJabel;
F .4 .5 Т и п S E Q U E N C E
Кодирование значения списка типа (SEQUENCE) формируется кодированием каждого элемента SEQUENCE
в порядке их определения в тиле ASN.1 SEQUENCE. Никакое выравнивание не выполняется.
П рим ер
—
С ледую щ ие определения
IdentType ::= SEQUENCE {
id INT-U16,
instancelNT-U16
}
м огут бы т ь от ображ ены на предст авление т ипа язы ка С следую щ им образом :
typedef struct {
unsigned shortid.
unsigned shortinstance
} IdentType:
и кодирование no MDER будет им ет ь вид. предст авленны й на рисунке F.5.
070648318706402187064221
97064821
IMT-U18 (И)[
iNT-Ul8 (аеатгяр)
Рисунок F.5 — Образец кодирования типа SEQUENCE
137