ITU-T Recommendation X.690

International Standard 8825-1

 

 

 

 

Information technology 
ASN.1 encoding rules:
Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)

 


INTERNATIONAL  STANDARD  ISO/IEC 8825-1

ITU-T  RECOMMENDATION  X.690

Information  technology    ASN.1  encoding rules:
Specification  of  Basic  Encoding  Rules  (BER),
Canonical  Encoding  Rules  (CER)
and  Distinguished  Encoding  Rules  (DER)

 

 

 

 

Summary

This Recommendation | International Standard defines a set of Basic Encoding Rules (BER) that may be applied to values of types defined using the ASN.1 notation. Application of these encoding rules produces a transfer syntax for such values. It is implicit in the specification of these encoding rules that they are also used for decoding. This Recommendation | International Standard defines also a set of Distinguished Encoding Rules (DER) and a set of Canonical Encoding Rules (CER) both of which provide constraints on the Basic Encoding Rules (BER). The key difference between them is that DER uses the definite length form of encoding while CER uses the indefinite length form. DER is more suitable for the small encoded values, while CER is more suitable for the large ones. It is implicit in the specification of these encoding rules that they are also used for decoding.

 

 

 

 

 

 

 

 

 

 

Source

ITU-T Recommendation X.690 was prepared by ITU-T Study Group 17 (2001-2004) and approved on 14 July 2002. An identical text is also published as ISO/IEC 8825-1.

 


 

CONTENTS

Page

Introduction.... iv

1        Scope... 1

2        Normative references... 1

2.1      Identical Recommendations | International Standards... 1

2.2      Additional references... 1

3        Definitions... 2

4        Abbreviations... 2

5        Notation.... 2

6        Convention.... 2

7        Conformance... 3

8        Basic encoding rules... 3

8.1      General rules for encoding.... 3

8.1.1       Structure of an encoding.... 3

8.1.2       Identifier octets... 4

8.1.3       Length octets... 5

8.1.4       Contents octets... 6

8.1.5       End-of-contents octets... 6

8.2      Encoding of a boolean value... 6

8.3      Encoding of an integer value... 7

8.4      Encoding of an enumerated value... 7

8.5      Encoding of a real value... 7

8.6      Encoding of a bitstring value... 8

8.7      Encoding of an octetstring value... 9

8.8      Encoding of a null value... 10

8.9      Encoding of a sequence value... 10

8.10    Encoding of a sequence-of value... 10

8.11    Encoding of a set value... 10

8.12    Encoding of a set-of value... 11

8.13    Encoding of a choice value... 11

8.14    Encoding of a tagged value... 11

8.15    Encoding of an open type... 12

8.16    Encoding of an instance-of value... 12

8.17    Encoding of a value of the embedded-pdv type... 12

8.18    Encoding of a value of the external type... 12

8.19    Encoding of an object identifier value... 13

8.20    Encoding of a relative object identifier value... 14

8.21    Encoding for values of the restricted character string types... 14

8.22    Encoding for values of the unrestricted character string type... 17

9        Canonical encoding rules... 17

9.1      Length forms... 17

9.2      String encoding forms... 17

9.3      Set components... 17

10       Distinguished encoding rules... 18

10.1    Length forms... 18

10.2    String encoding forms... 18

10.3    Set components... 18

11       Restrictions on BER employed by both CER and DER.... 18

11.1    Boolean values... 18

11.2    Unused bits... 18

11.3    Real values... 18

11.4    GeneralString values... 19

11.5    Set and sequence components with default value... 19

11.6    Set‑of components... 19

11.7    GeneralizedTime... 19

11.8    UTCTime... 20

11.8.4      Examples of valid representations... 20

11.8.5      Examples of invalid representations... 20

12       Use of BER, CER and DER in transfer syntax definition.... 20

Annex A – Example of encodings... 22

A.1     ASN.1 description of the record structure... 22

A.2     ASN.1 description of a record value... 22

A.3     Representation of this record value... 22

Annex B – Assignment of object identifier values... 24

Annex C – Illustration of real value encoding.... 25

 


Introduction

ITU-T Rec. X.680 | ISO/IEC 8824-1, ITU-T Rec. X.681 | ISO/IEC 8824-2, ITU-T Rec. X.682 | ISO/IEC 8824-3, ITU‑T Rec. X.683 | ISO/IEC 8824-4 (Abstract Syntax Notation One or ASN.1) together specify a notation for the definition of abstract syntaxes, enabling application standards to define the types of information they need to transfer.  It also specifies a notation for the specification of values of a defined type.

