aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1
AgeCommit message (Collapse)Author
2013-09-04Merge branch 'maint'Björn Gustavsson
* maint: (26 commits) genop.tab: Add documentation for many BEAM instructions asn1ct_constucted_per: Directly call asn1ct_gen_per Clean up handling of .asn1db files PER, UPER: Fix encoding/decoding of open types greater than 16K PER, UPER: Optimize table constraints PER, UPER: Optimize encoding using an intermediate format Refactor decoding of components of SEQUENCE OF / SET OF PER,UPER: Get rid of unused 'telltype' argument in decoding functions Optimize the generated encode/2 function UPER: Optimize complete/1 Clean up checking of objects Improve tests of deep table constraints BER: Handle multiple optional SEQUENCE fields with table constraints Test OPTIONAL and DEFAULT for open types PER/UPER: Fix encoding of an object set with multiple inlined constructs Remove broken support for multiple UNIQUE Extend the test for parameterized information objects asn1_SUITE: Remove off-topic (and slow) smp/1 test case SeqOf: Add more tricky SEQUENCE OF tests Clean up handling of extension addition groups ...
2013-09-03asn1ct_constucted_per: Directly call asn1ct_gen_perBjörn Gustavsson
2013-09-03Clean up handling of .asn1db filesBjörn Gustavsson
There is (differenct) code for reading .asn1db files both in asn1ct and asn1_db. Consolidate the reading into one routine in asn1db. Another problem is that the encoding rule that the .asn1db file was created for is not in the .asn1db, but only in the generated Erlang module. It is much easier and safer to put the encoding rule in the .asn1db file itself. We will also put the version number of the asn1 application into the file, to ensure that we don't use an old .asn1db file that could potentially be incompatible.
2013-09-03PER, UPER: Fix encoding/decoding of open types greater than 16KBjörn Gustavsson
2013-09-03PER, UPER: Optimize table constraintsBjörn Gustavsson
The generated code for table constraints has several problems: * For each object set, a function for getting an encoding or decoding fun is generated, regardless of whether it is actually used. In many specifications, the object set actually used is the union of several other object sets. That means that the code can become a lot bulkier than it would need to be. * The funs are not necessary. The funs just add to the code bloat and generate more unnecessary garbage at run-time. Also, one of the arguments of the fun is the name of the field in the class which is known at compile-time, and the fun for decoding has unused arguments. How to fix the problems: At each call site where an open type should be encoded/decoded, call a specific generated function specialized for the actual object set and the name of the field in the class. When generating the specialized functions, make sure that we re-use a previously generated function if possible.
2013-08-30PER, UPER: Optimize encoding using an intermediate formatBjörn Gustavsson
There are some minor incompatibilities for BIT STRING: {bit,Position} is now only only supported for a named BIT STRING type. Values longer than the maximum size for the BIT STRING type would be truncated silently - they now cause an exception.
2013-08-30Refactor decoding of components of SEQUENCE OF / SET OFBjörn Gustavsson
As a preparation for rewriting handling of table constraints, we must make sure that code for decoding a SEQUENCE OF / SET OF can be be contained in a single clause of a function; thus, we must not output the helper function for decoding of each component directly following the code that follows it. Use asn1ct_func:call_gen/3 to delay outputting the helper function.
2013-08-30PER,UPER: Get rid of unused 'telltype' argument in decoding functionsBjörn Gustavsson
2013-08-30Optimize the generated encode/2 functionBjörn Gustavsson
Use 'try' instead of 'catch', and don't match anything that cannot actually be returned from the generated encoding code.
2013-08-30UPER: Optimize complete/1Björn Gustavsson
2013-08-30Clean up checking of objectsBjörn Gustavsson
2013-08-30Improve tests of deep table constraintsBjörn Gustavsson
2013-08-30BER: Handle multiple optional SEQUENCE fields with table constraintsBjörn Gustavsson
2013-08-30Test OPTIONAL and DEFAULT for open typesBjörn Gustavsson
2013-08-30PER/UPER: Fix encoding of an object set with multiple inlined constructsBjörn Gustavsson
Also extend the test suite with more tests of inlined constructs in object sets.
2013-08-30Remove broken support for multiple UNIQUEBjörn Gustavsson
According to the ASN.1 standard, having multiple UNIQUE in class is allowed. For example: C ::= CLASS { &id1 INTEGER UNIQUE, &id2 INTEGER UNIQUE } In practice, no one uses multiple UNIQUE. The ASN.1 compiler will crash if a class with multiple UNIQUE is used, but the backends have half-hearted support for multiple UNIQUE in that they generate helper functions similar to: getenc_OBJECT_SET(id1, 42) -> fun enc_XXX/3; ... Since we have no plans to implement support for multiple UNIQUE (no one seems to have missed it), simplify the helper functions like this: getenc_OBJECT_SET(42) -> fun enc_XXX/3; ...
2013-08-30Extend the test for parameterized information objectsBjörn Gustavsson
2013-08-30asn1_SUITE: Remove off-topic (and slow) smp/1 test caseBjörn Gustavsson
The smp1/1 test case seems test how well the SMP emulator can parallelize tasks, not any functionality in the asn1 application that is not tested in other tests.
2013-08-30SeqOf: Add more tricky SEQUENCE OF testsBjörn Gustavsson
2013-08-30Clean up handling of extension addition groupsBjörn Gustavsson
Break out the code to a separate function to make it more readable. Also avoid hard-coding the name of the value to use as "Val1" as it may not be true in the future. Instead of using a list comprenhension like this: case [X || X <- [element(5, Val),element(6, Val)], X =/= asn1_NOVALUE] of [] -> ...; _ -> ... end use an orelse chain: case element(5, Val) =/= asn1_NOVALUE orelse element(5, Val) =/= asn1_NOVALUE of false -> ...; true -> ... end
2013-08-30Refactor encoding of REALBjörn Gustavsson
To facilitate optimizing PER encoding using an intermediate format, we must change asn1rtt_real_common:encode_real/1 so that it only returns the encoded binary.
2013-08-30Teach asn1ct_func to dynamically generate run-time functionsBjörn Gustavsson
2013-08-28asn1ct_constructed_per: Simplify gen_enc_line() and friendsBjörn Gustavsson
The first clause of gen_enc_line() allows us to pass in [] as the value for Element; if we modify the only caller that passes [] to pass an actual expression we can remove the first clause. Furthermore, since the Pos argument was only used by the first clause, we can remove the Pos argument. We can also remove the first clause in gen_enc_component_optional(), since the code in its body is exactly the same as in the following clause.
2013-08-28Remove code for handling an object/object set reference in SEQUENCEBjörn Gustavsson
An field in a class that references an object or object set is not allowed to be referenced directly from within a SEQUENCE.
2013-08-26Encode SEQUENCE OF / SET OF using a list comprehensionBjörn Gustavsson
Using a list comprehension will simplify both the code generator and the generated code. Also, if there is an ObjFun argument in the host function, the BEAM compiler will make sure it is only passed to the generated list comprehension function if it is actually used.
2013-08-26asn1ct_imm: Break out the rule for string alignmentBjörn Gustavsson
Break out the the rules for determining whether a string should be in aligned so that it can be reused for encoding.
2013-08-21erts: Add option to include nifs staticallyLukas Larsson
Both crypto and asn1 are supported.
2013-06-18Merge tag 'OTP_R16B01'Björn-Egil Dahlberg
The R16B01 release Conflicts: lib/sasl/vsn.mk
2013-06-17Prepare releaseOTP_R16B01Erlang/OTP
2013-06-12Merge branch 'maint'Björn-Egil Dahlberg
2013-06-12Update copyright yearsBjörn-Egil Dahlberg
2013-06-10Merge branch 'maint'Björn Gustavsson
* maint: PER/UPER: Correct decoding of SEQUENCEs with more than 64 extensions testConstraints: Improve tests of semi-constrained INTEGERs Test ENUMERATED with many extended values PER, UPER: Fix record name mismatch between HRL file and decoding code UPER: Correct encoding of ENUMERATED with more than 63 extended values Add asn1_test_lib:hex_to_bin/1
2013-06-10Merge branch 'bjorn/asn1/not-small-bugs/OTP-11153' into maintBjörn Gustavsson
* bjorn/asn1/not-small-bugs/OTP-11153: PER/UPER: Correct decoding of SEQUENCEs with more than 64 extensions testConstraints: Improve tests of semi-constrained INTEGERs Test ENUMERATED with many extended values UPER: Correct encoding of ENUMERATED with more than 63 extended values Add asn1_test_lib:hex_to_bin/1
2013-06-08PER/UPER: Correct decoding of SEQUENCEs with more than 64 extensionsBjörn Gustavsson
2013-06-08testConstraints: Improve tests of semi-constrained INTEGERsBjörn Gustavsson
Make sure that semi-constrained integers are correctly encoded in the mininum number of bytes. (The roundtrip test does not catch problems with non-minimal encodings.) Also test huge values that must be encoded in 128 or 256 bytes.
2013-06-08Test ENUMERATED with many extended valuesBjörn Gustavsson
2013-06-07PER, UPER: Fix record name mismatch between HRL file and decoding codeBjörn Gustavsson
When a SEQUENCE was defined inline inside extension addition group like this: InlinedSeq ::= SEQUENCE { ..., [[ s SEQUENCE { a INTEGER, b BOOLEAN } ]] } the decoding code would return the contents of the SEQUENCE in a record named 'InlinedSeq_ExtAddGroup1_s', while the record definition in the generated HRL file would be 'InlinedSeq_s'. Since there is no reason to use the longer record name (no risk for ambiguity), correct the name in the decoding code.
2013-06-07UPER: Correct encoding of ENUMERATED with more than 63 extended valuesBjörn Gustavsson
2013-06-07Add asn1_test_lib:hex_to_bin/1Björn Gustavsson
2013-06-04Merge branch 'maint'Björn Gustavsson
* maint: (128 commits) beam_lib: Correct wrong type specification testSeqOf: Test constrained, extensible sizes [snmp/agent] Some restructuring of test suite Clean up testSeqOf Extend tests cases for BIT STRING Improve tests of ENUMERATED asn1ct_check: Eliminate useless Per argument from complist_as_tuple() asn1ct_check: Don't pass on #'ObjectClassFieldType'{} with fixed type asn1ct_gen_per: Remove useless renewal of 'enumval' Fix encoding of semi-constrained, extensible INTEGERs PER/UPER: Fix decoding of semi-constrained INTEGERs testPrim: Simplify test cases using a roundtrip function BER: Fix handling of a constructed default value for a class PER: Generate code for deep table constraints at compile-time Normalize data representation for table constraints asn1ct: Simplify check_value/2 Extend tests to cover more code in asn1ct_check Clean up checking of values for ENUMERATEDs Introduce a new mechanism for structured error handling asn1_db: Make dbput/3 and dbsave/2 asynchronous ...
2013-06-03testSeqOf: Test constrained, extensible sizesBjörn Gustavsson
2013-05-31Clean up testSeqOfBjörn Gustavsson
2013-05-31Extend tests cases for BIT STRINGBjörn Gustavsson
2013-05-31Improve tests of ENUMERATEDBjörn Gustavsson
2013-05-31asn1ct_check: Eliminate useless Per argument from complist_as_tuple()Björn Gustavsson
The Per argument is no longer used; it is only passed around.
2013-05-31asn1ct_check: Don't pass on #'ObjectClassFieldType'{} with fixed typeBjörn Gustavsson
Simplify the backends by letting asn1ct_check replacing a with the actual type.
2013-05-31asn1ct_gen_per: Remove useless renewal of 'enumval'Björn Gustavsson
Since fbcb7fe589edbfe79d10d7fe01be8a9f77926b89, the 'enumval' variable is no longer used.
2013-05-31Fix encoding of semi-constrained, extensible INTEGERsBjörn Gustavsson
Given: Semi ::= INTEGER (Lb..MAX, ...) where Lb is an arbitrary integer, attempting to encode an integer less than Lb would cause the encoder to enter an infinite loop.
2013-05-31PER/UPER: Fix decoding of semi-constrained INTEGERsBjörn Gustavsson
A semi-constrained INTEGER with a non-zero lower bound would be incorrectly decoded. This bug was introduced in R16.
2013-05-31testPrim: Simplify test cases using a roundtrip functionBjörn Gustavsson
While at it, also test more integer values.