| 
 | 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