TOP

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

Applies to: ASN.1/C# v5.3

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

New Features

Support for nullable reference types

The new -nullableReferenceTypes compiler option instructs the ASN.1/C# compiler to generate a nullable aware context with nullable reference types for the following schema fields:

  • Fields that have ASN.1 reference types marked as OPTIONAL or DEFAULT within a SET, SEQUENCE, or CLASS type
  • Fields that appear after the extension marker ("...") in a SET or SEQUENCE type
  • Alternatives in a CHOICE type

Previously, only C# nullable value types were supported for the following ASN.1 simple types: BOOLEAN, INTEGER, NULL, ENUMERATED, and REAL.

When the -nullableReferenceTypes option is specified, each generated C# file includes a "#nullable enable annotations" directive. Variables with nullable reference types are generated with the "?" nullable modifier. A C# compiler that supports C# language version 8.0 or later (available in Visual Studio 2019 or later) must be used during compilation.

Support for custom Size and ValueRange attributes

The new -genSizeValueRangeAttributes compiler option instructs the ASN.1 compiler to generate custom SizeAttribute and ValueRangeAttribute attributes from the Oss.Asn1 namespace. The attributes include the effective minimum and maximum values of permitted counts, lengths, and integer values that are computed based on the subtype constraints present in the input ASN.1 schema.

SizeAttribute and ValueRangeAttribute are attached to C# properties, which represent fields associated with ASN.1 types that have size or value range constraints. Subtype constraints applied to elements of SEQUENCE OF and SET OF types are mapped to attributes attached to the corresponding parent collection class.

Attributes can be retrieved by an application using C# Reflection at runtime.

SizeAttribute is generated for the following types with size constraints:

  • SEQUENCE OF
  • SET OF
  • restricted character strings
  • BIT STRING
  • OCTET STRING

SizeAttribute stores the effective minimum value in the Min property and the effective maximum value in the Max property. The properties have a C# "int" type with values between 0 and INT_MAX (2147483647). An additional IsExtensible property returns true if the corresponding size constraint is extensible, for example, (SIZE(1..2, ...)).

ValueRangeAttribute is generated for INTEGER types with value range constraints that are not marked with the HUGE directive. The attribute stores the effective minimum value in the Min property and the effective maximum value in the Max property. The Min and Max properties have a C# "object" type. An additional OperandType property can be used to determine the actual C# integer type, which can be either an "int", "long", or "ulong" type. The IsExtensible property returns true if the corresponding value range constraint is extensible.

Improvements

The following changes have been made to the ASN.1 compiler:

  • ASN.1 values of BIT STRING types with named bit lists and size constraints are now correctly handled when the values are defined using one or more identifiers from the parent type list. These values can be present within a DEFAULT syntax, within a single value constraint, or nested within other values.
    The generated values now have the smallest possible length permitted by the size constraint, which includes the largest bit value from identifiers specified in the ASN.1 value definition. If the smallest length is greater than the largest bit value, the value is padded with trailing zero bits until it reaches the smallest length.
  • When the ASN.1/C# compiler handles uninitialized value components within objects of types with contents constraints, it now generates code that does not cause ToString() to throw a null reference exception. A <<<NULL>>> placeholder string is printed instead.
  • All reference type fields are now omitted when a reference type is used in the "COMPONENTS OF Type" notation of a field that appears after the extension marker within another reference type used in the "COMPONENTS OF Type" notation after the extension marker, as required by the ASN.1 standard.

The following runtime changes have been made:

  • The OER decoder now ignores unknown extensions. The OER runtime correctly decodes sequences that contain unknown extensions and ignores unrecognized types.
  • The COER/OER encoder now correctly encodes an octet string in a large structure. Previously, when the encoding object size was greater than the default buffer chunk size, NullReferenceException was issued.

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

New Features

The following changes have been made to the ASN.1 compiler:

  • The -2015 compiler option is now an alias of the new -2021 compiler option.
  • The ASN1.Version compiler directive now accepts "2021" as an argument.

