Network Working Group                                            S. Legg
Request for Comments: 3641                           Adacel Technologies
Category: Standards Track                                   October 2003
        
Network Working Group                                            S. Legg
Request for Comments: 3641                           Adacel Technologies
Category: Standards Track                                   October 2003
        

Generic String Encoding Rules (GSER) for ASN.1 Types

ASN.1类型的通用字符串编码规则(GSER)

Status of this Memo

本备忘录的状况

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

本文件规定了互联网社区的互联网标准跟踪协议,并要求进行讨论和提出改进建议。有关本协议的标准化状态和状态,请参考当前版本的“互联网官方协议标准”(STD 1)。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2003). All Rights Reserved.

版权所有(C)互联网协会(2003年)。版权所有。

Abstract

摘要

This document defines a set of Abstract Syntax Notation One (ASN.1) encoding rules, called the Generic String Encoding Rules (GSER), that produce a human readable text encoding for values of any given ASN.1 data type.

本文档定义了一组抽象语法表示法1(ASN.1)编码规则,称为通用字符串编码规则(GSER),用于为任何给定ASN.1数据类型的值生成人类可读的文本编码。

Table of Contents

目录

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Conventions. . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Generic String Encoding Rules. . . . . . . . . . . . . . . . .  3
       3.1.  Type Referencing Notations . . . . . . . . . . . . . . .  3
       3.2.  Restricted Character String Types. . . . . . . . . . . .  4
       3.3.  ChoiceOfStrings Types. . . . . . . . . . . . . . . . . .  5
       3.4.  Identifiers. . . . . . . . . . . . . . . . . . . . . . .  6
       3.5.  BIT STRING . . . . . . . . . . . . . . . . . . . . . . .  7
       3.6.  BOOLEAN. . . . . . . . . . . . . . . . . . . . . . . . .  7
       3.7.  ENUMERATED . . . . . . . . . . . . . . . . . . . . . . .  8
       3.8.  INTEGER. . . . . . . . . . . . . . . . . . . . . . . . .  8
       3.9.  NULL . . . . . . . . . . . . . . . . . . . . . . . . . .  8
       3.10. OBJECT IDENTIFIER and RELATIVE-OID . . . . . . . . . . .  8
       3.11. OCTET STRING . . . . . . . . . . . . . . . . . . . . . .  9
       3.12. CHOICE . . . . . . . . . . . . . . . . . . . . . . . . .  9
       3.13. SEQUENCE and SET . . . . . . . . . . . . . . . . . . . . 10
       3.14. SEQUENCE OF and SET OF . . . . . . . . . . . . . . . . . 10
       3.15. CHARACTER STRING . . . . . . . . . . . . . . . . . . . . 11
       3.16. EMBEDDED PDV . . . . . . . . . . . . . . . . . . . . . . 11
       3.17. EXTERNAL . . . . . . . . . . . . . . . . . . . . . . . . 11
        
   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Conventions. . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3.  Generic String Encoding Rules. . . . . . . . . . . . . . . . .  3
       3.1.  Type Referencing Notations . . . . . . . . . . . . . . .  3
       3.2.  Restricted Character String Types. . . . . . . . . . . .  4
       3.3.  ChoiceOfStrings Types. . . . . . . . . . . . . . . . . .  5
       3.4.  Identifiers. . . . . . . . . . . . . . . . . . . . . . .  6
       3.5.  BIT STRING . . . . . . . . . . . . . . . . . . . . . . .  7
       3.6.  BOOLEAN. . . . . . . . . . . . . . . . . . . . . . . . .  7
       3.7.  ENUMERATED . . . . . . . . . . . . . . . . . . . . . . .  8
       3.8.  INTEGER. . . . . . . . . . . . . . . . . . . . . . . . .  8
       3.9.  NULL . . . . . . . . . . . . . . . . . . . . . . . . . .  8
       3.10. OBJECT IDENTIFIER and RELATIVE-OID . . . . . . . . . . .  8
       3.11. OCTET STRING . . . . . . . . . . . . . . . . . . . . . .  9
       3.12. CHOICE . . . . . . . . . . . . . . . . . . . . . . . . .  9
       3.13. SEQUENCE and SET . . . . . . . . . . . . . . . . . . . . 10
       3.14. SEQUENCE OF and SET OF . . . . . . . . . . . . . . . . . 10
       3.15. CHARACTER STRING . . . . . . . . . . . . . . . . . . . . 11
       3.16. EMBEDDED PDV . . . . . . . . . . . . . . . . . . . . . . 11
       3.17. EXTERNAL . . . . . . . . . . . . . . . . . . . . . . . . 11
        
       3.18. INSTANCE OF. . . . . . . . . . . . . . . . . . . . . . . 11
       3.19. REAL . . . . . . . . . . . . . . . . . . . . . . . . . . 11
       3.20. Variant Encodings. . . . . . . . . . . . . . . . . . . . 12
   4.  GSER Transfer Syntax . . . . . . . . . . . . . . . . . . . . . 13
   5.  Security Considerations. . . . . . . . . . . . . . . . . . . . 13
   6.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
       6.1.  Normative References . . . . . . . . . . . . . . . . . . 13
       6.2.  Informative References . . . . . . . . . . . . . . . . . 14
   7.  Intellectual Property Notice . . . . . . . . . . . . . . . . . 15
   8.  Author's Address . . . . . . . . . . . . . . . . . . . . . . . 15
   9.  Full Copyright Statement . . . . . . . . . . . . . . . . . . . 16
        
       3.18. INSTANCE OF. . . . . . . . . . . . . . . . . . . . . . . 11
       3.19. REAL . . . . . . . . . . . . . . . . . . . . . . . . . . 11
       3.20. Variant Encodings. . . . . . . . . . . . . . . . . . . . 12
   4.  GSER Transfer Syntax . . . . . . . . . . . . . . . . . . . . . 13
   5.  Security Considerations. . . . . . . . . . . . . . . . . . . . 13
   6.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
       6.1.  Normative References . . . . . . . . . . . . . . . . . . 13
       6.2.  Informative References . . . . . . . . . . . . . . . . . 14
   7.  Intellectual Property Notice . . . . . . . . . . . . . . . . . 15
   8.  Author's Address . . . . . . . . . . . . . . . . . . . . . . . 15
   9.  Full Copyright Statement . . . . . . . . . . . . . . . . . . . 16
        
