18.2.1 Продукцией "BuiltinEncodingObjectSetReference" является:
BuiltinEncodingObjectSetReference ::=
PER-BASIC-ALIGNED
| PER-BASIC-UNALIGNED
| PER-CANONICAL-ALIGNED
| PER-CANONICAL-UNALIGNED
| BER
| CER
| DER
18.2.2 Эти имена наборов объектов кодирования указывают наборы объектов кодирования, определенные в ИСО /МЭК 8825-1 и ИСО /МЭК 8825-2. Идентификаторы объектов для правил кодирования, обеспечивающих эти наборы объектов кодирования, приводятся в таблице 4.
Примечание - Эти стандарты были написаны до настоящего стандарта об ECN и не используют терминологию объектов кодирования. Они определяют, например, способ кодирования типа АСН.1 INTEGER или BOOLEAN. Это следует интерпретировать как определение объекта кодирования класса #INTEGER или класса #BOOLEAN.
Таблица 4 - Имена предопределенных наборов объектов кодирования и связанные идентификаторы объектов
Имя | Идентификатор |
PER-BASIC-ALIGNED | {joint-iso-itu-t(2) asn1(1) packed-encoding(3) basic(0) aligned(0)} |
PER-BASIC-UNALIGNED | {joint-iso-itu-t(2) asn1(1) packed-encoding(3) basic(0) unaligned(1)} |
PER-CANONICAL-ALIGNED | {joint-iso-itu-t(2) asn1(1) packed-encoding(3) canonical(1) aligned(0)} |
PER-CANONICAL-UNALIGNED | {joint-iso-itu-t(2) packed-encoding(3) canonical(1) unaligned(1)} |
BER | {joint-iso-itu-t(2) asn1(1) basic-encoding(1)} |
CER | {joint-iso-itu-t(2) asn1(1) ber-derived(2) canonical-encoding(0)} |
DER | {joint-iso-itu-t(2) asn1(1) ber-derived(2) distinguished-encoding(1)} |
18.2.3 Каждый из этих наборов объектов кодирования является полным набором объектов кодирования, который может быть применен к любой структуре кодирования (либо неявно генерируемой из типа АСН.1, либо определяемой пользователем), с соответствующим разыменованием, чтобы определить соответствующие кодирования BER или PER.
Примечание - Объект кодирования для определяемого пользователем или неявно генерируемого класса кодирования может быть добавлен к такому набору и будет иметь приоритет перед любым кодированием, которое могло бы получиться с помощью разыменования.
18.2.4 Все вышеприведенные наборы содержат объекты кодирования для классов, используемых в неявно генерируемых структурах кодирования (см. 11.2), которые отличаются для каждого набора правил кодирования. Каждый из них содержит также идентичные объекты кодирования для классов #INT, #BOOL, #NUL, #CHARS, #OCTETS, #BITS, #CONCATENATION. Они не содержат объектов кодирования для #ALTERNATIVES, #REPETITION и #PAD.
18.2.5 Эти классы кодирования представляют базовые строительные блоки кодирований и просто кодируются всеми вышеприведенными предопределенными наборами объектов кодирования. Объекты кодирования для этих классов определяют кодирования следующим образом.
18.2.5.1 #INT кодируется в виде кодирования PER-BASIC-UNALIGNED #INTEGER при условии, что он имеет границы. Если #INT не имеет нижней и верхней границ, когда этот объект кодирования применяется к #INT, то это будет ошибкой разработки ECN.
18.2.5.2 #BOOL и #NUL кодируются в виде PER-BASIC-UNALIGNED #BOOLEAN и #NULL соответственно.
18.2.5.3 #CHARS, #OCTETS и #BITS кодируются в виде PER-BASIC-UNALIGNED UTF8String, #OCTETSTRING и #BIT-STRING соответственно при условии, что они имеют единый размер. Если #CHARS, #OCTETS или #BITS не имеют реального указания размера, ограничивающего их до единого размера, то это будет ошибкой разработки ECN.
18.2.5.4 #CONCATENATION кодируется в виде PER-BASIC-UNALIGNED кодирования #SEQUENCE без факультативных компонентов. Если эти объекты кодирования применены к #CONCATENATION с факультативными компонентами, то это будет ошибкой спецификации ECN.