ASN1C 7.8.1 was released on April 17, 2024. Changes in this release include the following:
- Fixed a bug that could cause a PER encoding of a size-constrained BIT STRING to be incorrect if numbits was specified as 0 (A1C-1326).
- Fixed a bug in C/C++ XER decoding where the decoder incorrectly required extension elements to be present (A1C-1313).
- Fixed a problem in the ASN1C GUI where if Go was the selected language, unchecking the UPER check box would not enable the PER check box (A1C-1281).
- Fixed the -gencssources qualifier, which previously would issue a warning and not create the .mk file.
- Support has been added for .NET v8. This support includes a version of the C# run-time assembly (asn1rtcs.dll) that targets .NET v8, a new -dotnetv8 qualifiers for C# project file generation, and a corresponding option in the ASN1C GUI.
- Support has been added for .NET Standard v2. This support includes a version of the C# run-time assembly (asn1rtcs.dll) that targets .NET Standard v2.
- Fixed a problem where the "asn1c -licfiles" command would show nothing if OSLICDIR was defined and contained an osyslic.txt file.
- Fixed some inconsistencies between the GUI project file and the build.xml file for java/sample_der/PKIX_Certificate.
- Fixed problems that prevented the GUI from working on macos_m1 systems.
- ASN1C v7.7.2 included some changes related to PER encoding of BIT STRINGs with named bits and extensible size constraints. Those changes caused some values to be encoded with length zero where previously they wouldn't be. Further analysis has shown that the previous behavior was more correct, so in v7.8.1 these changes have been reverted (A1C-1123, A1C-1234).
ASN1C 7.8.0 was released on January 12, 2024. New features in this release include the following:
- Added capability to use 100% static memory for C/C++. The capability to use static memory existed in prior releases, but there were still parts of the API that allocated some dynamic memory in the course of setting this up. This has now been eliminated.
- Validation has been added to the DER decoding logic for all languages to ensure elements in a SET or SET OF construct are in correct canonical order. A non-fatal error is raised if the elements are found to be out of order, but decoding is continued rather than aborted.
- The -oid-as-string command-line option was added to allow OBJECT IDENTIFIER values to be stored as dotted number strings. This makes it possible to specify OID arc values to be arbitrarily large integer numbers that will not fit in 32 or 64 bit integer typed variables.
- Support has been added for .NET v7. This support includes a version of the C# run-time assembly (asn1rtcs.dll) that targets .NET v7, a new -dotnetv7 qualifiers for C# project file generation, and a corresponding option in the ASN1C GUI.
- The ASN1C GUI is now included in the SDK for macOS on the Apple M1 platform.
- For C, C++, Java, and C# if -genwriter is specified with one binary encoding rule (e.g., -ber, -per) and one text encoding rule (either -xml or -json), the generated writer will first decode a text representation of the message using the text encoding rule and will then encode a binary representation of the message using the binary encoding rule.
- Similarly, if -genreader is specified with one binary encoding rule and one text encoding rule, the generated reader will first decode a binary representation of the message using the binary encoding rule and will then encode a text representation of the message using the text encoding rule.
- Support for handling table constraints has been added for the OER and PER encoding rules.
The following defects were fixed in this release:
- Fixed ASN2XSD so an assertion violation is not signaled if an element in the ASN.1 is of type CHARACTER STRING, EXTERNAL, or EMBEDDED PDV (A1C-1233).
- Fixed Go JER encoding of open type to follow X.697 and not to wrap the open type value in a JSON object.
- Fixed Java and C# writer generation so random test data is not generated unless -gentest is specified.
- Fixed defects in Go JSON (JER) code generation in decoding types designated to be big integers.
- Fixed defects in Go JSON (JER) code generation for encoding and decoding elements in version bracket groups.