ASN1C 7.8.3 was released on February 3, 2025. Changes in this release include the following:
- Fixed an issue that could cause uncompilable C code to be generated if the ASN.1 contained an OBJECT IDENTIFIER and dynamic memory was being used (A1C-1617).
- Fixed an issue where the C/C++ PER code incorrectly expected an extension bit for a SEQUENCE OF type (A1C-1461). Certain cases of this were addressed in 7.8.2; this addressed another case.
- Fixed a problem that would cause a generated C makefile to get link errors on the writer or reader if dual rules (one binary and one text) were specified during generation (A1C-1577).
- Fixed a problem that would cause invalid Java writers and readers to be generated if both UPER and a text encoding rule were specified (A1C-1572).
- Fixed the Go runtime layer to not panic when trying to read an integer from the input buffer and there is a buffer overflow but to instead return an error (A1C-1569).
- Fixed an issue that could cause the de-selection of an encoding rule in the ASN1C GUI not be be seen when code generation is done (A1C-1566).
- Fixed an issue with C/C++ JSON decoding where an error (unexpected end of buffer) would incorrectly be reported after decoding an INTEGER type that was the actual type for an open type (SALES-3826).
- Fixed an issue in C/C++ PER decoding where use of -dynamic or equivalent configuration would result in a dynamic array memory allocation that was not checked for failure (out of memory) (A1C-1538).
- Fixed an issue in Go code generation where a tag of two or more bytes would not be properly encoded (A1C-1561).
- Fixed an issue in C/C++ code generation where a call to rtxErrCheckNonFatal() would be generated if -compat specified 7.5 or earlier. The call should not have been generated in this situation (A1C-1528).
- Fixed issues for C/C++ related to the "notUsed" configuration option. These included: assignment of "n", a non-existent field; references to non-existent fields in generated print-to-string functions; empty structs generated when all fields are notUsed; use of undeclared "extbit" variable; assignment of non-existent field when decoding an INTEGER; use of non-existent field when decoding an ENUMERATED; generation of a "OS_UNUSED_ARG (pvalue)" statement for a non-existent pvalue parameter; assignment of a non-existent field to set the DEFAULT value. (A1C-1514)
- Fixed a problem that could cause license checking not to work on Windows systems if the license contained MAC addresses (LIC-20).
- Fixed a sporadic crash in the ASN1C GUI (A1C-1480).
- Corrected the behavior of the -compat option so if 7.5 or older is specified, constraint violations detected during C/C++ decoding will result in an error that stops decoding (A1C-1492)
ASN1C 7.8.2 was released on August 9, 2024. Changes in this release include the following:
- Modified the GUI so when a config file is added to a project, the file is identified as a config file instead of a schema file (A1C-1373).
- Modified the GUI so the option to delete an include directory permanently when removing it from a project is no longer presented (A1C-1373).
- Fixed a bug in the GUI that could potentially cause a crash if a config file is deleted permanently (A1C-1373).
- Fixed an issue where the command line comment in generated Java files might cause the Java compiler to report an error.
- Removed the 32-bit gnu libraries (built with gcc) from the Windows SDK. The SDK still contains both 32-bit and 64-bit libraries built with mingw. The 32-bit gnu libraries can be built upon request.
- Removed the Java ME jars from Java run-time distributions. The Java ME jars can be built upon request.
- Changed Java XML encoding so empty elements are encoded using the longer form (e.g., <tag></tag>) instead of the shorter form (e.g., <tag/>) if the canonical flag is set. This change makes the Java behavior consistent with the C/C++ behavior (A1C-1409).
- Fixed a problem where code would not be generated for some types if an ASN.1 module contained over 5,000 types (A1C-1418).
- Fixed a problem that could cause generated *Values.java files not to compile due to multiple import statements referencing the same class from different packages (A1C-1421).
- Fixed a crash in the compiler that would occur when generating Java or C# PER code for ASN.1 specifications that contain extensible size constraints (A1C-1460).
- Fixed two defects in generated code when using -c++11 and -pdu all. In one case, an object's destructor was called twice. In another case, an object's constructor was not invoked at all. (A1C-1453)
- Fixed a problem that could cause iFloat license operations not to work on macOS (LIC-18).
- Fixed a defect in which X.680 clause 50.11 was not being strictly interpreted to remove extensibility on constraints when a different subtype constraint was applied to the parent type. This affected PER encoding and decoding to remove the extensibility bit from the encoding. This fix was done for all supported languages (A1C-1461).
- We added asn1SetTC_ function generation for the case where an information object sets has only 1 member but is extensible (A1C-1453).
- For Windows distributions the minimum version of Windows where the installation can be done has been changed to Windows 7. If desired, a distribution that will allow installation on versions of Windows as old as Windows 2000 can be created, but such a distribution won't be supported.
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.