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 http://www.oss.com/products/checksyntax.html
and http://asn1.elibel.tm.fr/en/tools/asnp/.
Back to Top
Downloadable books on ASN.1.
There are also two books on ASN.1 that you can download
Please see http://www.oss.com/asn1/booksintro.html
(English) and http://asn1.elibel.tm.fr/en/book/
(French and English)
Back
to
Top
|