TOP

What's New in the OSS ASN.1 Tools for C#

Applies to: ASN.1/C# 5.0

What's New in ASN.1/C# 5.0

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 5.0.

New Features

Support for Partial Decoding

The ASN.1 compiler now supports the new -enablePartialDecode and -partialDecodeOnly command-line options and the OSS.DataCallback and OSS.InfoCallback compiler directives. The -enablePartialDecode and -partialDecodeOnly compiler options instruct the compiler to generate code that makes the new DecodePartial() method of the Codec object available to you. The method does not return the decoded PDU value. Instead, it invokes a user-defined callback method when decoding each field that is marked by the OSS.DataCallback or OSS.Info Callback compiler directive and optionally passes the decoded field value to it.

The partial decoding feature enables you to

  • Extract data without writing code to access deeply nested fields of complex PDUs.
  • Reduce the memory footprint of applications that contain minimal information in their PDUs.

The feature is available for the BER, DER, PER, UPER, CPER, CUPER, OER, and COER encoding rules.

For more information, see the Partial Decoding section.

New samples

Samples for release 16 of the LTE and 5G protocols have been created:

  • TS 38.463 (5g_e1ap_r16) V16.0.0 (2020-01)
  • TS 38.473 (5g_f1ap_r16) V16.0.0 (2020-01)
  • TS 38.413 (5g_ngap_r16) V16.0.0 (2020-01)
  • TS 38.423 (5g_xnap_r16) V16.0.0 (2020-01)
  • TS 36.413 (lte_s1ap_nb_iot_r16) V16.0.0 (2020-01)
  • TS 36.413 (lte_s1ap_r16) V16.0.0 (2020-01)
  • TS 36.423 (lte_x2ap_nb_iot_r16) V16.0.0 (2020-01)
  • TS 36.423 (lte_x2ap_r16) V16.0.0 (2020-01)

The following new samples have been created for:

  • Release 15 of the 5G RRC protocol: TS 38.331 (5G RRC) V15.7.0 (2019-09).
  • Release 15 of the SLmAP LTE protocol: TS 36.459 (LTE SLmAP) V15.0.0 (2018-01).

The basic/threads sample has been created. The sample demonstrates how to use the OSS ASN.1/C# API in multi-threaded applications.

Samples for releases 13, 14, and 15 of the LTE and 5G protocols have been updated to use the most recent versions of the ASN.1 schemas available:

  • TS 38.463 (5g_e1ap_r15) V15.5.0 (2019-10)
  • TS 38.473 (5g_f1ap_r15) V15.7.0 (2019-10)
  • TS 38.413 (5g_ngap_r15) V15.5.0 (2019-10)
  • TS 38.423 (5g_xnap_r15) V15.5.0 (2019-10)
  • TS 29.171 (lte_lcs_r14) V14.3.0 (2019-09)
  • TS 29.171 (lte_lcs_r15) V15.3.0 (2019-09)
  • TS 36.455 (lte_lppa_r15) V15.2.1 (2019-01)
  • TS 36.331 (lte_rrc_cv2x_r14) V14.12.0 (2019-09)
  • TS 36.331 (lte_rrc_cv2x_r15) V15.7.0 (2019-09)
  • TS 36.331 (lte_rrc_nb_iot_r13) V13.14.0 (2019-06)
  • TS 36.331 (lte_rrc_nb_iot_r14) V14.12.0 (2019-09)
  • TS 36.331 (lte_rrc_nb_iot_r15) V15.7.0 (2019-09)
  • TS 36.331 (lte_rrc_r13) V13.14.0 (2019-06)
  • TS 36.331 (lte_rrc_r14) V14.12.0 (2019-09)
  • TS 36.331 (lte_rrc_r15) V15.7.0 (2019-09)
  • TS 36.413 (lte_s1ap_nb_iot_r13) V13.8.0 (2018-09)
  • TS 36.413 (lte_s1ap_nb_iot_r14) V14.9.0 (2019-07)
  • TS 36.413 (lte_s1ap_nb_iot_r15) V15.7.1 (2019-10)
  • TS 36.413 (lte_s1ap_r13) V13.8.0 (2018-09)
  • TS 36.413 (lte_s1ap_r14) V14.9.0 (2019-07)
  • TS 36.413 (lte_s1ap_r15) V15.7.1 (2019-10)
  • TS 36.423 (lte_x2ap_nb_iot_r13) V13.8.0 (2019-10)
  • TS 36.423 (lte_x2ap_nb_iot_r14) V14.8.0 (2019-10)
  • TS 36.423 (lte_x2ap_nb_iot_r15) V15.7.0 (2019-10)
  • TS 36.423 (lte_x2ap_r13) V13.8.0 (2019-10)
  • TS 36.423 (lte_x2ap_r14) V14.8.0 (2019-10)
  • TS 36.423 (lte_x2ap_r15) V15.7.0 (2019-10)