This Recommendation | International Standard defines encoding rules that may be applied to values of types defined using the ASN.1 notation. Application of these encoding rules produces a transfer syntax for such values. It is implicit in the specification of these encoding rules that they are also to be used for decoding.

There may be more than one set of encoding rules that can be applied to values of types that are defined using the ASN.1 notation. This Recommendation | International Standard defines three sets of encoding rules, called basic encoding rules, canonical encoding rules and distinguished encoding rules. Whereas the basic encoding rules give the sender of an encoding various choices as to how data values may be encoded, the canonical and distinguished encoding rules select just one encoding from those allowed by the basic encoding rules, eliminating all of the sender's options. The canonical and distinguished encoding rules differ from each other in the set of restrictions that they place on the basic encoding rules.

The distinguished encoding rules is more suitable than the canonical encoding rules if the encoded value is small enough to fit into the available memory and there is a need to rapidly skip over some nested values. The canonical encoding rules is more suitable than the distinguished encoding rules if there is a need to encode values that are so large that they cannot readily fit into the available memory or it is necessary to encode and transmit a part of a value before the entire value is available. The basic encoding rules is more suitable than the canonical or distinguished encoding rules if the encoding contains a set value or set-of value and there is no need for the restrictions that the canonical and distinguished encoding rules impose. This is due to the memory and CPU overhead that the latter encoding rules exact in order to guarantee that set values and set-of values have just one possible encoding.

Annex A gives an example of the application of the basic encoding rules. It does not form an integral part of this Recommendation | International Standard.

Annex B summarizes the assignment of object identifier values made in this Recommendation | International Standard. It does not form an integral part of this Recommendation | International Standard.

Annex C gives examples of applying the basic encoding rules for encoding reals. It does not form an integral part of this Recommendation | International Standard.

 


INTERNATIONAL  STANDARD

ISO/IEC 8825-1 : 1995 (E)

ITU-T Rec. X.690 (1994 E)

ITU-T  RECOMMENDATION

Information  technology    ASN.1  encoding rules:
Specification  of  Basic  Encoding  Rules  (BER),
Canonical  Encoding  Rules  (CER)
and  Distinguished  Encoding  Rules  (DER)

1           Scope

This Recommendation | International Standard specifies a set of basic encoding rules that may be used to derive the specification of a transfer syntax for values of types defined using the notation specified in ITU-T Rec. X.680 | ISO/IEC 8824-1, ITU-T Rec. X.681 | ISO/IEC 8824-2, ITU-T Rec. X.682 | ISO/IEC 8824-3, and ITU-T Rec. X.683 | ISO/IEC 8824-4, collectively referred to as Abstract Syntax Notation One or ASN.1. These basic encoding rules are also to be applied for decoding such a transfer syntax in order to identify the data values being transferred. It also specifies a set of canonical and distinguished encoding rules that restrict the encoding of values to just one of the alternatives provided by the basic encoding rules.

2           Normative references

The following Recommendations and International Standards contain provisions which, through reference in this text, constitute provisions of this Recommendation | International Standard. At the time of publication, the editions indicated were valid. All Recommendations and Standards are subject to revision, and parties to agreements based on this Recommendation | International Standard are encouraged to investigate the possibility of applying the most recent edition of the Recommendations and Standards listed below. Members of IEC and ISO maintain registers of currently valid International Standards. The Telecommunication Standardization Bureau of the ITU maintains a list of currently valid ITU-T Recommendations.

2.1        Identical Recommendations | International Standards

      ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-1:2002, Information technology – Abstract Syntax Notation One (ASN.1): Specification of basic notation.

      ITU-T Recommendation X.681 (2002) | ISO/IEC 8824-2:2002, Information technology – Abstract Syntax Notation One (ASN.1): Information object specification.

      ITU-T Recommendation X.682 (2002) | ISO/IEC 8824-3:2002, Information technology – Abstract Syntax Notation One (ASN.1): Constraint specification.

      ITU-T Recommendation X.683 (2002) | ISO/IEC 8824-4:2002, Information technology – Abstract Syntax Notation One (ASN.1): Parameterization of ASN.1 specifications.

2.2        Additional references

      ISO International Register of Coded Character Sets to be used with Escape Sequences.

      ISO/IEC 2022:1994, Information technology – Character code structure and extension techniques.

      ISO 2375:1985, Data processing – Procedure for registration of escape sequences.

      ISO 6093:1985, Information processing – Representation of numerical values in character strings for information interchange.

      ISO/IEC 6429:1992, Information technology – Control functions for coded character sets.

      ISO/IEC 10646‑1:2000, Information technology – Universal Multiple-Octet Coded Character Set (UCS) – Part 1: Architecture and Basic Multilingual Plane.

3           Definitions

