|
| 1 | +* Relase 0.17.0 (27 May 2021) |
| 2 | + |
| 3 | +New API: |
| 4 | +* Keys that use explicit curve parameters can now be read and written. |
| 5 | + Reading of explicit curves can be disabled by using the |
| 6 | + `valid_curve_encodings` keyword argument in `VerifyingKey.from_pem()`, |
| 7 | + `VerifyingKey.from_der()`, `SigningKey.from_pem()`, and |
| 8 | + `SigningKey.from_der()`. |
| 9 | +* Keys can now be written with use of explicit curve parameters, |
| 10 | + use `curve_parameters_encoding` keyword argument of `VerifyingKey.to_pem()`, |
| 11 | + `VerifyingKey.to_der()`, `SigningKey.to_pem(), or `SigningKey.to_der()` to |
| 12 | + specify the format. By default `named_curve` will be used, unless the |
| 13 | + curve doesn't have an associated OID (as will be the case for an unsupported |
| 14 | + curve), then `explicit` encoding will be used. |
| 15 | +* Allow specifying acceptable point formats when loading public keys |
| 16 | + (this also fixes a minor bug where python-ecdsa would accept raw |
| 17 | + encoding for points in PKCS#8 files). Set of accepted encodings is controlled |
| 18 | + by `valid_encodings` keyword argument in |
| 19 | + `ECDH.load_received_public_key_bytes()`, `VerifyingKey.from_string()`, |
| 20 | + `VerifyingKey.from_pem()`, VerifyingKey.from_der()`. |
| 21 | +* `PointJacobi` and `Point` now inherit from `AbstractPoint` that implements |
| 22 | + the methods for parsing points. That added `from_bytes()` and |
| 23 | + `to_bytes()` methods to both of them. |
| 24 | +* Curve parameters can now be read and written to PEM and DER files. The |
| 25 | + `Curve` class supports new `to_der()`, `from_der()`, `to_pem()`, and |
| 26 | + `from_pem()` methods. |
| 27 | + |
| 28 | +Doc fix: |
| 29 | +* Describe in detail which methods can raise `RSZeroError`, and that |
| 30 | + `SigningKey.sign_deterministic()` won't raise it. |
| 31 | + |
| 32 | +Bug fix: |
| 33 | +* Correctly truncate hash values larger than the curve order (only impacted |
| 34 | + custom curves and the curves added in this release). |
| 35 | +* Correctly handle curves for which the order is larger than the prime |
| 36 | + (only impacted custom curves and the secp160r1 curve added in this release). |
| 37 | +* Fix the handling of `==` and `!=` for `Public_key`, `Private_key`, `Point`, |
| 38 | + `PointJacobi`, `VerifyingKey`, and `SigningKey` so that it behaves |
| 39 | + consistently and in the expected way both in Python 2 and Python 3. |
| 40 | +* Implement lock-less algorithm inside PointJacobi for keeping shared state |
| 41 | + so that when calculation is aborted with KeyboardInterrupt, the state doesn't |
| 42 | + become corrupted (this fixes the occasional breakage of ecdsa in interactive |
| 43 | + shells). |
| 44 | + |
| 45 | +New features: |
| 46 | +* The `speed.py` script now provides performance for signature verification |
| 47 | + without use of precomputation. |
| 48 | +* New curves supported: secp112r1, secp112r2, secp128r1, secp160r1. |
| 49 | + |
| 50 | +Performance: |
| 51 | +* Use 2-ary Non-Adjacent Form for the combined multiply-add. This speeds up |
| 52 | + single-shot verify (i.e. without precomputation) by about 4 to 5%. |
| 53 | +* Use native Python 3.8 support for calculating multiplicative inverses. |
| 54 | + |
| 55 | +Maintenace: |
| 56 | +* Include Python 3.9 in PyPI keywords. |
| 57 | +* More realistic branch coverage counting (ignore Python version-specific |
| 58 | + branches). |
| 59 | +* Additional test coverage to many parts of the library. |
| 60 | +* Migrate to Github Actions for Continuous Testing. |
| 61 | + |
1 | 62 | * Release 0.16.1 (12 Nov 2020)
|
2 | 63 |
|
3 | 64 | New API:
|
|
0 commit comments