1. Introduction
1. 介绍

This document defines a set of ASN.1 [8] encoding rules, called the Generic String Encoding Rules or GSER, that produce a human readable UTF-8 [6] character string encoding of ASN.1 values of any given arbitrary ASN.1 type.

本文档定义了一组ASN.1[8]编码规则,称为通用字符串编码规则或GSER,用于生成任意ASN.1类型ASN.1值的人类可读UTF-8[6]字符串编码。

Note that "ASN.1 value" does not mean a Basic Encoding Rules (BER) [12] encoded value. The ASN.1 value is an abstract concept that is independent of any particular encoding. BER is just one possible encoding of an ASN.1 value.

请注意,“ASN.1值”并不意味着基本编码规则(BER)[12]编码值。ASN.1值是一个抽象概念,独立于任何特定编码。BER只是ASN.1值的一种可能编码。

GSER is based on ASN.1 value notation [8], with changes to accommodate the notation's use as a transfer syntax, and to support well established ad-hoc string encodings for Lightweight Directory Access Protocol (LDAP) [14] directory data types.

GSER基于ASN.1值表示法[8],进行了修改,以适应表示法作为传输语法的使用,并支持轻量级目录访问协议(LDAP)[14]目录数据类型的完善的即席字符串编码。

Though primarily intended for defining the LDAP-specific encoding of new LDAP attribute syntaxes and assertion syntaxes, these encoding rules could also be used in other domains where human readable renderings of ASN.1 values would be useful.

虽然这些编码规则主要用于定义新LDAP属性语法和断言语法的特定于LDAP的编码,但也可以在其他领域中使用,在这些领域中,ASN.1值的可读呈现将非常有用。

Referencing GSER is sufficient to define a human readable text encoding for values of a specific ASN.1 type, however other specifications may wish to provide a customized Augmented Backus-Naur Form (ABNF) [3] description, independent of the ASN.1, as a convenience for the implementor (equivalent ABNF for the GSER encodings for ASN.1 types commonly occurring in LDAP syntaxes is provided in a separate document [15]). Such a specification SHOULD state that if there is a discrepancy between the customized ABNF and the GSER encoding defined by this document, that the GSER encoding takes precedence.

参考GSER足以为特定ASN.1类型的值定义人类可读的文本编码,然而,其他规范可能希望提供独立于ASN.1的定制扩展巴科斯瑙格式(ABNF)[3]描述,以方便实现者(LDAP语法中常见的ASN.1类型的GSER编码的等效ABNF在单独的文档[15]中提供)。此类规范应说明,如果自定义ABNF和本文档定义的GSER编码之间存在差异,则GSER编码优先。

2. Conventions
2. 习俗

Throughout this document, "type" shall be taken to mean an ASN.1 type, and "value" shall be taken to mean an ASN.1 value.

在本文件中,“类型”应指ASN.1类型,“值”应指ASN.1值。

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119 [1].

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照BCP 14、RFC 2119[1]中的描述进行解释。

3. Generic String Encoding Rules
3. 通用字符串编码规则

The GSER encoding of a value of any ASN.1 type is described by the following ABNF [3]:

任何ASN.1类型的值的GSER编码由以下ABNF[3]描述:

Value = BitStringValue / BooleanValue / CharacterStringValue / ChoiceValue / EmbeddedPDVValue / EnumeratedValue / ExternalValue / GeneralizedTimeValue / IntegerValue / InstanceOfValue / NullValue / ObjectDescriptorValue / ObjectIdentifierValue / OctetStringValue / RealValue / RelativeOIDValue / SequenceOfValue / SequenceValue / SetOfValue / SetValue / StringValue / UTCTimeValue / VariantEncoding

Value=BitStringValue/BooleanValue/CharacterStringValue/ChoiceValue/EmbeddedPDVValue/EnumeratedValue/ExternalValue/GeneralizedTimeValue/IntegerValue/InstanceOfValue/NullValue/ObjectDescriptorValue/ObjectIdentifierValue/OctetStringValue/RealValue/RelativeIdValue/SequenceOfValue/SetOfValue/SetValue/StringValue/UTCTimeValue/VariantEncoding

The ABNF for each of the above rules is given in the following sections.

以下章节给出了上述各规则的ABNF。

3.1 Type Referencing Notations
3.1 类型引用符号

A value of a type with a defined type name is encoded according to the type definition on the right hand side of the type assignment for the type name.

具有已定义类型名的类型的值将根据类型名的类型赋值右侧的类型定义进行编码。

A value of a type denoted by the use of a parameterized type with actual parameters is encoded according to the parameterized type with the DummyReferences [11] substituted with the actual parameters.

使用带有实际参数的参数化类型表示的类型值根据参数化类型进行编码,并用实际参数替换DummyReferences[11]。

A value of a tagged or constrained type is encoded as a value of the type without the tag or constraint, respectively. Tags do not appear in the string encodings defined by this document. See X.680 [8] and X.682 [10] for the details of ASN.1 constraint notation.

标记或约束类型的值分别编码为不带标记或约束的类型的值。标记不会出现在此文档定义的字符串编码中。有关ASN.1约束表示法的详细信息,请参见X.680[8]和X.682[10]。

A value of an open type denoted by an ObjectClassFieldType (Clause 14 of X.681 [9]) is encoded according to the specific type of the value.

由ObjectClassFieldType(X.681[9]第14条)表示的开放类型的值根据值的特定类型进行编码。

A value of a fixed type denoted by an ObjectClassFieldType is encoded according to that fixed type.

ObjectClassFieldType表示的固定类型的值根据该固定类型进行编码。

A value of a selection type is encoded according to the type referenced by the selection type.

选择类型的值根据选择类型引用的类型进行编码。

A value of a type described by TypeFromObject notation (Clause 15 of X.681 [9]) is encoded according to the denoted type.

TypeFromObject表示法(X.681[9]第15条)描述的类型值根据所表示的类型进行编码。

A value of a type described by ValueSetFromObjects notation (Clause 15 of X.681 [9]) is encoded according to the governing type.

ValueSetFromObjects符号(X.681[9]第15条)所述类型的值根据管理类型进行编码。

