Asn2 - часть 9
При конструктивном кодировании октеты содержимого представляют собой соединение ряда IA5-субстрок. Рассмотрим примеры представления значения IA5-строки “test1@rsa.com”.
12 0D 74 65 73 74 31 40 72 73 61 2E 63 6F 6D | DER-кодирование |
Длинная форма октетов длины | |
32 13 12 05 74 65 73 74 31 12 01 40 12 07 72 73 61 2E 63 6F 6D |
Конструктивное кодирование: “test1” + “@” + “rsa.com” |
DER-кодирование является всегда примитивным, октеты содержимого идентичны случаю BER-кодирования.
Целое
Тип INTEGER представляет любые целые числа (положительные, отрицательные или 0). Тип INTEGER используется для номеров версий, криптографических параметров (показателей, модулей) и типов RSAPublicKey, RSAPrivatKey, DHParameter PBEParameter. Нотация типа INTEGER имеет формат:
INTEGER [{identifier1(value1) … identifiern(valuen) }]
где identifier1 … identifiern являются опционными идентификаторами, а value1… valuen опционные целые значения. Например, Version RFC-1114 относится к целому типу со значением:
Version ::= INTEGER { 1988(0) }
Идентификатору v1988 поставлено в соответствие значение 0. Тип Certificate RFC-1114 использует идентификатор v1988для присвоения значения по умолчанию компоненту version:
Certificate
version Version DEFAULT v1988,
…
BER-кодирование значения INTEGER является всегда примитивным. Октеты содержимого представляют значение целого по модулю 256 в форме дополнения по модулю 2. Старшая цифра является первой. Значение нуль кодируется одним октетом 00. Примеры BER-кодирования (совпадающего в данном случае с DER-кодированием) представлены в таблице 4.4.13.2.3.
Таблица 4.4.13.2.3. Примеры BER-кодирования
Значение целого | BER-код |
0 | 02 01 00 |
127 | 02 02 00 7F |
128 | 02 02 00 80 |
256 | 02 02 01 00 |
-128 | 02 01 80 |
-129 | 02 02 FF 7F |
NULL
Тип NULL обозначает нулевую величину и предназначен для использования в качестве параметра алгоритмов. Нотация для типа NULL имеет формат:
NULL
Кодирование для типа NULL является всегда примитивным, октеты содержимого пусты.
