ecdsa 0.17.0
·
215 commits
to master
since this release
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_encodingskeyword argument inVerifyingKey.from_pem(),
VerifyingKey.from_der(),SigningKey.from_pem(), and
SigningKey.from_der(). - Keys can now be written with use of explicit curve parameters,
usecurve_parameters_encodingkeyword argument ofVerifyingKey.to_pem(),
VerifyingKey.to_der(),SigningKey.to_pem(), orSigningKey.to_der()to
specify the format. By defaultnamed_curvewill be used, unless the
curve doesn't have an associated OID (as will be the case for an unsupported
curve), thenexplicitencoding 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 PKCS#8 files). Set of accepted encodings is controlled
byvalid_encodingskeyword argument in
ECDH.load_received_public_key_bytes(),VerifyingKey.from_string(),
VerifyingKey.from_pem(),VerifyingKey.from_der(). PointJacobiandPointnow inherit fromAbstractPointthat implements
the methods for parsing points. That addedfrom_bytes()and
to_bytes()methods to both of them.- Curve parameters can now be read and written to PEM and DER files. The
Curveclass supports newto_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!=forPublic_key,Private_key,Point,
PointJacobi,VerifyingKey, andSigningKeyso that it behaves
consistently and in the expected way both in Python 2 and Python 3. - Implement lock-less algorithm inside
PointJacobifor keeping shared state
so that when calculation is aborted withKeyboardInterrupt, the state doesn't
become corrupted (this fixes the occasional breakage of ecdsa in interactive
shells).
New features:
- The
speed.pyscript now provides performance for signature verification
without use of precomputation. - New curves supported: secp112r1, secp112r2, secp128r1, secp160r1.
- Keys with explicit curve encoding are now supported.
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.
Maintenace:
- 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.