3.2. Restricted Character String Types
3.2. 受限字符串类型

The contents of a string value are encoded as a UTF-8 character string between double quotes, regardless of the ASN.1 string type. Depending on the ASN.1 string type and an application's internal representation of that string type, a translation to or from the UTF-8 character encoding may be required. NumericString, PrintableString, IA5String, and VisibleString (ISO646String) are compatible with UTF-8 and do not require any translation. BMPString (UCS-2) and UniversalString (UCS-4) have a direct mapping to and from UTF-8 [6]. For the remaining string types see X.680 [8]. Any embedded double quotes in the resulting UTF-8 character string are escaped by repeating the double quote characters.

字符串值的内容被编码为双引号之间的UTF-8字符串,而与ASN.1字符串类型无关。根据ASN.1字符串类型和该字符串类型的应用程序内部表示形式,可能需要与UTF-8字符编码进行转换。NumericString、PrintableString、IA5String和VisibleString(ISO646String)与UTF-8兼容,不需要任何翻译。BMPString(UCS-2)和UniversalString(UCS-4)与UTF-8之间有直接映射[6]。有关其余字符串类型,请参见X.680[8]。生成的UTF-8字符串中的任何嵌入双引号都通过重复双引号字符进行转义。

A value of the NumericString, PrintableString, TeletexString (T61String), VideotexString, IA5String, GraphicString, VisibleString (ISO646String), GeneralString, BMPString, UniversalString or UTF8String type is encoded according to the <StringValue> rule.

NumericString、PrintableString、TeletextString(T61String)、VideotexString、IA5String、GraphicsString、VisibleString(ISO646String)、GeneralString、BMPString、UniversalString或UTF8String类型的值根据<StringValue>规则进行编码。

StringValue = dquote *SafeUTF8Character dquote

StringValue=dquote*SafeUTF8Character dquote

      dquote            = %x22 ; " (double quote)
        
      dquote            = %x22 ; " (double quote)
        
      SafeUTF8Character = %x00-21 / %x23-7F /   ; ASCII minus dquote
                          dquote dquote /       ; escaped double quote
                          %xC0-DF %x80-BF /     ; 2 byte UTF-8 character
                          %xE0-EF 2(%x80-BF) /  ; 3 byte UTF-8 character
                          %xF0-F7 3(%x80-BF)    ; 4 byte UTF-8 character
        
      SafeUTF8Character = %x00-21 / %x23-7F /   ; ASCII minus dquote
                          dquote dquote /       ; escaped double quote
                          %xC0-DF %x80-BF /     ; 2 byte UTF-8 character
                          %xE0-EF 2(%x80-BF) /  ; 3 byte UTF-8 character
                          %xF0-F7 3(%x80-BF)    ; 4 byte UTF-8 character
        

A value of the GeneralizedTime type, UTCTime type or ObjectDescriptor type is encoded as a string value. GeneralizedTime and UTCTime use the VisibleString character set so the conversion to UTF-8 is trivial. ObjectDescriptor uses the GraphicString type.

GeneratedTime类型、UTCTime类型或ObjectDescriptor类型的值被编码为字符串值。GeneratedTime和UTCTime使用VisibleString字符集,因此到UTF-8的转换非常简单。ObjectDescriptor使用GraphicsString类型。

GeneralizedTimeValue = StringValue UTCTimeValue = StringValue ObjectDescriptorValue = StringValue

GeneralizedTimeValue=StringValue UTCTimeValue=StringValue对象描述符值=StringValue

3.3. ChoiceOfStrings Types
3.3. 选择字符串类型

It is not uncommon for ASN.1 specifications to define types that offer a CHOICE between two or more alternative ASN.1 string types, where the particular alternative chosen carries no semantic significance (DirectoryString [7] being a prime example). Such types are defined to avoid having to use a complicated character encoding for all values when most values could use a simpler string type, or to deal with evolving requirements that compel the use of a broader character set while still maintaining backward compatibility.

ASN.1规范定义的类型在两个或多个可选ASN.1字符串类型之间提供选择,其中所选的特定可选类型没有语义意义(DirectoryString[7]是一个主要示例),这种情况并不少见。定义此类类型是为了避免在大多数值可以使用更简单的字符串类型时,必须对所有值使用复杂的字符编码,或者是为了处理不断变化的要求,这些要求迫使使用更广泛的字符集,同时仍然保持向后兼容性。

GSER encodes values of all the ASN.1 string types as UTF-8 character strings so the particular alternative that is chosen from a purely syntactic CHOICE of string types makes no material difference to the final encoding of the string value.

GSER将所有ASN.1字符串类型的值编码为UTF-8字符串,因此从字符串类型的纯语法选择中选择的特定替代方案对字符串值的最终编码没有实质性差异。

While there are certain ASN.1 constructs that betray the semantic significance of the alternatives within a CHOICE type, the absence of those constructs does not necessarily mean that a CHOICE type is purely syntactic. Therefore, it is necessary for specifications to declare the purely syntactic CHOICE types so that they may be more compactly encoded (see Section 3.12). These declared CHOICE types are referred to as ChoiceOfStrings types.

虽然有某些ASN.1结构背叛了选择类型中备选方案的语义意义,但缺少这些结构并不一定意味着选择类型是纯语法的。因此,规范有必要声明纯语法选择类型,以便对其进行更紧凑的编码(见第3.12节)。这些声明的选择类型称为ChoiceOffString类型。

To be eligible to be declared a ChoiceOfStrings type, an ASN.1 type MUST satisfy the following conditions.

要有资格声明为ChoiceOffString类型,ASN.1类型必须满足以下条件。

a) The type is a CHOICE type.

a) 该类型是选择类型。

b) The component type of each alternative is one of the following ASN.1 restricted string types: NumericString, PrintableString, TeletexString (T61String), VideotexString, IA5String, GraphicString, VisibleString (ISO646String), GeneralString, BMPString, UniversalString or UTF8String.

b) 每个备选方案的组件类型是以下ASN.1限制字符串类型之一:数字字符串、可打印字符串、电传字符串(T61String)、可视文本字符串、IA5String、图形字符串、可视字符串(ISO646String)、通用字符串、BMPSString、通用字符串或UTF8String。

c) All the alternatives are of different restricted string types, i.e., no two alternatives have the same ASN.1 restricted string type.

