ASN.1 Tools for C# — Enhancements History

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

  • 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
  • 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.