| |
| Revision 0.4.7, released 01-09-2019 |
| ----------------------------------- |
| |
| - Added `isInconsistent` property to all constructed types. This property |
| conceptually replaces `verifySizeSpec` method to serve a more general |
| purpose e.g. ensuring all required fields are in a good shape. By default |
| this check invokes subtype constraints verification and is run by codecs |
| on value de/serialisation. |
| - Deprecate `subtypeSpec` attributes and keyword argument. It is now |
| recommended to pass `ValueSizeConstraint`, as well as all other constraints, |
| to `subtypeSpec`. |
| - Fixed a design bug in a way of how the items assigned to constructed |
| types are verified. Now if `Asn1Type`-based object is assigned, its |
| compatibility is verified based on having all tags and constraint |
| objects as the type in field definition. When a bare Python value is |
| assigned, then field type object is cloned and initialized with the |
| bare value (constraints verificaton would run at this moment). |
| - Added `WithComponentsConstraint` along with related |
| `ComponentPresentConstraint` and `ComponentAbsentConstraint` classes |
| to be used with `Sequence`/`Set` types representing |
| `SET ... WITH COMPONENTS ...` like ASN.1 constructs. |
| |
| Revision 0.4.6, released 31-07-2019 |
| ----------------------------------- |
| |
| - Added previously missing `SET OF ANY` construct encoding/decoding support. |
| - Added `omitEmptyOptionals` option which is respected by `Sequence` |
| and `Set` encoders. When `omitEmptyOptionals` is set to `True`, empty |
| initialized optional components are not encoded. Default is `False`. |
| - New elements to `SequenceOf`/`SetOf` objects can now be added at any |
| position - the requirement for the new elements to reside at the end |
| of the existing ones (i.e. s[len(s)] = 123) is removed. |
| - List-like slicing support added to `SequenceOf`/`SetOf` objects. |
| - Removed default initializer from `SequenceOf`/`SetOf` types to ensure |
| consistent behaviour with the rest of ASN.1 types. Before this change, |
| `SequenceOf`/`SetOf` instances immediately become value objects behaving |
| like an empty list. With this change, `SequenceOf`/`SetOf` objects |
| remain schema objects unless a component is added or `.clear()` is |
| called. |
| This change can potentially cause incompatibilities with existing |
| pyasn1 objects which assume `SequenceOf`/`SetOf` instances are value |
| objects right upon instantiation. |
| The behaviour of `Sequence`/`Set` types depends on the `componentType` |
| initializer: if on `componentType` is given, the behaviour is the |
| same as `SequenceOf`/`SetOf` have. IF `componentType` is given, but |
| neither optional nor defaulted components are present, the created |
| instance remains schema object, If, however, either optional or |
| defaulted component isi present, the created instance immediately |
| becomes a value object. |
| - Added `.reset()` method to all constructed types to turn value object |
| into a schema object. |
| - Added `PyAsn1UnicodeDecodeError`/`PyAsn1UnicodeDecodeError` exceptions |
| to help the caller treating unicode errors happening internally |
| to pyasn1 at the upper layers. |
| - Added support for subseconds CER/DER encoding edge cases in |
| `GeneralizedTime` codec. |
| - Fixed 3-digit fractional seconds value CER/DER encoding of |
| `GeneralizedTime`. |
| - Fixed `AnyDecoder` to accept possible `TagMap` as `asn1Spec` |
| to make dumping raw value operational |
| |
| Revision 0.4.5, released 29-12-2018 |
| ----------------------------------- |
| |
| - Debug logging refactored for more efficiency when disabled and |
| for more functionality when in use. Specifically, the global |
| LOG object can easily be used from any function/method, not just |
| from codec main loop as it used to be. |
| - More debug logging added to BER family of codecs to ease encoding |
| problems troubleshooting. |
| - Copyright notice extended to the year 2019 |
| - Fixed defaulted constructed SEQUENCE component initialization. |
| |
| Revision 0.4.4, released 26-07-2018 |
| ----------------------------------- |
| |
| - Fixed native encoder type map to include all ASN.1 types |
| rather than just ambiguous ones |
| - Fixed crash in `.prettyPrint` of `Sequence` and `Set` occurring |
| at OPTIONAL components |
| |
| Revision 0.4.3, released 23-05-2018 |
| ----------------------------------- |
| |
| - Copyright notice extended to the year 2018 |
| - Fixed GeneralizedTime.asDateTime to perform milliseconds conversion |
| correctly |
| |
| Revision 0.4.2, released 23-11-2017 |
| ----------------------------------- |
| |
| - Fixed explicit tag splitting in chunked encoding mode at |
| OctetString and BitString encoders |
| |
| Revision 0.4.1, released 23-11-2017 |
| ----------------------------------- |
| |
| - ANY DEFINED BY clause support implemented |
| - Encoders refactored to take either a value (as ASN.1 object) |
| or a Python value plus ASN.1 schema |
| - BitString decoder optimised for better performance when running on |
| constructed encoding |
| - Constructed types' .getComponentBy*() methods accept the `default` |
| parameter to return instead if schema object is to be returned |
| - Constructed types' .getComponentBy*() methods accept the `instantiate` |
| parameter to disable automatic inner component instantiation |
| - The ASN.1 types' `__repr__` implementation reworked for better readability |
| at the cost of not being `eval`-compliant |
| - Most ASN.1 types' `__str__` magic methods (except for OctetString and |
| character types) reworked to call `.prettyPrint()` rather than |
| `.prettyPrint` calling `__str__` as it was before. The intention is |
| to eventually deprecate `.prettyPrint()` in favor of `str()`. |
| The other related change is that `str()` of enumerations and boolean |
| types will return string label instead of number. |
| - Fixed Choice.clear() to fully reset internal state of the object |
| - Sphinx documentation rearranged, simplified and reworded |
| - The `isValue` singleton is now the only way to indicate ASN.1 schema |
| as opposed to ASN.1 schema instance. The legacy `None` initializer |
| support has been removed. |
| - Changed `Null` object initialization behaviour: previous default |
| value (`''`) is not set anymore. Thus `Null()` call produces a |
| ASN.1 schema object, while `Null('')` - value object. |
| - Migrated all docs and references from SourceForge |
| - Imports PEP8'ed |
| - Fixed ASN.1 encoder not to omit empty substrate produced for inner |
| component if the inner component belongs to the simple class (as |
| opposed to constructed class) |
| - Fixed CER/DER encoders to respect tagged CHOICE when ordering |
| SET components |
| - Fixed ASN.1 types not to interfere with the Pickle protocol |
| - Fixed Sequence/SequenceOf types decoding heuristics in schema-less |
| decoding mode |
| |
| Revision 0.3.7, released 04-10-2017 |
| ----------------------------------- |
| |
| - Fixed ASN.1 time types pickling/deepcopy'ing |
| |
| Revision 0.3.6, released 21-09-2017 |
| ----------------------------------- |
| |
| - End-of-octets encoding optimized at ASN.1 encoders |
| - The __getitem__/__setitem__ behavior of Set/Sequence and SetOf/SequenceOf |
| objects aligned with the canonical Mapping and Sequence protocols in part |
| - Fixed crash in ASN.1 encoder when encoding an explicitly tagged |
| component of a Sequence |
| |
| Revision 0.3.5, released 16-09-2017 |
| ----------------------------------- |
| |
| - Codecs signatures unified and pass the options kwargs through the |
| call chain |
| - Explicit tag encoding optimized to avoid unnecessary copying |
| - End-of-octets sentinel encoding optimized |
| - Refactored ASN.1 codecs properties to silently enforce proper |
| length and chunk size encoding modes |
| - Fixed DER encoder to always produce primitive encoding |
| - Fixed crash at SequenceOf native decoder |
| - Fixed Real.prettyPrint() to fail gracefully on overflow |
| - Fixed a couple of crashes when debug mode is enabled |
| |
| Revision 0.3.4, released 07-09-2017 |
| ----------------------------------- |
| |
| - Fixed Native encoder to handle SEQUENCE/SET objects without |
| the componentType property |
| - Added missing component-less SEQUENCE/SET objects dict duck-typing support |
| - Fixed unnecessary duplicate tags detection at NamesType.tagMap |
| - Fixed crash at SEQUENCE and SEQUENCE OF CER encoder when running |
| in schemaless mode |
| - Fixed Character types instantiation from OctetString type -- double |
| unicode decoding may have scrambled the data |
| |
| Revision 0.3.3, released 27-08-2017 |
| ----------------------------------- |
| |
| - Improved ASN.1 types instantiation performance |
| - Improved BER/CER/DER decoder performance by not unconditionally casting |
| substrate into str/bytes. |
| - Fixed exponential index size growth bug when building ambiguous |
| NamedTypes tree |
| - Fixed constructed types decoding failure at BER codec if running |
| in schema-less mode |
| - Fixed crash on prettyPrint'ing a SEQUENCE with no defined components |
| - Fixed SetOf ordering at CER/DER encoder |
| - Fixed crash on conditional binascii module import |
| - Fix to TagSet hash value build |
| |
| Revision 0.3.2, released 04-08-2017 |
| ----------------------------------- |
| |
| - Fixed SequenceOf/SetOf types initialization syntax to remain |
| backward compatible with pyasn1 0.2.* |
| - Rectified thread safety issues by moving lazy, run-time computation |
| into object initializer. |
| - Fixed .isValue property to return True for empty SetOf/SequenceOf |
| objects |
| - Fixed GeneralizedTime/UTCTime CER/DER codecs to actually get invoked |
| - Fixed DER/CER encoders handling optional SEQUENCE/SET fields containing |
| nested SEQUENCE/SET with optional fields. |
| - Fixed crash in SequenceOf/SetOf pretty printing and decoding (in some |
| cases) |
| - Fixed documentation markup issues. |
| |
| Revision 0.3.1, released 26-07-2017 |
| ----------------------------------- |
| |
| - ASN.1 types __init__(), .clone() and .subtype() signatures |
| refactored into keyword arguments to simplify their signatures. |
| - ASN.1 types initialization refactored to minimize the use of |
| relatively expensive isNoValue() call |
| - Lazily pre-populate list of values of Sequence/Set/Choice types |
| - NamedTypes comparison made more efficient |
| - More efficient constraints computation and code clean up |
| - The __getitem__() implementation of some ASN.1 types & tag object |
| refactored for better performance |
| - BER/CER/DER value encoders refactored to produce either tuple of |
| bytes or octet-stream depending on what is more optimal |
| - Reduced the frequency of expensive isinstance() calls |
| - Tag-related classes optimized, refactored into properties and |
| documented. |
| - The NamedValues implementation refactored to mimic Python dict, its use |
| in ASN.1 types refactored into properties and better documented. |
| WARNING: this change introduces a deviation from original API. |
| - NamedType family of classes overhauled, optimized and documented. |
| - The `componentType` attribute of constructed ASN.1 types turned |
| read-only on instances. |
| - Sequence/Set DER/CER/DER decoder optimized to skip the case of |
| reordered components handling when not necessary. |
| - Tags and constraints-related getter methods refactored into read-only |
| instance attributes. |
| - The .hasValue() method refactored into .isValue property. All ASN.1 |
| objects now support them, not just scalars. |
| - The Real.{isInfinity, isPlusInfinity, isMinusInfinity} methods |
| refactored into properties and renamed into IsInf, IsPlusInf and isMinusInf |
| - The end-of-octets type refactored to ensure it is a singleton. Codecs |
| changed to rely on that for better performance. |
| - Codecs lookup made more efficient at BER/CER/DER decoder main loop by |
| assigning `typeId` to every ASN.1 type, not just ambiguous ones. |
| - The .getComponent*() methods of constructed ASN.1 types changed |
| to lazily instantiate underlying type rather than return `None`. |
| This should simplify its API as initialization like `X[0][1] = 2` becomes |
| possible. |
| WARNING: this change introduces a deviation from the original API. |
| - The .setComponent*() methods of SetOf/SequenceOf types changed not |
| to allow uninitialized "holes" inside the sequences of their components. |
| They now behave similarly to Python lists. |
| WARNING: this change introduces a deviation from the original API. |
| - Default and optional components en/decoding of Constructed type |
| refactored towards better efficiency and more control. |
| - OctetsString and Any decoder optimized to avoid creating ASN.1 |
| objects for chunks of substrate. Instead they now join substrate |
| chunks together and create ASN.1 object from it just once. |
| - The GeneralizedTime and UTCTime types now support to/from Python |
| datetime object conversion. |
| - Unit tests added for the `compat` sub-package. |
| - Fixed BitString named bits initialization bug. |
| - Fixed non-functional tag cache (when running Python 2) at DER decoder. |
| - Fixed chunked encoding restriction on DER encoder. |
| - Fixed SET components ordering at DER encoder. |
| - Fixed BIT STRING & OCTET STRING encoding to be always non-chunked (e.g. |
| primitive) at DER encoder |
| - Fixed `compat.integer.from_bytes()` behaviour on empty input. |
| |
| Revision 0.2.3, released 25-02-2017 |
| ----------------------------------- |
| |
| - Improved SEQUENCE/SET/CHOICE decoding performance by maintaining a single shared |
| NamedType object for all instances of SEQUENCE/SET object. |
| - Improved INTEGER encoding/decoding by switching to Python's built-in |
| integer serialisation functions. |
| - Improved BitString performance by rebasing it onto Python int type and leveraging |
| fast Integer serialisation functions. |
| - BitString type usability improved in many ways: for example bitshifting and |
| numeric operation on BitString is now possible. |
| - Minor ObjectIdentifier type performance optimization. |
| - ASN.1 character types refactored to keep unicode contents internally |
| (rather than serialised octet stream) and duck-type it directly. |
| - ASN.1 OctetString initialized from a Python object performs bytes() |
| on it when running on Python 3 (used to do str() which is probably |
| less logical). |
| - Missing support for NoValue.__sizeof__ added. |
| - Added checks to make sure SEQUENCE/SET components being assigned |
| match the prototypes. |
| - Setter methods for constructed types consistently accept matchTags |
| and matchConstraints flags to control the strictness of inner |
| components compatibility verification. Previously, these checks |
| were tied to verifyConstraints flag, now they are all independent. |
| - General documentation improvements here and there. |
| - Fix to __reversed__() magic to make it returning an iterator. |
| - Test suite simplified and unified. |
| - The __all__ variable added to most of the Python modules. |
| - The "test" directory renamed into "tests" not to collide with |
| the "test" module. |
| |
| Revision 0.2.2, released 07-02-2017 |
| ----------------------------------- |
| |
| - FIX TO A SECURITY WEAKNESS: define length only decoders could have successfully |
| processed indefinite length serialisation. |
| - FIX TO A SECURITY WEAKNESS: canonical decoders (CER/DER) may have successfully |
| consumed non-canonical variations of (otherwise valid) serialisation. |
| - Broken Enumerated subtyping fixed. |
| |
| Revision 0.2.1, released 05-02-2017 |
| ----------------------------------- |
| |
| - FIX TO A SECURITY WEAKNESS: BER decoder improperly cached long tags. |
| - New "native" codec implemented to transform pyasn1 types to Python built-in types and back. |
| - Switched to new-style classes. |
| - Sphinx documentation added. |
| - BitString improvements: |
| |
| * simple string of binary digits is now supported as initializer |
| * default str() yields string of binary digits (used to yield str(tuple()) |
| * binValue and hexValue initializers added |
| * .asNumbers(), .asOctets() and asInteger() representation added |
| |
| - Components of constructed ASN.1 types can now be populated with |
| uninitialized ASN.1 objects by assigning either noValue sentinel or |
| setupComponent() function return in addition to now-legacy None sentinel. |
| This should improve code readability. |
| - NoValue class improved to become a singleton and catch more kinds |
| of access to it. |
| - Compatibility wrappers str2octs() and oct2strs() fixed to run over |
| iso-8859-1 encoding. |
| - Integer changed to emit Real instance if division produces a float. |
| - True division operation now supported by Integer type. |
| - The __contains__(), __reverse__() methods implemented for container types |
| - Iterator protocol support implemented for all container types. |
| Warning, warning, warning: this change may potentially affect backward |
| compatibility when: |
| |
| * user class overrides __getitem__() without overriding __iter__() |
| * when user code iterates over SEQUENCE object to get its components (now keys will be yielded) |
| |
| - Almost complete Python list and dict protocols added to SequenceOf/SetOf and |
| Sequence/Set respectively |
| - Fix to divmod operation implementation in Integer type. |
| - Fix to IntegerDecoder's precomputed value map on Python 3. |
| - Fix to base ASN.1 types to run in "unicode_literals" mode. |
| - Fix to composite constraints "+" operands ordering (AbstractConstraintSet.__radd__) |
| - Fix to constraints merge in .subtype() -- on merge existing constraints are |
| expanded to accommodate new constraints, not the other way round. When existing |
| constraints are wrapped in ConstraintsIntersection composite, additional |
| constraints being added on subtyping effectively further narrow the set of |
| allowed values, which aligns well with the notion of subtyping. |
| - Fix to NamedTypes methods to handle .getTagMap() returning None |
| - Fix to Set/Sequence.setDefaultComponents() to return self |
| - Copyright notice added to non-trivial source code files. |
| - Author's email changed, copyright extended to 2017 |
| |
| Revision 0.1.9, released 28-09-2015 |
| ----------------------------------- |
| |
| - Wheel distribution format now supported. |
| - Extensions added to text files, CVS attic flushed. |
| - Fix to make uninitialized pyasn1 objects failing properly on hash(). |
| - Fix to ObjectIdentifier initialization from unicode string. |
| - Fix to CER/DER Boolean decoder - fail on non single-octet payload. |
| |
| Revision 0.1.8, released 22-06-2015 |
| ----------------------------------- |
| |
| - ObjectIdentifier codec fixed to work properly with arc 0 and arc 2 values. |
| - Explicit limit on ObjectIdentifier arc value size removed. |
| - Unicode initializer support added to OctetString type and derivatives. |
| - New prettyPrintType() abstract method implemented to base pyasn1 types |
| to facilitate encoding errors analysis. |
| - The __str__() method implemented to Tag, TagSet and TagMap classes to |
| ease encoding errors troubleshooting. |
| easing encoding errors |
| - Fix to SEQUENCE and SET types to give them their private componentTypes |
| collection (which is a NamedTypes object) so that they won't collide in |
| a MT execution environment. |
| - Missing T61String,ISO646String character types and ObjectDescriptor useful |
| type added. |
| - Distribute is gone, switched to setuptools completely. |
| - Missing NamedValues.__repr__() added. |
| - The base.NoValue() class, that indicates uninitialized ASN.1 object, |
| made public. |
| - The base.NoValue() class instances now support __repr__() what makes |
| possible to perform repr() on uninitialized pyasn1 types objects. |
| - When comparing ASN.1 types, by-tag and/or by-constraints matching |
| can now be performed with the isSuperTypeOf()/isSameTypeWith() optional |
| flags. |
| - Constructed types now verify their consistency by invoking |
| isSameTypeWith(matchTags=True, matchConstraints=False) and |
| isSuperTypeOf(matchTags=False, matchConstraints=True) for each of their |
| components rather than isSuperTypeOf() as it used to be. Constriants check |
| could be enforced to isSameTypeWith() with the strictConstraints=True |
| constructed classes attribute. |
| - Constructed types can now be initialized with new .setComponents() method |
| which accepts both var-args and keyword-args. Default repr() modified to |
| reflect this change. |
| - NamedTypes() and NamedValues() made comparable. |
| - Test coverage extended to cover pyasn1 types __repr__() function. |
| - The abs(Integer()) & abs(Real()) operation now returns respective pyasn1 |
| type, not a Python type. |
| - More Python magic methods implementations added to Integer & Real classes |
| (e.g. __pos__, __neg__, __round__, __floor__, __ceil__, __trunc__) |
| - The Integer.__invert__ Python magic method implemented. |
| - The OctetString.__int__() and .__float__() magic methods implemented. |
| - Handle the case of null writer at Debug printer. |
| - BitString encoder/decoder performance improved. |
| - Built-in debugging is now based on Python logging module. |
| - Fix to NamedType.__repr__() to work properly. |
| - Fixes to __repr__() implementation of many built-in ASN.1 types to take into |
| account all of their initializers such as tagSet, subtypeSpec etc. |
| - String typed float initializer to REAL type now supported. |
| - Float typed mantissa initializer to REAL type for base 2 added. |
| - Encoding bases 8 and 16 support for REAL type binary encoder added. |
| - More strict CER/DER encoders added for GeneralizedTime and UTCTime types. |
| - Asn1Item.hasValue() added to easily distinguish initalized ASN.1 objects |
| from uninitialized ones (e.g. pure types). |
| - Fix to REAL type binary decoder to handle different bases and scale factor. |
| - Fix to TagSet.repr() to include [obsolete] baseTag information. |
| - Fix to broken REAL type decoding handling. |
| - Fix to BitString and OctetString decoders dealing with constructed |
| encoding -- it used to be possible to embed other types in substrate. |
| - DER codec hardened not to tolerate indefinite length encoding/decoding. |
| - Fix to end-of-octest sentinel handling: |
| |
| + require strict two-zeros sentinel encoding |
| + recognize EOO sentinel only when explicitly requested by caller |
| of the decoder via allowEoo=True parameter (warning: API change) |
| |
| Revision 0.1.7 |
| -------------- |
| |
| - License updated to vanilla BSD 2-Clause to ease package use |
| (https://opensource.org/licenses/BSD-2-Clause). |
| - Test suite made discoverable by unittest/unittest2 discovery feature. |
| - Fix to decoder working on indefinite length substrate -- end-of-octets |
| marker is now detected by both tag and value. Otherwise zero values may |
| interfere with end-of-octets marker. |
| - Fix to decoder to fail in cases where tagFormat indicates inappropriate |
| format for the type (e.g. BOOLEAN is always PRIMITIVE, SET is always |
| CONSTRUCTED and OCTET STRING is either of the two) |
| - Fix to REAL type encoder to force primitive encoding form encoding. |
| - Fix to CHOICE decoder to handle explicitly tagged, indefinite length |
| mode encoding |
| - Fix to REAL type decoder to handle negative REAL values correctly. Test |
| case added. |
| |
| Revision 0.1.6 |
| -------------- |
| |
| - The compact (valueless) way of encoding zero INTEGERs introduced in |
| 0.1.5 seems to fail miserably as the world is filled with broken |
| BER decoders. So we had to back off the *encoder* for a while. |
| There's still the IntegerEncoder.supportCompactZero flag which |
| enables compact encoding form whenever it evaluates to True. |
| - Report package version on debugging code initialization. |
| |
| Revision 0.1.5 |
| -------------- |
| |
| - Documentation updated and split into chapters to better match |
| web-site contents. |
| - Make prettyPrint() working for non-initialized pyasn1 data objects. It |
| used to throw an exception. |
| - Fix to encoder to produce empty-payload INTEGER values for zeros |
| - Fix to decoder to support empty-payload INTEGER and REAL values |
| - Fix to unit test suites imports to be able to run each from |
| their current directory |
| |
| Revision 0.1.4 |
| -------------- |
| |
| - Built-in codec debugging facility added |
| - Added some more checks to ObjectIdentifier BER encoder catching |
| posible 2^8 overflow condition by two leading sub-OIDs |
| - Implementations overriding the AbstractDecoder.valueDecoder method |
| changed to return the rest of substrate behind the item being processed |
| rather than the unprocessed substrate within the item (which is usually |
| empty). |
| - Decoder's recursiveFlag feature generalized as a user callback function |
| which is passed an uninitialized object recovered from substrate and |
| its uninterpreted payload. |
| - Catch inappropriate substrate type passed to decoder. |
| - Expose tagMap/typeMap/Decoder objects at DER decoder to uniform API. |
| - Obsolete __init__.MajorVersionId replaced with __init__.__version__ |
| which is now in-sync with distutils. |
| - Package classifiers updated. |
| - The __init__.py's made non-empty (rumors are that they may be optimized |
| out by package managers). |
| - Bail out gracefully whenever Python version is older than 2.4. |
| - Fix to Real codec exponent encoding (should be in 2's complement form), |
| some more test cases added. |
| - Fix in Boolean truth testing built-in methods |
| - Fix to substrate underrun error handling at ObjectIdentifier BER decoder |
| - Fix to BER Boolean decoder that allows other pre-computed |
| values besides 0 and 1 |
| - Fix to leading 0x80 octet handling in DER/CER/DER ObjectIdentifier decoder. |
| See https://www.esat.kuleuven.be/cosic/publications/article-1432.pdf |
| |
| Revision 0.1.3 |
| -------------- |
| |
| - Include class name into asn1 value constraint violation exception. |
| - Fix to OctetString.prettyOut() method that looses leading zero when |
| building hex string. |
| |
| Revision 0.1.2 |
| -------------- |
| |
| - Fix to __long__() to actually return longs on py2k |
| - Fix to OctetString.__str__() workings of a non-initialized object. |
| - Fix to quote initializer of OctetString.__repr__() |
| - Minor fix towards ObjectIdentifier.prettyIn() reliability |
| - ObjectIdentifier.__str__() is aliased to prettyPrint() |
| - Exlicit repr() calls replaced with '%r' |
| |
| Revision 0.1.1 |
| -------------- |
| |
| - Hex/bin string initializer to OctetString object reworked |
| (in a backward-incompatible manner) |
| - Fixed float() infinity compatibility issue (affects 2.5 and earlier) |
| - Fixed a bug/typo at Boolean CER encoder. |
| - Major overhawl for Python 2.4 -- 3.2 compatibility: |
| + get rid of old-style types |
| + drop string module usage |
| + switch to rich comparation |
| + drop explicit long integer type use |
| + map()/filter() replaced with list comprehension |
| + apply() replaced with \*/\*\*args |
| + switched to use 'key' sort() callback function |
| + support both __nonzero__() and __bool__() methods |
| + modified not to use py3k-incompatible exception syntax |
| + getslice() operator fully replaced with getitem() |
| + dictionary operations made 2K/3K compatible |
| + base type for encoding substrate and OctetString-based types |
| is now 'bytes' when running py3k and 'str' otherwise |
| + OctetString and derivatives now unicode compliant. |
| + OctetString now supports two python-neutral getters: asOcts() & asInts() |
| + print OctetString content in hex whenever it is not printable otherwise |
| + in test suite, implicit relative import replaced with the absolute one |
| + in test suite, string constants replaced with numerics |
| |
| Revision 0.0.13 |
| --------------- |
| |
| - Fix to base10 normalization function that loops on univ.Real(0) |
| |
| Revision 0.0.13b |
| ---------------- |
| |
| - ASN.1 Real type is now supported properly. |
| - Objects of Constructed types now support __setitem__() |
| - Set/Sequence objects can now be addressed by their field names (string index) |
| and position (integer index). |
| - Typo fix to ber.SetDecoder code that prevented with schema decoding |
| operation. |
| - Fix to explicitly tagged items decoding support. |
| - Fix to OctetString.prettyPrint() to better handle non-printable content. |
| - Fix to repr() workings of Choice objects. |
| |
| Revision 0.0.13a |
| ---------------- |
| |
| - Major codec re-design. |
| - Documentation significantly improved. |
| - ASN.1 Any type is now supported. |
| - All example ASN.1 modules moved to separate pyasn1-modules package. |
| - Fix to initial sub-OID overflow condition detection an encoder. |
| - BitString initialization value verification improved. |
| - The Set/Sequence.getNameByPosition() method implemented. |
| - Fix to proper behaviour of PermittedAlphabetConstraint object. |
| - Fix to improper Boolean substrate handling at CER/DER decoders. |
| - Changes towards performance improvement: |
| |
| + all dict.has_key() & dict.get() invocations replaced with modern syntax |
| (this breaks compatibility with Python 2.1 and older). |
| + tag and tagset caches introduced to decoder |
| + decoder code improved to prevent unnecessary pyasn1 objects creation |
| + allow disabling components verification when setting components to |
| structured types, this is used by decoder whilst running with schema |
| mode. |
| + BER decoder for integer values now looks up a small set of pre-computed |
| substrate values to save on decoding. |
| + a few pre-computed values configured to ObjectIdentifier BER encoder. |
| + ChoiceDecoder split-off SequenceOf one to save on unnecessary checks. |
| + replace slow hasattr()/getattr() calls with isinstance() introspection. |
| + track the number of initialized components of Constructed types to save |
| on default/optional components initialization. |
| + added a shortcut ObjectIdentifier.asTuple() to be used instead of |
| __getitem__() in hotspots. |
| + use Tag.asTuple() and pure integers at tag encoder. |
| + introduce and use in decoder the baseTagSet attribute of the built-in |
| ASN.1 types. |
| |
| Revision 0.0.12a |
| ---------------- |
| |
| - The individual tag/length/value processing methods of |
| encoder.AbstractItemEncoder renamed (leading underscore stripped) |
| to promote overloading in cases where partial substrate processing |
| is required. |
| - The ocsp.py, ldap.py example scripts added. |
| - Fix to univ.ObjectIdentifier input value handler to disallow negative |
| sub-IDs. |
| |
| Revision 0.0.11a |
| ---------------- |
| |
| - Decoder can now treat values of unknown types as opaque OctetString. |
| - Fix to Set/SetOf type decoder to handle uninitialized scalar SetOf |
| components correctly. |
| |
| Revision 0.0.10a |
| ---------------- |
| |
| - API versioning mechanics retired (pyasn1.v1 -> pyasn1) what makes |
| it possible to zip-import pyasn1 sources (used by egg and py2exe). |
| |
| Revision 0.0.9a |
| --------------- |
| |
| - Allow any non-zero values in Boolean type BER decoder, as it's in |
| accordnance with the standard. |
| |
| Revision 0.0.8a |
| --------------- |
| |
| - Integer.__index__() now supported (for Python 2.5+). |
| - Fix to empty value encoding in BitString encoder, test case added. |
| - Fix to SequenceOf decoder that prevents it skipping possible Choice |
| typed inner component. |
| - Choice.getName() method added for getting currently set component |
| name. |
| - OctetsString.prettyPrint() does a single str() against its value |
| eliminating an extra quotes. |
| |
| Revision 0.0.7a |
| --------------- |
| |
| - Large tags (>31) now supported by codecs. |
| - Fix to encoder to properly handle explicitly tagged untagged items. |
| - All possible value lengths (up to 256^126) now supported by encoders. |
| - Fix to Tag class constructor to prevent negative IDs. |
| |
| Revision 0.0.6a |
| --------------- |
| |
| - Make use of setuptools. |
| - Constraints derivation verification (isSuperTypeOf()/isSubTypeOf()) fixed. |
| - Fix to constraints comparation logic -- can't cmp() hash values as it |
| may cause false positives due to hash conflicts. |
| |
| Revision 0.0.5a |
| --------------- |
| |
| - Integer BER codec reworked fixing negative values encoding bug. |
| - clone() and subtype() methods of Constructed ASN.1 classes now |
| accept optional cloneValueFlag flag which controls original value |
| inheritance. The default is *not* to inherit original value for |
| performance reasons (this may affect backward compatibility). |
| Performance penalty may be huge on deeply nested Constructed objects |
| re-creation. |
| - Base ASN.1 types (pyasn1.type.univ.*) do not have default values |
| anymore. They remain uninitialized acting as ASN.1 types. In |
| this model, initialized ASN.1 types represent either types with |
| default value installed or a type instance. |
| - Decoders' prototypes are now class instances rather than classes. |
| This is to simplify initial value installation to decoder's |
| prototype value. |
| - Bugfix to BitString BER decoder (trailing bits not regarded). |
| - Bugfix to Constraints use as mapping keys. |
| - Bugfix to Integer & BitString clone() methods |
| - Bugix to the way to distinguish Set from SetOf at CER/DER SetOfEncoder |
| - Adjustments to make it running on Python 1.5. |
| - In tests, substrate constants converted from hex escaped literals into |
| octals to overcome indefinite hex width issue occuring in young Python. |
| - Minor performance optimization of TagSet.isSuperTagSetOf() method |
| - examples/sshkey.py added |
| |
| Revision 0.0.4a |
| --------------- |
| |
| * Asn1Type.prettyPrinter() -> \*.prettyPrint() |
| |
| Revision 0.0.3a |
| --------------- |
| |
| * Simple ASN1 objects now hash to their Python value and don't |
| depend upon tag/constraints/etc. |
| * prettyIn & prettyOut methods of SimplleAsn1Object become public |
| * many syntax fixes |
| |
| Revision 0.0.2a |
| --------------- |
| |
| * ConstraintsIntersection.isSuperTypeOf() and |
| ConstraintsIntersection.hasConstraint() implemented |
| * Bugfix to NamedValues initialization code |
| * +/- operators added to NamedValues objects |
| * Integer.__abs__() & Integer.subtype() added |
| * ObjectIdentifier.prettyOut() fixes |
| * Allow subclass components at SequenceAndSetBase |
| * AbstractConstraint.__cmp__() dropped |
| * error.Asn1Error replaced with error.PyAsn1Error |
| |
| Revision 0.0.1a |
| --------------- |
| |
| * Initial public alpha release |