Improvements

  • The ASN.1 compiler will now issue an error when the governors of an information object set or value set used as actual parameters and the actual parameter of the paramdummy governor included in an instance of a parameterized type are not compatible.
    The new -allow flag, incompatibleGovernorsForObjectValueSets, can be used to suppress these errors.
  • The ASN.1 compiler will now correctly apply the EXTENSIBILITY IMPLIED option in the module definition. The following inextensible types defined in the module will now be implicitly extensible:
    • All ENUMERATED types.
    • SET, SEQUENCE, and CHOICE types whose type definitions match some type definitions inside other modules that do not have the EXTENSIBILITY IMPLIED option.
    Previously, the EXTENSIBILITY IMPLIED option did not have an effect on the above types. This could result in an incorrect PER encoding of their values at runtime.
    The new -allow BadExtensibilityImplied option can be used to restore the previous behavior.
  • The ASN.1 compiler will now correctly compare values of a BIT STRING type with named bits when one of the values is specified as {}.
    Previously, the compiler incorrectly compared these values. As a result, a false constraint violation could be reported or a real violation could be missed.
  • The ASN.1 compiler will now correctly apply ASN1.WorkingSet directives specified with module names but without definitive module identifiers when the target module definition includes a definitive module identifier and is referenced in the IMPORTS statement with the SUCCESSOR syntax.
    Previously, when the non-relaxed mode was used, an error about undefined types was issued and the types from the specified working set were not included in the generated code.

What's New in ASN.1/C# 4.7

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.7.

New Features

Support for X.680 Amendment 1

The ASN.1 compiler now supports X.680 Amendment 1. The IMPORTS clause allows symbols to be imported from the latest module version, as indicated by the object identifier, and it can now include WITH SUCCESSORS and WITH DESCENDANTS as SelectionOption.

Support for .NET Standard 2.0

The OSS ASN.1 Tools for C# now includes an additional version of the runtime assembly compatible with .NET Standard 2.0. You can use it to target numerous platforms that implement the .NET Standard 2.0 specification (for example, .NET Framework, .NET Core, Xamarin, Mono, UWP, etc.). Unlike .NET Standard 1.4, the .NET Standard 2.0 version of asn1csrt.dll does not require that the ASN.1 must be compiled with the -noSerializable command-line parameter. It also supports C# classes generated with the -genSchemaInfo compiler option.

Support for the following compiler directives:
  • The ASN1.Remove directive, which instructs the ASN.1 compiler to ignore ASN.1 items. Currently, the following restriction applies: when the CANONICAL-XER encoder is used, the ASN1.Remove directive cannot be applied to components with a DEFAULT value (they must be encoded, therefore they cannot be removed).
  • The ASN1.DeferDecoding directive. When ASN1.DeferDecoding is specified, the compiler will not automatically decode a particular component within a CHOICE, SEQUENCE, or SET structure when its containing type is marked for decoding.
A special type of absolute reference notation

A special type of absolute reference notation that allows you to access ASN.1 types located within WITH COMPONENTS and WITH COMPONENT (inner subtype) clauses and consists of two dollar signs ($$) followed by an index number indicating a particular WITH COMPONENTS or WITH COMPONENT is now supported. You can now assign user-defined names within CONSTRAINED BY clauses that are present within an inner subtype or a compiler-generated structure.

