Contents
ASN-1Step now includes ASN.1 Studio v10.5.
When the -generateMessages option is specified, ASN-1Step now supports the new OSS.GenRandomValues and OSS.GenOrderedValues directives that can be used to mark fields, identified by absolute references and inside a PDU type, for which to generate random or ordered values, possibly using custom limits from the directive. Values of other fields may have fixed or random values based on global pre-defined settings. The new directives can accept up to 2 parameters, separated by a comma. When present, they specify the lower and/or upper limit on the following values:
When the OSS.GenRandomValues directive is specified, values of the targeted fields are randomly generated within the specified custom range or, when custom limits are absent, within the global pre-defined limits common for the same built-in type.
Values of types marked with the OSS.GenOrderedValues directive are indexed sequentially starting from the lower limit and ending with the upper limit, using the global index that starts from 0 and is common for all marked types. If the total number of values for a given type is less than the requested number of unique messages to be generated, a value that matches the lower limit is selected again, while indices of values for other types could continue to increase in an attempt to generate the requested number of unique messages.
When a type marked with OSS.GenRandomValues or OSS.GenOrderedValues is constrained, values that satisfy the constraints are selected from the range specified in the directive or are assumed by default. If a type is constrained with single values only, values are selected from the list of constraining single values and the limits from 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. So, identical values for some types could be generated as long as the final message of the top-level PDU is unique.
When the -generateMessages option is specified, the new -noRandomLimits command line can be used to instruct ASN-1Step to generate fixed default values for all types except those for which the OSS.GenRandomValues or OSS.GenOrderedValues directive is specified. By default, without -noRandomLimits, values of unmarked types are generated randomly using pre-defined global limits or those specified in the -randomLimits option.
Support for the -sortSetChoice option has been extended. It will now work regardless of whether the -csv option is specified or implied. The -sortSetChoice option instructs ASN-1Step to sort components of SET and CHOICE types according to PER-based and canonical encoding rules.
The new -noSortSetChoice command line option has been added. It instructs ASN-1Step to skip PER-based and canonical encoding rules that force sorting of SET and CHOICE components when all encoding rules are implied by default, that is, when no explicit encoding rules options were specified and no encoding files with PER-based or canonical encodings were included on the command line.
The default behavior for decoding from .csv files has been changed; all
encoding rules are implied by the following command:
asn1step bcas.asn -decode 1 myCard.csv
In this case, components of SET and CHOICE types are expected to be included in a sorted order in the input .csv file. Use the new -noSortSetChoice option to decode CSV with non-sorted SET and CHOICE components:
asn1step bcas.asn -decode 1 myCard.csv -noSortSetChoice
All reference type fields are now omitted when a reference type is used in the COMPONENTS OF Type notation of a field that appears after the extension marker within another reference type used in the COMPONENTS OF Type notation after the extension marker, as the ASN.1 standard requires.
When creating sample values, ASN-1Step now correctly handles PDU types that include nested types with ALL EXCEPT constraints within inner subtypes. Previously, COMPILER ERROR #9 or other error messages could be issued.
ASN.1 values of BIT STRING types with named bit lists and size constraints are now correctly handled 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 generated values 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.
A warning is now issued when the same symbol is imported multiple times from the same module when the -designerWarnings command-line option is specified. Previously, duplicate symbols were silently ignored.
ASN-1Step now includes ASN.1 Studio v10.4.
The -printPerFlags option supports the new OSS_NO_TRACE_FOR_TRUNCATED_ELEMENTS flag that instructs the PER analyzer to not print tracing for truncated elements of SEQUENCE OF and SET OF types that have OSS.Truncate directives.
ASN-1Step now includes ASN.1 Studio v10.3.
ASN-1Step supports the new command line option, -generateMessages, which can be used to generate multiple random unique or non-unique messages for the specified PDU using one or more sets of encoding rules.
ASN-1Step supports the new command line option, -getFiles, which can be used along with the -decodePdu option to obtain a list of input encoding files that are filtered based on the specified filename extension that corresponds to the encoding rules used to create the files. An optional third parameter specifies a non-default format of the input files, such as a text format with hexadecimal or binary digits for files created using binary encoding rules or a special CSV format for CSV files.
ASN-1Step now recognizes the new -2021 option. The existing -2015 option is now an alias of the -2021 option. Also, the ASN1.Version compiler directive will now accept '2021' as an argument.
ASN-1Step now correctly processes non-parameterized types that include nested references to parameterized types that are
Previously, warnings or errors in non-relaxed mode about Parameterized<X> not being processed were issued.
ASN-1Step now correctly resolves references to parameterized types that are imported with the WITH SUCCESSORS syntax when an instance of one of them is used as an actual parameter in an instance of the other parameterized type. Previously, an unexpected A0413 message about an undefined parameterized reference was issued.
ASN-1Step now includes ASN.1 Studio v10.2.
ASN.1-Step supports the new "extended" CSV header format as one of the parameters passed to the -csv option. The format includes absolute reference names with the following additions:
Example: asn1step bcas.asn test.ber -decodePdu BBCard -csv extended,dash,bcd
ASN-1Step supports the new command line option, -allCsvMax, which can be used to specify 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.
Example: asn1step bcas.asn test.ber -decodePdu BBCard -csv dash,10 -allCsvMax 20
Previously, the total number of CSVs was set at the maximum between the
user-specified number on the number of CSVs per each SET OF and SEQUENCE OF
type and 50, multiplied by 50.
ASN-1Step supports the new -csvSkipEmpty command line option, which can be used to skip CSVs that include only column separators and spaces; that is, CSVs with empty values for all nested simple types.
When OCTET STRING values with OSS.PrintFunctionName directives applied cannot be converted to the specified OSS format, ASN-1Step now includes the original values in hexadecimal format, prefixed with the "???" string, when creating the CSVs. The CSV decoder skips conversion for such values and processes the hexadecimal format as regular OCTET STRING values. For backward compatibility, ASN-1Step supports the new command line option, -csvEmptyOctStrIfFails, which can be used to instruct the CSV encoder to include empty OCTET STRING values with OSS.PrintFunctionName directives if conversion fails.
When ASN-1Step is invoked with an input ASN.1 that contains SET or CHOICE types, the order in which the components of those types are processed depends on whether PER-based or canonical encoding rules are needed for a given invocation. The same order is used to create or decode comma-separated values (CSV). Sometimes ASN-1Step could issue an error when an attempt was made to use a sorted order to decode an input CSV that was created using the original non-sorted order. ASN-1Step now uses the original order of components in SET and CHOICE types when decoding from .csv files and no other options that require sorting are specified on the command line. The new command line option, -sortSetChoice, can be used to force the sorting of SET and CHOICE components according to PER-based and canonical encoding rules requirements if other than the original order is used when encoding to CSV or decoding from .csv files.
The -notrace option will no longer print extra tracing information from the PER-based encoder, from CSV conversion, or extra value notations. Note that -notrace does not suppress some ASN-1Step-specific informatory and error messages.
ASN-1Step now includes ASN.1 Studio v10.1.
The limit of 50 on the user-specified maximum number of CSVs created for
multiple components of each SET OF and SEQUENCE OF type values has been
removed in the -csv option. See the following example:
asn1step bcas.asn test.ber -decodePdu BBCard -csv dash,4000
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-1Step now issues a warning when an untagged open type precedes the extension marker in an extensible type in violation of the tag uniqueness requirement (see X.680 clauses 25.7, 52.7.3, 52.7.4, X.681 14.2 b) NOTE 2).
ASN-1Step now correctly considers extensible internal subtype constraints
on TIME types as OER-invisible. Previously, such constraints were treated
as OER-visible, which could prevent optimized encoding of some TIME types.
For example, a value of the following type T was previously encoded using
the non-optimized TIME encoding:
T ::= DATE ("2020-10-10", ...)
It is now encoded using the optimized DATE encoding.
ASN-1Step now includes ASN.1 Studio v10.0.1.
ASN-1Step now allows you to specify the maximum number of messages to decode and optionally, when possible, to skip the specified number of messages before decoding starts.
When creating and printing ASN.1 types and values, ASN-1Step now supports open types derived from a component relation constraint nested within a contents constraint applied to fields that contain BIT STRING or OCTET STRING types.
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 --
ASN-1Step now creates values that can be re-encoded to other encoding rules when the values include inline types and their values inside open type values are derived from component relation constraints.
ASN-1Step will now correctly apply the EXTENSIBILITY IMPLIED
option in
the module definition by making the following inextensible types defined in the module to be
implicitly extensible:
Previously, the EXTENSIBILITY IMPLIED option did not affect the above types, which could cause incorrectly packed encodings of their values at runtime. The new -allow BadExtensibilityImplied option can be used to restore the old behavior.
ASN-1Step now supports INTEGER types with the OSS.HUGE directive that are constrained to have a limited range of values.
ASN-1Step will now issue an error when governors of an information object set or value set used as actual parameters and the actual parameter of the paramdummy governor included in an instance of a parameterized type are not compatible.
ASN-1Step will now check whether the value of the day component of a TIME type corresponds to the number of days of the specified month. Previously, the runtime checked whether the value exceeded 31. Also, negative values for the year component are now rejected.
ASN-1Step now includes ASN.1 Studio v9.0.
ASN-1Step now supports X.680 Amendment 1, which relaxes the IMPORTS clause to allow symbols to be imported from the latest module version, as indicated by the object identifier. The IMPORTS clause can now include WITH SUCCESSORS and WITH DESCENDANTS as the SelectionOption.
The JSON encoders now support an alternative form of encoding values of BIT STRING or OCTET STRING types with contents constraints when an ENCODED BY is absent. When you select this method, the values are encoded as text (the JSON value represents the contained value) rather than hex string.
ASN-1Step now includes ASN.1 Studio v8.3.
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:
ASN-1Step will now accept any valid value of GeneralizedTime and UTCTime types and will encode it according to X.690 Clause 11.7 and 11.8. Previously, it was assumed that the input value already satisfied the restrictions imposed on its encoding by these clauses. Therefore
The XER and E-XER encoders now encode any valid NULLTERM values of GeneralizedTime and UTCTime types without making additional changes. Previously, when the input value did not contain a minutes or seconds component, the encoders unnecessarily included a zero minutes or seconds component in the encoding and recalculated the fractional part, if any.
The JSON encoders now encode non-special REAL values as JSON numbers. The JSON decoders will accept both encoding forms: JSON number and JSON object encodings. Previously, non-special REAL values could be encoded as JSON objects. For example, an unconstrained REAL type value was encoded as {base10value: N } The decoders reported an error when such values were encoded as JSON numbers.
ASN-1Step no longer skips adding or removing trailing zero bits when PER encoding a bitstring type value that is defined with a "NamedBitList", has a PER-visible constraint applied, and the -noconstraint option is specified. This is in conformamce with X.691 clause 16.3.
ASN-1Step will automatically disable the default -relaxedMode option when the -designerWarnings option is specified.
ASN-1Step now includes ASN.1 Studio v8.2.
JSON Encoding Rules support in ASN-1Step now conforms to Draft ITU-T Recommendation X.jsoner.
JSON encodings inside files with the .jer extension are now accepted.
ASN-1Step conforms to the draft version of the JSON encoding rules (X.jsoner document) as regards the encoding of REAL types. Previously, REAL types were encoded according to the OSS Technical Specification for JSON Encoding Rules.
ASN-1Step supports 3GPP CDR files with messages encoded using various encoding rules that are specified inside 3GPP record headers. Currently the BER, Aligned and Unaligned PER, and XER encoding rules are supported.
Previously, when the -sampleAsn1Value option was specified, ASN-1Step created invalid sample values that had missing values for non-optional components inside SET or SEQUENCE types with constraints that are not yet supported by sample code generation. Now sample values are created, though they might not satisfy all applied constraints.
ASN-1Step issues an error without attempting to decode when the -decode option is used with an invalid PDU type identifier or a 0-PDU number and the Aligned PER, Unaligned PER, OER, COER, or JSON rules are used. Previously, ASN-1Step attempted to decode messages and relied on the corresponding decoder to issue an error.
Trace data generated when decoding PER Aligned messages now prints a whole number of octets in the "Total encoded length" string. Previously, "Total encoded length" was printed without taking the mandatory padding bits into account. For example, 3.2 was printed instead of 4.0 (or 4).
ASN-1Step now includes ASN.1 Studio v8.1.1.
ASN-1Step now includes ASN.1 Studio v8.1.
ASN-1Step now supports 64-bit precision (19-20 decimal digits) in TIME type fractions.
The 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.
OER encoding of untagged CHOICE values is now aligned with Corrigendum 1 of the X.696 standard. Previously, such CHOICE values were encoded BER-style: the outermost tag of the chosen alternative was encoded only once.
When OER is used, ASN-1Step now correctly processes ISO 8601 TIME type values with a property settings constraint that specifies "Basic=Date" and "Date=Y", "Date=YM", or "Date=YMD", with no Year settings. Previously, the OER encoder produced a verbose encoding instead of an optimized binary encoding.
ASN-1Step now fully conforms to ITU-T X.680 Clause 46.3c. This clause states that the minutes component of a GeneralizedTime type value can be omitted when the difference between local time and UTC is an integral number of hours. Previously, a false error could be issued when the minutes component was absent.
ASN-1Step now includes ASN.1 Studio v8.0.
ASN-1Step now includes support for the 2015 version of the ASN.1 standard.
The following command-line options enable support for the new JSON flags and features:
For example:
asn1step -json JSON_ENC_ABSENT_COMPONENTS:JSON_ENC_DEFAULT_VALUES jtest.asn -encode value1 -jsonIndent 4
ASN-1Step now includes ASN.1 Studio v7.4.
OSS runtime flags are now available through the following ASN-1Step options:
-flags <flags> -encFlags <flags> -decFlags <flags>
You can specify one or more valid runtime flags separated by commas or colons, immediately after the option. To disable a flag, precede it by an exclamation point ("!").
Use the -csv <flags> command-line option to enable support for Comma-Separated Values (CSV) format when decoding messages.
ASN-1Step skips over pad bytes (0x00 or 0xFF) when decoding concatenated BER messages.
When encoding with PER, ASN-1Step no longer encodes components defined with a DEFAULT value when the value to be encoded is the default one (of a simple type, as noted in clause 19.5 of X.691).
ASN-1Step now includes ASN.1 Studio v7.1.
ASN-1Step now supports 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-1Step now includes ASN.1 Studio v7.0.
Use the new -allSampleAsn1Values and -sampleAsn1Value options to create files that contain sample messages for PDU types in the ASN.1 input that are in ASN.1 value notation format.
This documentation applies to release 10.5 and later of ASN-1Step®.
Copyright © 2024 OSS Nokalva, Inc. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means electronic, mechanical, photocopying, recording or otherwise, without the prior permission of OSS Nokalva, Inc.
Every distributed copy of ASN-1Step is associated with a specific license and related unique license number. That license determines, among other things, what functions of ASN-1Step are available to you.