1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346
|
:tocdepth: 2
*********
Changelog
*********
v0.6.0
======
Released: Nov 23, 2022
.. note::
New Features
------------
* added the ability to ignore usage flags
Bugs Fixed
----------
* accept passphrases formatted as ``bytes``
* default to 3DES when no preferred algorithms are supported
* generate TZ-aware datetime objects
* works with Cryptography 38
Other Changes
-------------
* dropped support for Python 2 and Python 3 <= 3.5
* renamed ``PGPOpenSSLCipherNotSupported`` to ``PGPOpenSSLCipherNotSupportedError``
* renamed ``PGPOpenSSLCipherNotSupported`` to ``PGPOpenSSLCipherNotSupportedError``
* renamed ``PGPInsecureCipher`` to ``PGPInsecureCipherError``
* fixed a bunch of typos
* improve code style, increase consistency
v0.5.4
======
Released: April 16, 2021
.. note::
PGPy v0.5.x is still compatible with Python 2.7 and 3.4. Support for those versions will be dropped in PGPy v0.6.0.
Bugs Fixed
----------
* Fixed compatibility break with Python < 3.8 (#368)
* Fixed importing ABCs from ``collections`` (#328)
Other Changes
-------------
* Documentation updates
v0.5.3
======
Released: October 6, 2020
.. warning::
This is the last release that will support Python 2.7 and 3.4. Future releases will require Python 3.5 or greater.
Bugs fixed
----------
* Passphrases are now encoded as utf-8 instead of latin-1 (#294)
* PGPUIDs without a selfsig no longer cause crashes (#315)
* Fixed dash un-escaping to be applied unconditionally (#341, #342)
* Fix the ordering of one-pass signatures (#302)
Other Changes
-------------
* Updated unit tests to use `gpg 1.10 <https://pypi.org/project/gpg/1.10.0/>`_
* Lots of documentation updates and cleanup
v0.5.2
======
Released: August 1, 2019
Bugs Fixed
----------
* Signature subpackets of type 0 cause an infinite parse loop (#252)
v0.5.0
======
Released: August 1, 2019
New Features
------------
* Add support for Curve25519
* Greatly improved Elliptic Curve Point format handling code (special thanks @rot42)
* Add support for IssuerFingerprint subpackets (thanks @J08nY)
* Add support for Key Revocation signatures
Bugs Fixed
----------
* PGPy now correctly resynchronizes the block cipher stream when decrypting EncryptedDataPackets (the ones without MDC). (#160)
* PGPy now correctly defaults to SHA256 for keys that have no hash preferences set
Other Changes
-------------
* updated library dependencies and unit tests
v0.4.3
======
Released: August 16, 2017
Bugs Fixed
----------
* Private key checksum calculations were not getting stored for ECDSA keys; this has been fixed.
* The test suite gpg wrappers have been replaced with use of the `gpg <https://pypi.python.org/pypi/gpg/1.8.0>`_ package. (#171)
v0.4.2
======
Released: August 9, 2017
New Features
------------
* Packets with partial body lengths can now be parsed. For now, these packets are converted to have definite lengths instead. (#95) (#208)
Bugs Fixed
----------
* Private key checksums are now calculated correctly (#172)
* PGPKey.decrypt was mistakenly using message.issuers instead of message.encrypters when determining whether or not the key was eligible
to attempt decrypting the message (#183)
* Fixed an issue with parsing some cleartext messages (#184)
* Fixed signing already-encrypted messages (encrypt-then-sign) (#186) (#191)
* PGP*.from_blob now correctly raises an exception if given zero-length input (#199) (#200)
* Fixed an issue where PGPKey.decrypt would fail with an arcane traceback if the key is passphrase-protected and not unlocked. (#204)
v0.4.1
======
Released: April 13, 2017
Bugs Fixed
----------
* Fixed an issue with dearmoring ASCII-armored PGP blocks with windows-style newlines (#156)
* Improved the robustness of the code that tunes the hash count for deriving symmetric encryption keys (#157)
* Fixed an issue with how public keys are created from private keys that was causing exports to become malformed (#168)
* Added explicit support for Python 3.6 (#166)
New Features
------------
* Added support for Brainpool Standard curves for users who have OpenSSL 1.0.2 available
v0.4.0
======
Released: April 21, 2016
Bugs Fixed
----------
* Armorable.from_blob was incorrectly not accepting bytes objects; this has been fixed (#140)
* Fixed an issue where string-formatting PGPUID objects would sometimes raise an exception (#142)
* Occasionally, the ASN.1 encoding of DSA signatures was being built in a way that although GPG could parse and verify them,
it was incorrect, and PGPy incorrectly failed to verify them. (#143)
* Fixed an issue where keys with expiration dates set would have the wrong value returned from the ``key.is_expired`` property (#151)
* Fixed an issue where PGPy would try to incorrectly coerce non-ASCII-compatible characters to ASCII-compatible bytes, potentially resulting in mojibake. (#154)
New Features
------------
* ECDSA and ECDH keys can now be loaded (#109, #110)
* Keys can be generated with the following algorithms:
- RSA
- DSA
- ECDSA
- ECDH
* Keys can now be passphrase-protected. It is also possible to change the passphrase on a key that is already protected. (#149)
* ECDSA keys can now be used to sign and verify (#111)
* ECDH keys can now be used to encrypt and decrypt
* It is now possible to recover a public key from a private key (#92)
* Marker packets are now understood
Other Changes
-------------
* Removed support for Python 3.2, as multiple dependency libraries have already done so
* Added explicit support for Python 3.5
* Updated library dependencies where required or useful
* Reworked some IO-intensive routines to be less IO-intensive, and therefore faster
v0.3.0
======
Released: November 19, 2014
PGPy v0.3.0 is a major feature release.
.. warning::
The API changed significantly in this version. It is likely that anything using a previous version will need to be
updated to work correctly with PGPy 0.3.0 or later.
Bugs Fixed
----------
* When keys are exported, any certification signatures that are marked as being non-exportable are now skipped (#101)
* When the wrong key is used to validate a signature, the error message in the raised exception
now makes that clear (#106)
New Features
------------
* Standalone signatures can now be generated
* Can now specify which User ID to use when signing things (#121)
* Can now create new User IDs and User Attributes (#118)
* Can now add new User IDs and User Attributes to keys (#119)
* Timestamp signatures can now be generated
* Can now sign keys, user ids, and user attributes (#104)
* Can now create new PGPMessages (#114)
* Key flags are now respected by PGPKey objects (#99)
* Multiple signatures can now be validated at once in cases where that makes sense, such as when validating
self-signatures on keys/user ids (#120)
* Message signatures can now be verified (#117)
* Messages can now be encrypted/decrypted using a passphrase (#113)
* Cleartext messages can now be created and signed (#26)
* Cleartext messages with inline signatures can now be verified (#27)
* Messages can now be loaded (#102)
* Messages can now be compressed (#100)
Other Changes
-------------
* CRC24 computation is now much faster than previous versions (#68)
* PGPKey and PGPKeyring APIs have changed significantly (#76)
* String2Key computation is now much faster than previous versions (#94)
* key material parts are now stored as integers (or ``long`` on Python 2.x) (#94)
v0.2.3
======
Released: July 31, 2014
PGPy v0.2.3 is a bugfix release
Bugs Fixed
----------
* Fixed an issue where explicitly selecting a key and then trying to validate with it would erroneously raise an exception as though the wrong key were selected.
v0.2.2
======
Released: July 31, 2014
PGPy v0.2.2 is primarily a bugfix release.
Bugs Fixed
----------
* Fixed a typo that would cause TypeError to be raised as bytecode was being generated (#85)
* Fixed an issue where unicode input on Python 2.7 could result in unexpected UnicodeDecodeError exceptions being raised
New Features
------------
* Switched the main parse loop to use a bytearray instead of slicing a bytes, resulting in a ~160x speedup in parsing large blocks of passing. (#87)
v0.2.1
======
Released: July 31, 2014
PGPy v0.2.1 is primarily a bugfix release.
Bugs Fixed
----------
* Critical bit on signature subpackets was being ignored, and when set, causing a ValueError to be raised when trying to parse it.
The critical bit is now being parsed and masked out correctly. (#81)
* No longer raises exceptions on unrecognized subpackets; instead, it now treats them as opaque.
* No longer raises exceptions on unrecognized packets; instead, it now treats them as opaque.
This also applies to signature and key packets with versions other than v4.
* Fixed an issue where a User ID packet that lacked both a comment and an email address was failing to be found by the uid regex in KeyCollection.
* Fixed an issue where an old-format packet header with a length_type set longer than needed was resulting in the packet getting truncated.
* Fixed an issue where parsing a subpacket with a 2-byte length was erroneously being parsed as a 5-byte length.
* Fixed an issue where parsing a subpacket with a 5-byte length where the value was < 8434 was causing an error
* Fixed an issue where a packet or subpacket reporting a value marked reserved in RFC 4880 would cause ValueError to be raised during parsing.
* Key material marked as public key algorithm 20 (Reserved - Formerly ElGamal Encrypt or Sign) is now parsed as ElGamal key material.
* Fixed an issue where parsing a new-format packet header length where the first octet was 223 was erroneously reported as being malformed.
New Features
------------
* Added support for parsing the 'Preferred Key Server' signature subpacket
* Added support for loading unsupported or unrecognized signature subpackets.
* Added support for loading unsupported or unrecognized packets.
v0.2.0
======
Released: July 20, 2014
Starting with v0.2.0, PGPy is now using the BSD 3-Clause license. v0.1.0 used the MIT license.
New Features
------------
* Subkeys can now be accessed and used for actions supported by PGPKeyring (#67)
* DSA:
- Signing of binary documents now works (#16)
- Verification of signatures of binary documents now works (#15)
* Can now decrypt secret key material that was encrypted using:
- Camellia128 (#36)
- Camellia192 (#37)
- Camellia256 (#38)
- AES128 (#32)
- AES192 (#33)
- AES256 (#34)
- Blowfish (#31)
- Triple-DES (#30)
- IDEA (#29)
* PGP packets generated by PGPy now exclusively use new-style header lengths (#47)
* GPG Trust Packets are now understood and fully parsed (#14)
* Lots more packet types are now fully parsed
Known Issues
------------
* Signing with 1024-bit DSA keys does not work with OpenSSL 0.9.8 (#48) - this primarily affects Mac OS X.
* Verifying signatures signed with any DSA key length other than 2048-bits does not work with OpenSSL 0.9.8 -
this primarily affects Mac OS X.
Bugs Fixed
----------
* PGP blocks loaded from ASCII armored blocks now retain their ASCII headers (#54)
* PGP new-style packet headers were not being properly parsed in all cases
* Many unit test enhancements
v0.1.0
======
Released: May 02, 2014
* Initial release.
|