- Additional code needed to generate ECDH keys also added
- Encrypt/decrypt using ECDH also works
- Added some code to the test harness to start making it work with gpg 2.1
- Fixed key generation tests to test generating keys using all possible algorithms
- Updated documentation sources to reflect these changes
- Added ECDSA signing and verification - closes#111
- ECDSA key generation is also supported
- refactored some of the signing/verification machinery to simplify code in PGPKey._sign and PGPKey.verify
- fixed a bug with Signature subpacket ByteFlags where the byte output was not being properly null-padded to the length of the subpacket when necessary, which led to the potential for key outputs that would fail to parse properly if update_hlen was not called (which is silly)
- fixed string formatting UserID packets when the comment and/or email address are missing - closes#142
- implemented OpaquePubKey and OpaquePrivKey so that keys using unimplemented formats can still be loaded without error, even if they can't be used
- enabled initial key action testing using ecc.1.pub.asc and ecc.1.sec.asc (which also required copying the two signatures from ecc.1.pub.asc to ecc.1.sec.asc)
- improved test output for some tests with auto-ids that were formed in an unfortunate manner
Slightly reorganized the default imports in pgpy/__init__.py
First pass at updating the ascii_unarmor regex to support cleartext signatures - #102, #27, #28
Added pypy3 to the test matrix as an allowed failure
- fixed a typo in UserID packet regex that was causing it to capture well-formatted comments as part of the name
- changed _signature fields for PGPKey and PGPUID to deques
- moved is_ascii and is_path into FileLoader as staticmethods
- fixed comment0 header in pubtest.asc
- changed Fingerprint.__hash__ to return the hash of the fingerprint without any spaces
- partially added first unit test for PGPKeyring
- Filled out EmbeddedSignature finally
- Added EmbeddedSignatureHeader since Embeded Signatures don't have a tag or a length, just a version
- Fixed a logic error in SubPackets.__contains__
- Added tag class bases to *Key classes
- Added a PacketTag enum
- Shortened the names of the certification signature types in SignatureType
- Expanded PGPSignature.prefs into separate methods
- Added unit tests for PGPKey (for an rsa public key and an rsa private key)
- This also brings us one step away from completing #76 and #71
- Two property methods are not yet because I don't have test data for them yet
- Added __sig__ method to Signature(MPIs). DSASignature.__sig__ outputs in (hopefully) correct ASN.1 DER format
- Removed keyfields.py finally
- Changed expiration subpacket payloads to timedelta objects (as they should have been already)
- Changed SignatureV4.hleft to SignatureV4.hash2 for consistency
- Added unit test harness for basic loading of PGP blocks
- Added unit test harness for loading/testing signature blocks
- Added unit test stub for (eventual) loading/testing key blocks