ASN.1 Studio — Enhancements History
ASN.1 Studio 10.5 (latest version)
- The Project Settings dialog includes new controls for the
-nullableReferencedTypes and −genSizeValueRangeAttributes ASN.1/C# compiler
command-line options that are supported when using ASN.1/C# compiler version
5.3 or later.
- The following options are now available in the Project Export wizard when exporting ASN.1/C# projects that include the -nullableReferencedTypes
compiler option to Microsoft Visual Studio 2019 or later projects:
- A new combo box that displays a list of language versions that include
the nullable reference types feature, starting with C# language version
8.0, which are supported by the C# compiler included in the Microsoft
Visual Studio version that is selected on the first page of the wizard.
- A new control that allows you to enable a nullable context for the output
.csproj project.
- When using the Generate Messages option, you can now instruct ASN.1 Studio
to apply custom rules defined in the input ASN.1 specification when
generating values for one or more nested fields within a PDU message. You
can specify the rules using the new OSS.GenRandomValues and
OSS.GenOrderedValues directives. Values of fields for which the
OSS.GenRandomValues or OSS.GenOrderedValues directive is not specified are
generated according to the global settings selected in the Value
Initialization dialog.
The OSS.GenRandomValues and OSS.GenOrderedValues directives specify whether
random or ordered values should be generated for a field identified by its
absolute reference. Optionally, the directives may include custom minimum and
maximum limits for the field's values. When the limits are not specified,
the global settings selected in the Value Initialization dialog are used.
You can set minimum and/or maximum limits for the following ASN.1 type
property values by using up to two optional parameters that are separated by
a comma within the directives:
- Integer values for INTEGER types
- Bit, octet, character string length for BIT STRING, OCTET STRING, and
restricted character string types
- An enumerator index for ENUMERATED types
- An alternative index for CHOICE types
- A number of components for SET OF and SEQUENCE OF types
- An information object index inside constraining information object set if
the specified type includes a table or component relation constraint
When a type marked with the OSS.GenRandomValues or OSS.GenOrderedValues is
constrained, values that satisfy its constraints are selected from a range
specified in the directive or assumed by default. If the type is constrained
only with single values, values are selected from a list of constraining
single values. In this case, the limits specified within the directive are
ignored.
Note that a single global index is used to select an ordered value for each
marked field, even when the field types have different constraints.
Therefore, identical values may be generated for some types as long as the
final message of the top-level PDU is unique.
- The last selected PDU name and encoding
rules are now globally preserved in the New Encoding dialog.
- The ASN.1 compiler now correctly handles ASN.1 values of BIT STRING types
with named bit lists and size constraints when the values are defined
using one or more identifiers from the parent type list. These values can be
present within the DEFAULT syntax, within a single value constraint, or
nested within other values.
The internal values that are generated 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.
ASN.1 Studio 10.4
- You can now easily change the order of .asn files within the ASN.1 Files
folder using the drag-and-drop option. Select one or more nodes that
correspond to the .asn files and press and hold the left mouse button while
you drag the items to a new location within the current ASN.1 Files folder.
The selected nodes are moved and inserted before a particular node in the
list.
- The ASN.1 Standards repository includes ASN.1 specifications for 3GPP
Release 17. New versions of the ETSI protocols have also been added.
- The following ASN.1 project file settings are now preserved when exporting
projects:
- Preprocessor definitions and additional C or C++ libraries that are used to
build an application or library with the selected runtime configuration
when exporting ASN.1/C or ASN.1/C++ projects to makefiles or, on Windows
platforms, to Microsoft Visual Studio projects. Previously, those settings
were stored in an ASN.1 Studio configuration file that was common for
different ASN.1 projects.
- Command line arguments that are used for the run command when exporting an
ASN.1/Java project to NetBeans IDE, Eclipse IDE, or Apache Ant script
projects. Previously, those settings were stored in an ASN.1 Studio
configuration file and were overwritten when the export operation was used
for a different ASN.1/Java project.
- The OSS ASN.1 Tools for C version 11.2 and later and OSS ASN.1 Tools for C++
version 7.2 and later no longer support applications built with Microsoft
Visual Studio versions prior to version 2015. The following changes have been made:
- The /bin/vs2015 and /lib/vs2015 folders are no longer included in the
software distribution. All OSS libraries and DLLs are now built with
Microsoft Visual Studio version 2015 and are included in the /bin
and /lib/ folders.
- When the above versions are used in ASN.1 Studio, older versions of
Visual Studio (prior to VS 2015) are no longer detected and included in
the drop-down list of the Project Export dialog even though they are
fully installed.
- The Encoder-specific page located under the Encoder/decoder node of the
Project Settings dialog includes a new check box that corresponds to the
JSON_ENC_CONTAINED_AS_TEXT flag. When the check box is selected, the JSON
encoder encodes BIT STRING and OCTET STRING type values with contents
constraints as text (the JSON value represents the contained value) rather
than hexadecimal strings.
The PER analyzer page of the Project Settings dialog includes the
following new check boxes:
- The "No information about contained types" check box, which corresponds
to the OSS_NO_CONTAINED_TYPE flag. When this check box is selected, the
PER analyzer does not print information about contained types for types
marked with a contents constraint.
- The "No details for TIME types" check box, which corresponds to the
OSS_NO_TIME_DETAILS flag. When this check box is selected, inner records
(details) for TIME types are omitted.
- The "No tracing for truncated elements of SEQUENCE OF and SET OF types
with OSS.Truncate" check box, which corresponds to the
OSS_NO_TRACE_FOR_TRUNCATED_ELEMENTS flag. When this check box is
selected, trace data for truncated elements of SEQUENCE OF and SET OF
types marked with an OSS.Truncate directive is skipped.
ASN.1 Studio 10.3
- Support for the following new features:
- The "Generate Messages" option, which allows you to generate encoded messages into multiple files. Each file will contain one message. Using the "Generate Messages" dialog, you can select the PDU name, configure settings that are used when creating input ASN.1 values, select the encoding rules, and configure settings that are used when generating output files. You can also preserve generated values in ASN.1 value notation files that correspond to the messages included in the output encoding files.
- The "Re-encode Files" option, which allows you to re-encode multiple files and select a set of encoding rules that is different from the one that was used to create the input files.
- The "Save As Multiple Files" option, which allows you to save encoded messages included in a single file into multiple files. Each file will contain one message. You can select different encoding rules that are used for the output files.
- The -2021 ASN.1 compiler option is supported for projects that use ASN.1/Java version 8.5 and later. It is an alias of the -2015 option for older versions.
- The -avn ASN.1 compiler option is supported for projects that use ASN.1/Java version 8.5 and later.
- You can now enter any number of components in the spin box cell of the Value Editor for extensible SET OF and SEQUENCE OF types. Previously, the number was limited to the bounds specified in the size constraint, even though it was extensible.
ASN.1 Studio 10.2
- ASN.1 Studio supports the following new compiler options:
- -avn, which is supported for projects that use
ASN.1/C version 11.1 and later, ASN.1/C++ version 7.1 and later, and ASN.1/C#
version 5.1 and later.
- -csv, which is supported for projects that use ASN.1/Java
version 8.4 and later.
- The Save File dialog includes new controls:
- A control that allows you to instruct the
CSV encoder to skip CSVs that contain only column separators and spaces,
that is, CSVs with empty values for all nested simple types.
- A control that allows you to enter the
maximum number of all CSVs to create for a top-level PDU type value that can
have multiple components for multiple SET OF and SEQUENCE OF type values
for which extra CSVs are created. Previously, the total number of CSVs was
set to the maximum between the user-specified number applied to the number
of CSVs per each SET OF and SEQUENCE OF type and 50, multiplied by 50.
- The Value Editor now accepts integer values in hexadecimal format,
prefixed with "0x", for INTEGER types. When the last entered value is in
hexadecimal format, the same value is shown in the value cell. A tooltip
displays its decimal equivalent.
- ASN.1 Studio supports a new extended CSV header format for .csv files. The format is extended as follows:
- Each absolute reference name is prefixed with a PDU name.
- "*" is used for unnamed SET OF and SEQUENCE OF type components.
- The component's index, which starts with 1, is used for each unnamed
SET, SEQUENCE, and CHOICE type component.
- The limit of 50 applied to a user-specified number in the "Maximum number of
extra CSVs for SET OF and SEQUENCE OF components" control of the Save As File
dialog has been removed. The
total number of additional CSVs for all SET OF and SEQUENCE OF types is
limited to the maximum between the user-specified number and 50, multiplied
by 50.
ASN.1 Studio 10.1.2
- The ASN.1 compiler no longer issues the A0070S error message about a circular reference not being allowed in some cases when parameterized types are used as instances of dummy parameters inside an inner subtype constraint and when they are imported from modules (using WITH SUCCESSORS) that are not yet defined.
- The Go to Definition operation in the Text Editor now correctly highlights ASN.1 items present inside .asn files that include Unicode characters. Previously, the items could be partially highlighted.
ASN.1 Studio 10.1.1
- ASN.1 Studio Help has been updated.
ASN.1 Studio 10.1
-
ASN.1 Studio has been restructured to use a new dynamic link library (DLL),
asn1studio.dll, on Windows platforms, and new shared libraries, libasn1studio.so and
libasn1studio.dylib, on Linux and Mac platforms, respectively.
-
The Go to Definition and Find All References operations now support:
- Referenced items that precede their definitions in the input ASN.1.
- Information object references and value references included in other
information object definitions and value definitions.
- Class field names included in a WITH SYNTAX specification.
- References included in some open type values.
- Field references included in a WITH COMPONENTS specification.
- Items imported from modules that include a WITH SUCCESSORS or WITH
DESCENDANTS token.
-
When creating values in the Value Editor for fields that include a component
relation constraint inside enabled optional fields or inside new components
that are added for SET OF or SEQUENCE OF types within the PDU value tree,
ASN.1 Studio now attempts to find valid constraining information objects
based on the values of the referenced fields included elsewhere in the PDU
value tree.
Previously, constraining information objects were determined based on the
global settings for value initialization.
- The maximum number of components of each SET OF and SEQUENCE OF type value
for which additional CSVs are created can now be set to a number greater
than 50 using the "Maximum number of extra CSVs for SET OF and SEQUENCE OF
components" control included in the Save As File dialog.
The total number of additional CSVs for all SET OF and SEQUENCE OF type
values is now set to the maximum between the user-specified number and 50,
multiplied by 50. Previously, the number was limited to 50.
ASN.1 Studio 10.0.2
- ASN.1 Studio displays new icons for the toolbar, main menu, context menu, and dialog operations.
- You can now import ASN.1 modules from Microsoft Word .docx files.
- The Preferences dialog includes new global settings:
- Create multiple messages with a single Create Value operation in the Value
Editor. You can also select predefined initialization values or random
values for various ASN.1 types.
- Specify the maximum number of messages to decode either for all the project
encoding files of the Projects tree or only for the files that don't have
local limits. Additionally, the new local setting can be used to skip one
or more messages before decoding.
- Change the font, background color, foreground color, and the colors used to highlight the
ASN.1 syntax in the Text Editor.
- ASN.1 Studio can now create new values using a wider range of random values.
The Value Initialization dialog includes the following new controls (to
display the dialog, click File > Preferences, and then click Customize on
the Value Editor or Sample Code page):
- The Value Initialization table includes two columns used to specify ranges
of values. You can now generate random values using user-specified or
predefined lower and upper limits for some or for all ASN.1 types included
in the table.
- An additional Random item is available in the drop-down list. It is used
to generate random values for BOOLEAN and BIT STRING types, INTEGER types
with a NamedNumberList, root arcs of the OID tree, to specify the presence
or absence of values for fields that contain OPTIONAL or DEFAULT syntax
and for extension additions in SET and SEQUENCE types.
- The new Reset to Random button can be used to reset all properties to
generate random values with predefined limits.
- For types with ASN.1 constraints, you can now create the most suitable
valid value or a random value using a set of ASN.1 constraints applied to
a type or you can ignore the constraints and use the Value Initialization
table for all types (constrained and unconstrained).
- ASN.1 Studio now supports INTEGER types marked with an OSS.HUGE directive
that is constrained to have a limited range of values.
- When an OSS.PrintFunctionName directive that contains an OSS conversion
function specified as a parameter is applied to OCTET STRING types and
conversion is possible, the value notation will now include the actual BCD,
TBCD, ASCII, IP address, or time stamp values inside an ASN.1 comment, for example:
'0711071136492B0000'H -- 2007-11-07 11:36:49 --.
- The Project Settings dialog includes the
new -rtoed option, which allows you to generate and export code files that
contain constant function pointers used for the new Time-Optimized
Encoder/Decoder. The option is supported for projects that use ASN.1/C
version 11.0 and later and ASN.1/C++ version 7.0 and later.
ASN.1 Studio 9.0.3
- When you export ASN.1/C or ASN.1/C++ projects, the makefiles and Visual Studio project files generated by ASN.1 Studio have a different format. ASN.1 Studio now generates a single makefile that references the OSS configuration file, common.mak, to ensure that the makefile uses the same C or C++ compiler and linker options used to build the OSS libraries. You can also instruct ASN.1 Studio to use the previous file format by selecting the Export using Qt qmake option and specifying the location of your qmake utility.
- You can now export ASN.1/C, ASN.1/C++, and ASN.1/C# projects on Windows to the Microsoft Visual Studio 2017 projects. Support for exporting to Visual Studio version 2005 has been removed for the OSS ASN.1 Tools for C, OSS ASN.1 Tools for C++, and OSS ASN.1 Tools for C#.
- When importing ASN.1 from .doc files, the start and end tags of a module definition can now be determined more accurately if no special start and end tags are specified and the tokens that match the default tags are placed within ASN.1 or C-style comments. For an example, see the XnAP 15.1.0 specification.
- You can now download a new ASN.1 Studio version separately. The OSS ASN.1 Software Update dialog now displays the latest ASN.1 Studio version and the list of changes.
- The Asn1Standards directory now includes the latest versions of both new and existing ASN.1 standards (for example, 3GPP LTE LCS-AP, LTE LPPa, SLmAP, NGAP, XnAP, etc.).
ASN.1 Studio 8.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.
- Use the new check boxes on the Encoding Rules page of the Project Settings dialog
to enable support for CPER in ASN.1 Studio.
- For better security, the CPER decoder operates in a strict mode: every deviation
from the X.691 standard is reported.
- You can now use the Spreadsheet Editor to edit CSV files. The CSV file contents are
displayed in a table view and the insert, delete, copy, paste, and other operations for
table rows and columns are supported. You can change the font and the background and
foreground colors for single cells, multiple cells, or an entire table. Changes in the
table are saved back to the file in CSV format.
- When ASN.1/C and ASN.1/C++ projects are exported to makefiles for nmake on Windows,
ASN.1 Studio now opens a command prompt in which the following can be run:
- Makefiles generated by ASN.1 Studio.
- Makefiles from the installed samples directories.
- Makefiles generated by the ASN.1 compiler's -samplecode option.
- ASN.1 Studio now detects user-defined runnable classes within Java files located in the
User Files folder when ASN.1/Java projects are exported to a batch file, NetBeans IDE,
Eclipse IDE, or Ant project in the Project Export wizard. These classes are included in
the corresponding combo boxes, along with the runnable classes generated by the
ASN.1/Java compiler.
- When exporting ASN.1/Java projects to NetBeans IDE, Eclipse IDE, or Ant projects in the
Project Export wizard, ASN.1 Studio now copies user-defined Java files from the User Files
folder to the path relative to the location of the ASN.1/Java generated files. The package
statements included inside these user files are taken into account. Previously, ASN.1 Studio
expected that the user-defined Java files in the User Files folder were placed according to
their package statements and the corresponding relative path was used to copy those files to
the exported project.
ASN.1 Studio 8.2.0
- Conformance to Draft ITU-T Recommendation X.jsoner:
- ASN.1 Studio supports 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
ASN.1 Studio 8.1.1
- When decoding or editing messages in the Value Editor, ASN.1 Studio will no longer issue a false MultipleTypeConstraint violation when a non-optional component is omitted from the full specification, but its presence is implied.
- The licensing information in ASN.1 Studio Help has been updated.
ASN.1 Studio 8.1.0
- The "Generated Files" folder of all language-specific projects now has a new "Clear and Delete" context menu item, which deletes all generated files from the disk.
- ASN.1 Studio can now export ASN.1/Java projects to NetBeans IDE, Eclipse IDE, and Apache Ant build projects.
- ASN.1 Studio now supports the following ASN.1/Java compiler options:
- -splitBigEnums #num / -limitBigEnums #num
- -helperAPI opentype, pdudecoder / -noHelperAPI opentype, pdudecoder;
- -constraints (together with -toed)
- When used with the ASN.1/C# Compiler version 4.4 and later, ASN.1 Studio supports ASN.1/C# projects with ASN.1 syntax that includes INTEGER types with the HUGE directive applied. Export of such projects to Visual Studio projects now includes a reference to an additional System.Numerics assembly with support for C# BigInteger types.
- Sample ASN.1 projects in the "standards" directory are now consistent in
that they only include the encoding rules that correspond to the ASN.1
standard used in the project.
- For better control when printing BER-based messages in TLV by the "Print to
Trace" and "Edit as Hex" operations, ASN.1 Studio can now use custom
offsets specified in the Properties dialog for the file. These custom
offsets are enabled by checking the "Do not automatically detect and skip
CDR headers" box on the "BER TLV printer" page in the Project Settings
dialog, which turns off automatic detection of CDR headers.
ASN.1 Studio 8.0.0
- ASN.1 Studio now supports the JSON Encoding Rules per the "OSS Technical Specification
for JSON Encoding Rules". New controls have been added to the Project Settings dialog on
the encoder-specific page. They control the JSON encoder output, including the format used
in displaying encodings in the Encoding Viewer of the Value Editor.
- ASN.1 Studio can export ASN.1/C, ASN.1/C++, and ASN.1/C# projects to Visual Studio
2015 projects. This option is enabled for all versions of the OSS ASN.1/C# Tools.
- ASN.1 Studio now includes support for the 2015 version of the ASN.1 standard.
- Support for ASN.1 Studio on the Mac OS X platform has been renewed.
ASN.1 Studio 7.5.1 (Windows only)
-
The Add File and Properties dialogs now include controls that allow you to specify the length of a Charging Data Record (CDR) header. While decoding, ASN.1 Studio detects and skips CDR headers if they are not part of a BER-encoded message. ASN.1 Studio tries to automatically detect CDR headers; however, you can also manually set the controls.
-
While printing BER-based encoded messages in TLV in the Hex Editor or during the "Print to Trace" operation, ASN.1 Studio now automatically detects CDR headers in the input file containing BER-based encoded messages. CDR headers are skipped before each BER message is printed in TLV.
The following file formats are supported:
-
CDR files consisting of a CDR file header and CDR records that include a CDR record header and a BER-based message.
-
CDR record headers consisting of a record identifier in the first two bytes and a record length in the next two bytes.
To suppress automatic detection during the "Print to Trace" operation, from the Project Settings dialog select the TLV Printer page, and then select the new "Do not automatically detect and skip CDR headers" check box.
ASN.1 Studio 7.4.0
- The user interface has been enhanced to make it easier for you to generate ready-to-run code that demonstrates how to encode / decode:
- A test message generated for a particular PDU in the ASN.1 schema.
- An existing ASN.1 binary or text message.
- An ASN.1 value.
- ASN.1 Studio includes support for messages encoded in the Comma-Separated Values (CSV) format, as follows:
- CSVs can be edited in the Text Editor.
- CSVs can be created for any ASN.1 values and for messages encoded using one of ASN.1 binary or text encoding rules.
- The File Properties dialog now includes controls that allow you to select non-default CSV format settings; for example, you can select a different column separator, or include or exclude an optional CSV header, or change the format of the printed CSV values for certain simple types.
- Large CSV messages can be filtered to create partial CSVs that include values of the simple types that are defined at the specified level within the PDU type structure.
- The Text Editor in ASN.1 Studio now uses the UTF-8 character encoding for text files (CSV with Unicode characters) that have the UTF-8 signature (BOM) by default. You can change the global character encoding settings in the Preferences dialog, while the file is loaded.
ASN.1 Studio 7.3.0
- ASN.1 Studio now supports exporting ASN.1/C# projects to Microsoft Visual Studio C# projects (.csproj).
- The Project Settings dialog now includes separate controls for the new ASN.1/C# compiler options:
-names, -genSchemaInfo, -json, and -noSerializable.
ASN.1 Studio 7.1.0
- ASN.1 Studio now uses the Qt SDK Open Source Edition version 5.2.1 and on 64-bit Windows platforms now uses the 64-bit Qt libraries.
- ASN.1 Studio on Windows platforms can now export an ASN.1 Studio project to any Microsoft Visual Studio project, from 2005 up to the latest 2013 versions that are installed on the computer where ASN.1 Studio runs.
- ASN.1 Studio, the ASN.1/C compiler and the ASN.1/C SOED/LED/TOED runtime libraries now support Octet Encoding Rules (OER) and Canonical Octet Encoding Rules (COER) as defined in "Rec. ITU-T X.696 | ISO/IEC 8825-7", rather than only the subset of ASN.1 types as defined in the "NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol" document.
The Octet Encoding Rules (OER), like the Packed Encoding Rules (PER), produce compact encodings by taking advantage of information present in the ASN.1 schema to limit the amount of information included in each encoded message. However, in contrast to PER, OER favors encoding/decoding speed over compactness of the encodings.
ASN.1 Studio 7.0.0
- ASN.1 Studio now includes:
- Support for the Octet Encoding Rules (OER), as specified by the NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol document. OER messages can generally be encoded/decoded significantly faster than BER and PER messages, while being only slightly less compact than PER messages
- Support for cross-compilation to target platforms, as allowed by the license file
- Support for tab groups; two or more editors can now be displayed at the same time in the main window, in side-by-side panels. Value Editors with messages of the same PDU type can be synchronized
- User-defined initialization values when creating new values in the ASN.1 Value Editor
- Support for files with multiple messages included inside fixed size blocks (particularly useful for CDR records):
- - ability to skip invalid BER-based and XML-based encoded messages, and ASN.1 value notation, and continue decoding the remaining messages;
- - better control over how files with multiple concatenated messages should be opened, decoded, or saved.
- The "Go to Offset" feature in the Hex Editor.
- ASN.1 schema / value notation editor context menu operations to allow navigating to the place in the schema where a type was defined and finding all references for an ASN.1 item
- The "Track ASN.1 definition" mode in the Value Editor
- Support for advanced operations in the Value Editor via context menus and shortcuts, such as Insert New/From Clipboard, Add New Component/Delete, Move/Copy (for SEQUENCE OF/SET OF and top-level PDU items)
- Support for ISO 6093 representations for numeric values of REAL types in the Value Editor
- Support for the new OID-IRI and RELATIVE-OID-IRI built-in types (introduced in the 2008 ASN.1 standard) in the Value Editor.