Вы можете открыть актуальную версию документа прямо сейчас.
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Приложение D
(справочное)
Руководство по использованию символьных строк АСН.1
D.1 Поддержка символьных строк в АСН.1
D.1.1 Имеются следующие четыре группы символьных строк, поддерживаемых в АСН.1:
а) типы символьных строк, основанные на Международном регистре ИСО наборов кодированных символов, которые должны использоваться с Escape-последовательностями (то есть на структуре ИСО 646), и на связанном с ним Международном регистре кодовых символьных наборов, которые обеспечиваются типами VisibleString, IA5String, TeletexString, VideotexString, GraphicString и GeneralString;
б) типы символьных строк, основанные на ИСО/МЭК 10646-1, которые обеспечиваются типами UniversalString, UTF8String и BMPString с подмножествами, определенными в ИСО/МЭК 10646-1, или использованием поименованных символов.
Примечания
1 Использование типа UniversalString без ограничений приводит к нарушению требований соответствия для информационного обмена, специфицированных в ИСО/МЭК 10646-1, так как при этом заданы не принимаемые подмножества.
2 Несмотря на сказанное выше, использование этого типа с простым ограничением подтипа, которое использует параметр абстрактного синтаксиса (для ограничения определенным подтипом UniversalString), может обеспечить мощный и гибкий механизм обработки символов, доверяя профилям определение значения параметра для удовлетворения конкретных потребностей сообщества пользователей. Однако в общем случае в стандартах предпочтительнее использовать тип CHARACTER STRING (см. ниже);
в) типы символьных строк, обеспечивающие простые небольшие совокупности символов, определенные в настоящем стандарте и предназначенные для специализированного использования; к ним относятся типы NumericString и PrintableString;
г) тип CHARACTER STRING с согласованным (или объявленным) символьным набором, который будет использоваться; это позволяет реализации использовать любую совокупность символов и кодирований, которым присвоены OBJECT IDENTIFIER, включая совокупности из Международного регистра ИСО наборов кодированных символов, которые должны использоваться с Escape-последовательностями, ИСО/МЭК 7350, ИСО/МЭК 10646-1 и пользовательские совокупности символов и кодирования (профили могут накладывать требования или ограничения на символьные наборы - символьные абстрактные синтаксисы, которые могут использоваться).
D.2 Типы UniversalString, UTF8String и BMPString
D.2.1 Типы UniversalString и UTF8String переносят любые символы из ИСО/МЭК 10646-1. Наборы символов в ИСО/МЭК 10646-1, в общем случае, слишком велики для разумных требований соответствия и обычно должны быть выделены их поднаборы в виде комбинаций стандартных совокупностей символов из приложения А ИСО/МЭК 10646-1.
D.2.2 Тип BMPString переносит любые символы из основной многоязычной плоскости ИСО/МЭК 10646-1 (первые 62К - 2 символов). Основная многоязычная плоскость обычно разбивается на поднаборы в виде комбинаций стандартных совокупностей символов из приложения А ИСО/МЭК 10646-1.
D.2.3 Для совокупностей, определенных в ИСО/МЭК 10646-1, приложение А, имеются ссылки на тип, приведенные во встроенном модуле АСН.1 "ASN1-CHARACTER-MODULE" (см. раздел 37). Метод "ограничения подтипа" позволяет определять новые подтипы UniversalString, которые являются комбинациями существующих подтипов.
D.2.4 Примерами ссылок на тип, определенных в ASN1-CHARACTER-MODULE, и соответствующих им имен совокупностей в ИСО/МЭК 10646-1 являются:
BasicLatin BASIC LATIN
Latin-1Supplement LATIN-1 SUPPLEMENT
LatinExtended-a LATIN EXTENDED-A
LatinExtended-b LATIN EXTENDED-B
IpaExtensions IPA EXTENSIONS
SpacingModifierLetters SPACING MODIFIER LETTERS
CombiningDiacriticalMarks COMBINING DIACRITICAL MARKS
D.2.5 В ИСО/МЭК 10646-1 определены три "уровня реализации" и требуется, чтобы все пользователи ИСО/МЭК 10646-1 устанавливали уровень реализации.
Уровень реализации относится к степени, в которой поддерживаются комбинированные символы и, следовательно, в терминах АСН.1, определяется подмножество UniversalString и BMPString, ограничивающее типы символьных строк.
Для уровня реализации 1 комбинированные символы не допустимы, и обычно имеется взаимно однозначное соответствие между абстрактными символами (ссылками на ячейки) в символьной строке АСН.1 и печатными символами в физическом представлении строки.
Для уровня реализации 2 допускается использование некоторых комбинированных символов (перечисленных в ИСО/МЭК 10646-1, приложение В), но использование других таких символов запрещено.
Для уровня реализации 3 нет ограничений на использование комбинированных символов.
D.2.6 Типы BMPString и UniversalString могут быть ограничены с помощью нотации подтипа так, чтобы исключить все управляющие функции:
VanillaBMPString : : = BMPString (FROM (ALL EXCEPT
({0, 0, 0, 0} .. {0, 0, 0, 31} | {0, 0, 0, 128} .. {0, 0, 0, 159})))
или, эквивалентно,
С0 : : = BMPString (FROM ({0, 0, 0, 0} .. {0, 0, 0, 31})) - - Функции С0
С1 : : = BMPString (FROM ({0, 0, 0, 128} .. {0, 0, 0, 159})) - - Функции С1
VanillaBMPString : : = BMPString (FROM (ALL EXCEPT (С0 | С1)))
D.3 О требованиях соответствия ИСО/МЭК 10646-1
Использование UniversalString, BMPString или UTF8String (или их подтипов) в определении типа АСН.1 требует обращения к требованиям соответствия ИСО/МЭК 10646-1.
Согласно этим требованиям соответствия разработчики стандарта (скажем, Х), использующие такие типы АСН.1, должны обеспечивать (в заявке о соответствии реализации протоколу) утверждение о принимаемом подмножестве ИСО/МЭК 10646-1 для реализаций их стандарта Х или об уровне поддержки комбинированных символов этими реализациями.
Использование подтипа UniversalString, UTF8String или BMPString в спецификации требует, чтобы реализации поддерживали все символы ИСО/МЭК 10646-1, включенные в этот подтип АСН.1, и, следовательно, чтобы (по крайней мере) эти символы присутствовали в принимаемом подмножестве для реализации. Так же требуется, чтобы установленный уровень поддерживался всеми такими подтипами АСН.1.
Примечание - Спецификация АСН.1 (при отсутствии параметров абстрактного синтаксиса и спецификации исключений) определяет как максимальный набор символов, которые могут быть переданы, так и минимальный набор символов, которые должны обрабатываться получателем. Принимаемый набор ИСО/МЭК 10646-1 требует, чтобы символы не из этого набора не передавались, а все символы этого набора поддерживались получателем. Следовательно, необходимо, чтобы принимаемый набор был бы в точности набором всех символов, допускаемых спецификацией АСН.1. Случай, когда имеется параметр абстрактного синтаксиса, рассматривается ниже.
D.4 Рекомендации пользователям АСН.1 по соответствию ИСО/МЭК 10646-1
Пользователи АСН.1 должны четко устанавливать набор символов ИСО/МЭК 10646-1, который образует принимаемый поднабор реализации (и требуемый уровень реализации) для того, чтобы выполнялись требования их стандарта.
Это можно удобно сделать путем определения подтипа UniversalString, UTF8String или BMPString, который содержит все необходимые для стандарта символы, и ограничения его "уровнем 1" или "уровнем 2". Подходящим именем для этого типа может быть "ISO-10646-String".
Пример
ISO-10646-String : : = BMPString
(FROM (Level2 INTERSECTION (BasicLatin UNION
HebrewExtended UNION Hiragana)))
- - Это тип, который определяет минимальный набор символов в
- - принимаемом поднаборе для реализации настоящего стандарта.
- - Требуемый уровень реализации - не ниже 2.
Тогда ЗСРП будет содержать простое утверждение, что принимаемый поднабор ИСО/МЭК 10646-1 есть ограниченный поднабор (и уровень), определенный типом "ISO-10646-String", а "ISO-10646-String" (возможно, его подтипы) будет использоваться в стандарте всюду, где требуется включить строки ИСО/МЭК 10646-1.
Пример ЗСРП
Принимаемый поднабор ИСО/МЭК 10646-1 есть ограниченный поднабор, состоящий из всех символов в типе АСН.1 "ISO-10646-String", определенном в модуле <имя модуля>, с уровнем реализации 2.
Пример использования в протоколе:
Message : : = SEQUENCE {
first-field ISO-10646-String - - допустимы все символы из принимаемого
- - поднабора
second-field ISO-10646-String (FROM (latinSmallLetterA ..
latinSmallLetterZ)),
- - допустимы только строчные латинские
- - буквы
third-field ISO-10646-String (FROM (digitZero .. digitNine))
- - допустимы только цифры
}
D.5 Принимаемые поднаборы как параметры абстрактного синтаксиса
Стандарт ИСО/МЭК 10646-1 требует, чтобы принимаемый поднабор и уровень реализации были определены явно. Когда пользователь АСН.1 не хочет ограничивать диапазон символов ИСО/МЭК 10646-1 в некоторой части разрабатываемого стандарта, то это можно сделать, определяя (например) "ISO-10646-String" как подтип UniversalString, UTF8String или BMPString с ограничением подтипа, состоящим из (или содержащим) "ImplementorsSubset", который остается параметром абстрактного синтаксиса.
Пользователи АСН.1 должны учитывать, что в этом случае соответствующий отправитель может передать соответствующему получателю символы, которые не могут быть обработаны получателем потому, что они выпадают из (зависящего от реализации) принимаемого поднабора или уровня получателя, и рекомендуется, чтобы в этом случае в определение "ISO-10646-String" включалась спецификация обработки исключений.
Пример
ISO-10646-String {UniversalString : ImplementorsSubset,
ImpementationLevel} : : =
UniversalString (FROM ((ImplementorsSubset UNION BasicLatin)
INTERSECTION ImplementationLevel) characterSetPrblem)
- - Принимаемый поднабор ИСО/МЭК 10646-1 должен содержать
- - "BasicLatin", но может содержать любые дополнительные символы,
- - определенные в "ImplementorsSubset", который является параметром
- - абстрактного синтаксиса. "ImpementationLevel" являе
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.