An alternative form of encoding values

The JSON encoders now support an alternative form of encoding values of BIT STRING or OCTET STRING types with contents constraints if an ENCODED BY is absent. When you select this form, the values are encoded as text (the JSON value represents the contained value) rather than hex string.

New compiler options

The -jer command-line option is now an alias for the -json command-line option.

New samples

The following new samples have been created:

  • A sample for the DIN EN 15722 Intelligent transport systems - ESafety - ECall minimum set of data standard. The sample demonstrates how the ECallMessage message can be created and serialized to UPER bits using the API of the generated C# classes.
  • A sample for the eUICC Profile Package standard. The sample demonstrates how the eUICC Profile Package can be constructed and saved to the disk file using the API of the generated C# classes.
  • A sample for the GSMA Remote SIM Provisioning standard. The sample demonstrates how to invoke the GetBoundProfilePackage function of the ES9+ interface at the SM-DP+ using the API of the generated C# classes.

The following samples have been created for release 15 of the LTE protocols:

  • TS 29.171 (LCSAP) V15.1.0 (2018-09)
  • TS 36.455 (LPPA) V15.1.0 (2018-09)
  • TS 36.443 (M2AP) V15.0.0 (2018-09)
  • TS 36.444 (M3AP) V15.0.0 (2018-09)
  • TS 36.331 (RRC CV2X) V15.3.0 (2018-09)
  • TS 36.331 (RRC NB IOT) V15.3.0 (2018-09)
  • TS 36.331 (RRC) V15.3.0 (2018-09)
  • TS 36.413 (S1AP NB IOT) V15.3.0 (2018-09)
  • TS 36.413 (S1AP) V15.3.0 (2018-09)
  • TS 29.168 (SBCAP) V15.1.0 (2018-09)
  • TS 36.423 (X2AP NB IOT) V15.3.0 (2018-09)
  • TS 36.423 (X2AP) V15.3.0 (2018-09)
  • TS 36.463 (XWAP) V15.0.0 (2018-06)

The following samples for releases 13 and 14 of the LTE protocols have been updated to use the most recent versions of the ASN.1 schemas available:

  • TS 29.171 (LCSAP) V14.2.0 (2017-12)
  • TS 36.455 (LPPA) V14.5.0 (2018-09)
  • TS 36.443 (M2AP) V14.1.0 (2018-09)
  • TS 36.331 (RRC CV2X) V14.8.0 (2018-09)
  • TS 36.331 (RRC NB IOT) V13.10.0 (2018-07)
  • TS 36.331 (RRC NB IOT) V14.8.0 (2018-09)
  • TS 36.331 (RRC) V13.11.0 (2018-09)
  • TS 36.331 (RRC) V14.8.0 (2018-09)
  • TS 36.413 (S1AP NB IOT) V13.7.0 (2018-06)
  • TS 36.413 (S1AP NB IOT) V14.7.0 (2018-09)
  • TS 36.413 (S1AP) V13.7.0 (2018-06)
  • TS 36.413 (S1AP) V14.7.0 (2018-09)
  • TS 29.169 (SBCAP) V14.2.0 (2017-12)
  • TS 36.423 (X2AP NB IOT) V14.6.0 (2018-06)
  • TS 36.423 (X2AP) V14.6.0 (2018-06)

The following new samples have been created for release 15 of the 5G protocols:

  • TS 38.463 (E1AP) V15.1.0 (2018-09)
  • TS 38.473 (F1AP) V15.3.0 (2018-09)
  • TS 38.413 (NGAP) V15.1.0 (2018-09)
  • TS 38.423 (XnAP) V15.1.0 (2018-09)

A new sample has been created for the BTP protocol (ILP-RFC 0023: Bilateral Transfer protocol). The sample demonstrates how BTP peers communicate using the Prepare, Fulfill, and Reject requests.