c) 所有备选方案都具有不同的受限字符串类型,即没有两个备选方案具有相同的ASN.1受限字符串类型。

d) Either none of the alternatives has a constraint, or all of the alternatives have exactly the same constraint.

d) 要么所有备选方案都没有约束,要么所有备选方案都具有完全相同的约束。

Tagging on the alternative types is ignored.

替代类型上的标记将被忽略。

Consider the ASN.1 parameterized type definition of DirectoryString.

考虑Acto. 1参数化的DeloTySype类型定义。

      DirectoryString { INTEGER : maxSize } ::= CHOICE {
          teletexString     TeletexString (SIZE (1..maxSize)),
          printableString   PrintableString (SIZE (1..maxSize)),
          bmpString         BMPString (SIZE (1..maxSize)),
          universalString   UniversalString (SIZE (1..maxSize)),
          uTF8String        UTF8String (SIZE (1..maxSize)) }
        
      DirectoryString { INTEGER : maxSize } ::= CHOICE {
          teletexString     TeletexString (SIZE (1..maxSize)),
          printableString   PrintableString (SIZE (1..maxSize)),
          bmpString         BMPString (SIZE (1..maxSize)),
          universalString   UniversalString (SIZE (1..maxSize)),
          uTF8String        UTF8String (SIZE (1..maxSize)) }
        

Any use of the DirectoryString parameterized type with an actual parameter defines an ASN.1 type that satisfies the above conditions. Recognising that the alternative within a DirectoryString carries no semantic significance, this document declares (each and every use of) DirectoryString{} to be a ChoiceOfStrings type.

将DirectoryString参数化类型与实际参数一起使用可定义满足上述条件的ASN.1类型。认识到DirectoryString中的替代项不具有语义意义,本文档将DirectoryString{}声明为choiceofString类型。

Other specifications MAY declare other types satisfying the above conditions to be ChoiceOfStrings types. The declaration SHOULD be made at the point where the ASN.1 type is defined, otherwise it SHOULD be made at the point where it is introduced as, or in, an LDAP attribute or assertion syntax.

其他规范可能会声明满足上述条件的其他类型为ChoiceofString类型。声明应该在定义ASN.1类型的点进行,否则应该在作为LDAP属性或断言语法引入的点进行声明。

3.4. Identifiers
3.4. 标识符

An <identifier> conforms to the definition of an identifier in ASN.1 notation (Clause 11.3 of X.680 [8]). It begins with a lowercase letter and is followed by zero or more letters, digits, and hyphens. A hyphen is not permitted to be the last character, nor is it to be followed by another hyphen. The case of letters in an identifier is always significant.

<identifier>符合ASN.1注释中的标识符定义(X.680[8]第11.3条)。它以小写字母开头,后跟零个或多个字母、数字和连字符。连字符不允许是最后一个字符,也不允许后跟另一个连字符。标识符中字母的大小写总是重要的。

      identifier    = lowercase *alphanumeric *(hyphen 1*alphanumeric)
      alphanumeric  = uppercase / lowercase / decimal-digit
      uppercase     = %x41-5A  ; "A" to "Z"
      lowercase     = %x61-7A  ; "a" to "z"
      decimal-digit = %x30-39  ; "0" to "9"
      hyphen        = "-"
        
      identifier    = lowercase *alphanumeric *(hyphen 1*alphanumeric)
      alphanumeric  = uppercase / lowercase / decimal-digit
      uppercase     = %x41-5A  ; "A" to "Z"
      lowercase     = %x61-7A  ; "a" to "z"
      decimal-digit = %x30-39  ; "0" to "9"
      hyphen        = "-"
        
3.5. BIT STRING
3.5. 位串

A value of the BIT STRING type is encoded according to the <BitStringValue> rule. If the definition of the BIT STRING type includes a named bit list, the <bit-list> form of <BitStringValue> MAY be used. If the number of bits in a BIT STRING value is a multiple of four, the <hstring> form of <BitStringValue> MAY be used. Otherwise, the <bstring> form of <BitStringValue> is used.

根据<BitStringValue>规则对位字符串类型的值进行编码。如果位字符串类型的定义包括命名位列表,则可以使用<BitStringValue>的<BIT list>形式。如果位字符串值中的位数是四的倍数,则可以使用<BitStringValue>的<hstring>形式。否则,将使用<BitStringValue>的<bstring>形式。

      BitStringValue = bstring / hstring / bit-list
        
      BitStringValue = bstring / hstring / bit-list
        

The <bit-list> rule encodes the one bits in the bit string value as a comma separated list of identifiers. Each <identifier> MUST be one of the identifiers in the named bit list, and MUST NOT appear more than once in the same <bit-list>. The <bstring> rule encodes each bit as the character "0" or "1" in order from the first bit to the last bit. The <hstring> rule encodes each group of four bits as a hexadecimal number where the first bit is the most significant. An odd number of hexadecimal digits is permitted.

<bit list>规则将位字符串值中的一位编码为以逗号分隔的标识符列表。每个<identifier>必须是命名位列表中的一个标识符,并且不能在同一<bit list>中出现多次。<bstring>规则将每个位按从第一位到最后一位的顺序编码为字符“0”或“1”。<hstring>规则将每组四位编码为十六进制数,其中第一位为最高有效位。允许奇数十六进制数字。

      bit-list          = "{" [ sp identifier
                             *( "," sp identifier ) ] sp "}"
        
      bit-list          = "{" [ sp identifier
                             *( "," sp identifier ) ] sp "}"
        
      hstring           = squote *hexadecimal-digit squote %x48 ; '...'H
        
      hstring           = squote *hexadecimal-digit squote %x48 ; '...'H
        
      hexadecimal-digit = %x30-39 /  ; "0" to "9"
                          %x41-46    ; "A" to "F"
        
      hexadecimal-digit = %x30-39 /  ; "0" to "9"
                          %x41-46    ; "A" to "F"
        
      bstring           = squote *binary-digit squote %x42  ; '...'B
      binary-digit      = "0" / "1"
        
      bstring           = squote *binary-digit squote %x42  ; '...'B
      binary-digit      = "0" / "1"
        
      sp                = *%x20  ; zero, one or more space characters
      squote            =  %x27  ; ' (single quote)
        
      sp                = *%x20  ; zero, one or more space characters
      squote            =  %x27  ; ' (single quote)
        
