7.6 KiB
Python-RSA changelog
Version 4.7 - released 2021-01-10
- Fix [#165](https://github.com/sybrenstuvel/python-rsa/issues/165]: CVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption code
- Add padding length check as described by PKCS#1 v1.5 (Fixes #164)
- Reuse of blinding factors to speed up blinding operations. Fixes #162.
- Declare & test support for Python 3.9
Version 4.4 & 4.6 - released 2020-06-12
Version 4.4 and 4.6 are almost a re-tagged release of version 4.2. It requires
Python 3.5+. To avoid older Python installations from trying to upgrade to RSA
4.4, this is now made explicit in the python_requires argument in setup.py.
There was a mistake releasing 4.4 as "3.5+ only", which made it necessary to
retag 4.4 as 4.6 as well.
No functional changes compared to version 4.2.
Version 4.3 & 4.5 - released 2020-06-12
Version 4.3 and 4.5 are almost a re-tagged release of version 4.0. It is the
last to support Python 2.7. This is now made explicit in the python_requires
argument in setup.py. Python 3.4 is not supported by this release. There was a
mistake releasing 4.4 as "3.5+ only", which made it necessary to retag 4.3 as
4.5 as well.
Two security fixes have also been backported, so 4.3 = 4.0 + these two fixes.
- Choose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out.
- Reject cyphertexts (when decrypting) and signatures (when verifying) that have been modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks Carnil for pointing this out.
Version 4.2 - released 2020-06-10
- Rolled back the switch to Poetry, and reverted back to using Pipenv + setup.py for dependency management. There apparently is an issue no-binary installs of packages build with Poetry. This fixes #148
- Limited SHA3 support to those Python versions (3.6+) that support it natively. The third-party library that adds support for this to Python 3.5 is a binary package, and thus breaks the pure-Python nature of Python-RSA. This should fix #147.
Version 4.1 - released 2020-06-10
- Added support for Python 3.8.
- Dropped support for Python 2 and 3.4.
- Added type annotations to the source code. This will make Python-RSA easier to use in your IDE, and allows better type checking.
- Added static type checking via MyPy.
- Fix #129 Installing from source gives UnicodeDecodeError.
- Switched to using Poetry for package management.
- Added support for SHA3 hashing: SHA3-256, SHA3-384, SHA3-512. This is natively supported by Python 3.6+ and supported via a third-party library on Python 3.5.
- Choose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out.
- Reject cyphertexts (when decrypting) and signatures (when verifying) that have been modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks Adelapie for pointing this out.
Version 4.0 - released 2018-09-16
- Removed deprecated modules:
- rsa.varblock
- rsa.bigfile
- rsa._version133
- rsa._version200
- Removed CLI commands that use the VARBLOCK/bigfile format.
- Ensured that PublicKey.save_pkcs1() and PrivateKey.save_pkcs1() always return bytes.
- Dropped support for Python 2.6 and 3.3.
- Dropped support for Psyco.
- Miller-Rabin iterations determined by bitsize of key. #58
- Added function
rsa.find_signature_hash()to return the name of the hashing algorithm used to sign a message.rsa.verify()now also returns that name, instead of always returningTrue. #78 - Add support for SHA-224 for PKCS1 signatures. #104
- Transitioned from
requirements.txtto Pipenv for package management.
Version 3.4.2 - released 2016-03-29
- Fixed dates in CHANGELOG.txt
Version 3.4.1 - released 2016-03-26
- Included tests/private.pem in MANIFEST.in
- Included README.md and CHANGELOG.txt in MANIFEST.in
Version 3.4 - released 2016-03-17
- Moved development to GitHub: https://github.com/sybrenstuvel/python-rsa
- Solved side-channel vulnerability by implementing blinding, fixes #19
- Deprecated the VARBLOCK format and rsa.bigfile module due to security issues, see https://github.com/sybrenstuvel/python-rsa/issues/13
- Integration with Travis-CI [1], Coveralls [2] and Code Climate [3]
- Deprecated the old rsa._version133 and rsa._version200 submodules, they will be completely removed in version 4.0.
- Add an 'exponent' argument to key.newkeys()
- Switched from Solovay-Strassen to Miller-Rabin primality testing, to comply with NIST FIPS 186-4 [4] as probabilistic primality test (Appendix C, subsection C.3):
- Fixed bugs #12, #14, #27, #30, #49
[1] https://travis-ci.org/sybrenstuvel/python-rsa [2] https://coveralls.io/github/sybrenstuvel/python-rsa [3] https://codeclimate.com/github/sybrenstuvel/python-rsa [4] http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
Version 3.3 - released 2016-01-13
- Thanks to Filippo Valsorda: Fix BB'06 attack in verify() by switching from parsing to comparison. See [1] for more information.
- Simplified Tox configuration and dropped Python 3.2 support. The coverage package uses a u'' prefix, which was reintroduced in 3.3 for ease of porting.
[1] https://blog.filippo.io/bleichenbacher-06-signature-forgery-in-python-rsa/
Version 3.2.3 - released 2015-11-05
- Added character encoding markers for Python 2.x
Version 3.2.1 - released 2015-11-05
- Added per-file licenses
- Added support for wheel packages
- Made example code more consistent and up to date with Python 3.4
Version 3.2 - released 2015-07-29
- Mentioned support for Python 3 in setup.py
Version 3.1.4 - released 2014-02-22
- Fixed some bugs
Version 3.1.3 - released 2014-02-02
- Dropped support for Python 2.5
Version 3.1.2 - released 2013-09-15
- Added Python 3.3 to the test environment.
- Removed dependency on Distribute
- Added support for loading public keys from OpenSSL
Version 3.1.1 - released 2012-06-18
- Fixed doctests for Python 2.7
- Removed obsolete unittest so all tests run fine on Python 3.2
Version 3.1 - released 2012-06-17
- Big, big credits to Yesudeep Mangalapilly for all the changes listed below!
- Added ability to generate keys on multiple cores simultaneously.
- Massive speedup
- Partial Python 3.2 compatibility (core functionality works, but saving or loading keys doesn't, for that the pyasn1 package needs to be ported to Python 3 first)
- Lots of bug fixes
Version 3.0.1 - released 2011-08-07
- Removed unused import of abc module
Version 3.0 - released 2011-08-05
- Changed the meaning of the keysize to mean the size of
nrather than the size of bothpandq. This is the common interpretation of RSA keysize. To get the old behaviour, double the keysize when generating a new key. - Added a lot of doctests
- Added random-padded encryption and decryption using PKCS#1 version 1.5
- Added hash-based signatures and verification using PKCS#1v1.5
- Modeling private and public key as real objects rather than dicts.
- Support for saving and loading keys as PEM and DER files.
- Ability to extract a public key from a private key (PEM+DER)
Version 2.0
- Security improvements by Barry Mead.