Skip to content

Commit 5aa87c5

Browse files
committed
release 0.17.0
1 parent 634e5b0 commit 5aa87c5

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

NEWS

+61
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,64 @@
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+
162
* Release 0.16.1 (12 Nov 2020)
263

364
New API:

0 commit comments

Comments
 (0)