1# Python-RSA changelog 2 3## Version 4.7 - released 2021-01-10 4 5- Fix [#165](https://github.com/sybrenstuvel/python-rsa/issues/165]: 6 CVE-2020-25658 - Bleichenbacher-style timing oracle in PKCS#1 v1.5 decryption 7 code 8- Add padding length check as described by PKCS#1 v1.5 (Fixes 9 [#164](https://github.com/sybrenstuvel/python-rsa/issues/164)) 10- Reuse of blinding factors to speed up blinding operations. 11 Fixes [#162](https://github.com/sybrenstuvel/python-rsa/issues/162). 12- Declare & test support for Python 3.9 13 14 15## Version 4.4 & 4.6 - released 2020-06-12 16 17Version 4.4 and 4.6 are almost a re-tagged release of version 4.2. It requires 18Python 3.5+. To avoid older Python installations from trying to upgrade to RSA 194.4, this is now made explicit in the `python_requires` argument in `setup.py`. 20There was a mistake releasing 4.4 as "3.5+ only", which made it necessary to 21retag 4.4 as 4.6 as well. 22 23No functional changes compared to version 4.2. 24 25 26## Version 4.3 & 4.5 - released 2020-06-12 27 28Version 4.3 and 4.5 are almost a re-tagged release of version 4.0. It is the 29last to support Python 2.7. This is now made explicit in the `python_requires` 30argument in `setup.py`. Python 3.4 is not supported by this release. There was a 31mistake releasing 4.4 as "3.5+ only", which made it necessary to retag 4.3 as 324.5 as well. 33 34Two security fixes have also been backported, so 4.3 = 4.0 + these two fixes. 35 36- Choose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out. 37- Reject cyphertexts (when decrypting) and signatures (when verifying) that have 38 been modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks 39 Carnil for pointing this out. 40 41 42## Version 4.2 - released 2020-06-10 43 44- Rolled back the switch to Poetry, and reverted back to using Pipenv + setup.py 45 for dependency management. There apparently is an issue no-binary installs of 46 packages build with Poetry. This fixes 47 [#148](https://github.com/sybrenstuvel/python-rsa/issues/148) 48- Limited SHA3 support to those Python versions (3.6+) that support it natively. 49 The third-party library that adds support for this to Python 3.5 is a binary 50 package, and thus breaks the pure-Python nature of Python-RSA. 51 This should fix [#147](https://github.com/sybrenstuvel/python-rsa/issues/147). 52 53 54## Version 4.1 - released 2020-06-10 55 56- Added support for Python 3.8. 57- Dropped support for Python 2 and 3.4. 58- Added type annotations to the source code. This will make Python-RSA easier to use in 59 your IDE, and allows better type checking. 60- Added static type checking via [MyPy](http://mypy-lang.org/). 61- Fix [#129](https://github.com/sybrenstuvel/python-rsa/issues/129) Installing from source 62 gives UnicodeDecodeError. 63- Switched to using [Poetry](https://poetry.eustace.io/) for package 64 management. 65- Added support for SHA3 hashing: SHA3-256, SHA3-384, SHA3-512. This 66 is natively supported by Python 3.6+ and supported via a third-party 67 library on Python 3.5. 68- Choose blinding factor relatively prime to N. Thanks Christian Heimes for pointing this out. 69- Reject cyphertexts (when decrypting) and signatures (when verifying) that have 70 been modified by prepending zero bytes. This resolves CVE-2020-13757. Thanks 71 Adelapie for pointing this out. 72 73 74## Version 4.0 - released 2018-09-16 75 76- Removed deprecated modules: 77 - rsa.varblock 78 - rsa.bigfile 79 - rsa._version133 80 - rsa._version200 81- Removed CLI commands that use the VARBLOCK/bigfile format. 82- Ensured that PublicKey.save_pkcs1() and PrivateKey.save_pkcs1() always return bytes. 83- Dropped support for Python 2.6 and 3.3. 84- Dropped support for Psyco. 85- Miller-Rabin iterations determined by bitsize of key. 86 [#58](https://github.com/sybrenstuvel/python-rsa/pull/58) 87- Added function `rsa.find_signature_hash()` to return the name of the hashing 88 algorithm used to sign a message. `rsa.verify()` now also returns that name, 89 instead of always returning `True`. 90 [#78](https://github.com/sybrenstuvel/python-rsa/issues/13) 91- Add support for SHA-224 for PKCS1 signatures. 92 [#104](https://github.com/sybrenstuvel/python-rsa/pull/104) 93- Transitioned from `requirements.txt` to Pipenv for package management. 94 95 96## Version 3.4.2 - released 2016-03-29 97 98- Fixed dates in CHANGELOG.txt 99 100 101## Version 3.4.1 - released 2016-03-26 102 103- Included tests/private.pem in MANIFEST.in 104- Included README.md and CHANGELOG.txt in MANIFEST.in 105 106 107## Version 3.4 - released 2016-03-17 108 109- Moved development to GitHub: https://github.com/sybrenstuvel/python-rsa 110- Solved side-channel vulnerability by implementing blinding, fixes #19 111- Deprecated the VARBLOCK format and rsa.bigfile module due to security issues, see 112 https://github.com/sybrenstuvel/python-rsa/issues/13 113- Integration with Travis-CI [1], Coveralls [2] and Code Climate [3] 114- Deprecated the old rsa._version133 and rsa._version200 submodules, they will be 115 completely removed in version 4.0. 116- Add an 'exponent' argument to key.newkeys() 117- Switched from Solovay-Strassen to Miller-Rabin primality testing, to 118 comply with NIST FIPS 186-4 [4] as probabilistic primality test 119 (Appendix C, subsection C.3): 120- Fixed bugs #12, #14, #27, #30, #49 121 122[1] https://travis-ci.org/sybrenstuvel/python-rsa 123[2] https://coveralls.io/github/sybrenstuvel/python-rsa 124[3] https://codeclimate.com/github/sybrenstuvel/python-rsa 125[4] http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf 126 127 128## Version 3.3 - released 2016-01-13 129 130- Thanks to Filippo Valsorda: Fix BB'06 attack in verify() by 131 switching from parsing to comparison. See [1] for more information. 132- Simplified Tox configuration and dropped Python 3.2 support. The 133 coverage package uses a u'' prefix, which was reintroduced in 3.3 134 for ease of porting. 135 136[1] https://blog.filippo.io/bleichenbacher-06-signature-forgery-in-python-rsa/ 137 138 139## Version 3.2.3 - released 2015-11-05 140 141- Added character encoding markers for Python 2.x 142 143 144## Version 3.2.1 - released 2015-11-05 145 146- Added per-file licenses 147- Added support for wheel packages 148- Made example code more consistent and up to date with Python 3.4 149 150 151## Version 3.2 - released 2015-07-29 152 153- Mentioned support for Python 3 in setup.py 154 155 156## Version 3.1.4 - released 2014-02-22 157 158- Fixed some bugs 159 160 161## Version 3.1.3 - released 2014-02-02 162 163- Dropped support for Python 2.5 164 165 166## Version 3.1.2 - released 2013-09-15 167 168- Added Python 3.3 to the test environment. 169- Removed dependency on Distribute 170- Added support for loading public keys from OpenSSL 171 172 173## Version 3.1.1 - released 2012-06-18 174 175- Fixed doctests for Python 2.7 176- Removed obsolete unittest so all tests run fine on Python 3.2 177 178## Version 3.1 - released 2012-06-17 179 180- Big, big credits to Yesudeep Mangalapilly for all the changes listed 181 below! 182- Added ability to generate keys on multiple cores simultaneously. 183- Massive speedup 184- Partial Python 3.2 compatibility (core functionality works, but 185 saving or loading keys doesn't, for that the pyasn1 package needs to 186 be ported to Python 3 first) 187- Lots of bug fixes 188 189 190 191## Version 3.0.1 - released 2011-08-07 192 193- Removed unused import of abc module 194 195 196## Version 3.0 - released 2011-08-05 197 198- Changed the meaning of the keysize to mean the size of ``n`` rather than 199 the size of both ``p`` and ``q``. This is the common interpretation of 200 RSA keysize. To get the old behaviour, double the keysize when generating a 201 new key. 202- Added a lot of doctests 203- Added random-padded encryption and decryption using PKCS#1 version 1.5 204- Added hash-based signatures and verification using PKCS#1v1.5 205- Modeling private and public key as real objects rather than dicts. 206- Support for saving and loading keys as PEM and DER files. 207- Ability to extract a public key from a private key (PEM+DER) 208 209 210## Version 2.0 211 212- Security improvements by Barry Mead. 213