For the purposes of this Recommendation | International Standard, the definitions of ITU-T Rec. X.200 | ISO/IEC 7498‑1 and ITU-T Rec. X.680 | ISO/IEC 8824-1 and the following definitions apply.

3.1        canonical encoding[CP__27461] : A complete encoding of an abstract value obtained by the application of encoding rules that have no implementation-dependent options.  Such rules result in the definition of a 1‑1 mapping between unambiguous and unique encodings and values in the abstract syntax.[CP__27462] 

3.2               constructed encoding[CP__27463] : A data value encoding in which the contents octets are the complete encoding of one or more data values.[CP__27464] 

3.3               contents octets[CP__27465] : That part of a data value encoding which represents a particular value, to distinguish it from other values of the same type.[CP__27466] 

3.4               data value[CP__27467] : Information specified as the value of a type; the type and the value are defined using ASN.1.[CP__27468] 

3.5               dynamic conformance[CP__27469] : A statement of the requirement for an implementation to adhere to the prescribed behaviour in an instance of communication.[CP__274610] 

3.6               encoding (of a data value)[CP__274611] : The complete sequence of octets used to represent the data value.[CP__274612] 

3.7               end-of-contents octets[CP__274613] : Part of a data value encoding, occurring at its end, which is used to determine the end of the encoding.

NOTE – Not all encodings require end-of-contents octets.[CP__274614] 

3.8               identifier octets[CP__274615] : Part of a data value encoding which is used to identify the type of the value.

NOTE – Some ITU-T Recommendations use the term "data element" for this sequence of octets, but the term is not used in this Recommendation | International Standard, as other Recommendations | International Standards use it to mean "data value".[CP__274616] 

3.9               length octets[CP__274617] : Part of a data value encoding following the identifier octets which is used to determine the end of the encoding.[CP__274618] 

3.10             primitive encoding[CP__274619] : A data value encoding in which the contents octets directly represent the value.[CP__274620] 

3.11             receiver[CP__274621] : An implementation decoding the octets produced by a sender, in order to identify the data value which was encoded.[CP__274622] 

3.12             sender[CP__274623] : An implementation encoding a data value for transfer.[CP__274624] 

3.13             static conformance[CP__274625] : A statement of the requirement for support by an implementation of a valid set of features from among the defined features.[CP__274626] 

3.14             trailing 0 bit[CP__274627] : A 0 in the last position of a bitstring value.

NOTE – The 0 in a bitstring value consisting of a single 0 bit is a trailing 0 bit. Its removal produces an empty bitstring.[CP__274628] 

4           Abbreviations

For the purposes of this Recommendatrion | International Standard, the following abbreviations apply:

ASN.1      Abstract Syntax Notation One[CP__274629] 

BER          Basic Encoding Rules of ASN.1[CP__274630] 

CER          Canonical Encoding Rules of ASN.1[CP__274631] 

DER          Distinguished Encoding Rules of ASN.1[CP__274632] 

ULA         Upper Layer Architecture[CP__274633] 

5           Notation

This Recommendation | International Standard references the notation defined by ITU-T Rec. X.680 | ISO/IEC 8824-1.

6           Convention

6.1               This Recommendation | International Standard specifies the value of each octet in an encoding by use of the terms "most significant bit" and "least significant bit".

NOTE – Lower layer specifications use the same notation to define the order of bit transmission on a serial line, or the assignment of bits to parallel channels.

6.2               For the purposes of this Recommendation | International Standard only, the bits of an octet are numbered from 8 to 1, where bit 8 is the "most significant bit", and bit 1 is the "least significant bit".

6.3               For the purpose of this Recommendation | International Standard, two octet strings can be compared. One octet string is equal to another if they are of the same length and are the same at each octet position. An octet string, S1, is greater than another, S2, if and only if either:

a)     S1 and S2 have identical octets in every position up to and including the final octet in S2, but S1 is longer; or

b)     S1 and S2 have different octets in one or more positions, and in the first such position, the octet in S1 is greater than that in S2, considering the octets as unsigned binary numbers whose bit n has weight 2n–1.

7           Conformance

7.1               Dynamic conformance is specified by clauses 8 to 12 inclusive.

7.2               Static conformance is specified by those standards which specify the application of one or more of these encoding rules.

7.3               Alternative encodings are permitted by the basic encoding rules as a sender's option. Receivers who claim conformance to the basic encoding rules shall support all alternatives.

NOTE – Examples of such alternative encodings appear in 8.1.3.2 b) and Table 3.

7.4               No alternative encodings are permitted by the Canonical Encoding Rules or Distinguished Encoding Rules.

8           Basic encoding rules

8.1        General rules for encoding