summaryrefslogtreecommitdiff
path: root/CHANGES.rst
Commit message (Collapse)AuthorAgeFilesLines
* Advance copyright statement to year 2020Ilya Etingof2020-03-081-2/+3
|
* Update CHANGES.rstIlya Etingof2019-11-231-2/+2
|
* Update CHANGES.rstIlya Etingof2019-11-231-1/+1
|
* Merge branch 'master' into streamoptimum37Ilya Etingof2019-11-231-2/+8
|\
| * Prepare to branch 0.4.xIlya Etingof2019-11-231-1/+1
| |
| * Add support for Python 3.8, drop EOL 3.4 (#182)Hugo van Kemenade2019-11-161-1/+2
| | | | | | | | | | | | | | * Drop support for EOL Python 3.4 * Remove Py2.5 workarounds * Change Travis setup to test on default Xenial * Add support for Python 3.8 and update changelog
| * Drop support for EOL Pythons (#131)Jon Dufresne2019-11-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Python 2.4, 2.5, 2.6, 3.2 and 3.3 are end of life. They are no longer receiving bug fixes, including for security issues. These Pythons went EOL on: Python 2.6: 2013-10-29 Python 3.2: 2016-02-20 Python 3.3: 2017-09-29 For additional details on supported Python versions, see: https://devguide.python.org/#status-of-python-branches Removing support for EOL Pythons will reduce testing and maintenance resources. Using pypinfo, here are the download statistics of the project for the last 30 days, showing limited downloads from EOL Pythons: | python_version | percent | download_count | | -------------- | ------: | -------------: | | 2.7 | 90.33% | 7,975,885 | | 3.6 | 4.95% | 437,261 | | 3.5 | 2.99% | 263,637 | | 3.4 | 1.02% | 89,723 | | 2.6 | 0.69% | 60,511 | | 3.7 | 0.02% | 2,024 | | 3.3 | 0.00% | 441 | | 3.2 | 0.00% | 38 | | 3.8 | 0.00% | 9 | | None | 0.00% | 2 | By removing support for older Pythons, can remove or update the following workarounds and code: * Built-in function bin() is always available. * Built-in function callable() is always available. * Built-in function all() is always available. * The collections.OrderedDict class is always available. * The datetime.strptime() method is always available. * The platform module is always available. * The string.partition() method is always available. * The NullHandler class is always available. * The method .__trunc__() is always available. * Can use set literals. * Updated unittest is always available. The unittest2 module is unnecessary. Users on older versions of Python can continue to download, install, and use older versions of the library that continue to have support for older Pythons.
| * Prepare for 0.5.0Ilya Etingof2019-11-161-0/+5
| |
| * Release 0.4.8v0.4.8Ilya Etingof2019-11-161-1/+1
| |
* | Pass `tagMap` and `typeMap` to decoder instanceIlya Etingof2019-11-161-0/+3
| | | | | | | | | | This change should simplify decoder specialization by means of parameterization in addition to subclassing.
* | Refactor BER decoder into a suspendable coroutineIlya Etingof2019-11-151-1/+21
|/ | | | | | | | | | | | | | | | | | | | The goal of this change is to make the decoder stopping on input data starvation and resuming from where it stopped whenever the caller decides to try again (hopefully making sure that some more input becomes available). This change makes it possible for the decoder to operate on streams of data (meaning that the entire DER blob might not be immediately available on input). On top of that, the decoder yields partially reconstructed ASN.1 object on input starvation making it possible for the caller to inspect what has been decoded so far and possibly consume partial ASN.1 data. All these new feature are natively available through `StreamingDecoder` class. Previously published API is implemented as a thin wrapper on top of that ensuring backward compatibility.
* Allow combining constraints operating on sets (#181)Ilya Etingof2019-11-041-1/+3
| | | | | Added ability of combining `SingleValueConstraint` and `PermittedAlphabetConstraint` objects into one for proper modeling `FROM ... EXCEPT ...` ASN.1 clause.
* Prepare for 0.4.8Ilya Etingof2019-09-011-0/+5
|
* Release 0.4.7v0.4.7Ilya Etingof2019-09-011-1/+1
|
* Add `SET ... WITH COMPONENTS ...` ASN.1 construct support (#171)Ilya Etingof2019-08-271-0/+4
| | | | | | Added `WithComponentsConstraint` along with related `ComponentPresentConstraint` and `ComponentAbsentConstraint` classes to be used with `Sequence`/`Set` types representing `SET ... WITH COMPONENTS ...` like ASN.1 constructs.
* Deprecate `sizeSpec` in favor of `subtypeSpec` (#172)Ilya Etingof2019-08-251-0/+9
| | | | | | | | | | | | | | This commit deprecates `subtypeSpec` attributes and keyword argument. It is now recommended to pass `ValueSizeConstraint`, as well as all other constraints, to `subtypeSpec`. By way of the change mentioned above, this commit fixes 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).
* Add `isInconsistent` property hook to all constructed types (#170)Ilya Etingof2019-08-251-1/+5
| | | | | | | 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.
* Prepare 0.4.7Ilya Etingof2019-08-131-0/+5
|
* Release 0.4.6v0.4.6Ilya Etingof2019-07-311-1/+1
|
* Document base ASN.1 typesIlya Etingof2019-07-131-1/+1
| | | | Also many fixes here and there to docs and docstrings.
* Add `SequenceOf`/`SetOf` list-like slicing support (#168)Ilya Etingof2019-07-121-1/+2
|
* Add `SET|SEQUENCE OF ANY` encoding support (#165)Ilya Etingof2019-07-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | For example: AttributeTypeAndValues ::= SEQUENCE { type OBJECT IDENTIFIER, values SET OF ANY DEFINED BY type } This patch adds support of the above ASN.1 syntax to BER/DER/CER codecs. It appears that to implement this feature properly, `SetOf`/`SequenceOf` pyasn1 types need to have `.componentType` wrapped into something similar to `NamedType` that `Set`/`Sequence` have. That additional layer would then carry the open type meta information. Without it, `Sequence`/`Set` codec needs to signal `SetOf`/`SequenceOf` codec of the open type being processed, which is a slight hack. A other inconvenience is that when `SetOf`/`SequenceOf` deal with an open type component, they should not verify types on component assignment. Without open type property in `SetOf`/`SequenceOf`, the code checks for `Any` component type which is another hack. The above shortcomings should be addressed in the follow up patch.
* Improve CER/DER encoding of GeneralizedTime (#164)Ilya Etingof2019-06-301-0/+4
| | | | | | - Added support for subseconds CER/DER encoding edge cases in `GeneralizedTime` codec - Fixed 3-digit fractional seconds value CER/DER encoding of `GeneralizedTime`
* Rename pyasn1 unicode exceptionsIlya Etingof2019-06-291-0/+3
| | | | | | | The new exception classes names are `PyAsn1UnicodeDecodeError` and `PyAsn1UnicodeEncodeError`. Also, unit tests added.
* Fix `AnyDecoder` to accept `TagMap` as `asn1Spec` (#152)Ilya Etingof2019-06-281-0/+2
| | | | | | Fixes `AnyDecoder` to accept `TagMap` as `asn1Spec`. The use-case is to make `AnyDecoder` operational when dumping raw value on error condition is enabled
* SequenceOf/SetOf to remain a schema objects (#162)Ilya Etingof2019-06-231-2/+25
| | | | | | | | | | | | | | | | | | | | | | | | * Add `omitEmptyOptionals` encoder option 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`. * Change `SequenceOf`/`SetOf` behaviour - 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. - 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. - Added `.reset()` method to all constructed types to turn value object into a schema object.
* Prepare for 0.4.6Ilya Etingof2018-12-291-0/+5
|
* Release 0.4.5v0.4.5Ilya Etingof2018-12-291-1/+2
| | | | Also extend copyright to the year 2019
* Fix defaulted constructed SEQUENCE component initialization (#146)Ilya Etingof2018-12-291-1/+2
| | | | | When SEQUENCE has defaulted component of constructed type, recursively instantiate defaulted component and assign instantiated asn1 object to SEQUENCE field.
* Add more debug logging to *ER codecs (#139)Ilya Etingof2018-08-041-0/+2
| | | | | | | | | | More debug logging added to BER family of codecs to ease encoding problems troubleshooting. Also: * code layout made a bit more sparse * potential bug in open type decoding in indefinite mode fixed
* Refactor debug logging (#138)Ilya Etingof2018-08-031-2/+5
| | | | | | | | 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.
* Fix some typos and prepare for 0.4.5Ilya Etingof2018-07-291-0/+5
|
* Fix Travis build for Py3.7Ilya Etingof2018-07-261-1/+1
|
* Release 0.4.4Ilya Etingof2018-07-261-1/+1
|
* Fix Sequence/Set.prettyPrint crashIlya Etingof2018-07-241-0/+2
| | | | | | | When calling `.prettyPrint()` on Sequence/Set components, make sure the component is a value object (not schema) because calling `.prettyPrint` on a schema object is likely to fail.
* Fix native encoder type map (#132)Ilya Etingof2018-06-301-0/+6
| | | | | | | | | The type map should include all ASN.1 types rather than just ambiguous ones for performance reasons. Incomplete type ID map triggers building a new TagSet out of the value being encoded. If that value does not have base tags set, that leads to a crash.
* 0.4.3v0.4.3Ilya Etingof2018-05-231-1/+1
|
* fix GenerlizedTime.asDateTime() operationIlya Etingof2018-05-231-1/+3
|
* copyright years extendedIlya Etingof2018-03-291-0/+5
|
* Prefer https:// URLs where available (#121)Jon Dufresne2018-03-211-2/+2
|
* Fixed bad TagSet initializer at OctetString encoder (#107)v0.4.2Ilya Etingof2017-11-231-0/+6
| | | | | | localize explicit tag slitting to chunked mode at OctetString and BitString encoders The inner chunks tagging logic is to be researched -- I'm not certain it works as it supposed to
* imports pep8'edIlya Etingof2017-11-231-6/+7
|
* Start `.prettyPrint` deprecation (#103)Ilya Etingof2017-11-191-2/+8
| | | | | | | * __str__() of ASN.1 types reworked to serve instead of .prettyPrint() Related changes: `str()` on enumerations and boolean will return a string label rather than a number.
* __repr__() of ASN.1 types reworked for better readability (#102)Ilya Etingof2017-11-181-0/+2
| | | At the same time __repr__() stopped being eval()-compliant
* Add default to .getComponentBy*() (#100)Ilya Etingof2017-11-161-0/+2
| | | | * `default` kwarg added to .getComponentBy*() methods
* fixed Sequence/SequenceOf decoding heuristicsIlya Etingof2017-11-141-2/+4
|
* migrated docs and references from sourceforge.netIlya Etingof2017-11-141-0/+1
|
* serialization -> serialisation nitpicksIlya Etingof2017-11-141-5/+5
|
* Pickle protocol fixes (#99)Ilya Etingof2017-10-291-0/+1
| | | | | | | | | | | * do not blow up on pickle protocol attributes look up * added Pickle tests * More fixes to pickle protocol support * __slots__ lookup allowed at NoValue * SizedInteger moved from BitString scope to the univ module scope
* Constructed types schema inspection (#87)Ilya Etingof2017-10-191-0/+3
| | | | | * the `instantiate=True` parameter added to constructed types .getComponentBy*() * Choice.clear() fixed to fully reset its internal state