
0.9.6:	2004-Sep-22

	* Implemented BASIC-XER encoding support (X.693).
	* Implemented unber(1) for generic BER decoding.
	* Implemented CGI for online ASN.1 compilation (asn1c/webcgi).
	* The X.509 decoder implemented (./examples/sample.source.PKIX1).
	* NamedType is now supported for SET OF/SEQUENCE OF type.
	* Added ASN1C_ENVIRONMENT_VERSION and get_asn1c_environment_version().
	* Fixed ANY type decoding (Severity: high, Secruity impact: low).

0.9.5:	2004-Sep-17

	* Fixed CER (common BER) decoder code. See check-25.c/VisibleString
	  case for details. X.690 specifies that inner structures in BER
	  encoding must be tagged by stripping off the outer tag for each
	  subsequent containment level. See also X.690: 8.21.5.4 and
	  the "Spouse" case in A.3.
	  (Severity: medium, Security impact: low)
	* Added converters between any generic type and the ANY type.
	* Parser fixed: Information Object Class fields may be taged.
	* Parser fixed: tagged types inside SEQUENCE OF/SET OF support.
	* Improved DEFAULT Value parsing and pretty-printing.
	* Condition on distinct tags checker was incorrectly dealing with
	  tagged CHOICE types. Fixed. Modified tests/37-indirect-choice-OK.asn1
	* Improved type name generation code ("struct foo" vs "foo_t").
	* Fixed constraint checking code incorrectly dealing with imported
	  types with constraint values defined in other modules.
	* Real REAL support! (Haven't tested denormals support yet!)
	  See skeletons/tests/check-REAL.c

0.9.4:	2004-Sep-10

	* More support for recursive type definitions.
	* Explicit support for ANY type decoding.
	* Refactored tags processing code.
	* Fixed constraints checking code: non-exploitable buffer overflow.
	  (Severity: medium, Security impact: low)

0.9.3:	2004-Sep-07

	* Extended constraints support in parametrized types.
	* Better support for parametrization and constraints handling.
	* Better handling of recursive type definitions.
	* Added support for ANY type.

0.9.2:	2004-Aug-24

	* More flexible subtype constraints handling, with relaxed
	  PER visibility rules for actual constraints checking code generator.
	* Indirect references in constraints resolver code fixed.
	* Avoided compilation warning on gcc 3.3.3 systems.
	* Better ValueSet printing.

0.9.1:	2004-Aug-23

	* Documentation updated: doc/asn1c-usage.pdf
	* Fixed OBJECT IDENTIFIER human-readable printing.
	  Reported by <siden@ul-gsm.ru>.

0.9:	2004-Aug-23

	* Reworked subtype constraints handling, aiming at PER-applicability.
	* BOOLEAN and NULL are now implemented in terms of native int type.
	* Compiler now links in only necessary skeleton files.
	* -t option added to asn1c to ease manual BER/CER/DER decoding.
	* Added support COMPONENTS OF construct.
	* Numerous parser fixes and enhancements.
	* Better constraint failure reporting.

0.8.19:	2004-Aug-18

	* Fixed BER encoder (problem encoding large tag values)
	  (Severity: medium, Security impact: low)

0.8.18:	2004-Aug-12

	* Parser: fixed multiple IMPORTS problem (incorrect assertion).
	* Parser: constraints extensibility parsing fix.

0.8.17:	2004-Aug-11

	* Improved compiler output: duplicate #includes eliminated.
	* Win32 portability fixes.
	* More compatibility with C++ or non-GCC compilers.

0.8.16:	2004-Jul-22

	* Fixed application-level problem in SET OF/SEQUENCE OF array cleanup.
	  (Severity: medium, Security impact: low)
	* Improved asn_GT2time() and added asn_time2{GT,UT}() functions.
	* BIT STRING pretty-printing.

0.8.15:	2004-Jul-20

	* Fixed parser: memory leak in free_struct code for SET OF/SEQUENCE OF.
	  (Severity: high, Security impact: medium)
	* Fixed parser: invalid memory reference in code constructing tags.
	  (Test case 48) (Severity: high, Security impact: medium)
	  When encoding data for certain ASN.1 specifications containing
	  explicit tags, the tag is always written incorrectly due to
	  incorrect memory reference. The encoding will almost always produce
	  unparseable data and might well reference unmapped region so program
	  would produce segmentation violation. Fortunately, memory is
	  read, not written, so remote exploits cannot execute arbitrary
	  code and triggering unmapped memory reference is highly unlikely
	  even it attacker knows the code (basically, the compiler should place
	  asn1_DEF_... right before the end of the mapped memory region, which
	  is extremely rare).
	* Improved INTEGER type printing.

0.8.14:	2004-Jun-30

	* Fixed compiler: extensibility of CHOICE and SET type has not been
	  taken into account during table construction.
	  (Test case 47) (Severity: high, Security impact: low)

0.8.13:	2004-Jun-29

	* Fixed compiler: the skip values for IMPLICIT tagging were broken
	  in some complex cases where one type is defined using another.
	  (Test case 46) (Severity: medium, Security impact: low).
	* Added -fknown-extern-type command line parameter to asn1c.
	* Removed -N command line flag and underlying functionality
	  to honor KISS principle.

0.8.12:	2004-Jun-17

	* RELATIVE-OID and OBJECT IDENTIFIER encoders/decoders are not bound
	  anymore to an integer type of specific size (unsigned long). The
	  size of an integer must be provided explicitly.
	  See {OBJECT_IDENTIFIER|RELATIVE_OID}_{get|set}_arcs().
	* SEQUENCE BER decoder fixed again for complex CHOICE case
	  (Test case 44) (Severity: medium, Security impact: low).

0.8.11:	2004-Jun-05

	* Enforced stricter conformance with C standards.
	* SEQUENCE BER decoder is now equipped with the sorted map
	  in case of complex CHOICE descendants. Test case 44 created.

0.8.10:	2004-Jun-02

	* Added const qualifier where necessary.
	* Changed position of outmost_tag fetcher within asn1_TYPE_descriptor_t
	  structure.

0.8.9:	2004-May-26

	* Added *_{get|set}_arcs_*() functions for OBJECT IDENTIFIER
	  and RELATIVE-OID, together with test cases.

0.8.8:	2004-May-09

	* Introduced subtype constraints support (incomplete!).
	* Fixed compiler. If the last member of the SEQUENCE is OPTIONAL
	  and absent in the encoding, and the type is extensible (...) or
	  EXTENSIBILITY IMPLIED flag is set, then the structure could not
	  be correctly decoded. (Severity: high, Security impact: low).
	* Compiler: fixed recursive ASN.1 types inclusion (Severity: low,
	  Security impact: none).
	* Parser: IMPORTS/FROM fixes, now allowing multiple sections.
	* Code compiled and checked on PowerPC (@MacOS X). No major portability
	  issues experienced.

0.8.7:	2004-Apr-11	T-version-0-8-7

	* Fixed SEQUENCE BER decoder: if the last member of the SEQUENCE is
	  OPTIONAL and absent in the encoding, RC_FAIL was returned instead
	  of RC_OK (Severity: high, Security impact: low).
	* Added test case to check the above problem.
	* Added test case to check -fnative-integers mode.

0.8.6:	2004-Apr-03	T-version-0-8-6

	* Fixed compiler output for embedded ASN.1 structures.

0.8.5:	2004-Mar-28	T-version-0-8-5

	* Fixed ber_tlv_length() computation problem (Severity: blocker,
	  Security impact: none).
	  Reported by <vss@high.net.ru>

0.8.4:	2004-Mar-22

	* Removed RC_ITAG enumeration element from BER decoder.
	  This return code did not have much practical value.

0.8.3:	2004-Mar-14	T-version-0-8-3

	* Fixed SET::BER decoder: restart after reaching a buffer boundary
	  weas broken (Severity: blocker, Security impact: low).
	* Fixed OCTET STRING::BER decoder: restart after reaching a buffer
	  boundary was broken (Severity: blocker, Security impact: low).
	  Reported by <vss@high.net.ru>
	* Added test cases to check decoders restartability.
	* Slightly more general INTEGER2long decoder.
	* Allowed nested /* C-type */ comments, as per X.680:2002.

0.8.2:	2004-Mar-01	T-version-0-8-2

	* Fixed SEQUENCE BER decoder: an OPTIONAL element was required, where
	  should not have been (Severity: major; Security impact: low).
	* Fixed print_struct pointer inheritance.
	* Added -fno-c99 and -funnamed-unions

0.8.1:	2004-Feb-22

	* -R switch to asn1c: Omit support code, compile only the tables.
	* Introduced NativeInteger pseudotype.
	* Corrected the informal print_struct()'s output format.

0.8.0:	2004-Feb-03	T-version-0-8-0

	* Some documentation is created (a .pdf and a short manual page).
	* Last touches to the code.

0.7.9:	2004-Feb-01	T-version-0-7-9

	* Human readable printing support.
	* Support for implicit (standard) constraints.

0.7.8:	2004-Jan-31

	* SET now rejects duplicate fields in the data stream.

0.7.7:	2004-Jan-25

	* Added types: GeneralizedTime and UTCTime.

0.7.6:	2004-Jan-24	T-version-0-7-6

	* DER encoding of a SET OF now involves dynamic sorting.

0.7.5:	2004-Jan-24	T-version-0-7-5

	* DER encoding of a SET with untagged CHOICE
	  now involves dynamic sorting.

0.7.0:	2004-Jan-19	T-version-0-7-0

	* A bunch of DER encoders is implemented.

0.6.6:	2004-Jan-11

	* Implemented CHOICE decoder.
	* Implemented destructors support.

0.6.5:	2004-Jan-03

	* Implemented SET decoder.
	* Implemented SET OF and SEQUENCE OF decoders.

0.6.4:	2003-Dec-31

	* Implemented BOOLEAN, NULL, ENUMERATED decoders.
	* Implemented OCTET STRING decoder.
	* Implemented BIT STRING decoder.

0.6:	2003-Dec-30

	* First decoding of a BER-encoded structure!

0.5:	2003-Dec-28

	* Framework and most of the compiler backbone coding done.

0.1:	2003-Nov-28

	* Programming started.
