ASN.1 Tools for C# — Enhancements History

ASN.1 Tools for C# - version 5.3 (latest version)

  • The ASN.1/C# Tools now includes ASN.1 Studio v10.5.
  • 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.

ASN.1 Tools for C# - version 5.2

  • The ASN.1/C# Tools now includes ASN.1 Studio v10.4.
  • 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.
  • 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();
  • 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)

ASN.1 Tools for C# - version 5.1.0.1


ASN.1 Tools for C# - version 5.1

  • The ASN.1/C# Tools now includes ASN.1 Studio v10.2.
  • The new -avn compiler option has been added. 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, 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 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.

ASN.1 Tools for C# - version 5.0.1.1


ASN.1 Tools for C# - version 5.0.0

  • The ASN.1/C# Tools now includes ASN.1 Studio v9.0.3.
  • 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.
  • 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)
  • 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)

ASN.1 Tools for C# - version 4.7.0

  • The ASN.1/C# Tools now includes ASN.1 Studio v9.0.0.
  • 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.
  • 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.
  • Support for the following compiler directives has been added:
    • The ASN1.Remove directive. The directive 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 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.
  • The following 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.
  • New samples have been created for 3GPP Release 15 of the 5G protocols: NGAP, XnAP, E1AP, and F1AP. The samples for the LCSAP, LPPA, S1AP, M2AP, M3AP, RRC, SBcAP, XwAP, X2AP LTE protocols have been updated to 3GPP Release 15.
  • 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.

ASN.1 Tools for C# - version 4.6.0

  • The ASN.1/C# Tools now includes ASN.1 Studio v8.3.0.
  • Support for the Canonical Packed Encoding Rules (ALIGNED and UNALIGNED) as specified by ITU-T Recommendation X.691 (08/2015) | ISO/IEC 8825-2:2015 has been added:
    • The -cper and -cuper compiler options instruct the compiler to enable support for CPER.
    • For better security, the CPER decoder operates in strict mode: every deviation from the X.691 standard 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.
    • 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.
  • The ASN.1 compiler supports the UPPERCAMELCASED and LOWERCAMELCASED keywords in the NAME and TEXT JER encoding instructions.
  • 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 the ASN.1 schemas:
    • TS 29.171 (LCSAP) V13.3.0 (2017-06)
    • TS 29.171 (LCSAP) V14.1.0 (2017-06)
    • TS 36.455 (LPPA) V14.3.0 (2017-09)
    • TS 36.443 (M2AP) V13.3.0 (2016-03)
    • TS 36.443 (M2AP) V14.0.1 (2017-09)
    • TS 36.444 (M3AP) V13.2.0 (2016-03)
    • TS 36.444 (M3AP) V14.1.0 (2017-06)
    • TS 36.331 (RRC NB IOT) V13.7.1 (2017-09)
    • TS 36.331 (RRC NB IOT) V14.4.0 (2017-09)
    • TS 36.331 (RRC) V12.15.1 (2017-09)
    • TS 36.331 (RRC) V13.7.1 (2017-09)
    • TS 36.331 (RRC) V14.4.0 (2017-09)
    • TS 36.413 (S1AP NB IOT) V13.6.0 (2017-06)
    • TS 36.413 (S1AP NB IOT) V14.4.0 (2017-10)
    • TS 36.413 (S1AP) V12.7.0 (2016-03)
    • TS 36.413 (S1AP) V13.6.0 (2017-06)
    • TS 36.413 (S1AP) V14.4.0 (2017-10)
    • TS 29.169 (SBCAP) V12.10.0 (2017-09)
    • TS 29.169 (SBCAP) V13.3.0 (2017-09)
    • 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) V13.7.0 (2017-06)
    • TS 36.423 (X2AP NB IOT) V14.4.0 (2017-09)
    • TS 36.423 (X2AP) V12.9.0 (2016-07)
    • TS 36.423 (X2AP) V13.7.0 (2017-06)
    • TS 36.423 (X2AP) V14.4.0 (2017-09)
    • TS 36.463 (XWAP) V14.2.0 (2017-06)
    • TS 32.297 (3GPP CDR) V14.0.0 (2017-03)

