Releases: tlsfuzzer/python-ecdsa
Releases · tlsfuzzer/python-ecdsa
ecdsa 0.19.1
New API:
- der.remove_implicitand- der.encode_implicitfor decoding and
 encoding DER IMPLICIT values with custom tag values and arbitrary
 classes
Bug fixes:
- Minor fixes around arithmetic with curves that have non-prime order
 (useful for experimentation, not practical deployments)
- Fix arithmetic to work with curves that have (0, 0) on the curve
- Fix canonicalization of signatures when sis just slightly
 above half of curve order
Maintenance:
- Dropped official support for Python 3.5 (again, issues with CI, support
 for Python 2.6 and Python 2.7 is unchanged)
- Officially support Python 3.12 and 3.13 (add them to CI)
- Removal of few more unnecessary six.bliterals (Alexandre Detiste)
- Fix typos in warning messages
ecdsa 0.19.0
New API:
- to_sshin- VerifyingKeyand- SigningKey, supports Ed25519 keys only
 (Pablo Mazzini)
New features:
- Support for twisted Brainpool curves
Doc fix:
- Fix curve equation in glossary
- Documentation for signature encoding and signature decoding functions
Maintenance:
- Dropped official support for 3.3 and 3.4 (because of problems running them
 in CI, not because it's actually incompatible; support for 2.6 and 2.7 is
 unaffected)
- 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
 releases of test dependencies
- Dropped the internal _rwlockmodule as it's unused
- Added mutation testing to CI, lots of speed-ups to the test suite
 to make it happen
- Removal of unnecessary six.bliterals (Alexandre Detiste)
Deprecations:
- int_to_string,- string_to_int, and- digest_integerfrom- ecdsa.ecdsa
 module are now considered deprecated, they will be removed in a future
 release
ecdsa 0.18.0
New features:
- 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.
New API:
- CurveEdTw class to represent the Twisted Edwards curve parameters.
- PointEdwards class to represent points on Twisted Edwards curve and
 provide point arithmetic on it.
- curve_by_namein- curvesmodule to get a- Curveobject by providing curve
 name.
Bug fix:
- 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
 strings.
- Make the VerifyingKeyencoded with explicit parameters use the same
 kind of point encoding for public key and curve generator.
- Better handling of malformed curve parameters (as in CVE-2022-0778);
 make python-ecdsa raiseMalformedPointErrorinstead ofAssertionError.
Doc fix:
- Publish the documentation on https://ecdsa.readthedocs.io/,
 include explanation of basics of handling of ECC data formats and how to use
 the library for elliptic curve arithmetic.
- Make object names more consistent, make them into hyperlinks on the
 readthedocs documentation.
- Make security note more explicit (Ian Rodney)
- Fix the explicitvsnamed_curveconfusion inVerifyingKeydocs.
Maintenance:
- Fix few typos (thanks to Tim Gates and Kian Meng Ang).
- Updated black version; slight changes to formatting
- Include interoperability tests for Ed25519 and Ed448 with OpenSSL.
ecdsa 0.18.0 beta2
changes since 0.18.0-beta1
New features:
- Support for point precomputation for EdDSA.
Maintenance:
- Fix few typos (thanks to Tim Gates and Kian Meng Ang).
Bug fix:
- 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
 strings.
ecdsa 0.18.0 beta1
New features:
- Support for EdDSA (Ed25519, Ed448) signature creation and verification.
- Support for Ed25519 and Ed448 in PKCS#8 and public key files.
New API:
- CurveEdTw class to represent the Twisted Edwards curve parameters.
- PointEdwards class to represent points on Twisted Edwards curve and
 provide point arithmetic on it.
ecdsa 0.17.0
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().
- PointJacobiand- Pointnow inherit from- AbstractPointthat implements
 the methods for parsing points. That added- from_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.
ecdsa 0.16.1
New API:
- VerifyingKey.precompute()supports- lazyargument to delay precomputation
 to the first time the key is used to verify a signature.
Doc fixes:
- Documentation for the VerifyingKey.precompute()method.
Bug fix:
- Make created signatures correct when the hash used is bigger than the curve
 order bit size and the curve order is not a multiple of 8 (this affects
 only users of custom curves or hashes with output larger than 512 bits
 when used with NIST P-521 curve).
Performance:
- Speed up library load time by calculating the generator point multiplication
 tables the first time the points are used, not when they are initialised.
Maintenance:
- Include Python 3.9 in CI testing.
- Test coverage for the VerifyingKey.precompute()method.
- Small speed-ups for the test suite.
ecdsa 0.16.0
New features:
- Support for reading and writing private keys in PKCS#8 format.
New API:
- to_pemand- to_dernow accept new parameter,- format, to specify
 the format of the encoded files, either the dafault, legacy "ssleay", or
 the new- pkcs8to use PKCS#8. Note that only unencrypted PKCS#8 files are
 supported.
- Add allow_truncatetoverifyinVerifyingKey, it defaults to True,
 when specified as False, use of large hashes smaller than curves will be
 disallowed (as it was in 0.14.1 and earlier).
Bug fix:
- Correctly calculate signatures for private keys equal to n-1.
- Make PointJacobiand thusSigningKeyandVerifyingKeypickleable.
Doc fixes:
- to_pemfunctions return- bytesnot- str, document them as such.
- from_pemand- from_pemin- SigningKeyreturns- SigningKey, document them
 as such.
Maintenance:
- Ensure that version checks will work with Python 4.
- Format the source with black.
- Fix uses of assert_in test suite.
- Use newer Ubuntu in Travis to test against OpenSSL 1.1.1 (and thus
 test the interoperability of ECDH code in Travis).
ecdsa 0.15
tl;dr:
- much faster (around 20x)
- dedicated API for ECDH
Bug fixes:
- from curves import *will now correctly import- BRAINPOOLP256r1and
 - BRAINPOOLP320r1curves.
New features:
- ECDH operations have a public explicit API.
- Large hashes are now supported with small curves (e.g. SHA-256 can be used
 with NIST192p).
- VerifyingKeynow supports the- precompute()method to further speed up
 signature verification with the given instance of the key.
New API:
- VerifyingKey,- SigningKey,- Public_key,- Private_keyand
 - CurveFpnow have- __eq__methods.
- ecdsa.ecdhmodule and- ECDHclass.
- PointJacobiadded.
- VerifyingKey.verify_digest,- SigningKey.sign_digestand
 - SigningKey.sign_digest_deterministicmethods now accept- allow_truncate
 argument to enable use of hashes larger than the curve order.
- VerifyingKey- from_pemand- from_dernow accept- hashfuncparameter
 like other- from*methods.
- VerifyingKeyhas- precomputemethod now.
- VerifyingKey.from_public_pointmay now not perform validation of public
 point when- validate_point=Falseargument is passed to method.
- CurveFpconstructor now accepts the- hparameter - the cofactor of the
 elliptic curve, it's used for selection of algorithm of public point
 verification.
Performance:
- randrangenow will now perform much fewer calls to system random number
 generator.
- PointJacobiintroduced and used as the underlying implementation; speeds up
 the library by a factor of about 20.
- Library has now optional dependencies on gmpyandgmpy2. When they are
 available, the elliptic curve calculations will be about 3 times faster.
Maintenance:
- expected minimum version of sixmodule (1.9.0) is now specified explicitly
 insetup.pyand tested against.
- Significantly faster test suite execution.
ecdsa 0.14.1
Remove the obsolete six.py file from wheel distribution file on pypi