This document describes the changes made to the asn1 system from version to version. The intention of this document is to list all incompatibilities as well as all enhancements and bug-fixes for every release of the asn1 application. Each release of asn1 thus constitutes one section in this document. The title of each section is the version number of asn1.
Data in info/0 in generated code is moved to attribute asn1_info, thus vsn value remains the same if compiler options for asn1-spec differs but the generated code is the same.
Own Id: OTP-6462
Dialyzer warnings on asn1 are removed, i.e. dead code removed.
Own Id: OTP-6506
Now it is possible to use 'asn1config' and 'inline'
options together. It is also possible to use 'inline' on
a single file like:
Own Id: OTP-6405
As a complement to the option "{inline,OutputFile}" it is now possible to use the option "inline". Then asn1 creates an output file with the name of the source .set file.
Own Id: OTP-6314
When compiling an asn1 source that reference a type in another source the compiler uses the asn1db file of the other source to resolve the reference. It also tests whether the other source has been updated since the asn1db file was generated. This last test was to brutal in that it exits compilation when no source was found, even though a asn1db file existed. Changed behavior from a brutal exit to a warning.
Own Id: OTP-6143
asn1 encoding failed on BIT STRING with constraint
Own Id: OTP-5932
Race condition removed in server for variable names for generated code.
Own Id: OTP-6111
Now exists a default function clause for table lookup of a table constraint. This causes a nice error instead of a crash. Did also remove some obsolete funs ({Mod,Fun}) in generated code.
Own Id: OTP-5783
ASN1-compiler failed to derive a value out of an external reference in some certain cases, when compiling specs so that the spec with the reference was compiled before the spec with the defined value.
Own Id: OTP-5812 Aux Id: seq10133
The documentation of how records of embedded types are named is extended and made clearer by examples and rules. The section "Naming of Records in .hrl Files" in the User's Guide is added.
Own Id: OTP-5831 Aux Id: seq10133
The compiler failed to give right name to record/function of a parameterized type that was referenced through another instance of a parameterized type in another module. The fault occurred when modules were compiled in a certain order. Now the compiler resolves the name correctly.
Own Id: OTP-5832 Aux Id: seq10133
The dynamic sort of SET OF values now correctly handles values encoded in the "ber_bin, der, optimize" mode, the value of a SET OF is a list of binaries.
Own Id: OTP-5687
Bad code was generated for an INTEGER with value-range. If the value that was encoded had a lower bound with negative value it caused a crash. This bug is now removed.
Own Id: OTP-5688 Aux Id: seq10049
Compiler now handles wrong include paths by returning an error if a referenced module is not available.
Own Id: OTP-5689
The bug causing a runtime error when encoding a type
defined by:
Own Id: OTP-5710 Aux Id: seq10066
Better handling of filename paths
Own Id: OTP-5701
Effective constraint for
Own Id: OTP-5477 Aux Id: OTP-5511
Adjusted compiler so that functions in generated code only are exported once.
Own Id: OTP-5509
Fixed the compiler failure when handling a value range constraint with an extension mark that had the Lower bound and/or Upper bound values as an external reference to a defined value.
Own Id: OTP-5511 Aux Id: OTP-5466
Removed sorting of elements for SEQUENCE OF. It shall only be done in SET OF.
Own Id: OTP-5602
Corrected code that generated code causing badarith warning.
Own Id: OTP-5616
Compiler now correctly crashes when compiling bad values. Failed for instance on INTEGER value that was a reference to a defined value. Also solved problem with a union constraint on an INTEGER.
Own Id: OTP-5457
Additional coverage of object set syntax.
Own Id: OTP-5466
A bug due to representation of open_type values is now fixed. It could cause problem if one used the EXTERNAL type.
Own Id: OTP-5302
Due to an internal error the same code could have been generated more than one time. This happened for the exclusive decode functionality.
Own Id: OTP-5378
Empty objects caused problems. There was trouble when an object set referenced imported objects that in turn referenced imported types. Lacked support of SelectionType in object. All these have been attended.
Own Id: OTP-5240
Now it is possible to inline asn1 run-time functionality in the module generated by the asn1 compiler. Thus, it will be only one module doing all encoding/decoding.
Own Id: OTP-5243
A class that was referenced in two steps caused a compiler failure. It is now corrected.
Own Id: OTP-5103
Optionally make it possible to get the un-decoded rest along with the return value. Compile with option undec_rest.
Own Id: OTP-5104
An error due to unchecked referenced imported type resulted
in missing tag in some table constraint cases. This error is
now corrected. Error occurred during decode in
Own Id: OTP-5022
When a referenced value in another module in turn referenced a defined value the compilation crashed. This is due to the new routines for compilation, that external references are resolved during compilation, and not by the order in which modules are compiled. This error is now corrected.
Own Id: OTP-4970
Functionality for parameterized class is added. Parsing failures on WithSyntax spec is corrected.
Own Id: OTP-4893
The failure due to Parameterized Type when parameter is an object set is corrected.
Own Id: OTP-4894
Aux Id: OTP-4893
Object Identifier values with two components and the first was a value reference failed due to parsing conflicts. Now it is corrected.
Own Id: OTP-4895
The erroneous comparison of file name and asn1 module name could cause compilation failure. The situation for this failure is rare, it requires that other processes modifies the compiled file during the compilation procedure. It is now fixed.
Own Id: OTP-4944
Aux Id: seq8429
Selective decode was ignored when exclusive decode spec in asn1 configfile was missing. Selective decode failed when the selected type was the top type. These bugs are now removed.
Own Id: OTP-4953
Aux Id: seq8436
The test interface asn1ct:test/1,2,3 and asn1ct:value/2 failed for open type and EXTERNAL. The bug is now removed.
Own Id: OTP-4955
Aux Id: seq8438)
Two equal functions were generated for two components referencing the same type when they were picked by the action "parts". The bug is now fixed.
Own Id: OTP-4957
Aux Id: seq8434
INTEGER with named number list and ENUMERATED can now be sub constrained with names from the names list.
Own Id: OTP-4917
Now there is support for SelectionType (X 680 section 29)
Own Id: OTP-4918
The compiler now resolves circular dependencies. When asn1 specs IMPORTS from each other so that there are circular dependencies.
Own Id: OTP-4919
Now is the asn1 type UTF8String supported. For user instructions see documentation.
Own Id: OTP-4965
The
Own Id: OTP-4866
False encode of BIT STRING in PER (per_bin,optimize) is fixed. The error occurred when there was a type like BIT STRING (SIZE(C)) and C > 16.
Own Id: OTP-4869
Functionality to handle parameterized object sets have been added.
Own Id: OTP-4832
Bug causing duplicated function definitions using exclusive decode is removed.
Own Id: OTP-4833)
The race condition when loading asn1 driver is solved.
Own Id: OTP-4835
A specialized decode, selective decode is now available. It decodes a chosen internal sub-type of a constructed type.
Own Id: OTP-4856)
Release of Asn1 1.4.2.1 on R7B, The functionality is the same, but the layer between the driver and the asn1 erlang code is different.
ObjectDescriptor does now work as part of a sequence, set or choice.
Own Id: OTP-4773
When a SEQUENCE that have extension mark was decoded inside a SEQUENCE OF it could cause decode error due to a failure in restbytes2. It is now corrected.
Own Id: OTP-4791)
Now the bug is fixed that caused the compiler crash on an untagged optional open type.
Own Id: OTP-4792
The earlier exit caused by bad in-data is now fixed so it will return an {error,Reason} tuple.
return an {error,Reason} tuple.Own Id: OTP-4797
Open type encoded with indefinite length is now correct decoded.
Own Id: OTP-4798
Now is absent optional open types handled correctly.
Own Id: OTP-4799
Now is the necessary functions available for sorting in run-time of SET and SET OF components.
Own Id: OTP-4809
When a component in a SEQUENCE is a CHOICE (or reference to a CHOICE)
and the SEQUENCE's component and one of the alternatives in the CHOICE
have identical names, an error may occur if one doesn't use the
'optimized' versions of the compiler. In the older versions (
Own Id: OTP-4693
Exclusive decode is enabled by a compiler option and a configuration file. It makes it possible to leave parts of an ASN.1 encoded message un-decoded.
Own Id: OTP-4744
The documentation about how extensibility is handled is now corrected.
Own Id: OTP-4663
Function in object now calls the exported function
Own Id: OTP-4665
Now is tags for ObjectClassFieldType analyzed correctly.
Own Id: OTP-4666
Now is the Default value for an ENUMERATED returned as the name from the NamedList when decoding.
Own Id: OTP-4633
It was an internal failure when permitted alphabet constraint existed together with for instance a size constraint. E.g. when a referenced type is constrained by a size constraint and the defined type in turn is constrained by a permitted alphabet constraint.
Own Id: OTP-4559
Record is generated in hrl file for a CHOICE with extension mark that has an internal SEQUENCE/SET definition.
Own Id: OTP-4560
Now is the length of a SEQUENCE/SET OF correctly encoded/decoded (PER).
Own Id: OTP-4590
The problem with unordered decoded terms when a component is a ObjectClassFieldType has been solved.
Own Id: OTP-4591
More complex definitions with TableConstraints where the SimpleTable and ComponentRelation are on different levels is now fully supported.
Own Id: OTP-4631
Each generated .erl file have now a function info/0 that returns information about the used compiler version and options.
Own Id: OTP-4373
When compiling an ASN.1 module the compiler generates an Erlang module
that is compiled by the Erlang compiler. Earlier it was not possible to
add options to the final step, the Erlang compilation. By adding any
option that is not recognized as a specific ASN.1 option it will be
passed to the final step like:
Own Id: OTP-4491
Earlier one couldn't multi file compile modules that had different tagdefault, which now is possible. Equal Type/Value names in different modules are resolved by renaming (concatenate type name and module name): If two types with the same name T exist in module A and module B they will get the new names TA and TB.
(Own Id: OTP-4492)
Aux Id: OTP-3983
BER: Encode/decode of data have been significantly improved. By use of
the compiler options
Own Id: OTP-4493
Proper length encoding and padding implemented for a
(Own Id: OTP-4353)
Bug in compiler, when an
(Own Id: OTP-4354)
Internal error in check phase that caused crash on
(Own Id: OTP-4390)
Tags for open types are handled according to
(Own Id: OTP-4395)
(Aux Id: OTP-4390)
Now gives the compiler an appropriate error report when exported undefined types are detected.
(Own Id: OTP-4129)
The type
(Own Id: OTP-4161)
(Aux Id: seq7165)
In case of per and compact_bit_string the rightmost byte were erroneous truncated when the rightmost bits of that byte were zeros. This is now corrected.
(Own Id: OTP-4200)
Bad match of return-value from decode_length in skipvalue/3 has now been fixed.
(Own Id: OTP-4232)
Now is decode of ENUMERATED handled correctly, when tagged EXPLICIT.
(Own Id: OTP-4234)
The compiler now parses and handles the ValueFromObject construct.
(Own Id: OTP-4242)
Now does the compiler handle the case when the object set in simple table and componentrelation constraints is of a CLASS without a UNIQUE field. In this case is the octets, which is assumed to be encoded, encoded as an open type.
(Own Id: OTP-4248)
(Aux Id: OTP-4242)
Compiler handles objects in AdditionalElementSetSpec in ObjectSetSpec, i.e. the objects that are referred to after the ellipses in an object set.
(Own Id: OTP-4275)
Now are values with a component of type CHOICE encoded with indefinite length correctly decoded.
(Own Id: OTP-4358)
The language constructs (from the old 1988 standard)
(Own Id: OTP-2741)
(Aux Id: seq 1188)
Now it is checked in run-time if a
(Own Id: OTP-4235)
The ASN.1 types EXTERNAL,EMBEDDED PDV and CHARACTER STRING now have full support in the compiler.
(Own Id: OTP-4247)
A driver in C does the final job (complete) of the PER encoding when
files are compiled with
(Own Id: OTP-4355)
Encode and decode of PER encoding has been made faster by moving
analysis done in run-time to compile-time. These optimizations are
available by compiling ASN.1 files with options
(Own Id: OTP-4381)
(Aux Id: OTP-4355)
Now does the compiler check values (including referenced values), and formats the value so it is suitable to use as input to encoding functions.
(Own Id: OTP-3277)
(Aux Id: OTP-4103)
Unnecessary external function calls in generated code are now generated as internal function calls.
(Own Id: OTP-4073)
Now is Information Objects supported in BER encoding.
(Own Id: OTP-3980)
(Aux Id: OTP-3979 OTP-3978)
PER: A new option
(Own Id: OTP-4094)
Support for DER implemented. Used by flag +der when compiling. Include the full BER encoding plus: sorting of SET components, sorting of encoded elements in SET OF, full check of default values in SET and SEQUENCE. See new documentation on DER in user_guide sections 1.3.1; 1.4.11; 1.4.12; 1.4.14; 1.4.16 and 1.10, in the reference manual for asn1ct.
(Own Id: OTP-4103)
Do not generate record in .hrl file for SET types
Own Id: OTP-4025
Fixed internal error when using BIT STRINGs with Named Number List in combination with
Own Id: OTP-4026
Aux Id: OTP-3982
The atom 'com' can now be used in ENUMERATED as an EnumerationItem.
Own Id: OTP-4037
Aux Id: Seq 7036
ber: Now it is possible (again) to encode data format "{Type,Value}" in a SEQUENCE OF RequestParameter, when RequestParameter is of type ENUMERATED. The {Type,Value} notation is not recommended for use, it is redundant and exist only for very ancient backwards compatibility reasons. The "feature" might be removed in forthcoming versions.
Own Id: OTP-4057
Aux Id: Seq 7066
A bug in the parser, that caused failure on COMPONENTS OF is now removed.
Own Id: OTP-4058
The compiler will now check that a value referenced by name does exist.
Own Id: OTP-3277
BER:Decode of a type T ::= SEQUENCE OF C fails if C is encoded with indefinite length. This is know corrected.
Own Id: OTP-3811
Aux Id: seq5040
The new parser handles imports when one import ends with FROM, a modulename and a reference to a objectidentifier followed by imports from other modules.
Own Id: OTP-3463
The compiler did not check that a name mentioned as EXPORTED actually is defined within the module. This is now corrected.
Own Id: OTP-3659
Removed bug caused by use of nested indefinite length
Own Id: OTP-3994
Now supporting most common use of parameterization according to X.683
(Own Id: OTP-3978)
PER: Now supporting most common use of Information Objects according to X.681. A new parser has been implemented. The error messages due to syntax errors are slightly different than previous. TableConstraint part of X.682 now also supported.
Own Id: OTP-3979
New compiler option added:
Own Id: OTP-3981
A more compact format of BIT STRING in Erlang is now available by use of the compiler option
Own Id: OTP-3982
Now possible to merge many ASN.1 input files to one Erlang file by use of a configuration file that lists the ASN.1 files.
Own Id: OTP-3983
New documentation in User's Guide in section:
3.1: New compile-time functions and options are described.
4.6: New compact format of BIT STRING is described.
4.8: Additional comments on character strings.
7: New section describing ASN.1 Information Objects.
8: New section describing Parameterization.
Reference Manual/asn1ct New compile options are described.
Own Id: OTP-3984
Aux Id: OTP-3978, OTP-3979, OTP-3981, OTP-3982, OTP-3983
Added the functionality to invoke ASN1Mod:encode (and decode).
Own Id: OTP-3985
Performance improvements by removing not necessary use of apply when calling asn1rt:encode. Also other general improvements.
Own Id: OTP-3988
The compiler does not check that an exported name actually exists in the ASN.1 module.
Own Id: OTP-3659
The compiler does not check that a value referenced by name does exist.
Own Id: OTP-3277
BER: The compiler does not take the extensions into account when checking if the tags are unique in a SEQUENCE or SET.
Own Id: OTP-3304
PER: Trailing zeroes in a BIT STRING declared without named bits should not be removed in the encodings.
Own Id: OTP-3830
Same as for 1.2.9.3.
PER: Constraints are not propagated when types are referring to each other. Example:
TBCD-STRING ::= OCTET STRING
LAI ::= TBCD-STRING (SIZE(3))
The size constraint is not passed on during encode,decode resulting in wrong encoding for PER , it is coded with a length determinant which should not be there when the length is fixed. For BER this does not matter because the constraints does not affect the encodings.
Own Id: OTP-3713
The generated code gets wrong if there are several ENUMERATED fields in a SEQUENCE or SET, this is now corrected.
Own Id: OTP-3796
BER:Decode of a type T ::= SEQUENCE OF C fails if C is encoded with indefinite length. This is know corrected.
Own Id: OTP-3811
The compiler does not check that an exported name actually exists in the ASN.1 module.
Own Id: OTP-3659
The compiler does not check that a value referenced by name does exist.
Own Id: OTP-3277
BER: The compiler does not take the extensions into account when checking if the tags are unique in a SEQUENCE or SET.
Own Id: OTP-3304
This version supports soft upgrade from versions 1.2.6 1.2.7.
In an ENUMERATED type like this:
\011\011T ::= ENUMERATED { blue, green}
The symbols was encoded/decoded with the wrong values, i.e in reverse order. This is now corrected.
Own Id: OTP-3700
PER: OCTET STRING with Size constrained to a single value i.e fixed size was treated wrong during encode and decode. This is now corrected.
Own Id: OTP-3701
There is now a new compiler option
The encode function then produces a possibly nested list of binaries and integer lists. The decode function does in this case require a single binary as input instead of a list. The modules generated with this option require that you have an R7A or later system, otherwise they will not compile and the runtime module asn1rt_ber_bin can not be executed.
The ber_bin option is not officially supported in this version (will be in a later version) but is provided for those who want to try it. It should be significantly faster at decode and is slightly faster at encode. Exactly how performance differs between this binary approach and the list approach depends highly on the type of input. Another thing worth noting is that both approaches still have a lot of solutions in common which can be improved a lot to gain even better performance.
BER: Encode/decode of extension components did not work properly. This is now corrected.
Own Id: OTP-3395
Aux Id:
PER:The encode/decode of NULL as an open type has been corrected. An open type must always have a length of at least 1 byte even if the contained value (e.g NULL) encodes to nothing.
Own Id: OTP-3496
Aux Id:
BER:In the current implementation extension components of a SEQUENCE are required to be present when they are specified as mandatory. This is an error, all extension components are "optional" even if they are not specified to have the OPTIONAL or DEFAULT property. This is now corrected.
Own Id: OTP-3278
The ASN.1 language feature
Own Id: OTP-2515
The encoding and decoding of ENUMERATED and INTEGER with NamedNumbers is made more efficient and thus faster in runtime.
Own Id: OTP-3464
Aux Id:
Added support for encode/decode of open type which is constrained to a specific type. Previously the value of an open type had to be a list of octets, but now the Erlang representation of the specific type used in the constraint is used both as input to encode and as output from decode.
Own Id: OTP-3569
Aux Id:
PER: GeneralString, GraphicalString etc. i.e all strings that are not so called "known-multiplier character string types" are now supported by the runtime encode/decode functions.
Own Id: OTP-3573
Aux Id:
The ASN.1 language feature
Own Id: OTP-2515
The compiler does not check that a value referenced by name does exist.
Own Id: OTP-3277
BER:In the current implementation extension components of a SEQUENCE are required to be present when they are specified as mandatory. This is an error, all extension components are "optional" even if they are not specified to have the OPTIONAL or DEFAULT property.
Own Id: OTP-3278
BER: The compiler does not take the extensions into account when checking if the tags are unique in a SEQUENCE or SET.
Own Id: OTP-3304
This version supports soft upgrade from versions 1.1.1, 1.1.5 and 1.1.6.
Two new runtime modules
BER: SEQUENCEs encoded with indefinite length was not correctly decoded. This in now corrected.
Own Id: OTP-3352
Aux Id: Seq 4100
The compiler now detects multiple definitions of values and types and reports this as an error. Previously this was detected when the generated Erlang module was compiled.
Own Id: OTP-3105
BER: An error regarding encoding of
Own Id: OTP-3169
BER: Decoding of
Own Id: OTP-3170
BER: Encoding and decoding of
Own Id: OTP-3202
Aux Id: Seq3745
BER: The primitive/constructed bit in the tag byte of an encoding is not correct when it comes to user defined tags. For example in
T ::= [2] SEQUENCE { a BOOLEAN}
the tag 2 does not get the constructed bit set which it should. This is now corrected.
Own Id: OTP-3241
The decoder can now detect if there are unexpected bytes
remaining when all components of a sequence are decoded.
The decoder will then return
Own Id: OTP-3270
Values of type
Own Id: OTP-3280
PER:The encode/decode functions could not handle integers with a range greater than 16#7ffffff. This limit is now removed.
Own Id: OTP-3287
PER: The encoding/decoding of the length for a SET OF/SEQUENCE OF was wrong if there was a size constraint. This is now corrected.
Own Id: OTP-3291
PER: Encoding of a constrained INTEGER (range > 16 k) was wrong for the value 0. This is now corrected.
Own Id: OTP-3306
The ASN.1 module name and the filename where the ASN.1 specification resides must match each other (has always been the case). This is now checked by the compiler. The check requires that the names match in a case or case insensitive way depending on the characteristics for the current system.
Own Id: OTP-1843
PER: Encode/decode of an extension value (i.e not within the root set) for
Own Id: OTP-2930
Unnecessary printouts from the compiler are removed. The compiler version and the compiler options are now printed to stdout.
Own Id: OTP-3276
In order to better suite the use of ASN.1 in embedded systems only
the modules needed in runtime are now listed in the
Own Id: OTP-3279
The compiler now supports extensionmarker in constraint specifications. Example:
INTEGER (0..10, ...)
In previous version this was reported as a syntax error.
Own Id: OTP-3281
A very limited part of ITU-T recommendation X.681 Abstract Syntax Notation One (ASN.1): Information object specification is now implemented. Specifically \011 TYPE IDENTIFIER is recognized by the compiler.
Own Id: OTP-3325
Parameterization of ASN.1 specifications (ITU-T X.683) is now supported to a limited extent.
Own Id: OTP-3326
BER Encoding and decoding of
Own Id: OTP-3202
Aux Id: Seq3745
The syntactic construct
Own Id: OTP-2515
Own Id: OTP-2741
Aux Id: seq 1188
Multiple definitions of the same Type or Value is not detected by the compiler. The error occurs when the generated Erlang module is compiled.
Own Id: OTP-3105
The primitive/constructed bit in the tag byte of an encoding is not correct when it comes to user defined tags. For example in
T ::= [2] SEQUENCE { a BOOLEAN}
the tag 2 does not get the constructed bit set which it should. This is now corrected.
Own Id: OTP-3241
The BER decoder failed to decode certain nested data types
where
Own Id: OTP-2719
Aux Id: seq 1148
The handling of types with extension marker "..." is corrected.
Earlier each SEQUENCE and SET with an extension marker got an
extra field named
Own Id: OTP-2724
Aux Id: seq 1148, OTP-2719
The decoder (both BER and PER) could not handle unnamed
bits of a
Own Id: OTP-2725
Aux Id: seq 1148,OTP-2719,OTP-2724
The functions
Own Id: OTP-2730
Aux Id: seq 1158
The compiler did not accept CHOICE types as components of a SEQUENCE or SET when the modules tag default was IMPLICIT. Example:
C ::= CHOICE { ......}
A ::= SEQUENCE {
a [1] C, -- This was not accepted
.....
This was an error caused by a misinterpretation of the ASN.1 standard. This is now corrected.
Own Id: OTP-2731
Aux Id: seq 1163
When decoding a SEQUENCE A which contains an OPTIONAL component b which is a SEQUENCE with mandatory components, the decoder does not detect as an error that a mandatory component of b is missing. The same error could occur also in other cases with nested types and optional components of SEQUENCE or SET. This is now corrected.
Own Id: OTP-2738
Aux Id: seq 1183
BER Encoding and decoding of
Own Id: OTP-2951
Aux Id: Seq 1446 OTP-2929
The compiler does now accept all valid value notations for the OBJECT IDENTIFIER type. The generated code for those values is also corrected.
Own Id: OTP-3059
The code generated for BER is significantly enhanced resulting in less code and around 300% better performance in runtime for the encoding of complex ASN.1 values. The performance of decoding is unchanged.
Own Id: OTP-2806
The
Own Id: OTP-2640
The encoding of integers in BER did not comply with the
standard for all values. The values was not encoded
in the minimum number of octets as required. This is
now corrected in the runtime module
Own Id: OTP-2666
The compiler now generates explicit exports directives for all generated functions that should be exported (instead of -compile(export_all)). This eliminates the warnings from the Erlang compiler when compiling the generated file.
Own Id: OTP-1845
The decoding of a BER encoded SEQUENCE with optional component of type SEQUENCE (also with optional components) could result in an error or wrong result if the tags are equal.
Own Id: OTP-2226
The encoding of (PER) SEQUENCE with extensionmark was wrong. This is now corrected.
Own Id: OTP-2349
The asn1 compiler now detects the use of an implicit tag before
Own Id: OTP-1844
An OPTIONAL CHOICE embedded in SEQUENCE when BER coding caused an error when generating decode code. This is now corrected.
Own Id: OTP-1857
Aux Id: OTP-1848
This is the first release of the ASN1 application. This version is released for beta-testing. Some functionality will be added until the 1.0 version is released. See the release notes for the latest version for the exact details about new features. A list of missing features and restrictions can be found in the chapter below.
The encoding rules BER and PER (aligned) is supported. PER (unaligned) IS NOT SUPPORTED.
NOT SUPPORTED types
NOT SUPPORTED types
NOT SUPPORTED type
The code generation support for value definitions in the ASN.1 notation is very limited (planned to be enhanced).
The support for constraints is limited to:
SizeConstraint SIZE(X)
SingleValue (1)
ValueRange (X..Y)
PermittedAlpabet FROM (but not for BMPString and UniversalString when generating PER).
Complex expressions in constraints is not supported (planned to be extended).
The current version of the compiler has very limited error checking:
Stops at first syntax error.
Does not stop when a reference to an undefined type is found , but prints an error message. Compilation of the generated Erlang module will then fail.
A whole number of other semantical controls is currently missing. This means that the compiler will give little or bad help to detect what's wrong with an ASN.1 specification, but will mostly work very well when the ASN.1 specification is correct.
The maximum INTEGER supported in this version is a signed 64 bit integer. This limitation is probably quite reasonable. (Planned to be extended).
Only AUTOMATIC TAGS supported for PER.
Only EXPLICIT and IMPLICIT TAGS supported for BER.
The compiler supports decoding of BER-data with indefinite length but it is not possible to produce data with indefinite length with the encoder.