Home | History | Annotate | Download | only in pyasn1
      1 Revision 0.1.7
      2 --------------
      3 
      4 - License updated to vanilla BSD 2-Clause to ease package use
      5   (http://opensource.org/licenses/BSD-2-Clause).
      6 - Test suite made discoverable by unittest/unittest2 discovery feature.
      7 - Fix to decoder working on indefinite length substrate -- end-of-octets
      8   marker is now detected by both tag and value. Otherwise zero values may
      9   interfere with end-of-octets marker.
     10 - Fix to decoder to fail in cases where tagFormat indicates inappropriate
     11   format for the type (e.g. BOOLEAN is always PRIMITIVE, SET is always 
     12   CONSTRUCTED and OCTET STRING is either of the two)
     13 - Fix to REAL type encoder to force primitive encoding form encoding.
     14 - Fix to CHOICE decoder to handle explicitly tagged, indefinite length
     15   mode encoding
     16 - Fix to REAL type decoder to handle negative REAL values correctly. Test
     17   case added.
     18 
     19 Revision 0.1.6
     20 --------------
     21 
     22 - The compact (valueless) way of encoding zero INTEGERs introduced in
     23   0.1.5 seems to fail miserably as the world is filled with broken
     24   BER decoders. So we had to back off the *encoder* for a while.
     25   There's still the IntegerEncoder.supportCompactZero flag which
     26   enables compact encoding form whenever it evaluates to True.
     27 - Report package version on debugging code initialization.
     28 
     29 Revision 0.1.5
     30 --------------
     31 
     32 - Documentation updated and split into chapters to better match
     33   web-site contents.
     34 - Make prettyPrint() working for non-initialized pyasn1 data objects. It
     35   used to throw an exception.
     36 - Fix to encoder to produce empty-payload INTEGER values for zeros
     37 - Fix to decoder to support empty-payload INTEGER and REAL values
     38 - Fix to unit test suites imports to be able to run each from
     39   their current directory
     40 
     41 Revision 0.1.4
     42 --------------
     43 
     44 - Built-in codec debugging facility added
     45 - Added some more checks to ObjectIdentifier BER encoder catching
     46   posible 2^8 overflow condition by two leading sub-OIDs
     47 - Implementations overriding the AbstractDecoder.valueDecoder method
     48   changed to return the rest of substrate behind the item being processed
     49   rather than the unprocessed substrate within the item (which is usually
     50   empty).
     51 - Decoder's recursiveFlag feature generalized as a user callback function
     52   which is passed an uninitialized object recovered from substrate and
     53   its uninterpreted payload.
     54 - Catch inappropriate substrate type passed to decoder.
     55 - Expose tagMap/typeMap/Decoder objects at DER decoder to uniform API.
     56 - Obsolete __init__.MajorVersionId replaced with __init__.__version__
     57   which is now in-sync with distutils.
     58 - Package classifiers updated.
     59 - The __init__.py's made non-empty (rumors are that they may be optimized 
     60   out by package managers).
     61 - Bail out gracefully whenever Python version is older than 2.4.
     62 - Fix to Real codec exponent encoding (should be in 2's complement form),
     63   some more test cases added.
     64 - Fix in Boolean truth testing built-in methods
     65 - Fix to substrate underrun error handling at ObjectIdentifier BER decoder
     66 - Fix to BER Boolean decoder that allows other pre-computed
     67   values besides 0 and 1
     68 - Fix to leading 0x80 octet handling in DER/CER/DER ObjectIdentifier decoder.
     69   See http://www.cosic.esat.kuleuven.be/publications/article-1432.pdf
     70 
     71 Revision 0.1.3
     72 --------------
     73 
     74 - Include class name into asn1 value constraint violation exception.
     75 - Fix to OctetString.prettyOut() method that looses leading zero when
     76   building hex string.
     77 
     78 Revision 0.1.2
     79 --------------
     80 
     81 - Fix to __long__() to actually return longs on py2k
     82 - Fix to OctetString.__str__() workings of a non-initialized object.
     83 - Fix to quote initializer of OctetString.__repr__()
     84 - Minor fix towards ObjectIdentifier.prettyIn() reliability
     85 - ObjectIdentifier.__str__() is aliased to prettyPrint()
     86 - Exlicit repr() calls replaced with '%r'
     87 
     88 Revision 0.1.1
     89 --------------
     90 
     91 - Hex/bin string initializer to OctetString object reworked
     92   (in a backward-incompatible manner)
     93 - Fixed float() infinity compatibility issue (affects 2.5 and earlier)
     94 - Fixed a bug/typo at Boolean CER encoder.
     95 - Major overhawl for Python 2.4 -- 3.2 compatibility:
     96   + get rid of old-style types
     97   + drop string module usage
     98   + switch to rich comparation
     99   + drop explicit long integer type use
    100   + map()/filter() replaced with list comprehension
    101   + apply() replaced with */**args
    102   + switched to use 'key' sort() callback function
    103   + support both __nonzero__() and __bool__() methods
    104   + modified not to use py3k-incompatible exception syntax
    105   + getslice() operator fully replaced with getitem()
    106   + dictionary operations made 2K/3K compatible
    107   + base type for encoding substrate and OctetString-based types
    108     is now 'bytes' when running py3k and 'str' otherwise
    109   + OctetString and derivatives now unicode compliant.
    110   + OctetString now supports two python-neutral getters: asOcts() & asInts()
    111   + print OctetString content in hex whenever it is not printable otherwise
    112   + in test suite, implicit relative import replaced with the absolute one
    113   + in test suite, string constants replaced with numerics
    114 
    115 Revision 0.0.13
    116 ---------------
    117 
    118 - Fix to base10 normalization function that loops on univ.Real(0)
    119 
    120 Revision 0.0.13b
    121 ----------------
    122 
    123 - ASN.1 Real type is now supported properly.
    124 - Objects of Constructed types now support __setitem__()
    125 - Set/Sequence objects can now be addressed by their field names (string index)
    126   and position (integer index).
    127 - Typo fix to ber.SetDecoder code that prevented guided decoding operation.
    128 - Fix to explicitly tagged items decoding support.
    129 - Fix to OctetString.prettyPrint() to better handle non-printable content.
    130 - Fix to repr() workings of Choice objects.
    131 
    132 Revision 0.0.13a
    133 ----------------
    134 
    135 - Major codec re-design.
    136 - Documentation significantly improved.
    137 - ASN.1 Any type is now supported.
    138 - All example ASN.1 modules moved to separate pyasn1-modules package.
    139 - Fix to initial sub-OID overflow condition detection an encoder.
    140 - BitString initialization value verification improved.
    141 - The Set/Sequence.getNameByPosition() method implemented.
    142 - Fix to proper behaviour of PermittedAlphabetConstraint object.
    143 - Fix to improper Boolean substrate handling at CER/DER decoders.
    144 - Changes towards performance improvement:
    145   + all dict.has_key() & dict.get() invocations replaced with modern syntax
    146     (this breaks compatibility with Python 2.1 and older).
    147   + tag and tagset caches introduced to decoder
    148   + decoder code improved to prevent unnecessary pyasn1 objects creation
    149   + allow disabling components verification when setting components to
    150     structured types, this is used by decoder whilst running in guided mode.
    151   + BER decoder for integer values now looks up a small set of pre-computed
    152     substrate values to save on decoding.
    153   + a few pre-computed values configured to ObjectIdentifier BER encoder.
    154   + ChoiceDecoder split-off SequenceOf one to save on unnecessary checks.
    155   + replace slow hasattr()/getattr() calls with isinstance() introspection.
    156   + track the number of initialized components of Constructed types to save
    157     on default/optional components initialization.
    158   + added a shortcut ObjectIdentifier.asTuple() to be used instead of
    159     __getitem__() in hotspots.
    160   + use Tag.asTuple() and pure integers at tag encoder.
    161   + introduce and use in decoder the baseTagSet attribute of the built-in
    162     ASN.1 types.
    163 
    164 Revision 0.0.12a
    165 ----------------
    166 
    167 - The individual tag/length/value processing methods of 
    168   encoder.AbstractItemEncoder renamed (leading underscore stripped)
    169   to promote overloading in cases where partial substrate processing
    170   is required.
    171 - The ocsp.py, ldap.py example scripts added.
    172 - Fix to univ.ObjectIdentifier input value handler to disallow negative
    173   sub-IDs.
    174 
    175 Revision 0.0.11a
    176 ----------------
    177 
    178 - Decoder can now treat values of unknown types as opaque OctetString.
    179 - Fix to Set/SetOf type decoder to handle uninitialized scalar SetOf 
    180   components correctly.
    181 
    182 Revision 0.0.10a
    183 ----------------
    184 
    185 - API versioning mechanics retired (pyasn1.v1 -> pyasn1) what makes
    186   it possible to zip-import pyasn1 sources (used by egg and py2exe).
    187 
    188 Revision 0.0.9a
    189 ---------------
    190 
    191 - Allow any non-zero values in Boolean type BER decoder, as it's in
    192   accordnance with the standard.
    193 
    194 Revision 0.0.8a
    195 ---------------
    196 
    197 - Integer.__index__() now supported (for Python 2.5+).
    198 - Fix to empty value encoding in BitString encoder, test case added.
    199 - Fix to SequenceOf decoder that prevents it skipping possible Choice
    200   typed inner component.
    201 - Choice.getName() method added for getting currently set component
    202   name.
    203 - OctetsString.prettyPrint() does a single str() against its value
    204   eliminating an extra quotes.
    205 
    206 Revision 0.0.7a
    207 ---------------
    208 
    209 - Large tags (>31) now supported by codecs.
    210 - Fix to encoder to properly handle explicitly tagged untagged items.
    211 - All possible value lengths (up to 256^126) now supported by encoders.
    212 - Fix to Tag class constructor to prevent negative IDs.
    213 
    214 Revision 0.0.6a
    215 ---------------
    216 
    217 - Make use of setuptools.
    218 - Constraints derivation verification (isSuperTypeOf()/isSubTypeOf()) fixed.
    219 - Fix to constraints comparation logic -- can't cmp() hash values as it
    220   may cause false positives due to hash conflicts.
    221 
    222 Revision 0.0.5a
    223 ---------------
    224 
    225 - Integer BER codec reworked fixing negative values encoding bug.
    226 - clone() and subtype() methods of Constructed ASN.1 classes now 
    227   accept optional cloneValueFlag flag which controls original value
    228   inheritance. The default is *not* to inherit original value for 
    229   performance reasons (this may affect backward compatibility).
    230   Performance penalty may be huge on deeply nested Constructed objects
    231   re-creation.
    232 - Base ASN.1 types (pyasn1.type.univ.*) do not have default values
    233   anymore. They remain uninitialized acting as ASN.1 types. In 
    234   this model, initialized ASN.1 types represent either types with
    235   default value installed or a type instance.
    236 - Decoders' prototypes are now class instances rather than classes.
    237   This is to simplify initial value installation to decoder's
    238   prototype value.
    239 - Bugfix to BitString BER decoder (trailing bits not regarded).
    240 - Bugfix to Constraints use as mapping keys.
    241 - Bugfix to Integer & BitString clone() methods
    242 - Bugix to the way to distinguish Set from SetOf at CER/DER SetOfEncoder
    243 - Adjustments to make it running on Python 1.5.
    244 - In tests, substrate constants converted from hex escaped literals into
    245   octals to overcome indefinite hex width issue occuring in young Python.
    246 - Minor performance optimization of TagSet.isSuperTagSetOf() method
    247 - examples/sshkey.py added
    248 
    249 Revision 0.0.4a
    250 ---------------
    251 
    252 * Asn1ItemBase.prettyPrinter() -> *.prettyPrint()
    253 
    254 Revision 0.0.3a
    255 ---------------
    256 
    257 * Simple ASN1 objects now hash to their Python value and don't
    258   depend upon tag/constraints/etc.
    259 * prettyIn & prettyOut methods of SimplleAsn1Object become public
    260 * many syntax fixes
    261 
    262 Revision 0.0.2a
    263 ---------------
    264 
    265 * ConstraintsIntersection.isSuperTypeOf() and 
    266   ConstraintsIntersection.hasConstraint() implemented
    267 * Bugfix to NamedValues initialization code
    268 * +/- operators added to NamedValues objects
    269 * Integer.__abs__() & Integer.subtype() added
    270 * ObjectIdentifier.prettyOut() fixes
    271 * Allow subclass components at SequenceAndSetBase
    272 * AbstractConstraint.__cmp__() dropped
    273 * error.Asn1Error replaced with error.PyAsn1Error
    274 
    275 Revision 0.0.1a
    276 ---------------
    277 
    278 * Initial public alpha release
    279