3.6. BOOLEAN
3.6. 布尔值

A value of the BOOLEAN type is encoded according to the <BooleanValue> rule.

布尔类型的值根据<BooleanValue>规则进行编码。

      BooleanValue = %x54.52.55.45 /   ; "TRUE"
                     %x46.41.4C.53.45  ; "FALSE"
        
      BooleanValue = %x54.52.55.45 /   ; "TRUE"
                     %x46.41.4C.53.45  ; "FALSE"
        
3.7. ENUMERATED
3.7. 列举

A value of the ENUMERATED type is encoded according to the <EnumeratedValue> rule. The <identifier> MUST be one of those in the list of enumerations in the definition of the ENUMERATED type.

枚举类型的值根据<EnumeratedValue>规则进行编码。<identifier>必须是枚举类型定义中枚举列表中的一个。

      EnumeratedValue = identifier
        
      EnumeratedValue = identifier
        
3.8. INTEGER
3.8. 整数

A value of the INTEGER type is encoded according to the <IntegerValue> rule. If the definition of the INTEGER type includes a named number list, the <identifier> form of <IntegerValue> MAY be used, in which case the <identifier> MUST be one of the identifiers in the named number list.

整数类型的值根据<IntegerValue>规则进行编码。如果整数类型的定义包括命名数字列表,则可以使用<IntegerValue>的<identifier>形式,在这种情况下<identifier>必须是命名数字列表中的标识符之一。

IntegerValue = "0" / positive-number / ("-" positive-number) / identifier

IntegerValue=“0”/正数/(“-”正数)/标识符

      positive-number = non-zero-digit *decimal-digit
      non-zero-digit  = %x31-39  ; "1" to "9"
        
      positive-number = non-zero-digit *decimal-digit
      non-zero-digit  = %x31-39  ; "1" to "9"
        
3.9. NULL
3.9. 无效的

A value of the NULL type is encoded according to the <NullValue> rule.

NULL类型的值根据<NullValue>规则进行编码。

      NullValue = %x4E.55.4C.4C  ; "NULL"
        
      NullValue = %x4E.55.4C.4C  ; "NULL"
        
3.10. OBJECT IDENTIFIER and RELATIVE-OID
3.10. 对象标识符和相对OID

A value of the OBJECT IDENTIFIER type is encoded according to the <ObjectIdentifierValue> rule. The <ObjectIdentifierValue> rule allows either a dotted decimal representation of the OBJECT IDENTIFIER value or an object descriptor name, i.e., <descr>. The <descr> rule is described in RFC 2252 [4]. An object descriptor name is potentially ambiguous and should be used with care.

对象标识符类型的值根据<ObjectIdentifierValue>规则进行编码。<ObjectIdentifierValue>规则允许对象标识符值的点十进制表示或对象描述符名称,即<descr>。RFC 2252[4]中描述了<descr>规则。对象描述符名称可能不明确,应谨慎使用。

      ObjectIdentifierValue = numeric-oid / descr
      numeric-oid           = oid-component 1*( "." oid-component )
      oid-component         = "0" / positive-number
        
      ObjectIdentifierValue = numeric-oid / descr
      numeric-oid           = oid-component 1*( "." oid-component )
      oid-component         = "0" / positive-number
        

A value of the RELATIVE-OID type is encoded according to the <RelativeOIDValue> rule.

相对OID类型的值根据<RelativeOIDValue>规则进行编码。

RelativeOIDValue = oid-component *( "." oid-component )

RelativeOIDValue=oid组件*(“”oid组件)

3.11. OCTET STRING
3.11. 八位组串

A value of the OCTET STRING type is encoded according to the <OctetStringValue> rule. The octets are encoded in order from the first octet to the last octet. Each octet is encoded as a pair of hexadecimal digits where the first digit corresponds to the four most significant bits of the octet. If the hexadecimal string does not have an even number of digits, the four least significant bits in the last octet are assumed to be zero.

八进制字符串类型的值根据<OctetStringValue>规则进行编码。八位字节按从第一个八位字节到最后一个八位字节的顺序编码。每个八位字节编码为一对十六进制数字,其中第一个数字对应于八位字节的四个最高有效位。如果十六进制字符串的位数不是偶数,则假定最后八位字节中的四个最低有效位为零。

      OctetStringValue = hstring
        
      OctetStringValue = hstring
        
3.12. CHOICE
3.12. 选择

A value of a CHOICE type is encoded according to the <ChoiceValue> rule. The <ChoiceOfStringsValue> encoding MAY be used if the corresponding CHOICE type has been declared a ChoiceOfStrings type. This document declares DirectoryString to be a ChoiceOfStrings type (see Section 3.3). Otherwise, the <IdentifiedChoiceValue> form of <ChoiceValue> is used.

选择类型的值根据<ChoiceValue>规则进行编码。如果相应的选择类型已声明为ChoiceOfStrings类型,则可以使用<ChoiceOfStringsValue>编码。本文档将DirectoryString声明为ChoiceOfString类型(参见第3.3节)。否则,将使用<ChoiceValue>的<IdentifiedChoiceValue>形式。

ChoiceValue = IdentifiedChoiceValue / ChoiceOfStringsValue IdentifiedChoiceValue = identifier ":" Value ChoiceOfStringsValue = StringValue

ChoiceValue=IdentifiedChoiceValue/ChoiceOfStringsValue IdentifiedChoiceValue=identifier:“值ChoiceOfStringsValue=StringValue”

For implementations that recognise the internal structure of the DirectoryString CHOICE type (e.g., X.500 directories [16]), if the character string between the quotes in a <StringValue> contains only characters that are permitted in a PrintableString, the DirectoryString is assumed to use the printableString alternative, otherwise it is assumed to use the uTF8String alternative. The <IdentifiedChoiceValue> rule MAY be used for a value of type DirectoryString to indicate an alternative other than the one that would be assumed from the string contents. No matter what alternative is chosen, the <Value> will still be a UTF-8 encoded character string. However, it is a syntax error if the characters in the UTF-8 string cannot be represented in the string type of the chosen alternative.

