| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
* 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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
This change should simplify decoder specialization by means
of parameterization in addition to subclassing.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Added ability of combining `SingleValueConstraint` and
`PermittedAlphabetConstraint` objects into one for proper
modeling `FROM ... EXCEPT ...` ASN.1 clause.
|
| |
|
| |
|
|
|
|
|
|
| |
Added `WithComponentsConstraint` along with related
`ComponentPresentConstraint` and `ComponentAbsentConstraint` classes
to be used with `Sequence`/`Set` types representing
`SET ... WITH COMPONENTS ...` like ASN.1 constructs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
| |
Also many fixes here and there to docs and docstrings.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
- Added support for subseconds CER/DER encoding edge cases in
`GeneralizedTime` codec
- Fixed 3-digit fractional seconds value CER/DER encoding of
`GeneralizedTime`
|
|
|
|
|
|
|
| |
The new exception classes names are `PyAsn1UnicodeDecodeError`
and `PyAsn1UnicodeEncodeError`.
Also, unit tests added.
|
|
|
|
|
|
| |
Fixes `AnyDecoder` to accept `TagMap` as `asn1Spec`.
The use-case is to make `AnyDecoder` operational when
dumping raw value on error condition is enabled
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
| |
|
|
|
|
| |
Also extend copyright to the year 2019
|
|
|
|
|
| |
When SEQUENCE has defaulted component of constructed type,
recursively instantiate defaulted component and assign instantiated
asn1 object to SEQUENCE field.
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
* __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.
|
|
|
| |
At the same time __repr__() stopped being eval()-compliant
|
|
|
|
| |
* `default` kwarg added to .getComponentBy*() methods
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
| |
* the `instantiate=True` parameter added to constructed types .getComponentBy*()
* Choice.clear() fixed to fully reset its internal state
|