ITU Home Page International Telecommunication Union Français  Español 
Print Version 
ITU Home Page
Home : ITU-T Home : Study Period 2001-2004
Changing from 1988 ASN.1 to 1997 ASN.1
No Change in the bits on the wire
Differences between 1988 ASN.1 and 1997 ASN.1
Advantages of changing to 1997 ASN.1
How to change to 1997 ASN.1
Mixing 1988 ASN.1 and 1997 ASN.1
Free ASN.1: 1997 syntax checkers
Downloadable books on ASN.1

No Change in the bits on the wire

Please note that there is no change in the “bits on the wire” when changing from using 1988 ASN.1 as defined in Rec. X.208 and 1988 BER as defined in X.209 to using 1997 ASN.1 as defined X.680-X.683 (1997) and 1997 BER as defined in X.690 (1997). In fact, it is impossible for a communicating peer to determine whether 1988 ASN.1 or 1997 ASN.1 is being used by another communicating peer since the bits on the wire do not change.

Back to Top

Differences between 1988 ASN.1 and 1997 ASN.1:

The main difference is that the multitude of defect reports that were issued against CCITT Recommendation X.208 have been corrected in ITU-T Recommendation X.680-X.683. With X.208, there were many ambiguities in the notation that made it possible to write ASN.1 modules which, when implemented, resulted in non-interoperability even though both peers were fully conformant to X.208 and X.209. The most visible manifestations of these bug fixes are the replacement of the macro notation and ANY/ANY DEFINED BY, a change in the CHOICE value notation, and the mandatory presence of identifiers in the definitions of SET SEQUENCE and CHOICE types.

The ability to smoothly extend types in future versions of a protocol has been added by introducing the "..." notation for indicating where extensions are permitted to occur. Several new character string types were also introduced for better support of international languages or alphabets, including one new type CHARACTER STRING that allows the alphabet to be determined at runtime.

Back to Top

Advantages of changing from 1988 ASN.1 to 1997 ASN.1:

Advantages of changing from 1988 ASN.1 to 1997 ASN.1 include better readability, more precision, greater flexibility and much greater ease of implementation. For example, when macros are used in 1988 ASN.1 modules, you cannot determine the purpose of a macro without its author describing it to you using textual comments. With 1997 ASN.1, the notation is much more precise, making the author’s description unnecessary. Indeed, the 1997 ASN.1 replacement for ANY DEFINED BY (now called an open type) and macros such as OPERATION is so much better that applications can be written more quickly, simply and in significantly fewer lines of code than when 1988 ASN.1 is used.
With the 1997 ASN.1, it is possible for encoders and decoders to fully decode a message, including open types nested in open types nested in open types (i.e., ANY nested in ANY nested in ANY...), via a single call to the encoder or decoder, and without any custom modifications to the ASN.1 to accomplish this. Contrast this to the 1988 approach which either requires you to repeatedly call the encoder or decoder for each level of ANY that is to be encoded or decoded, or which requires you to make custom modifications to the ASN.1 and utilize special ASN.1 tools that understand such customizations.

Back to Top

How to change 1988 ASN.1 to 1997 ASN.1

Please refer to ITU-T Recommendation X.680 clause A.3, "Migration to the Current ASN.1 Notation", and Annex E, "Superseded Features", for details on changing from 1988 ASN.1 to 1997 ASN.1. In a nutshell, the main changes you will need to make are:

   1. Ensure that the components of SET, SEQUENCE and CHOICE all have identifiers.

   2. Include a colon after the identifier in CHOICE values.

   3. Change ANY and ANY DEFINED BY to use the more descriptive open type notation (see Annex H of X.680).

    4. Change the macro notation to the information object class notation (e.g., if OPERATION is used) or parameterized types (e.g., if SIGNED is used).

Back to Top

Mixing 1988 ASN.1 and 1997 ASN.1

Please note that you cannot mix 1988 and post-1988 ASN.1 syntax in the same ASN.1 module. You can import types and values from 1988 ASN.1 modules into 1997 and vice versa as long they follow a few guidelines as explained in X.680 clause A.2. For example, a 1997 ASN.1 module cannot import macros, and a 1988 ASN.1 module cannot import types or values containing new types such as UTF8String.

Back to Top

Free ASN.1:1997 syntax checkers

There are two free ASN.1 syntax checkers available for your use in checking your 1997 ASN.1 specifications. Please see and

Back to Top

Downloadable books on ASN.1.
There are also two books on ASN.1 that you can download
Please see (English) and (French and English)

Back to Top


Top - Feedback - Contact Us - Copyright © ITU 2004 All Rights Reserved
Contact for this page : TSB EDH
Updated : 2004-10-21