对于识别DirectoryString选择类型内部结构的实现(例如,X.500目录[16]),如果<StringValue>中引号之间的字符串仅包含可打印字符串中允许的字符,则假定DirectoryString使用可打印字符串替代项,否则,假定使用uTF8String替代。<IdentifiedChoiceValue>规则可用于DirectoryString类型的值,以指示除从字符串内容中假定的值之外的其他值。无论选择何种替代方案,<Value>仍将是UTF-8编码的字符串。但是,如果UTF-8字符串中的字符不能在所选备选字符串类型中表示,则这是一个语法错误。

Implementations that do not care about the internal structure of a DirectoryString value MUST be able to parse the <IdentifiedChoiceValue> form for a DirectoryString value, though the particular identifier found will be of no interest.

不关心DirectoryString值的内部结构的实现必须能够解析DirectoryString值的<IdentifiedChoiceValue>表单,尽管找到的特定标识符不感兴趣。

3.13. SEQUENCE and SET
3.13. 序列与集合

A value of a SEQUENCE type is encoded according to the <SequenceValue> rule. The <ComponentList> rule encodes a comma separated list of the particular component values present in the SEQUENCE value, where each component value is preceded by the corresponding identifier from the SEQUENCE type definition. The components are encoded in the order of their definition in the SEQUENCE type.

序列类型的值根据<SequenceValue>规则进行编码。<ComponentList>规则对序列值中存在的特定组件值的逗号分隔列表进行编码,其中每个组件值前面都有序列类型定义中相应的标识符。组件按照其在序列类型中的定义顺序进行编码。

      SequenceValue = ComponentList
        
      SequenceValue = ComponentList
        
      ComponentList = "{" [ sp NamedValue *( "," sp NamedValue) ] sp "}"
      NamedValue    = identifier msp Value
      msp           = 1*%x20  ; one or more space characters
        
      ComponentList = "{" [ sp NamedValue *( "," sp NamedValue) ] sp "}"
      NamedValue    = identifier msp Value
      msp           = 1*%x20  ; one or more space characters
        

A value of a SET type is encoded according to the <SetValue> rule. The components are encoded in the order of their definition in the SET type (i.e., just like a SEQUENCE value). This is a deliberate departure from ASN.1 value notation where the components of a SET can be written in any order.

集合类型的值根据<SetValue>规则进行编码。组件按照其在集合类型中的定义顺序进行编码(即,就像序列值一样)。这是对ASN.1值表示法的故意背离,在ASN.1值表示法中,集合的组成部分可以按任何顺序写入。

      SetValue = ComponentList
        
      SetValue = ComponentList
        

SEQUENCE and SET type definitions are sometimes extended by the inclusion of additional component types, so an implementation SHOULD be capable of skipping over any <NamedValue> encoding with an identifier that is not recognised, on the assumption that the sender is using a more recent definition of the SEQUENCE or SET type.

序列和集合类型定义有时会通过包含其他组件类型来扩展,因此实现应该能够跳过任何带有未识别标识符的<NamedValue>编码,前提是发送方使用的是序列或集合类型的较新定义。

3.14. SEQUENCE OF and SET OF
3.14. 序列和集合

A value of a SEQUENCE OF type is encoded according to the <SequenceOfValue> rule, as a comma separated list of the instances in the value. Each instance is encoded according to the component type of the SEQUENCE OF type.

类型序列的值根据<SequenceOfValue>规则编码为值中以逗号分隔的实例列表。每个实例都根据类型序列的组件类型进行编码。

      SequenceOfValue = "{" [ sp Value *( "," sp Value) ] sp "}"
        
      SequenceOfValue = "{" [ sp Value *( "," sp Value) ] sp "}"
        

A value of a SET OF type is encoded according to the <SetOfValue> rule, as a list of the instances in the value. Each instance is encoded according to the component type of the SET OF type.

一组类型的值根据<SetOfValue>规则进行编码,作为值中实例的列表。每个实例都根据类型集的组件类型进行编码。

      SetOfValue      = "{" [ sp Value *( "," sp Value) ] sp "}"
        
      SetOfValue      = "{" [ sp Value *( "," sp Value) ] sp "}"
        
3.15. CHARACTER STRING
3.15. 字符串

A value of the unrestricted CHARACTER STRING type is encoded according to the corresponding SEQUENCE type defined in Clause 40.5 of X.680 [8] (see [15] for equivalent ABNF).

无限制字符串类型的值根据X.680[8]第40.5条中定义的相应序列类型进行编码(等效ABNF见[15])。

      CharacterStringValue = SequenceValue
        
      CharacterStringValue = SequenceValue
        
3.16. EMBEDDED PDV
3.16. 嵌入式PDV

A value of the EMBEDDED PDV type is encoded according to the corresponding SEQUENCE type defined in Clause 33.5 of X.680 [8] (see [15] for equivalent ABNF).

嵌入PDV类型的值根据X.680[8]第33.5条中定义的相应序列类型进行编码(等效ABNF见[15])。

      EmbeddedPDVValue = SequenceValue
        
      EmbeddedPDVValue = SequenceValue
        
3.17. EXTERNAL
3.17. 外部的

A value of the EXTERNAL type is encoded according to the corresponding SEQUENCE type defined in Clause 8.18.1 of X.690 [12] (see [15] for equivalent ABNF).

外部类型的值根据X.690[12]第8.18.1条中定义的相应序列类型进行编码(等效ABNF见[15])。

      ExternalValue = SequenceValue
        
      ExternalValue = SequenceValue
        
3.18. INSTANCE OF
3.18. 实例

A value of the INSTANCE OF type is encoded according to the corresponding SEQUENCE type defined in Annex C of X.681 [9].

类型实例的值根据X.681[9]附录C中定义的相应序列类型进行编码。

      InstanceOfValue = SequenceValue
        
      InstanceOfValue = SequenceValue
        
3.19. REAL
3.19. 真实的

A value of the REAL type MUST be encoded as "0" if it is zero, otherwise it is encoded as the special value <PLUS-INFINITY>, the special value <MINUS-INFINITY>, an optionally signed <realnumber>, or as a value of the corresponding SEQUENCE type for REAL defined in Clause 20.5 of X.680 [8] (see [15] for equivalent ABNF).