Improvements

  • The BER decoder no longer issues a false error while skipping an unknown extension in a SEQUENCE or CHOICE type when the unknown extension is encoded using the indefinite-length form.
  • The ASN.1 compiler now correctly generates the BER codec for decoding messages when the indefinite-length form is used.
  • When the PER encoder removes trailing 0 bits to ensure that the size of the transmitted value of a BIT STRING type with named bits is the smallest size that can carry the value and that it satisfies the size constraint (according to ITU-T X.691 clause 16.3), the value is now correctly encoded.

What's New in ASN.1/C# 4.6

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.6.

New Features

Support for the Canonical Packed Encoding Rules (ALIGNED and UNALIGNED)

The OSS ASN.1 Tools for C# supports the Canonical Packed Encoding Rules (ALIGNED and UNALIGNED) as specified by ITU-T Recommendation X.691 (08/2015) | ISO/IEC 8825-2:2015.

New compiler options

The -cper and -cuper compiler options instruct the compiler to enable support for CPER. For better security, the CPER decoder operates in a strict mode: every deviation from the X.691 standard requirements is reported.

Support for the CANONICAL-PER encoder and CANONICAL-PER decoder is enabled when the -cper or -cuper compiler option is specified. A strict conformance level operation mode has been implemented in the BASIC-PER decoder.

NOTE: The following ASN.1 types are currently not supported by CPER: SET OF, GeneralString, and GraphicString. The compiler issues a warning when these types are encountered in an ASN.1 schema and the -cper or -cuper compiler option is used. The runtime throws an exception on an attempt to encode or decode a value of these types.

New directive

The compiler now supports the ASN1.RealRepresentation directive.

New samples

New samples for release 14 of LTE protocols have been created and existing samples for release 12 and 13 have been updated to the most recent versions of ASN.1 schemas available:

  • TS 29.171 (LCSAP) V14.1.0 (2017-06)
  • TS 36.455 (LPPA) V14.3.0 (2017-09)
  • TS 36.443 (M2AP) V14.0.1 (2017-09)
  • TS 36.444 (M3AP) V14.1.0 (2017-06)
  • TS 36.331 (RRC NB IOT) V14.4.0 (2017-09)
  • TS 36.331 (RRC) V14.4.0 (2017-09)
  • TS 36.413 (S1AP NB IOT) V14.4.0 (2017-10)
  • TS 36.413 (S1AP) V14.4.0 (2017-10)
  • TS 29.169 (SBCAP) V14.1.0 (2017-09)
  • TS 36.331 (RRC CV2X) V14.4.0 (2017-09)
  • TS 36.423 (X2AP NB IOT) V14.4.0 (2017-09)
  • TS 36.423 (X2AP) V14.4.0 (2017-09)
  • TS 36.463 (XWAP) V14.2.0 (2017-06)
  • TS 32.297 (3GPP CDR)

Improvements

The ASN.1 compiler supports the UPPERCAMELCASED and LOWERCAMELCASED keywords in the NAME and TEXT JER encoding instructions.


What's New in ASN.1/C# 4.5

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.5.

New Features

Conformance to Draft ITU-T Recommendation X.jsoner

The ASN.1/C# compiler and runtime library support the JSON Encoding Rules. The existing -json command-line option instructs the compiler to enable support for X.jsoner at runtime.

The JSON codec supports the following encoding instructions:

  • JER:ARRAY
  • JER:BASE64
  • JER:NAME
  • JER:OBJECT
  • JER:TEXT
  • JER:UNWRAPPED
Support for .NET Standard 1.4

The OSS ASN.1 Tools for C# now includes an additional version of the runtime assembly compatible with .NET Standard 1.4. You can use this version of the asn1csrt.dll runtime DLL to develop applications on the following platforms:

To generate C# classes compatible with .NET Standard, specify the -noserializable compiler option.

NOTE: When generating C# classes that will be used with .NET Standard, do not specify the -genschemainfo compiler option. This option generates C# attributes that are not supported by .NET Standard.

New samples

The following new samples for LTE protocols have been added:


