tlsfuzzer/python-ecdsa
pure-python ECDSA signature/verification and ECDH key agreement
📋 Changes
- Fix CVE-2026-33936, a DER parsing issue in ``remove_octet_string()``,
- Update CI to use newer version of Ubuntu.
📋 Changes
- ``der.remove_implicit`` and ``der.encode_implicit`` for decoding and
- Minor fixes around arithmetic with curves that have non-prime order
- Fix arithmetic to work with curves that have (0, 0) on the curve
- Fix canonicalization of signatures when ``s`` is just slightly
- Dropped official support for Python 3.5 (again, issues with CI, support
- Officially 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
📋 Changes
- `to_ssh` in `VerifyingKey` and `SigningKey`, supports Ed25519 keys only
- Support for twisted Brainpool curves
- Fix curve equation in glossary
- Documentation for signature encoding and signature decoding functions
- Dropped official support for 3.3 and 3.4 (because of problems running them
- Fixes around 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
- + 4 more
📋 Changes
- Support for EdDSA (Ed25519, Ed448) signature creation and verification.
- Support for Ed25519 and Ed448 in PKCS#8 and public key files.
- Support for point precomputation for EdDSA.
- CurveEdTw class to represent the Twisted Edwards curve parameters.
- PointEdwards class to represent points on Twisted Edwards curve and
- `curve_by_name` in `curves` module to get a `Curve` object by providing curve
- 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
- + 9 more
📋 Changes
- Support for point precomputation for EdDSA.
- Fix few typos (thanks to Tim Gates and Kian Meng Ang).
- 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
📋 Changes
- Support for EdDSA (Ed25519, Ed448) signature creation and verification.
- Support for Ed25519 and Ed448 in PKCS#8 and public key files.
- CurveEdTw class to represent the Twisted Edwards curve parameters.
- PointEdwards class to represent points on Twisted Edwards curve and
📋 Changes
- Keys that use explicit curve parameters can now be read and written.
- Keys can now be written with use of explicit curve parameters,
- Allow specifying acceptable point formats when loading public keys
- `PointJacobi` and `Point` now inherit from `AbstractPoint` that implements
- Curve parameters can now be read and written to PEM and DER files. The
- Describe in detail which methods can raise `RSZeroError`, and that
- Correctly truncate hash values larger than the curve order (only impacted
- Correctly handle curves for which the order is larger than the prime
- + 11 more
📋 Changes
- `VerifyingKey.precompute()` supports `lazy` argument to delay precomputation
- Documentation for the `VerifyingKey.precompute()` method.
- Make created signatures correct when the hash used is bigger than the curve
- Speed up library load time by calculating the generator point multiplication
- Include Python 3.9 in CI testing.
- Test coverage for the `VerifyingKey.precompute()` method.
- Small speed-ups for the test suite.
📋 Changes
- Support for reading and writing private keys in PKCS#8 format.
- `to_pem` and `to_der` now accept new parameter, `format`, to specify
- Add `allow_truncate` to `verify` in `VerifyingKey`, it defaults to True,
- Correctly calculate signatures for private keys equal to n-1.
- Make `PointJacobi` and thus `SigningKey` and `VerifyingKey` pickleable.
- `to_pem` functions return `bytes` not `str`, document them as such.
- `from_pem` and `from_pem` in `SigningKey` returns `SigningKey`, document them
- Ensure that version checks will work with Python 4.
- + 3 more
📋 Changes
- much faster (around 20x)
- dedicated API for ECDH
- `from curves import *` will now correctly import `BRAINPOOLP256r1` and
- ECDH operations have a public explicit API.
- Large hashes are now supported with small curves (e.g. SHA-256 can be used
- `VerifyingKey` now supports the `precompute()` method to further speed up
- `VerifyingKey`, `SigningKey`, `Public_key`, `Private_key` and
- `ecdsa.ecdh` module and `ECDH` class.
- + 11 more
Remove the obsolete `six.py` file from wheel distribution file on pypi
📋 Changes
- support for Brainpool curves
- better test coverage, fixed bugs found by it
- support for compressed point representation
- Strict checking of DER requirements when parsing SEQUENCE, INTEGER,
- DER parsers now consistently raise `UnexpectedDER` exception on malformed DER
- Make sure that both malformed and invalid signatures raise `BadSignatureError`.
- Ensure that all `SigningKey` and `VerifyingKey` methods that should accept
- Make `SigningKey.sign_digest_deterministic` use default object hashfunc when
- + 41 more
Fix CVE-2019-14853 - possible DoS caused by malformed signature decoding Fix CVE-2019-14859 - signature malleability caused by insufficient checks of DER encoding Also harden key decoding from string and DER encodings.
Restore compatibility of setup.py with Python 2.6 and 2.7.
Fix the PyPI wheel - the old version included .pyc files.
Fix the argument order for Curve constructor (put openssl_name= at the end, with a default value) to unbreak compatibility with external callers who used the 0.11 convention.
Switch to Versioneer for version-string management (fixing the broken `ecdsa.__version__` attribute). Add Curve.openssl_name property. Mention secp256k1 in README, test against OpenSSL. Produce "wheel" distributions. Add py3.4 and pypy3 compatibility testing. Other minor fixes.