如果实数类型的值为零,则必须将其编码为“0”,否则将其编码为特殊值<加无穷大>、特殊值<减无穷大>、可选符号<实数>,或编码为X.680[8]第20.5条中定义的实数对应序列类型的值(等效ABNF见[15])。

      RealValue  = "0"               ; zero REAL value
                   / PLUS-INFINITY   ; positive infinity
                   / MINUS-INFINITY  ; negative infinity
                   / realnumber      ; positive base 10 REAL value
                   / "-" realnumber  ; negative base 10 REAL value
                   / SequenceValue   ; non-zero REAL value, base 2 or 10
        
      RealValue  = "0"               ; zero REAL value
                   / PLUS-INFINITY   ; positive infinity
                   / MINUS-INFINITY  ; negative infinity
                   / realnumber      ; positive base 10 REAL value
                   / "-" realnumber  ; negative base 10 REAL value
                   / SequenceValue   ; non-zero REAL value, base 2 or 10
        
      realnumber = mantissa exponent
      mantissa   = (positive-number [ "." *decimal-digit ])
                   / ( "0." *("0") positive-number )
      exponent   = "E" ( "0" / ([ "-" ] positive-number))
        
      realnumber = mantissa exponent
      mantissa   = (positive-number [ "." *decimal-digit ])
                   / ( "0." *("0") positive-number )
      exponent   = "E" ( "0" / ([ "-" ] positive-number))
        
      PLUS-INFINITY  = %x50.4C.55.53.2D.49.4E.46.49.4E.49.54.59
                          ; "PLUS-INFINITY"
      MINUS-INFINITY = %x4D.49.4E.55.53.2D.49.4E.46.49.4E.49.54.59
                          ; "MINUS-INFINITY"
        
      PLUS-INFINITY  = %x50.4C.55.53.2D.49.4E.46.49.4E.49.54.59
                          ; "PLUS-INFINITY"
      MINUS-INFINITY = %x4D.49.4E.55.53.2D.49.4E.46.49.4E.49.54.59
                          ; "MINUS-INFINITY"
        
3.20. Variant Encodings
3.20. 变体编码

The values of some named complex ASN.1 types have special string encodings. These special encodings are always used instead of the encoding that would otherwise apply based on the ASN.1 type definition.

某些命名的复杂ASN.1类型的值具有特殊的字符串编码。始终使用这些特殊编码,而不是根据ASN.1类型定义应用的编码。

VariantEncoding = RDNSequenceValue / RelativeDistinguishedNameValue / ORAddressValue

VariantEncoding=RDNSequenceValue/RelativeDistinguishedNameValue/ORAddressValue

A value of the RDNSequence type, i.e., a distinguished name, is encoded according to the <RDNSequenceValue> rule, as a quoted LDAPDN character string. The character string is first derived according to the <distinguishedName> rule in Section 3 of RFC 2253 [5], and then encoded as if it were a UTF8String value, i.e., between double quotes with any embedded double quotes escaped by being repeated.

RDNSequence类型的值,即可分辨名称,根据<RDNSequenceValue>规则编码为带引号的LDAPDN字符串。首先根据RFC 2253[5]第3节中的<DifferentizedName>规则导出字符串,然后将其编码为UTF8String值,即,在双引号与通过重复转义的任何嵌入双引号之间。

      RDNSequenceValue = StringValue
        
      RDNSequenceValue = StringValue
        

A RelativeDistinguishedName value that is not part of an RDNSequence value is encoded according to the <RelativeDistinguishedNameValue> rule as a quoted character string. The character string is first derived according to the <name-component> rule in Section 3 of RFC 2253 [5], and then encoded as if it were a UTF8String value.

不属于RDNSequence值一部分的RelativeDistinguishedName值将根据<RelativeDistinguishedNameValue>规则作为带引号的字符串进行编码。首先根据RFC 2253[5]第3节中的<name component>规则导出字符串,然后将其编码为UTF8String值。

      RelativeDistinguishedNameValue = StringValue
        
      RelativeDistinguishedNameValue = StringValue
        

A value of the ORAddress type is encoded according to the <ORAddressValue> rule as a quoted character string. The character string is first derived according to the textual representation of MTS.ORAddress from RFC 2156 [2], and then encoded as if it were an IA5String value.

ORAddress类型的值根据<ORAddressValue>规则编码为带引号的字符串。字符串首先根据RFC 2156[2]中MTS.ORAddress的文本表示形式派生,然后将其编码为IA5String值。

      ORAddressValue = StringValue
        
      ORAddressValue = StringValue
        
4. GSER Transfer Syntax
4. GSER传输语法

The following OBJECT IDENTIFIER has been assigned by Adacel Technologies, under an arc assigned to Adacel by Standards Australia, to identify the Generic String Encoding Rules:

以下对象标识符由Adacel Technologies根据澳大利亚标准局分配给Adacel的arc分配,以识别通用字符串编码规则:

{ 1 2 36 79672281 0 0 }

{ 1 2 36 79672281 0 0 }

This OBJECT IDENTIFIER would be used, for example, to describe the transfer syntax for a GSER encoded data-value in an EMBEDDED PDV value.

例如,该对象标识符将用于描述嵌入式PDV值中GSER编码数据值的传输语法。

5. Security Considerations
5. 安全考虑

The Generic String Encoding Rules do not define a canonical encoding. That is, a transformation from a GSER encoding into some other encoding (e.g., BER) and back into GSER will not necessarily reproduce the original GSER octet encoding. Therefore, GSER MUST NOT be used where a canonical encoding is needed.

通用字符串编码规则未定义规范编码。也就是说,从GSER编码到某个其他编码(例如,BER)并返回到GSER的转换将不一定再现原始GSER八位组编码。因此,GSER不能用于需要规范编码的地方。

Furthermore, GSER does not necessarily enable the exact octet encoding of values of the TeletexString, VideotexString, GraphicString or GeneralString types to be reconstructed, so a transformation from a Distinguished Encoding Rules (DER) [12] encoding to GSER and back to DER may not reproduce the original DER encoding. Therefore, GSER MUST NOT be used to re-encode, whether for storage or transmission, ASN.1 abstract values whose original binary encoding must be recoverable. Such recovery is needed for the verification of digital signatures. In such cases, protocols ought to use DER or a DER-reversible encoding.

此外,GSER不一定能够对要重建的电传字符串、可视图文字符串、图形字符串或一般字符串类型的值进行精确的八位编码,因此从可分辨编码规则(DER)[12]编码到GSER并返回到DER的转换可能不会再现原始的DER编码。因此,GSER不得用于重新编码ASN.1抽象值,无论是存储还是传输,其原始二进制编码必须是可恢复的。验证数字签名需要这种恢复。在这种情况下,协议应该使用DER或DER可逆编码。

When interpreting security-sensitive fields, and in particular fields used to grant or deny access, implementations MUST ensure that any comparisons are done on the underlying abstract value, regardless of the particular encoding used.

在解释安全敏感字段,尤其是用于授予或拒绝访问的特定字段时,实现必须确保对底层抽象值进行任何比较,而不管使用何种特定编码。

6. References
6. 工具书类
6.1. Normative References
6.1. 规范性引用文件

[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[1] Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[2] Kille, S., "MIXER (Mime Internet X.400 Enhanced Relay): Mapping between X.400 and RFC 822/MIME", RFC 2156, January 1998.

[2] Kille,S.,“混音器(Mime互联网X.400增强中继):X.400和RFC 822/Mime之间的映射”,RFC 2156,1998年1月。

[3] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.

[3] Crocker,D.和P.Overell,“语法规范的扩充BNF:ABNF”,RFC 2234,1997年11月。

[4] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions", RFC 2252, December 1997.

[4] Wahl,M.,Coulbeck,A.,Howes,T.和S.Kille,“轻量级目录访问协议(v3):属性语法定义”,RFC2252,1997年12月。

[5] Wahl, M., Kille S. and T. Howes. "Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names", RFC 2253, December 1997.

[5] 沃尔,M.,基尔S.和T.豪斯。“轻量级目录访问协议(v3):可分辨名称的UTF-8字符串表示”,RFC2253,1997年12月。

[6] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC 2279, January 1998.

[6] “UTF-8,ISO 10646的转换格式”,RFC 2279,1998年1月。

   [7]  ITU-T Recommendation X.520 (1993) | ISO/IEC 9594-6:1994,
        Information Technology - Open Systems Interconnection - The
        Directory: Selected attribute types
        
   [7]  ITU-T Recommendation X.520 (1993) | ISO/IEC 9594-6:1994,
        Information Technology - Open Systems Interconnection - The
        Directory: Selected attribute types
        
   [8]  ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Specification of basic notation
        
   [8]  ITU-T Recommendation X.680 (07/02) | ISO/IEC 8824-1:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Specification of basic notation
        
   [9]  ITU-T Recommendation X.681 (07/02) | ISO/IEC 8824-2:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Information object specification
        
   [9]  ITU-T Recommendation X.681 (07/02) | ISO/IEC 8824-2:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Information object specification
        
   [10] ITU-T Recommendation X.682 (07/02) | ISO/IEC 8824-3:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Constraint specification
        
   [10] ITU-T Recommendation X.682 (07/02) | ISO/IEC 8824-3:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Constraint specification
        
   [11] ITU-T Recommendation X.683 (07/02) | ISO/IEC 8824-4:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Parameterization of ASN.1 specifications
        
   [11] ITU-T Recommendation X.683 (07/02) | ISO/IEC 8824-4:2002
        Information technology - Abstract Syntax Notation One (ASN.1):
        Parameterization of ASN.1 specifications
        

[12] ITU-T Recommendation X.690 (07/02) | ISO/IEC 8825-1:2002 Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)

[12] ITU-T建议X.690(07/02)| ISO/IEC 8825-1:2002信息技术-ASN.1编码规则:基本编码规则(BER)、规范编码规则(CER)和区分编码规则(DER)规范

6.2. Informative References
6.2. 资料性引用

[13] Hovey, R. and S. Bradner, "The Organizations Involved in the IETF Standards Process", BCP 11, RFC 2028, October 1996.

[13] Hovey,R.和S.Bradner,“参与IETF标准过程的组织”,BCP 11,RFC 2028,1996年10月。

[14] Hodges, J. and R. Morgan, "Lightweight Directory Access Protocol (v3): Technical Specification", RFC 3377, September 2002.

[14] Hodges,J.和R.Morgan,“轻量级目录访问协议(v3):技术规范”,RFC3372002年9月。

[15] Legg, S., "Common Elements of Generic String Encoding Rules (GSER) Encodings", RFC 3642, October 2003.

[15] Legg,S.,“通用字符串编码规则(GSER)编码的公共元素”,RFC 3642,2003年10月。

   [16] ITU-T Recommendation X.500 (1993) | ISO/IEC 9594-1:1994,
        Information Technology - Open Systems Interconnection - The
        Directory: Overview of concepts, models and services
        
   [16] ITU-T Recommendation X.500 (1993) | ISO/IEC 9594-1:1994,
        Information Technology - Open Systems Interconnection - The
        Directory: Overview of concepts, models and services
        
7. Intellectual Property Notice
7. 知识产权公告

The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat.

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何努力来确定任何此类权利。有关IETF在标准跟踪和标准相关文件中权利的程序信息,请参见BCP-11。可从IETF秘书处获得可供发布的权利声明副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果。

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the IETF Executive Director.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涉及实施本标准所需技术的专有权利。请将信息发送给IETF执行董事。

8. Author's Address
8. 作者地址

Steven Legg Adacel Technologies Ltd. 250 Bay Street Brighton, Victoria 3186 AUSTRALIA

Steven Legg Adacel Technologies Ltd.澳大利亚维多利亚州布莱顿湾街250号,邮编:3186

   Phone: +61 3 8530 7710
   Fax:   +61 3 8530 7888
   EMail: steven.legg@adacel.com.au
        
   Phone: +61 3 8530 7710
   Fax:   +61 3 8530 7888
   EMail: steven.legg@adacel.com.au
        
9. Full Copyright Statement
9. 完整版权声明

Copyright (C) The Internet Society (2003). All Rights Reserved.

版权所有(C)互联网协会(2003年)。版权所有。

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

本文件及其译本可复制并提供给他人,对其进行评论或解释或协助其实施的衍生作品可全部或部分编制、复制、出版和分发,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文件本身,例如删除版权通知或对互联网协会或其他互联网组织的引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准过程中定义的版权程序,或根据需要将其翻译成英语以外的其他语言。

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assignees.

上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。