Skip to content

Update ecdsa to 0.19.1#358

Open
pyup-bot wants to merge 1 commit intomasterfrom
pyup-update-ecdsa-0.16.1-to-0.19.1
Open

Update ecdsa to 0.19.1#358
pyup-bot wants to merge 1 commit intomasterfrom
pyup-update-ecdsa-0.16.1-to-0.19.1

Conversation

@pyup-bot
Copy link
Collaborator

This PR updates ecdsa from 0.16.1 to 0.19.1.

Changelog

0.19.1

New API:
* ``der.remove_implitic`` and ``der.encode_implicit`` for decoding and
encoding DER IMPLICIT values with custom tag values and arbitrary
classes

Bug fixes:
* Minor fixes around arithmetic with curves that have non-prime order
(useful for experimentation, not practical deployments)
* Fix arithmetic to work with curves that have (0, 0) on the curve
* Fix canonicalization of signatures when ``s`` is just slightly
above half of curve order

Maintenance:
* Dropped official support for Python 3.5 (again, issues with CI, support
for Python 2.6 and Python 2.7 is unchanged)
* Officialy support Python 3.12 and 3.13 (add them to CI)
* Removal of few more unnecessary `six.b` literals (Alexandre Detiste)
* Fix typos in warning messages

0.19.0

New API:
* `to_ssh` in `VerifyingKey` and `SigningKey`, supports Ed25519 keys only
(Pablo Mazzini)

New features:
* Support for twisted Brainpool curves

Doc fix:
* Fix curve equation in glossary
* Documentation for signature encoding and signature decoding functions

Maintenance:
* Dropped official support for 3.3 and 3.4 (because of problems running them
in CI, not because it's actually incompatible; support for 2.6 and 2.7 is
unaffected)
* Fixes aroung hypothesis parameters
* Officially support Python 3.11 and 3.12
* Small updates to test suite to make it work with 3.11 and 3.12 and new
releases of test dependencies
* Dropped the internal `_rwlock` module as it's unused
* Added mutation testing to CI, lots of speed-ups to the test suite
to make it happen
* Removal of unnecessary `six.b` literals (Alexandre Detiste)

Deprecations:
* `int_to_string`, `string_to_int`, and `digest_integer` from `ecdsa.ecdsa`
module are now considered deprecated, they will be removed in a future
release

0.18.0

New API:
* `curve_by_name` in `curves` module to get a `Curve` object by providing curve
name.

Bug fix:
* Make the `VerifyingKey` encoded with explicit parameters use the same
kind of point encoding for public key and curve generator.
* Better handling of malformed curve parameters (as in CVE-2022-0778);
make python-ecdsa raise `MalformedPointError` instead of `AssertionError`.

Doc fix:
* Publish the documentation on https://ecdsa.readthedocs.io/,
include explanation of basics of handling of ECC data formats and how to use
the library for elliptic curve arithmetic.
* Make object names more consistent, make them into hyperlinks on the
readthedocs documentation.
* Make security note more explicit (Ian Rodney)
* Fix the `explicit` vs `named_curve` confusion in `VerifyingKey` docs.

Maintenance:
* Updated black version; slight changes to formatting
* Include interoperability tests for Ed25519 and Ed448 with OpenSSL.

0.18.0beta2

New features:
* Support for point precomputation for EdDSA.

Maintenance:
* Fix few typos (thanks to Tim Gates and Kian Meng Ang).

Bug fix:
* Accept private EdDSA keys that include public key in the ASN.1 structure.
* Fix incompatibility with Python 3.3 in handling of memoryviews of empty
strings.

0.18.0beta1

New features:
* Support for EdDSA (Ed25519, Ed448) signature creation and verification.
* Support for Ed25519 and Ed448 in PKCS8 and public key files.

New API:
* CurveEdTw class to represent the Twisted Edwards curve parameters.
* PointEdwards class to represent points on Twisted Edwards curve and
provide point arithmetic on it.

0.17.0

New API:
* Keys that use explicit curve parameters can now be read and written.
Reading of explicit curves can be disabled by using the
`valid_curve_encodings` keyword argument in `VerifyingKey.from_pem()`,
`VerifyingKey.from_der()`, `SigningKey.from_pem()`, and
`SigningKey.from_der()`.
* Keys can now be written with use of explicit curve parameters,
use `curve_parameters_encoding` keyword argument of `VerifyingKey.to_pem()`,
`VerifyingKey.to_der()`, `SigningKey.to_pem(), or `SigningKey.to_der()` to
specify the format. By default `named_curve` will be used, unless the
curve doesn't have an associated OID (as will be the case for an unsupported
curve), then `explicit` encoding will be used.
* Allow specifying acceptable point formats when loading public keys
(this also fixes a minor bug where python-ecdsa would accept raw
encoding for points in PKCS8 files). Set of accepted encodings is controlled
by `valid_encodings` keyword argument in
`ECDH.load_received_public_key_bytes()`, `VerifyingKey.from_string()`,
`VerifyingKey.from_pem()`, VerifyingKey.from_der()`.
* `PointJacobi` and `Point` now inherit from `AbstractPoint` that implements
the methods for parsing points. That added `from_bytes()` and
`to_bytes()` methods to both of them.
* Curve parameters can now be read and written to PEM and DER files. The
`Curve` class supports new `to_der()`, `from_der()`, `to_pem()`, and
`from_pem()` methods.

Doc fix:
* Describe in detail which methods can raise `RSZeroError`, and that
`SigningKey.sign_deterministic()` won't raise it.

Bug fix:
* Correctly truncate hash values larger than the curve order (only impacted
custom curves and the curves added in this release).
* Correctly handle curves for which the order is larger than the prime
(only impacted custom curves and the secp160r1 curve added in this release).
* Fix the handling of `==` and `!=` for `Public_key`, `Private_key`, `Point`,
`PointJacobi`, `VerifyingKey`, and `SigningKey` so that it behaves
consistently and in the expected way both in Python 2 and Python 3.
* Implement lock-less algorithm inside PointJacobi for keeping shared state
so that when a calculation is aborted with KeyboardInterrupt, the state
doesn't become corrupted (this fixes the occasional breakage of ecdsa in
interactive shells).

New features:
* The `speed.py` script now provides performance for signature verification
without the use of precomputation.
* New curves supported: secp112r1, secp112r2, secp128r1, secp160r1.

Performance:
* Use 2-ary Non-Adjacent Form for the combined multiply-add. This speeds up
single-shot verify (i.e. without precomputation) by about 4 to 5%.
* Use native Python 3.8 support for calculating multiplicative inverses.

Maintenance:
* Include Python 3.9 in PyPI keywords.
* More realistic branch coverage counting (ignore Python version-specific
branches).
* Additional test coverage to many parts of the library.
* Migrate to Github Actions for Continuous Testing.
Links

@pyup-bot pyup-bot mentioned this pull request Mar 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant