Откройте актуальную версию документа прямо сейчас
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Приложение 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" является
- - параметром абстрактного синтаксиса, определяющим уровень
- - реализации. Соответствующий получатель должен быть готов
- - получить символы вне этого принимаемого поднабора и уровня
- - реализации. Обработка исключения в этом случае определена в
- - разделе <номер раздела> для вызова "characterSetPrblem". Она
- - может никогда не вызываться соответствующим получателем, если
- - символы, фактически используемые в сеансе взаимодействия,
- - ограничены совокупностью "BasicLatin".
My-Level2-String : : = ISO-10646-String {{HebrewExtended UNION
Hiragana}, Level2}
D.6 Тип CHARACTER STRING
D.6.1 Тип CHARACTER STRING предоставляет полную гибкость в выборе символьного набора и метода кодирования. Когда единственное соединение обеспечивает сквозную передачу данных (без прикладной ретрансляции), тогда должно использоваться согласование символьных наборов, а кодирование может быть выполнено как часть определения контекстов представления для символьных абстрактных синтаксисов.
D.6.2 Важно понимать, что символьный абстрактный синтаксис является обычным абстрактным синтаксисом с некоторыми ограничениями на возможные значения (они все являются символьными строками и всеми символьными строками, образованными из некоторой совокупности символов). Таким образом, регистрация таких синтаксисов и согласование контекста представления осуществляется обычным путем.
D.6.3 Кодирование типа CHARACTER STRING также допускает объявление используемых абстрактного синтаксиса и синтаксиса передачи без согласования в том окружении, в котором это применимо.
Примечания
1 Проектировщики приложений могут запретить использование согласования представления, сделать его обязательным или оставить на усмотрение отправителя.
2 Когда используется объявление, а не согласование, проектировщик приложения должен рассмотреть, как отправитель может определить, что символьный абстрактный синтаксис (и синтаксис передачи) может быть приемлемым для получателя (например используя услуги справочника или в результате профилирования), а так же рассмотреть действия получателя, если получено значение CHARACTER STRING из символьного абстрактного синтаксиса, который не поддерживается.
D.6.4 Если используется согласование, то проектировщик прикладного уровня может управлять таким согласованием, специфицируя, когда должны быть установлены такие контексты представления, и параметр пользовательских данных примитива P-ALTER-CONTEXT, или может просто принять, что некоторый профиль должен определить, какой символьный абстрактный синтаксис должен использоваться, устанавливая для него контекст представления в момент передачи примитива P-CONNECT.
D.6.5 Возможности управления контекстом услуг уровня представления позволяют инициатору (в P-CONNECT или в установленном соединении, используя P-ALTER-CONTEXT) предложить список новых или исключаемых из использования абстрактных синтаксисов (который может содержать символьные абстрактные синтаксисы), а получателю - выбрать из этого списка.
D.6.6 Инициатор может выразить свои предпочтения порядком абстрактных синтаксисов в списке или через параметр пользовательских данных, который предоставлен проектировщиком приложения для того, чтобы пояснить цель предлагаемого использования нового абстрактного синтаксиса. Например он может указывать, что все (символьные) абстрактные синтаксисы предлагаются для использования с одной единственной целью или что подразумевается выбор единственного (символьного) абстрактного синтаксиса для использования в различных целях.
D.6.7 Символьные абстрактные синтаксисы (и соответствующие символьные синтаксисы передачи) определяются в ряде стандартов (или рекомендаций МСЭ-Т), а дополнительные символьные абстрактные синтаксисы (и/или символьные синтаксисы передачи) могут быть определены любой организацией, выделяющей идентификаторы объектов.
D.6.8 В ИСО/МЭК 10646-1 имеется символьный абстрактный синтаксис, определенный (и ему присвоен идентификатор объекта) для всей совокупности символов, каждой определенной совокупности символов, поднаборов (BASIC LATIN, BASIC SYMBOLS, и т.д.) и любой возможной комбинации определенных совокупностей символов. В ИСО/МЭК 10646-1 имеются так же два символьных синтаксиса передачи, определенные для идентификации различных опций (в частности, 16- и 32-битовых).
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.