New utility classes

The following utility classes have been implemented:

  • The Oss.Asn1.ByteTool utility class, which provides methods that are used to print the hexadecimal dump of binary data, to convert binary data that represents Binary-Coded Decimal (BCD) numbers and IP addresses to standard text notation, and to parse text notation back to binary data.
  • The Oss.Asn1.BerTool utility class, which defines the following methods that can be useful when working with BER encodings:
    • int BerTool.ReadBerMessage(Stream, ref byte[]), which facilitates error recovery when reading concatenated BER messages from a stream.
    • Tlv BerTool.ReadTlv(ref ArraySegment<byte>), which implements a pull parser that parses a BER encoding to TLV objects.
    • void BerTool.DumpTlv(ref ArraySegment<byte>, ITlvDump), which implements a TLV dump that is similar to the dump printed by the osstlv.exe utility.
    The osstlv.exe utility is now cross-platform and can be run on the following platforms:
    • Windows with .NET Framework 3.0 or later, .NET Core 2.1 or later, or .NET 5 or later.
    • MacOs with .NET Core 2.1 or later or .NET 5 or later.
    • Linux with .NET Core 2.1 or later or .NET 5 or later.
    This new version of the utility replaces the osstlv.exe native executable that could be run only on Windows platforms.
  • Additional utility methods for the following C# classes that represent simple ASN.1 types:
    • Oss.Asn1.ObjectIdentifier:
      • ToString();
      • ToString(bool);
    • Oss.Asn1.RelativeOid:
      • ToString();
      • ToString(bool);
    • Oss.Asn1.BitString:
      • ToString();
      • ToHexString();
    • Oss.Asn1.BitStringWithCOntentsConstraint:
      • ToString();
    • Oss.Asn1.OctetStringWithCOntentsConstraint:
      • ToString();

New samples

The ASN.1 Standards repository now includes ASN.1 specifications for 3GPP Release 17, as follows:

  • 5g_e1ap_r17 TS 37.483 V17.1.0 (2022-06)
  • 5g_f1ap_r17 TS 38.473 V17.1.0 (2022-06)
  • 5g_ngap_r17 TS 38.413 V17.1.1 (2022-06)
  • 5g_rrc_r17 TS 38.331 V17.1.0 (2022-07)
  • 5g_xnap_r17 TS 38.423 V17.1.0 (2022-06)
  • lte_lcsap_r17 TS 29.171 V17.0.0 (2022-03)
  • lte_lppa_r17 TS 36.455 V17.0.0 (2022-04)
  • lte_m2ap_r17 TS 36.443 V17.0.1 (2022-04)
  • lte_m3ap_r17 TS 36.444 V17.0.0 (2022-04)
  • lte_rrc_cv2x_r17 TS 36.331 V17.1.0 (2022-07)
  • lte_rrc_nb_iot_r17 TS 36.331 V17.1.0 (2022-07)
  • lte_rrc_r17 TS 36.331 V17.1.0 (2022-07)
  • lte_s1ap_nb_iot_r17 TS 36.413 V17.1.0 (2022-06)
  • lte_s1ap_r17 TS 36.413 V17.1.0 (2022-06)
  • lte_sbcap_r17 TS 29.168 V17.1.0 (2021-12)
  • lte_slmap_r17 TS 36.459 V17.0.0 (2022-04)
  • lte_x2ap_nb_iot_r17 TS 36.423 V17.1.0 (2022-06)
  • lte_x2ap_r17 TS 36.423 V17.1.0 (2022-06)
  • lte_xwap_r17 TS 36.463 V17.0.0 (2022-04)
  • umts_rrc_r17 TS 25.331 V17.1.0 (2022-07)

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

Improvements

The following -compat flags have been added:


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

New Features

ASN.1 value notation parsing

The -avn compiler option is now supported. The option instructs the compiler to generate additional C# code that implements parsing of ASN.1 value notation data into C# objects that represent values defined by value notation. For more information about implementation restrictions, see the Value Parsing section.