ASN.1 Tools for C# - version 4.5.0

  • The ASN.1/C# Tools now includes ASN.1 Studio v8.2.0.
  • Conformance to Draft ITU-T Recommendation X.jsoner:
    • The ASN.1/C# compiler and the TOED 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
  • 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.
  • The following new samples for LTE protocols have been added:

ASN.1 Tools for C# - version 4.4.0

  • The ASN.1/C# Tools now includes ASN.1 Studio v8.1.0.
  • 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.
  • The ASN.1/C# Tools now supports decoding of BER, DER, XER, and CXER messages without explicit specification of the message type. The new "-helperapi pdudecoder" compiler option enables generation of the service PDU decoder class so PDUs can be decoded without explicit specification of the PDU type. Automatic detection of the incoming message type is available in the BER, DER, XER, and CXER codecs.
  • Reduce the code size of classes generated with either the encoder or decoder methods by using the -encodeonly or -decodeonly compiler option, respectively.
  • The ASN.1/C# PER encoder-decoder implementation now conforms to the recent X.691 corrigendum (2015): an encoding contained in a BIT STRING should be at least one octet for PER ALIGNED and 1 bit for PER UNALIGNED.
  • New samples:
    • A sample for the 2016-03 version of the J2735 protocol has been created. The sample does not include the J2735:2016 ASN.1 specification due to licensing reasons. Users should obtain it directly from the ITS SAE site.
    • A sample for the 3GPP XwAP (TS 36.463) protocol has been created.

ASN.1 Tools for C# - version 4.3.1


ASN.1 Tools for C# - version 4.3

  • The ASN.1/C# Tools now includes ASN.1 Studio v7.5.1.
  • Support for the Extended XML Encoding Rules (E-XER) was added.
  • The "RecursionLimit" decoder option was added. This option limits the depth of nested recursive calls when the value of a circularly defined type is decoded.

ASN.1 Tools for C# - version 4.2

  • The ASN.1/C# Tools now includes ASN.1 Studio v7.4
  • Support for the following encoding rules was added: Distinguished Encoding Rules (DER), Canonical Octet Encoding Rules (COER), XML Encoding Rules (XER).
  • The ASN.1 compiler has been enhanced to generate a sample program that shows you how to encode, decode, or print PDU and Value objects for types defined in the schema. Use the -sampleCode command-line option to generate a sample program.
  • The Copy() method has been added to the PDU classes. The method implements a deep copy of the object.
  • The JSON codec now supports an alternative format for optional fields to be encoded as <key>:null (e.g. "DateOfBirth":null).
  • The ASN.1 compiler now generates human-readable strings (instead of byte arrays) to initialize UTF8String fields.
  • The JSON encoder now supports the EncodeImpliedValues option which enables encoding of null PDU fields (they imply a default value) in the JSON output. By default, the values of these fields are not included in the output.
  • The ValueNotationFormatter class now supports the PrintImpliedValues which enables printing of null PDU fields (they imply a default value) in the formatted output.

ASN.1 Tools for C# - version 4.1

  • The ASN.1/C# Tools now includes ASN.1 Studio v7.3.
  • Support for JSON. The JSON Encoding Rules for ASN.1 were introduced to facilitate the scaling of JSON-based architectures. With JSON ER, you can preserve the power of text (JSON) encodings, yet take advantage of the conversion to/from binary (ASN.1) encodings for fast transmission or compact storage.
  • New compiler option "-prefix <string>". This option instructs the compiler to generate top-level identifiers with the specified string prefix.
  • Improved implementation for comparing SET OF/SEQUENCE OF values. The comparison of nested SET OF/SEQUENCE OF on 3 or more levels is now supported.

