| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687 |
- 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
|