信息技术 抽象语法记法--(ASN.1)
第1部分:基本记法规范
1范围
GB/T 16262的本部分提供一个称为抽象语法记法一(ASN.1)的标准记法,该记法用来定义数据类型、值及数据类型的约束。
本部分
——定义了一些简单的类型及其标记,也规定了引用这些类型和规定这些类型值的记法;
——定义了从多个基本类型构造新类型的机制,也规定了定义这些类型及为他们指派标记和规定这些类型值的记法;
——定义了ASN.1内使用的字符集(通过引用其他标准),
无论何时需要定义信息的抽象语法,都可应用ASN.1记法。
ASN.1记法供其他定义ASN.1类型编码规则的标准引用.
2规范性引用文件
下列文件中的条款通过GB/T 16262的本部分的引用而成为本部分的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本部分,然而,鼓励根据本部分达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本部分。
GB/T 1988--1988信息技术信息交换用七位编码字符集(eqv ISO/IEC 646.1991)
GB/T 2311--2000信息技术 字符代码结构与扩充技术(idt ISO/IEC 2022,1994)
GB/T 2659--2000世界各国和地区名称代码(eqv IS03116-1,1997)
GB/T 7408--1994数据元和交抉格式信息交换 日期和时间表示法(eqv IS0 8601t1988)
GB/TI3000. 1--1993信息技术通用多八位编码字符集(UCS)第一部分:体系结构与基本多文种平面(idt ISO/IEC 10646-1,1993)
GB/T 16262. 2--2006 信息技术 抽象语法记法一(ASN.1) 第2部分:信息客体规范(ISO/IEC 8824-2: 2002, IDT)
GB/T 16262.3--2006信息技术抽象语法记法一(ASN.1) 第3部分:约束规范(ISO/IEC、8824-3:2002,1DT)
GB/T 16262.4--2006 信息技术 抽象语法记法一(ASN.1) 第4部分:ASN.1规范的参数化(ISO/IEC 8824-4,2002,IDT)
GB/T 16263.1--2006 信息技术 ASN.1编码规则 第1部分:基本编码规ER)、正则编码规则(CER)和非典型编码规则(DER)规范(ISO/IEC 8825-1,2002,IDT)
GB/T 16263. 2--2006 信息技术 ASN.1编码规则 第2部分:紧缩编码规则(PER)规范(ISO/IEC 8825-2: 2002, IDT)
GB/T 17969.1--2000信息技术开放系统互连OSl登记机构的操作规程第1部分:一般规程序(eqv ISO/IEC 9834-1:1993)
ISO/IEC 8825-3:2002 信息技术 ASN.1编码规则:ASN.1的编码控制记法(ECN)
ISO/IEC 7350,1991 信息技术 IS0 10367图形字符集的登记
ISO与转义序列使用的编码字符集国际注册 .
ITU-T Rec.TF.460-5:1997 标准频率和时间信号发射
ITU-T建议T. 101:1994可视文本服务的国际互工作
CCITT建议T.100:1988 交互式可视文本的国际信息交换
3.2.0,2002,Unicode联盟(读物,MA,Addison-Wesley)注:因为上面的参考文件提供控制字符的名称,因此包括这项文件。
3术语和定义
下列术语和定义适用于GB/T 16262的本部分。
3.1 信息客体规范
本部分使用GB/T 16262.2--2006中定义的下列术语;
a) 信息客体 information object;
b) 信息客体类别 information object class;
c) 信息客体集 information object set
d) 单一实例类型 instance-of type;
e) 客体类别字段类型object class field type。
3.2约束规范
本部分使用GB/T 16262.3--2006中定义的下列术语:
a) 成分关系约束 component relation constraint}
b) 表约束 table constraint。
3.3 ASN.1规范的参数化
本部分使用GB/T 16262.4--2006中定义的下列术语:
c) 参数化类型 parameterized type~
d) 参数化值parameterized value。
3.4组织标识的结构
本部分使用SJ/Z 9090--1987中定义的下列术语:
a) 发布组织 issuing organization~
b) 组织代码 organization code;
c) 国际代码指定者 International Code Designator。
3.5通用多八位编码字符集(UCS)
本部分使用GB/T 13000. 1--1993中定义的下列术语:
a) 基本多文种平面(BMP) Basic Muhilingual Plane(BMP);
b)字符元cell~
c) 组合用字符 combining characterl
d) 图形符号 graphic symbol~
e)组groupI
f) 有限子集 limited subset;
g)平面plane;
h)行row;
i)选择子集selected subset。
3.6 附加定义
3.6.1
抽象字符abstract character
用于组织、控制和表示文本数据的抽象值。
注;附录F提供术语抽象字符更完整的描述。
3.6.2
抽象值.abstract value
其定义仅基于用来携带某些语义的类型,而与其在任何编码中的表达方式无关的值。
注:抽象值的示例是整数类型、布尔类型、字符串类型或者整数和布尔的序列(或选择)类型等的值.
3.6.3
ASN.1字符集ASN.1 character set
第10章中规定的用于ASN.1记法的字符集。
3.6.4
ASN.1规范 ASN.1 specification
一个或多个ASN.1模块的集合。
3.6.5
关联类型 associated type
仅用于定义类型的值及子类型记法的类型。
注:当必须清楚ASN.1中怎样定义类型与它怎样编码之间可能有重大差别时,在本部分中定义了关联类型。用户规范中不出现关联类型.
3.6.6
位串类型bitstrlng type
其非典型值是零个、一个或多个二进制位的有序序列的简单类型。
注:当需要携带抽象值的嵌入编码时,不赞成使用没有内容约束(见GB/T 16262. 3--2006的第11章)的位串(或八位位组串)类型.而使用嵌入pdV类型(见第33章)提供更灵活的机制,允许声明抽象语法及嵌入的抽象值的编码.
3.6.7
布尔类型boolean type
具有两个非典型值的简单类型。
3.6.8
字符性质 character property
与定义字符汇的表中的字符元相关的信息集。
注t信息通常将包含部分或全都下面的项.
a)图形符号l
b)字符名称,
c)在特定环境下使用时,与字符相关的功能的定义I
d)它是否表示数字l
e) 只有在(大/小)写中不同的关联字符。
3.6.9
字符抽象语法 character abstract syntax
其值规定为零个、一个或多个字符的字符串集的任何抽象语法,这些字符取自字符的某些已规定的集合。
3.6.10
字符汇 character repertoire
对字符怎样编码没有任何隐含说明的字符集中的那些字符。
3.6.11
字符串类型character string types
其值取自某些已定义字符集的字符串的简单类型。
3.6.12
字符传送语法 character transfer syntax .
字符抽象语法的任何传送语法。
注:ASN.1不支持耒将所有字符申编码成8位整数倍的字符传送语法.
3.6,13
选择类型choice types
通过引用不同类型列表来定义的类型;选择类型的每个值从其中一个成分类型的值衍生而来。
3.6.14
成分类型component type
定义CHOICE,SET,SEQUENCE,SET OF或SEQUENCE OF时引用的某种类型。
3.6.15
约束constraint
可与类型一起使用来定义该类型的子类型的记法.
3.6.16
内容约束contents constraint
规定内容为规定的ASN.1类型的编码、或规定的程序用来产生和处理内容的位串或八位位组串类型的约束。
3.6.17
控制字符control character
出现在某些给出名称(和也许是有关某些环境的已定义功能).但没有分配图形符号,也不是间隔字
符的字符汇中的字符。
注:HORIZONTAL TABULATION(9)和LINE FEED (10)是打印环境里指撅了格式化功能的控制字符示例.
DATA LINK ESCAPE(16)是通信环境中指蔽了功能的控制字符示例.
3.6.18
国际协调肘 Coordinated Universal Time(UTC)
国际时间局所保持的时标,构成标准频率和时间信号协调传播的基础。
注1;此定义的来源是ITU-R Rec. TF. 460-5= ITU-R也用UTC作为国际协调时的缩写.
注2lUTC和格林尼治标准时间(GMT)是两个可替换的,在大部分实用情况下确定向一时间的时间标准.
3.6,19
元素element
支配类型的值或支配信息客体类别的信息客体,能分别从相同类型或相同类别信息客体的所有其他值中区别开来。
3. 6.20
元素集element set
所有支配类型的值或支配类别的信息客体的元素集合。
注:GB/T 16262.2的3.4,7中定义了支配类别.
3.6.21
嵌入pdv类型embedded-pdv type
其值集是ASN能的抽象语法中值集形式上合并的类型。这一类型可用于希望其协议中携带其类型可能在那个AsN.1规范外部定义的抽象值的ASN.1规范中,它也携带被携带抽象值的抽象语法
(类型)的标识以及用来编码那个抽象值的编码规则的标识。
3.6.22
编码encoding
编码规则集应用于抽象值上产生的位图。
3.6.23
(ASN.1)编码规则 (ASN.1)encoding rnles
在传送赴、N.1类型值期间规定其表示的规则。编码规则也能使值从给出类型知识的表示法中恢复。
注:为了规定编码规则,能为固有类型(和值)提供替换记法的各种被引用类型(和值)记法没有关系.
3.6.24
枚举类型enumerated types
一个简单类型,其值是类型记法一部分的给定不同标识符。
3.6.25
扩展附加 extension addition
扩展序列中增加的记法之一a对于集合、序列和选择类型,每个扩展附加是单个扩展附加组或单个成分类型的附加。对于枚举类型,它是单个进一步枚举的附加.对于约束,它是(只有)一个子类型元素的附加。
注:扩展附加既按文本排列(紧接扩展标志),也按逻辑捧列(有递增枚举值和在CHOICE替换时递增标记).
3. 6.26
扩展附加组extension addition group
ASN 在版本括号内分组的集合、序列或选择类型的一或多个成分,。扩展附加组用来清楚地标识加在
AsN.1模块特定版本中集合、序列或选择类型的成分,也能用简单整数标识那个版本。
3.6.27
扩展附加类型 extension addition type
包含子扩展附加组中的类型或本身是扩展附加(这时它不包含在扩展附加组中)的单个成分类型。
3.6.28
可扩展约束 extensible constraint
在较外层带扩展标志,或使用带值的可扩展集的集算法中可扩展的子类型约束。
3.6.29
扩展插入点(或插入点) ente嬲ion岫∞rtion point (or insertion point)类型定义中插入扩展附加的位置.如果类型定义中有单个省略号,该位置在扩展序列中紧贴前面类型的类型记法末尾,或者如果类型定义中有扩展标志对,该位置紧贴在第二个省略粤之前。
注.在任何选择、序列或集合类型成分内最多能有一个插入点.
3.6.30
扩展标志extension marker
包含在形成扩展序列部分的所有类型中的语法标志(省略号)。
3.6:31
扩展标志对extension marker pair
插入扩展附加之间的一对扩展标志。
3.6.32
相关扩展 extension-related
有相同扩展根,通过在一个上加零个或更多个扩展附加而产生另一个的两个类型。
3.6.33
扩展根extension root
扩展序列中是第一个类型的可扩展类型。它携带不含附加记法、只有注解和扩展标志与相配的“ 或“)抑之间空白的扩展标志;或者不含附加记法,只有单个逗号、注解和扩展标志之间空白的扩展标志对。
注只有扩展根能是扩展序列中的第一个类型.
3.6. 34
扩展序列extension series
能按通过在扩展插入点附加文本形成序列中每个连续类型的方式排列的ASN.1类型序列。
3.6.35
可扩展类型extensibletype
有扩展标志或者应用了扩展约束的类型。
3.6.36
外部引用external reference
类型引用、值引用、信息客体类别引用、信息客体引用或(可能参数化的)信息客体集引用,他们在某
些其他而不是正在被它引用的模块中定义,并且通过在被引用项上加模块名作前缀来引用.
例如:ModuleName. TypeReference
3.6.37
外部类型 external type
携带对该ASN.1规范而言其类型可能是外部定义值的ASN.1规范一部分的类型.他也携带被携带值的类型标识。
3.6.38
假false
布尔类型中的非典型值的一个(也见“真”)。
3.6.39
支配(类型);支配者governing (type) ,governor
影响部分ASN.1语法解释、要求那部分ASN.1语法引用支配类型中的值的类型定义或引用。
3.6.40
等周类型定义 identical type definition
完成附录B中规定的转换后,如果ASN. l"Type"产生式中的两个实例(见第16章)是相同词项的相同顺序列表(见第11章),则它们定义为相同类型定义。
3.6.41
整数类型integer type
具有非典型值的简单类型,值是正整数或负整数,包括零(作为单一值)。
注:‘当特定的编码规则限制整数的范围时,选择这种限制不至影响ASN.1任何用户.
3.6.42
词项lexical Item
取自ASN.1字符集(在第11章中规定),用来形成ASN. 1记法的字符的已命名序列。
3.6.43
模块module
类型、值、值集、信息客体类别、信息客体和信息客体集(以及它们的参数化变体)采用ASN.1记法的一个或多个实例-用ASN.1模块记法来定界(见第】2章)。
注l术语信息客体类别(等)在GB/T 16262.2--2006中规定,而参数化在GB/T 16262.4--2006中规定。
3.6.44
空类型nun type
由单一值组成的简单类型,也称为空.
3.6.45
客体object
精确定义的一段信息、定义或规范,它要有名称以便标识其在通信实例中的用途。
注。这种客体可能像GB/T 16262. 2--2006中定义的信息客体。
3.6,46
客体描述符类型 object descriptor type
其非典型值是提供对信息客体简要描述的人可读的文本的类型。
注,客体描述符值常常与单个客体相关,只有害体标识符值无歧义地标识一个客体。
3.6.47
客体标识符object identifier
与无歧义地标识它的客体相关的全局唯一值。
3.6.48
客体标识符类型 object identifier type
其值是按标准GB/T 17969系列的规则分配的所有客体标识符的集合的简单类型。
注。GB/T 17969.1的规则允许各种机构独立地将客体标识符与信息客体相联系.
3.6.49
八位位组串类型 octetstring type
其非典型值是零个、一个或多个八位位组的有序序列的简单类型。每个八位位组是八个二进制位的有序序列。
3.6,50"
开放系统互连open systems interconnection
提供许多以缩写“OSI”开始、用于本部分的术语的计算机通信结构。
注:如果需要,这些术语的意义能从ITU-T Rec.X.ZOO系列和相当的I80/IEC标准中获得。如果ASN.1用于OSI环境.这些术语是唯一适用的.
3.6.51
开放类型记法 open type notation
用来表示取自不只一个ASN.1类型的值的集合的ASN.1记法。
注1 t在本部分的正文中,术语“开放类型”和“开放类塑记法一同义使用.
注2:所有ASN,1编码规则为单个ASN.1类型值提供无歧义编码,他们不必为一开放类型记法一提供无歧义的编码,因为“开放类型记法”携带取自在规范时刻通常没有确定的ASN.1类型的值。能元歧义确定鄢一字段的
抽象值前需要“开放类型记法”中被编码值的类型的知识。
注3:本部分中是“开放类型记法”的唯一记法是GB/T 16262.2--2006第14章中规定的“ObjectClassFieldType”,
这里的“FieidName"指明类型字段或者可变类型值字段。
3.6.52
(子类型的)双亲类型parent type (of a subtype)
定义子类型时受约束的、并支配子类型记法的类型。
注-双亲类型本身可能是某些其他类型的子类型。
3.6.53
产生式production
用于规定ASN.1的形式记法的一部分(也叫做语法规则或Backus-Naur Form,BNF)。
3.6.54
实数类型real type
一个简单类型,其非典型值(第20章中规定)是实数集合的一个成员。
3.6.55
(类型的)递归定义 recursive definition (of a type)
ASN.1的定义的一个集合,不能对这些定义重新排序,因此,结构中使用的所有类型在定义构造之前定义。
注:ASN.1中允许递归定义:记法的用户有责任保证所用(产生类型的)这些值有限定的表示法并且与类型相关的值集至少包含一个值。
3.6.56
相对客体标识符 relative object Identifier
通过其相对某些已知客体标识符(见3.6.47)的位置标识客体的值。
3.6.57
相对客体标识符类型 relative object identifier type
其值是所有可能相对客体标识符集的简单类型。
3.6.58
受限制字符串类型 restricted character string type
其字符取自类型规范中标识的固定字符汇的字符串类型。
3.6.59
精选类型 selection types
通过引用选择类型的成分类型定义的类型,而且其值精确地为那个成分类型的值。
3.6.60
序列类型sequence types
通过引用固定的、有序的类型列表(有些可能声明是可选的)定义的类型;序列类型的每个值是取自每个成分类型的值的有序列表。
注;当一个成分类型声明为可选时,序列类型的值不必包含那个成分类型的值。
3.6.61
单一序列类型 sequence-of types
通过引用单个成分类型定义的类型I单一序列类型中的每个值是成分类型的零个、一个或多个值的有序列表。
3.6.62
(约束的)连续应用 serial application (of constraints)
约束应用在已经受约束的双亲类型。
3.6.63
集合运算 set arithmetic
使用如46.2中规定的并集、交集和差集(使用EXCEPT)等运算的值或信息客体的新集的形式。
注z术语“值算法”没有覆盖约束连续应用的结果。
3.6.64
集合类型set types
通过引用固定的、无序的、类型(有些声明是可选的)列表定义的类型。集合类型中的每个值是一个无序的值列表,列表中的各个值取自相应的成分类型。
注当成分类型声明为可选时,集合类型的值不必包含那个成分类型的值.
3.6.65
单一集合类型 set-of types
通过引用单个成分类型定义的类型,单一集合类型中的每个值是成分类型的零个、一个或多个值的无序列表。
3.6.66
简单类型simple types
通过直接规定其值集来定义的类型。
3,6.67
同隔字符 spacing character
字符汇中的字符,它用来包括字符串打印中的图形字符,但用空间隔在物理解释中表示。通常,不认为它是控制字符(见3.6. 17)。
注:字符汇中可能有单个间隔字符,或宽度可变的多个间隔字符.
3.6.68
(双亲类型的)子类型subtype (of n parent type)
其值是某些其他类型(双亲类型)值的子集(或完整集)的类型。
3.6.69
标记tag
与每个ASN.1类型相关的类型记号。
3,6.70
已标记类型 tagged type
通过引用单个现存类型和标记来定义的类型,新类型与该现存类型同构,但与它不等同。
3.6.71
置标记tagging
用规定的标记替换某个类型现有(可能是默认)的标记。
3.6.72
传送语法transfer syntax
用来交换抽象语法中抽象值的位串的集合,通常是将编码规则应用在抽象语法上获得。
注:术语“传送语法”与“编码”同义。
3.6.73
真true
布尔类型中的非典型值的一个(也见“假”)。
3.6.74
类型type
已命名的值集合。
3.6.75
类型引用名type‘reference name
在某些上下文中唯一与类型相联系的名称。
注t指派引用名给本部分中定义的类型,在ASN.1中是警道存在的。其他引用名在其他标准中定义,并只适用于那个标准的上下文中.
3.6,76
未膜制字符串类型 unrestricted character string type
其抽象值取自字符抽象语法、并且带字符抽象语法及用于其编码的字符传送语法的标识的值的类型。
3,6.77
(ASN.1)用户user (of ASN.1)
用ASN.1定义一段特定信息的抽象语法的个人或组织。
3.6.78
值映射value mapping
能使引用那些值的一个用来引用其他值的两个类型中的值之间的1-1对应关系。例如,这能用在规定子类型和默认值中(见附录B)。
3.6.79
值引用名 value reference name
在某些上下文中唯一与值相联系的名称。
3.6.80
值集(合)value set
类型的值的集合,语义上相当于子类型。
3.6.81
版本括号version brackets
一对用来描画扩展附加组开始和结束的相邻左括号和右括号([[或]])。紧接在左括号对后面可以有选择地给出扩展附加组版本号的数字。
3.6.82
版本号version number
能与版本括号相联系的数字(见G. 1.8)。
注:版本号不能加在不是扩展附加组一部分的扩展附加上,也不能加在非选择、序列或集合的任意类窭的扩展附加上.
3.6. 83
空白 white-space
任何在打印页上产生间隔的格式化动作,例如:空格或制表。
4缩略语
本部分采用下列缩略语:
ASN.1 抽象语法记法一
BER ASN.1基本编码规则
BMP 基本多文种平面
DCC 数据国家代码
DNIC 数据网络标识代码
ECN ASN.1编码控制记法
ICE) 国际代码指定者
IEC 国际电工委员会
ISO 国际标准化组织
ITU-T 国际电信联盟一电信标准化部 、
OID 客体标识符
OSI 开放系统互连
PER ASN.1的紧缩编码规则
ROA 公认的运营机构
UCS 通用多八位编码字符集
UTC 国际协调时
可扩展置标语言5记法
5.1概述
5.1.1 ASN.1记法由取自第10章规定的ASN.1字符集的字符序列组成。
5.1.2每次使用ASN.1记法包括从ASN.1字符集中抽取字符并组合为词项。第11章规定了组成词项的字符的所有序列,并命名了每个项。
5.1.3在第12章(以及以下几章中),ASN.1记法的规定是通过对组成ASN.1记法有效实例的词项的那些序列的规定和命名,及对每个序列的ASN.1语义的规定来实现的。
5.1.4为了规定词项的允许序列,本部分使用下面各条中定义的形式记法。
5.2产生式
5.2.1 所有的词项都已命名(见第1 1章),并且词项的允许序列也都已命名。
5.2.2一个新的(更复杂的)词项的允许序列是通过产生式是来定义的。它使用词项的名称和词项的允许序列,并形成词项的新已命名允许序列。
5.2.3每个产生式由下面几个部分组成,占一行或几行,次序是:
a)词项新允许序列的名字;
b)字符
::==
c)一个或多个5.3中所定义的词项的替换序列,使用下面字符分隔/
5.2.4一个词项序列若在一个或多个替换项中出现,则它在词项的新允许序列中出现。在本部分中,词项的新允许序列用上面5.2.3a)中的名字引用。
注著词项同一序列出现在多个替换项中,产生的记法中任何语义上的蚊义性由相关文本解决.
5.3替换项集
5.3.1产生式(见5.2.3c)中的每个替换项由名称列表来规定。每一个名称或者是一个词项名,或者是一个由某些其他产生式定义和命名的词项的允许序列的名称。
5.3.2每个替换项定义的词项允许序列由所有这样获得的序列组成,取任何一个与第一个名称相关的序列(或词项),(然后)和任何一个与第二个名称相关的序列(或词顼)组合.(然后)和任何一个与第三个名称相关的序列(或词项)组合,等等,直到包括替换项中最后的一个名称(或词项).
5.4非间隔指示符
如果产生式序列的这些项之间插入非间隔指示符“&”(AMPERSAND),那么它前面的词项和它后面的词项不应该用空白隔开。
5.5产生式的示例
5.5.1产生式:
ExampleProduction:i=
bstring l
hstring I
”{”IdentifierList”}”
使名称“ExampleProduction"与词项的下列序列相关:
a)任何“bstring"(词项)}或
b)任何"hstring"(词项)I或
c)任何与“IdentifierList"相关的词项序列,用”{”开始,用”)”结束。
注:”{“和”)”是含有单个字符(和)的词硬名称(见11,26)。
5.5.2本例中,“IdentifierList”由进一步的产生式定义,可以在定义“ExampleProduetion"的产生式之前或之后。
5.6样式
本部分中使用的每个产生式前面或后面都有一个空行。产生式中没有空行。产生式可以在一行上或者分布在几行上。样式并不重要。
5.7递归
本部分中的产生式通常是递归的。在这种情况下,只要有新的序列产生,产生式就要继续重复。
注;在很多情况下,这种反复应用导致词项的允许序列的无穷集,集合中的某些或者所有序列本身可能包含的词项数目不限定,这没有错.
5.8词项允许序列的引用
本部分通过引用产生式中出现在..=之前的名称来引用词项的允许序列(ASN.1记法的一部分),除非它就作为产生式的一部分出现,否则,这个名称用QUOTATION MARK (34)字符(”)括起来,以便把它和自然语言文本区分开来.
5.9词项的引用
本部分通过使用词项的名称来引用词项,当名称在自然语言文本中出现,并且可能与该文本混淆时,那么,把它用QUOTATION MARK (34)字符(n)括起来。
5.10缩写记法
为了使产生式更加准确和更可读,下面的缩写记法用于本部分的词项的允许序列定义中,且也用在GB/T 16262.2,GB/T 16262.3,GB/T 16262.4中.
a) “A玎和“B”两个名称之后的星号(*)表示“empty”词项(见I1.7),或与”A”相关的词项的允许序列之一,或与“A”相关的词项序列之一和与”B”,相关的词项序列之一的替换序列,两者都以与“A”相关一个开始和结束。因此:C::=AB*
相当于:
C=. =Dlempty
D==AIABD
“D"是不会在产生式中其他地方出现的辅助名。
例如:“C。;=AB*圩是C的下列替换项的缩写记法。
empty
A
ABA
ABABA
ABABABA
b)加号(+)与a)中的星号类似,只是不包括"empty刀词项.因此:
E::=AB+
相当于:
E,.=AIABE
例如:“E.-=AB+圩是E的下列替换项的缩写记法:
A
ABA
ABABA
ABABABA
c) 名称后的问号(?)表示“empty"词项(见11.7)或与“A刀相关的词项的允许序列,因此:
F::=A?
相当于:
F: ,=empty[A
注.这些缩写记法优先于产生式序列中的词项并置(见5.2.2)。
5.11值引用和值的类型
5.11.1 ASN.1值赋值记法能把名称给与规定类型的值。只要需要引用那个值时就能采用这个名称。
附录B描述和规定了允许用一个类型值的值引用名称来标识第二个(相似)类型的值的值映射机制。因此,只要要求引用第二个类型中的值就能使用引用第一个值。
5. 11.2在ASN.1标准正文中,用正常的英语文本来规定包含不止一个类型构造的合法性(或其他)。
这些合法性规范通常要求两个或更多个类型“兼容”。例如,使用值引用时,要求用于定义值引用的类型与支配类型“兼容”。附录B采用值映射概念来为任意给出的ASN.1构造是否合法给出精确的描述。
6类型扩展的ASN.1模块
当解码可扩展类型时,解码器可检测:
a)序列或集合类型中缺少希望的扩展附加;或
b)序列或集合类型(若有)中定义的那些扩展附加之上出现任意不希望的扩展附加,或者选择类型中出现未知的替换项,或者枚举类型中出现未知的枚举,或可扩展其约束的类型出现不希
望长度或值。
在形式术语中,可扩展类型“X"定义的抽象语法包含的不仅是类型“x"的值,而且有与“X"扩展有
关的所有类型的值。因此,无论发现上面a)或b)的哪种情形,解码过程从会发出错误的信号。每种情形中采取的动作由ASN.1规定者确定。
注:通常,动作将忽略出现不希望的扩展附加,而且会为缺少的、希望扩展附加使用默认值或。丢失一指示器.
可扩展类型中解码器检测到的不希望扩展附加,后来能包含在那一类型的随后编码中(以转发回发送者,或某些第三方),只要在随后的转发中使用相同的传送语法。
7编码规则的可扩展性要求
注t这些要求适用于标准化的编码规则。它们不适用于用ECN定义的编码规则(见ISO/IEC 8825-3)。
7.1所有ASN.1编码规则应允许可扩展类型“X”的值以它们能用与“X一扩展有关的可扩展类型“Y”解码的方式编码。而且,编码规则应允许用“Y”解码的值(用“Y")重新编码和用与“Y”(而且由此也有“X")扩展有关的第三个可扩展类型“Z”解码。
注。类型“X”、“Y”、“Z”可能在扩展序列中以任何顺序出现。
如果可扩展类型“X”的值被编码,并且随后被传递(直接或通过用扩展有关的类型“Z”的传递应用)到另一个用与“X"扩展有关的可扩展类型“Y疗解码的应用,然后使用类型“Y”的解码器获得由如下构成的抽象值:
a)扩展根类型的抽象值;
b)在“X”和“Y"中都出现的每个扩展附加的抽象值;
c)只有“X”中有而“Y”中没有的每个扩展附加(如果有的话)的无限制编码。
如果应用层也这样要求,c)中的编码应该能包含在“Y”值后面的编码中。那个编码应该是“X”值的有效编码。 ’
指导示例:如果系统A使用带是可选整数类型扩展附加的序列类型或集合类型的可扩展根类型(类型“X"),而系统B使用有每个是可选整数类型的两个扩展附加的、与扩展有关的类型(类型“Y”).那么,用B传输忽略第一个扩展附加的整数值而包括第二个的“Y”值决不能用出现它了解的X的第一个(只有)扩展附加与A混淆。而且,如果应用协议也这样要求的话.A必须能重新编码带有作为第一个整数类型出现的值、随后跟有从B收到的第二个整数值的“X”值。
7.2所有的ASN.1编码规则应该规定以如下方式编码和解码枚举类型和选择类型的值;如果转送的值是在由编码器和解码器共同保持的扩展附加集中,那么,它被成功地解码,否则,解码器将可能限定它的编码并把它标识为(未知)扩展附加值。
7.3所有的ASN.1编码规则应该规定以如下方式编码和解码有可扩展约束的类型:如果转送的值是在由编码器和解码器共同保持的扩展附加集中,那么,它被成功地解码,否则,解码器将可能限定它的编码并把它标识为(未知)扩展附加值。
在所有的情况下,出现扩展附加不应该影响当带扩展标志的类型套人某些其他类型内时认识后面材料的能力。
注.1;ASN.1基本编码规则的所有变量和ASN.1的紧缩编码规则满足所有这些要求。用ECN定义的编码规则不必满足所有这些要求,但是也可能满足。
注2:PER和BER不标识扩展附加编码中的版本号。用ECN规定的编码可能提供也可能没提供这样的标识.
8标记
8.1标记是通过给出它的类别和类别中的号码来说明的,类别是下列之一:
通用
应用
专用
上下文规定
8.2号码是一个非负整数,用十进制记法规定。
8.3第30章中规定了ASN.1用户指派的标记的限制。
注,第30章中包括不允许本记法的用户显式地规定他们的ASN.1规范中通用类别标记的限制。标记的用法之间与另外三个类别没有形式上的差别。当采用应用类别标记时,通常可以应用专用或上下文规定类别标记替代,作为用户选择和风格。出现三个类别主要是出于历史原因,但是E-2.12中以通常采用类别的方式给出了指南。
8.4表1总结了在本部分中规定的通用类别里标记的分配。
表1 通用类别标记分配
通用类别O 通用类别1 通用类别2 通用类别3 通用类别4 通用类别5 通用类别6 通用类别7 通用类别8 通用类别9 通用类别10 通用类别11 通用类别l2 通用类别13 通用类别14-15 通用类别16 通用类别17 通用类别18-22,25-30 通用类别23-24 通用类别31-… |
保留为编码规则使用 布尔类型 整数类型 位串类型 八位位组串类型 空类型 客体标识符类型 客体描述符类型 外部类型和单一实例类型 实数类型 枚举类型 嵌入pdv类型 UTF8串类型 相对客体标识符类型 为本部分的将来版本保留 序列和单一序列类型 集合和单一集合类型 字符串类型 时间类型 为本部分的附录保留 |
8.5有些编码规则要求标记有正则顺序。为了一致,8.6中定义了标记的正则顺序。
8.6标记的正则顺序以每个类型的最外层标记为基础并定义如下:
a)那些带通用类别标记的元素或替换项应首先出现,接着是那些带应用类别标记的,再是那些带
上下文规定标记的,然后是那些带专用类别标记的。
b) 在标记的每个类别内,元素或替换项应以其标记数字的递增顺序出现.
9 ASN.1记法的使用
9.1 类型定义的ASN.1记法为“Type”(见16.1)。
9.2类型的值的ASN.1记法为“Value”(见16.7)。
注,在不知道类型的有关知识时,通常不能解释值的记法。
9.3将类型指派给类型引用名的ASN.1记法应为“TypeAssignment”(见15.1)、“ValueSetTypeAs-signment”(见15.6)、“ParameterizedTypeAssignment”(见GB/T 16262.4, 8.2),或者“Parameterized-
ValueSetTypeAssignment”(见GB/T 16262.4--2006的8.2).
9.4将值指派给值引用名的ASN.1记法应为。ValueAssignment”(见15.2)或者“ParameterizedVal-ueAssignment”(见GB/T 16262.4--2006的8.2).
9.5记法“Assignment”的产生式替换项应只用在记法“ModuleDefinition"(12.1注2中规定的除外)内。
10 AsN.1宇符集
10.1 除10.2和10.3的规定外,词项应由表2中列出的字符的序列组成。在表2中,字符由
GB/T 13000. 1--1993给出的名称标识。
表2 ASN.1字符
A至Z 拉丁大写字母A至拉丁大写字母Z (LATIN CAPITAL LETTER A到LATIN CAPITAL LETTER Z) 8至z 拉丁小写字母A至拉丁小大写字母Z (LATIN SMALL LETTER A到LATIN SMALL LETTER Z) O至9 数字0至数字9 (DIGIT ZERO至DIGIT 9) ! 感叹号 (EXCLAMATION MARK) ” 双引号 (QUOTATION MARK) & 和 (AMPERSAND) ′ 撤号 (APOSTROPHE) ( 左圆括号 (LEFT PARENTHESE) ) 右圆括号 (RIGHT PARENTHESE) *星号(ASTERISK) ,逗号 (COMMA) -负号 (HYPHEN-MINUS) 。句号 (FULL STOP) /斜线(SOLIDUS) :冒号 (COLON) ;分号 (SEMICOLON) ≤小于符号 (LESS-THAN SIGN) =等于符号 (EQUALS SIGN) ≥大于符号 (GREATER-THAN SIGN) @商用AT符号 (COMMERCIAL AT) |
表2(续)
[ 左方括号 (LEFT SQUARE BRACKET) ] 右方括号 (RIGHT SQUARE BRACKET) ‘ 向上箭号 (CIRCUMFLEX BRACKET) 一 下横线 (LOW LINE) ( 左花括号 (LEFT CURLY BRACKET) I 竖线 (VERTICAL LINE) } 右花括号 (RIGHT CURLY BRACKET) |
注:等价的有关标准由我国标准化组织给出,附加字符可能在下面的诃项中出现;
--typerreference(见1 1.2)5
--identifier(见工1.3)I
--valuereferenee(见l1.4);
一modulereference(见1 1.5)t
当附加字符用在一种大小写无区别的文种时,由以上某些词项的第一个字符的不同情况导致的语义区别将用别的办法来处理,这就允许有效的ASN.1规范以各种文种书写.
10.2当用该记法来规定字符串类型的值时,在ASN.1记法中可以出现已定义字符集中的所有字符,括以双引号QUOTATION MARK(a4) 字符(”)(见11.14)。
10.3附加(任意)的图形符号可出现在“comment"词项中(见11.6)。
10.4印刷的字体、大小、色彩、亮度或其他显示特性无关紧要。
10.5大写字母和小写字母应该视为不同。
10.6 ASN.1定义在诃项之间也可包含空白字符(见11.1.6)。
11 ASN.1词项
11.1 一般原则
11.1.1下列各条规定词项中的字符。在每种情况下,都给出词项的名称,以及形成词项的字符序列的定义。
11.1.2本第11章的各条中规定的每个词项(除多行“commentn、%string"、“hstring”和。cstring"外)不应包含空白(见11.6、11.10、11.12和II. 14)。
11.1,3行的长度不受限制。
11.1.5若后续词项的起始字符(或多个字符)是前项词项中字符末尾包括的容许字符(或多个字符)时,词项与后续词项间要用一个或多个空白或注解实例隔开。
11.1,6本部分使用术语“新行”和“空白”。在机器可读的规范中的表示(行尾)空白和新行中,任意一个或多个下面的字符可用在任意组合中(对每个字符,给出Unicode编码标准规定的字符名称和字符代码):
对于空白;
HORIZONTAL TABULATION (9)
I,INEFEED (10)
VERTICAL TABULATION (11)
FORM FEED (12)
CARRIAGE RETURN (13)
SPACE (32)
对于新行:
LINE FEED (10)
VERTICAL TABULATION (11)
FORM FEED(12)
CARRIAGE RETURN (13)
注:任何是有效新行的字符或字符序列也是有效的空白。
11.2类型弓f用
词项名——typereference
11.2.1“typereference”应由任意个(一个或多个)字母、数字和连字符组成。以大写字母开头。不能用连字符结尾,一个连字符不能紧接另一个连字符。
注.有关连字符的规则是为了避免与(可能后随的)注解歧义.
11.2.2“typereference”不应是11.27中列出的保留字符序列之一。
11.3标识符 ·
词项名——identifier
“identifier”应由任意个(一个或多个)字母、数字和连字符组成。以小写字母开头。不能用连字符结尾。一个连字符不能紧接另一个连字符。
注。有关连字符的规则是为了避免与(可能后随的)注解坟义.
11.4值引用
词项名——valuereference
“valuereference”应由11.3中为“identifier”规定的字符序列组成。分析使用这一记法的实例时,“valuereference”由其出现的上下文来与“identifier'lg别。
11.5模块引用
词项名——modulereference
.“modulerefereace”应由11.2中规定为“typereference”的字符序列组成。分析使用这一记法的实例时,“modulereference”由其出现的上下文来与“typereference"区别。
11.6注解
词项名——comment
11.6.1在ASN.1记法的定义中不引用“comment"。、但它可以在任意时候出现在别的词项之间,而且没有语法意义,
注一虽然如此,在使用ASN.1的本部分上下文中,ASN.1注解可含有与应用语义有关的标准文本或对语法的、约束.
11.6.2词项“comment”能有两种形式:
a)如11.6.3定义的以“~”开始的一行注解l
b)如11.6.4定义的以“/*”开始的多行注解。
11.6.3只要“comment”以一对相连的连字符开始,它就应该以下一对相连的连字符或行尾为结束,无论哪一个在前面。注解除了开始的一对连字符及结尾的一对连字符(若有的话)外,不能有一对相连的连字符-如果以“一”开始的注解包括相连的字符“/*”或“*/”,那么它们没有特别的意义并且认为是注解的一部分。注解可以包括没有在10.1中规定的字符集中的图形符号(见10.3)。
11.6.4只要“comment”以“/*”开始,它就应该以对应的“*/”结束,不管这个“*/”是否在同一行。
如果在“*/”之前发现另一个“/*",那么当为每个“/*”发现配对的“*/”时注解应终止。如果以“/*”开始的注解包含两个相连的连字符“一”,这些连字符没有特别的意义并且认为是注解的一部分。注解可以包括在10.1中规定的字符集中没有的图形符号(见10.3)。
注t这就允许用户注解已经含有注懈的ASN.1模块部分。(不管它们是以“一”或“/*”开始),只要被注解出的部分内没有含有“/*”或“*/”的字符串值,通过简单地在被注解的部分开头插入“/*”和其结尾插入。-/”.
11.7空词项
词项名——empty
“empty”项不包括字符,当规定了产生式序列的替换项集时,它用于第5章的记法中以指明可能所有替换项缺失。
11.8数
词项名——number
“number"应由一个或多个数字组成。除非“number”是单个数字,否则第一位数字不应该是O。
注:通过将它解释成十进制记法,“number词项总是映射成整数值。
1l.9实数
词项名——realnumber
“realnumber”应该由是一串一位或多位数字、而且可以选择十迸制小数点(.)的整数部分组成。十进制小数点可以选择地后接一位或多位数字的分数部分。整数部分、十进制小数点或分数部分(不管哪个先出现)可以有选择地后接e或E和是一.位或多位数字的选择签名指数。除非指数是单个数字,否则,它的起始数字不应该是零。
11.10二迸制数串
词项名——bstring
"bstring”应由任意个(可能O个)字符o、1组成,可能混杂着空白、前置APOSTROPHE(39)字符(′),后随一对字符’B。
例如:’OllOlll00'B
二进制数串词项中的空白事件没有意义。
二进制数串项 应该由任意个(可能零个)o、1或者空白组成。二进制数串项中出现的任何空白字符没有意义。例如:01101100
11.12+六进制数串
词项名——hstring
11.12.1 “hstr.ing”应由任意个(可能0个)字符:ABCDEF0123456789组成,可能混杂着空白,前置APOSTROPHE(39)字符“b,,后随一对字符’H。
例如:’AB0196'H。
十六进制数串词项中的空白事件没有意义。
11.12.2每个字符用十六进制表示法来表示4位的值。
十六进制数串项 应该由任意个(可能零个)0123456789ABCDEFabcdef或者空白组成。十六进制数串项中出现的任何空白字符没有意义。例如:Ab0196
用十六进制表示的每个字符来表示4位的值。
11.14字符串
词项名——estring
11.14.1“cstring”应由任意个(可能o个)图形符号和来自字符串类型引用的字符集中的间隔字符组成,前、后置QUOTATION MARK (34)字符(”)。如果字符集中含有QUOTATION MARK (34)字符,这一字符(如果出现在用“cstring”表示的字符串中)应用在不插人间隔字符的同一行中的一对QUOTATION MARK(34)字符在“cstring”中表示。“cstring”可能跨过几行文字,在这种情况下,描述的字符串不应在“cstring”中行尾的前或后位置上包含有间隔字符。紧接“cstring”中行尾的前或后出现的空白没有意义。
注1,“cstring”只能用来无歧义地(在打印页上)表示字符串,该被描述的字符串中的每个字符要么指派一个图形符号,要么是一个间隔字符a当要在打印表示中指明包含控制字符的字符串时,可用替换项ASN.1语法(见第35章)。
注2t“cstring”表示的字符串应由与图形符号相关的字符和间隔字符组成。紧接“cst,ing”中任意行尾前或后的间
隔字符不是所表示的字符串的一部分(它们被忽略掉),当。cstring”中含有间隔字符串时,或字符汇中的图形符号在打印表示中不是无歧义时."cstring”指示的字符串可能在那个打印表示中有歧义。
例1:“屎尻市弑”
例2t“cstring”
”ABCDE FGH
“IJK” ”XYZ”
可用来表示类型IASString的字符串值。所表示的值由下列字符组成:
ABCDE FGHUK”XYZ
如果打印规范中使用成比例的间隔字体(如上所用的),或者如果字符汇包含多个不同宽度的间隔字符,则E和F之间预计空间的准确数在打印表示中可能有歧义。
11.14.2当字符是组合字符肘,它应在“cstring”的打印表示中指明为一个单独的字符。它不应该用组成它的字符套印。(这样保证了打印版本中无歧义地定义了串中组成字符的顺序。)
例如:小写的“e”和重音组成字符在GB/T 13000.1中是两个字符,因此,在对应的“cstring”中打印为两个字符而不是单个字符∈。
字符串项 应该由任意个(可能o个)下面的GB/T 13000.1字符组成: .a)HORIZONTAL TABULATION (9》
b) LINE FEED (10);
c) CARRIAGE RETURN (13);
d)其GB/T 13000.1字符代码在32(十六进制20)至55295(十六进制DTFF)(含)范围内的任意字符}
e)其GB/T 13000.1字符代码在57344(十六进制E000)至65533(十六进制FFFD)(含)范围内的任意字符;
f)其GB/T 13000.1字符代码在65536(十六进制i0000)至1114111(十六迸制10FFFF)(含)范围内的任意字符;
11.15.2 字符“&”(AMPERSAND)、‘‘<”(LESS-THAN SIGN)或“>”(GREATER-THAN SIGN)应该只作为】1.15.4或11.15.5规定的字符序列之一的一部分出现。
用来表示受限制字符串(见37,9)的值,并且能用来直接或通过用下面规定的转义序列表示GB/T 13000.1字符的所有组合。a)11.15.8中规定的转义序列l或
b)各自的转义序列“&amp}"、“6.It;”、“&gtI”。这些转义序列不应该包含空白(见11.1.6)。
11.1.6)。注,这里不包括带十进制字符代码9、1D和13及这些字符序列中所有小写的字母。
GB/T 13000.1字符编码 |
|
|
|
0(十六进制0) |
<nul/> |
1(十六进制1) |
<soh/> |
2(十六进制2) |
<stx/> |
3(十六进制3) |
<etx/> |
4(十六进制4) |
<eot/> |
5(十六迸制5) |
<enq/> |
6(十六进制6) |
<ack/> |
7(十六进制7) |
<bel/> |
8(十六进制8) |
<bs/> |
11(十六进制B) |
<vt/> |
12(十六进制C) |
<ff/> |
14(十六进制E) |
<so/> |
15(十六进制F) |
<si/> |
16(十六进制IO) |
<dIe/> |
17(十六进铽11) |
<dcl/> 、 |
18(十六进制12) |
<dc2/> |
19(十六迸射13) |
<de3/> |
20(十六迸制I4) |
<dc4/> |
21(十六进制15) |
<nal/> |
22(十六进翻16) |
<syn/> |
23(十六进制l7) |
<etb/> |
24(十六进制l8) |
<can/> |
25(十六进制19) |
<era/> |
26(十六进钳1A) |
<sub/> |
表3(续)
GB/T 16262.1--2006/ISO/IEC 8824-1:2002
GB/T 13000.1字符编码 |
|
27(十六进制IB) |
<esc/> |
28(十六进制1C) |
<is4/> |
29(十六进制ID) |
<is3/> |
30(十六进箭1E) |
<is2/> |
31(十六进制1F) |
<isl/> |
11.15.8中规定的转义序列应该表示至少一个相连的HYPHEN-MINUS(45)字符。 2706