What's New in ASN.1/C# 4.4

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.4.

New Features

Support for CXER

The -cxer option has been added to support the Canonical XML Encoding Rules (CXER) in the ASN.1/C# Tools. This option enables generation of the CXER encoder and the XER decoder so CXER messages can be encoded and decoded.

New command-line options

What's New in ASN.1/C# 4.3.1

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.3.1.

New Features

The OSS ASN.1 Tools for C# now includes ASN.1 Studio 8.0. For a summary of the improvements in ASN.1 Studio 8.0, see the Enhancements History section.


What's New in ASN.1/C# 4.3

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.3.

New Features

The following new features have been added:

Support for E-XER

For more information about the limitations that apply to the E-XER encoder/decoder, see the Encoder/Decoder Limitations section.

New command-line option

The -exer command-line option enables generation of code for E-XER.

New runtime option

The RecursionLimit decoder option limits the depth of nested recursive calls when the value of a circularly defined type is decoded.


What's New in ASN.1/C# 4.2

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.2.

New Features

The following new features have been added:

Support for new encoding rules
  • Distinguished Encoding Rules (DER)
  • Canonical Octet Encoding Rules (COER)
  • XML Encoding Rules (XER)
New command-line options
Sample Code Generation

The ASN.1 compiler can generate a sample program that shows you how to encode, decode, or print PDU and Value objects for types defined in the schema. To generate a sample program, use the -sampleCode command-line option.

New method

The Copy() method has been added to the PDU classes. The method implements a deep copy of an object.

New runtime options

The JSON encoder now supports the EncodeImpliedValues option which enables encoding of null PDU fields (they imply a default value) in the JSON output.

The ValueNotationFormatter class now supports the PrintImpliedValues which enables printing of null PDU fields (they imply a default value) in the formatted output.

Improvements

The JSON codec now supports an alternative format so that optional fields can be encoded as <key>:null (for example, "DateOfBirth":null).

Improved UTF8 printing and initialization of UTF8String fields. The ASN.1 compiler now generates human-readable strings (instead of byte arrays) to initialize UTF8String fields.


What's New in ASN.1/C# 4.1

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.1.

New Features

The following new features have been added:

Support for JSON Encoding Rules (JSON)
New command-line options
New representation for SET OF/SEQUENCE OF

The new representation provides a separate class wrapping List<>, which is especially useful when handling nested SET OF/SEQUENCE OF.

Improvements

Improved implementation for comparing SET OF/SEQUENCE OF values. You can now compare nested SET OF/SEQUENCE OF on three or more levels.

To facilitate usage of text-based codecs, for example, JSON or XER, the BaseCodec class was separated into two parts: BinaryCodec and TextCodec. Note that existing applications that reference BaseCodec must be changed to reference BinaryCodec.

The compiler now recognizes reserved C# keywords.

Reserved words specified with the -reservedWords compiler option are now case-sensitive.


What's New in ASN.1/C# 4.0

This section provides a summary of the new and enhanced features in the OSS ASN.1 Tools for C# 4.0.

Improvements

With version 4.0, the OSS ASN.1 Tools for C# has been redesigned with a more user-friendly API and better performance.

Users of the OSS ASN.1/C# Tools version 3 will find the architecture and the development process very familiar. However, the API is not compatible with previous versions (3 and earlier), so your existing application code must be modified to use the new API. However, you can install version 4.0 alongside an older version of the OSS ASN.1 Tools for C#; the two versions will peacefully co-exist.

See the Migration Guide for information about upgrading to version 4 and the Comparison Card to see the differences between versions 3 and 4.


This documentation applies to the OSS® ASN.1 Tools for C# release 5.0 and later.

Copyright © 2020 OSS Nokalva, Inc. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means electronic, mechanical, photocopying, recording or otherwise, without the prior permission of OSS Nokalva, Inc.
Every distributed copy of the OSS® ASN.1 Tools for C# is associated with a specific license and related unique license number. That license determines, among other things, what functions of the OSS ASN.1 Tools for C# are available to you.