ASN.1 Tools for C# - version 4.0

  • The OSS ASN.1 Tools for C# v4.0 is a complete re-implementation of the product done with the following goals:
    • - improve encoding/decoding speed
        (now up to 10 times faster, on average, compared to the previous ASN.1/C# release)
    • - improved API
    • - support for the Octet Encoding Rules - OER

ASN.1 Tools for C# - version 3.1

  • The ASN.1/C# Tools now includes ASN.1 Studio, a powerful new IDE packed with functionality that allows you to compile ASN.1 specs, display, create, modify or encode messages with just a few mouse clicks, and so much more!
  • The ASN.1/C# tools now install under the Program Files\OSS Nokalva\asn1csharp\ folder (whereas before the 3.1 release, they were installed under Program Files\OSS\asn1csharp\).
  • Samples are now installed under the folder pointed to by the environment variable %ALLUSERSPROFILE%. By default, on Windows 7 and VISTA, the samples are installed under the C:\ProgramData\OSS Nokalva\asn1csharp\win32\<version-number>\samples folder, and on Windows XP, the samples are installed under the C:\Documents and Settings\All Users\Application Data\OSS Nokalva\asn1csharp\win32\<version-number>\samples folder.

ASN.1 Tools for C# - version 2.2

  • The OSS ASN.1 compiler for C# now supports the new command line options,-namesForVB/-noNamesForVB, to enable/disable the generation of names for C# properties and methods suitable for use in a Visual Basic .NET applications. The default behavior of the ASN.1 compiler, for backward compatibility, is to generate names that differ in case. We recommend that Visual Basic developers use the new option to avoid case related problems.
  • The runtime Asn1Exception can now become a Serializable object.

ASN.1 Tools for C# - version 2.1

  • OSS ASN.1 Tools for C# version 2.1 supports the full range of time types as specified in ISO 8601 (TIME, DATE, TIME-OF-DAY, DATE-TIME, DURATION). These representations of date and time were standardized to avoid misinterpretations across national boundaries. New runtime types Asn1TimeType(TIME), Asn1DateType (DATE), Asn1DateTimeType (DATE-TIME), Asn1DurationType (DURATION) and Asn1TimeOfDayType (TIME-OF-DAY) are available to support these new time types.
  • A new command line option, -partialClasses, causes the compiler to generate C# partial classes for types, objects, object classes, objects sets, and classes containing module values. The generated partial classes are dedicated to the Microsoft .NET Framework 2.0. They permit a class definition to be split over two or more source files for easier maintenance and development.
  • A new command line option, -useXmlNames, instructs the compiler to generate additional classes for typereferences, different names for type properties and additional names for named identifier constants. The names of these extra classes, properties and constants match the names used in the Extended XER encoding of classes and class members. The ASN.1 Compiler derives the names for such components from the E-XER NAME or TEXT encoding instructions.
  • Runtime methods ToString() now provide the representation of the instance value using ASN.1 value notation. Note that alternatively the Asn1TypeExplorer class, which allows access to more information , such as the reference type name of each component of a constructed type, is still available.
  • The runtime method Decode() has been added to the IDecoder interface. Previously it existed on all decoders but was not visible through the interface.
  • Generic methods are now available for Asn1ConstructedType (SEQUENCE, SET, CHOICE) andAsn1ConstructedOfType (SEQUENCE OF, SET OF) to allow the manipulation of internal components of constructed types without knowing the exact type of these components.
  • The runtime method Validate() now throws Asn1ValidationException (which extendsAsn1Exception) for clearer exception handling when using validating encoders or decoders.

ASN.1 Tools for C# - version 2.0

  • Extended XML Encoding Rules (E-XER) support has been added to the OSS ASN.1 Tools for C#. Now you can have the full capabilities of XML with ASN.1. Extended-XER encoding makes ASN.1 an XML schema notation as powerful as XSD, with the simplicity of ASN.1.
  • A new compiler option, -lineSeparator, allows you to specify a line separator escape sequence of your choice (e.g., to create DOS-type line formatting) for XER or E-XER encodings.
  • A new command line option, -asn1ModuleNamespace, allows you to define a namespace for an ASN.1 module. When used in conjunction with another new option, -noModule, a shared module (ie., a module that has multiple modules importing from it) can be used independently as a common C# DLL by each protocol's generated API.
  • New methods, GetAsn1TypeElements() and AddAsn1Type(), allow you to get a list of elements and to add an element for easier handling of SEQUENCE OF/SET OF types.

ASN.1 Tools for C# - version 1.3

  • A new compiler option, -verbose/-noverbose, controls whether detailed compile-time status messages are displayed. Specifying -verbose will result in the display of details such as the name of the input file currently being read, the contents of the license file in use, etc.
  • A new runtime property, sortingSetOf, has been added to the XER encoders to control the sorting of SET OF components.