NOTE: The ASN.1 value notation parser generated by the -avn option is a chargeable feature in non-evaluation licenses. Contact Sales to obtain pricing information.

New samples

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

  • 5g_rrc_r16 TS 38.331 V16.4.1 (2021-03)
  • lte_lcsap_r16 TS 29.171 V16.2.0 (2020-12)
  • lte_lppa_r16 TS 36.455 V16.1.0 (2020-10)
  • lte_m2ap_r16 TS 36.443 V16.1.0 (2021-01)
  • lte_m3ap_r16 TS 36.444 V16.0.0 (2020-07)
  • lte_rrc_cv2x_r16 TS 36.331 V16.4.0 (2021-03)
  • lte_rrc_nb_iot_r16 TS 36.331 V16.4.0 (2021-03)
  • lte_rrc_r16 TS 36.331 V16.4.0 (2021-03)
  • lte_sbcap_r16 TS 29.168 V16.0.0 (2020-07)
  • lte_slmap_r16 TS 36.459 V16.0.0 (2020-07)
  • lte_xwap_r16 TS 36.463 V16.0.0 (2020-07)
  • umts_rrc_r16 TS 25.331 V16.1.0 (2020-10)

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

  • 5g_e1ap_r15 TS 38.463 V15.8.0 (2020-10)
  • 5g_e1ap_r16 TS 38.463 V16.5.0 (2021-04)
  • 5g_f1ap_r15 TS 38.473 V15.13.0 (2020-03)
  • 5g_f1ap_r16 TS 38.473 V16.4.1 (2021-03)
  • 5g_ngap_r15 TS 38.413 V15.11.0 (2021-04)
  • 5g_ngap_r16 TS 38.413 V16.5.0 (2021-04)
  • 5g_rrc_r15 TS 38.331 V15.13.0 (2021-03)
  • 5g_xnap_r15 TS 38.423 V15.11.0 (2021-04)
  • 5g_xnap_r16 TS 38.423 V16.5.0 (2021-04)
  • lte_lcsap_r15 TS 29.171 V15.5.1 (2021-03)
  • lte_rrc_cv2x_r14 TS 36.331 V14.16.0 (2021-01)
  • lte_rrc_cv2x_r15 TS 36.331 V15.16.0 (2021-03)
  • lte_rrc_nb_iot_r14 TS 36.331 V14.16.0 (2021-01)
  • lte_rrc_nb_iot_r15 TS 36.331 V15.16.0 (2021-03)
  • lte_rrc_r14 TS 36.331 V14.16.0 (2021-01)
  • lte_rrc_r15 TS 36.331 V15.16.0 (2021-03)
  • lte_s1ap_nb_iot_r15 TS 36.413 V15.10.0 (2020-10)
  • lte_s1ap_nb_iot_r16 TS 36.413 V16.5.0 (2021-04)
  • lte_s1ap_r15 TS 36.413 V15.10.0 (2020-10)
  • lte_s1ap_r16 TS 36.413 V16.5.0 (2021-04)
  • lte_x2ap_nb_iot_r15 TS 36.423 V15.11.0 (2020-10)
  • lte_x2ap_nb_iot_r16 TS 36.423 V16.5.0 (2021-04)
  • lte_x2ap_r15 TS 36.423 V15.11.0 (2020-10)
  • lte_x2ap_r16 TS 36.423 V16.5.0 (2021-04)

The cam_denm sample has been updated to use the most recent version of the ASN.1 schema:

  • CAM ETSI EN 302 637-2 V1.4.1 (2019-04)
  • DENM ETSI EN 302 637-3 V1.3.1 (2019-04)
  • ITS-Container ETSI TS 102 894-2 V1.3.1 (2018-08)

A new sample has been created for the IEEE 1609.2 specification. The sample demonstrates how to construct, sign, and verify signed Ieee1609Dot2Data using the .NET System.Security.Cryptography API.


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.3 and later.

Copyright © 2024 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.