1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2024-06-28 22:44:50 +02:00
Commit graph

660 commits

Author SHA1 Message Date
Paul Schaub d3ef513960
Fix checkstyle issues 2023-06-05 21:12:16 +02:00
Paul Schaub 41e663e25b
Allow setting custom version header when encrypting/signing message 2023-06-05 20:18:06 +02:00
Paul Schaub add1b89019
Add test for MultiMap.putAll() 2023-06-05 19:44:58 +02:00
Paul Schaub 324302c536
Add MultiMap.flatten() 2023-06-05 19:44:47 +02:00
Paul Schaub 41d734f2db
ProviderFactory: Provide default implementation of _getProviderName() 2023-06-05 19:30:14 +02:00
Paul Schaub e1038a8bb3
Replace more occurrences of new Date().getTime() with System.currentTimeMillis() 2023-06-02 00:03:55 +02:00
Paul Schaub d25e7419c9
Replace new Date().getTime() with System.getCurrentTimeMillis() 2023-06-02 00:01:34 +02:00
Paul Schaub 528591f906
Key generation: Set default expiration periof of 5 years
Can be changed by calling 'keyRingBuilder.setExpirationDate(null);'
2023-06-01 23:43:41 +02:00
Paul Schaub be5562d273
Fix typo in feature name 2023-05-30 14:51:32 +02:00
Paul Schaub 55058d6070
Rename GNUPG features 2023-05-22 14:37:02 +02:00
Paul Schaub 92a5e559f8
Earlier catching of NPEs in tests 2023-05-03 17:26:21 +02:00
Paul Schaub 495ff6aa5d
Fix javadoc reference 2023-05-03 17:25:19 +02:00
Paul Schaub 005b9d477a
KeyRingReader: Remove unused @throws IOException 2023-05-03 17:23:13 +02:00
Paul Schaub 5c76f9046f
Turn empty catch block into test failure 2023-05-03 17:16:10 +02:00
Paul Schaub 7a194c517a
Remove KeyRingUtils.removeSecretKey() in favor of stripSecretKey() 2023-05-03 17:15:30 +02:00
Paul Schaub 953206b4ed
Make more of the API null-safe by using @Nonnull/@Nullable 2023-05-03 16:03:50 +02:00
Paul Schaub 1d26751b45
Remove unused KeyRingEditorTest 2023-05-03 15:59:21 +02:00
Paul Schaub 64c6d7a904
Annotate EncryptionOptions methods with @Nonnull 2023-05-03 14:38:52 +02:00
Paul Schaub 52fa7e4d46
OpenPgpMessageInputStream: Return -1 instead of throwing MalformedOpenPgpMessageException when calling read() on drained stream 2023-05-01 09:35:28 +02:00
Paul Schaub 0cb0885251
Relax constraints on decryption keys to improve interop with faulty, broken legacy clients that have been very naughty and need punishment 2023-04-25 13:28:07 +02:00
Paul Schaub 44608744c2
Add missing license header 2023-04-14 16:17:58 +02:00
Paul Schaub 46f7cfdb1a
Introduce OpenPgpv6Fingerprint 2023-04-07 12:28:27 +02:00
Paul Schaub d03f84f415
Add reuse header to VerifyVersion3SignaturePacketTest 2023-02-08 14:49:10 +01:00
Bastien JANSEN 30771f470a Support version 3 signature packets 2023-02-08 14:42:22 +01:00
Paul Schaub 8cb773841b
Revert certificate-store integration
Integration of certificate-store and pgpainless-cert-d makes packaging
complicated. Alternatively, users can simply integrate the certificate-store
with PGPainless themselves.
2023-01-13 19:18:02 +01:00
Paul Schaub 00b593823a
Modify SED test to test successful decryption of SED packet 2023-01-02 13:18:18 +01:00
Paul Schaub 533b54a6b7
Add some more tests for valid email address formats 2022-12-22 15:01:10 +01:00
Paul Schaub a376587680
Add tests for international user-ids 2022-12-22 14:43:09 +01:00
Paul Schaub 59217d2501 Implement UserId.parse(mailbox) 2022-12-20 17:20:32 +01:00
Paul Schaub bfbaa30e4c Make KO-countermeasures configurable (off by default) 2022-12-15 18:05:46 +01:00
Paul Schaub 907d1c4d1c move V5OpenPgpKeyTest to org.pgpainless.key 2022-12-15 18:03:49 +01:00
Paul Schaub bfcfaa04c4 Add UserId.compare(uid1, uid2, comparator) along with some default comparators 2022-12-15 18:03:37 +01:00
Paul Schaub b07e0c2be5 Programmatically confirm that we do not yet support OpenPGP V5 keys :/ 2022-12-15 18:03:25 +01:00
Paul Schaub e69c4a8cf7 More UserId tests 2022-12-15 18:03:15 +01:00
Paul Schaub 837fbd3635 Simplify UserIdTests 2022-12-15 18:03:04 +01:00
Paul Schaub b0c283e143 Clean up UserId.toString() behavior 2022-12-15 18:02:44 +01:00
Paul Schaub 6913aa3d6d
Add more tests for RevocationState 2022-11-25 15:41:56 +01:00
Paul Schaub ae6a427d90
Add test for UniversalSignatureBuilder 2022-11-25 15:34:54 +01:00
Paul Schaub 4426895814
Add tests for CollectionUtils 2022-11-25 14:55:46 +01:00
Paul Schaub 5bdd4f6ad0
Test rejection of messages with unacceptable skesk kek algorithm 2022-11-24 22:09:22 +01:00
Paul Schaub c72b3a4b8e Improve CachingBcPublicKeyDataDecryptorFactoryTest 2022-11-23 20:42:54 +01:00
Paul Schaub b36b5413e2 Fix isEncryptedFor() 2022-11-23 20:42:54 +01:00
Paul Schaub 27fd15a012 Update examples with new MessageMetadata class 2022-11-23 20:42:54 +01:00
Paul Schaub c031ea9285 Remove empty newlines 2022-11-23 20:42:54 +01:00
Paul Schaub 8f6227c14b Rework some tests to use MessageMetadata 2022-11-23 20:42:54 +01:00
Paul Schaub 616e14d043 Enable tests for unsupported s2k identifiers 2022-11-23 20:42:54 +01:00
Paul Schaub 4e4c095d8d Rename tests to end in Test 2022-11-23 20:42:17 +01:00
Paul Schaub b95568f30a Rename IgnoreMarkerPacketsTest 2022-11-23 20:42:17 +01:00
Paul Schaub 8faec25ecf Enable previously disabled test for marker+seipd packet processing 2022-11-23 20:42:17 +01:00
Paul Schaub 03d04fb324 Tests: Replace usages of default algorithm policies with specific policies 2022-11-23 20:42:17 +01:00
Paul Schaub 4594b494a9 Implement signature verification with certificate stores as cert source 2022-11-23 20:42:17 +01:00
Paul Schaub 22abb62443 Add test for encryption to cert from certificate store 2022-11-23 20:42:17 +01:00
Paul Schaub 963b678a9e Enable test for decryption of messages without ESKs 2022-11-23 20:42:17 +01:00
Paul Schaub 58195c19b1 Properly handle failed decryption caused by removed private keys 2022-11-23 20:40:40 +01:00
Paul Schaub 58aa9f5712 Move classes related to GNU dummy keys to gnupg package 2022-11-23 20:40:40 +01:00
Paul Schaub df4fc94ce7 Add test for decryption with removed private key 2022-11-23 20:40:40 +01:00
Paul Schaub 3af6ab1b85 Rename GnuPGDummyExtension + GnuPGDummyKeyUtil 2022-11-23 20:40:40 +01:00
Paul Schaub 033beaa8f2 Use S2K usage SHA1 in GnuDummyKeyUtil 2022-11-23 20:40:40 +01:00
Paul Schaub 2487e3300a Add and test GnuDummyKeyUtil 2022-11-23 20:40:40 +01:00
Paul Schaub 7467170bcc Move CachingBcPublicKeyDataDecryptorFactoryTest to correct package 2022-11-23 20:40:40 +01:00
Paul Schaub 8c0d096fc6 Fix CachingBcPublicKeyDataDecryptorFactory 2022-11-23 20:40:40 +01:00
Paul Schaub ec793c66ff More cleanup and better error reporting 2022-11-23 20:40:40 +01:00
Paul Schaub 8ca0cfd3ae Rename *Alphabet to *Symbol and add javadoc 2022-11-23 20:40:40 +01:00
Paul Schaub 7e8841abf3 Handle unknown packet versions gracefully 2022-11-23 20:40:40 +01:00
Paul Schaub 192aa98326 Add missing REUSE license headers 2022-11-23 20:40:40 +01:00
Paul Schaub 3f8653cf2e Fix CRCing test and fully depend on new stream for decryption 2022-11-23 20:40:40 +01:00
Paul Schaub 54cb9dad71 Further increase coverage of PDA class 2022-11-23 20:40:40 +01:00
Paul Schaub 3977d1f407 Add more direct PDA tests 2022-11-23 20:40:40 +01:00
Paul Schaub 977f8c4101 Rename automaton package to syntax_check 2022-11-23 20:40:40 +01:00
Paul Schaub b7acb2a59c Enable logging in tests 2022-11-23 20:40:40 +01:00
Paul Schaub a39c6bc881 Identify custom decryptor factories by subkey id 2022-11-23 20:40:40 +01:00
Paul Schaub 228918f96b Change HardwareSecurity DecryptionCallback to emit key-id 2022-11-23 20:40:40 +01:00
Paul Schaub 529c64cf43 Implement exploratory support for custom decryption factories
This may enable decryption of messages with hardware-backed keys
2022-11-23 20:40:40 +01:00
Paul Schaub d39d062a0d WIP: Explore Hardware Decryption 2022-11-23 20:40:40 +01:00
Paul Schaub dfbb01d61c Enfore max recursion depth and fix CRC test 2022-11-23 20:40:40 +01:00
Paul Schaub 6fd705b1dc Fix checkstyle issues 2022-11-23 20:40:40 +01:00
Paul Schaub fbcde13df3 Reinstate integrity-protection and fix tests
Integrity Protection is now checked when reading from the stream,
not only when closing.
2022-11-23 20:40:40 +01:00
Paul Schaub 654493dfcc Properly expose signatures 2022-11-23 20:40:40 +01:00
Paul Schaub a9f77ea100 Cleaning up and collect signature verifications 2022-11-23 20:40:40 +01:00
Paul Schaub 43c369f1f9 It was the buffering. 2022-11-23 20:40:40 +01:00
Paul Schaub bdc968dd43 Create TeeBCPGInputStream to move teeing logic out of OpenPgpMessageInputStream 2022-11-23 20:40:40 +01:00
Paul Schaub e420678076 2/3 the way to working sig verification 2022-11-23 20:40:40 +01:00
Paul Schaub 5e37d8038a WIP: So close to working notarizations 2022-11-23 20:40:39 +01:00
Paul Schaub 2ce4486e89 Convert links in javadoc to html 2022-11-23 20:40:03 +01:00
Paul Schaub babd1542e3 DO NOT MERGE: Disable broken test 2022-11-23 20:40:03 +01:00
Paul Schaub 09f94944b3 Remove unnecessary throws declarations 2022-11-23 20:40:03 +01:00
Paul Schaub 81bb8cba54 Use BCs Arrays.constantTimeAreEqual(char[], char[]) 2022-11-23 20:40:03 +01:00
Paul Schaub ec28ba2924 SIGNATURE VERIFICATION IN OPENPGP SUCKS BIG TIME 2022-11-23 20:40:03 +01:00
Paul Schaub e25f6e1712 Fix checkstyle issues 2022-11-23 20:40:03 +01:00
Paul Schaub 5c93eb3705 Wip: Introduce MessageMetadata class 2022-11-23 20:40:03 +01:00
Paul Schaub efdf2bca0d WIP: Play around with TeeInputStreams 2022-11-23 20:40:03 +01:00
Paul Schaub 54d7d0c7ae Implement experimental signature verification (correctness only) 2022-11-23 20:40:03 +01:00
Paul Schaub d81c0d4400 Fix tests 2022-11-23 20:40:02 +01:00
Paul Schaub e86062c427 WIP: Replace nesting with independent instancing 2022-11-23 20:40:02 +01:00
Paul Schaub bf8949d7f4 WIP: Implement custom PGPDecryptionStream 2022-11-23 20:40:02 +01:00
Paul Schaub bc73d26118 Add Pushdown Automaton for checking OpenPGP message syntax
The automaton implements what is described in
https://github.com/pgpainless/pgpainless/blob/main/misc/OpenPGPMessageFormat.md

However, some differences exist to adopt it to BouncyCastle

Part of #237
2022-11-23 20:40:02 +01:00
Paul Schaub 754fcf72a1
Implement ProducerOptions.setHideArmorHeaders()
Fixes #328
2022-10-31 11:43:24 +01:00
Paul Schaub 8834d8ad10
Increase timeframe for some tests which check expiration dates 2022-10-18 15:13:49 +02:00
Paul Schaub 6a2a604ba4
Update TODO for BC 173 2022-09-27 16:47:23 +02:00
Paul Schaub d74a8d0408
Add PGPainless.asciiArmor(PGPSignature) 2022-09-27 16:28:31 +02:00
Paul Schaub dac059c702
Add test for PGPainless.asciiArmor(key, stream) 2022-09-27 16:17:22 +02:00
Paul Schaub 8dfabf1842 Test decryption of messages using Session Key 2022-09-12 15:26:06 +02:00
Paul Schaub 7480c47fa7
Add behavior test to ensure that ArmoredInputStream cuts away any data outside of the armor 2022-09-08 18:15:52 +02:00
Paul Schaub 0dd54f27b7
Add test for processing message byte by byte 2022-09-05 15:43:32 +02:00
Paul Schaub 9106d98449
Add tests for Certificate merging 2022-09-05 15:25:29 +02:00
Paul Schaub 5be42b22bd
Add test for KeyRingUtils.keysPlusPublicKey 2022-09-05 14:45:22 +02:00
Paul Schaub 4ec38bb63b
Add tests for ArmoredInputStreamFactory 2022-09-05 14:37:23 +02:00
Paul Schaub 3a33bb126a
Add RNGPerformanceTest to help diagnose performance bottlenecks
Related to https://github.com/pgpainless/pgpainless/issues/309
2022-09-03 14:24:37 +02:00
Paul Schaub c3dc3c9d87 Allow modification of keys with custom reference date
Also, bind subkeys using SubkeyBindingSignatureBuilder
2022-09-03 13:42:58 +02:00
Paul Schaub 15046cdc32
Switch default S2K for secret key protection over to use SHA256 and add documentation 2022-08-31 21:37:31 +02:00
Paul Schaub c6676d3c91
Add support for generating keys without user-ids
Fixes #296
2022-08-29 14:12:02 +02:00
Paul Schaub 1b04d67e1a
Remove unused SignatureSubpacketGeneratorUtil class and tests 2022-08-29 11:30:26 +02:00
Paul Schaub 0cc884523c
Integrate RevocationState into KeyRingInfo class 2022-08-29 11:30:10 +02:00
Paul Schaub c73905d179
Import RevocationStateTest from wot branch 2022-08-29 11:12:42 +02:00
Paul Schaub b9845912ee
Add tests for readKeyRing() 2022-08-08 13:20:28 +02:00
Paul Schaub ca09ac62ca
KeyRingInfo.isUsableFor*(): Check if primary key is revoked 2022-08-03 13:37:18 +02:00
Paul Schaub 895fcced9a
Add gradle CI action 2022-07-22 20:21:02 +02:00
Paul Schaub cb23cad625
Fix checkstyle issues and java API compatibility 2022-07-22 13:59:15 +02:00
Jérôme Charaoui 5a86d9db62 Fix tests that read from jar-embedded resources
It seems that none of the functions used here actually require a File
object as arguments, and will happily work on InputStream objects.
This also changes readFromResource() to use InputStream.readAllBytes()
instead of File.readAllBytes(), which is available from Java 9.
2022-07-22 13:55:05 +02:00
Paul Schaub c4bffad478
Abort (skip) tests reading from resources 2022-07-21 21:34:44 +02:00
Paul Schaub f966c1ed07
Explicitly cast Long to long to fix ambiguity in debian tests 2022-07-20 18:07:42 +02:00
Paul Schaub cd5982cd47
Add AEADAlgorithm class and test 2022-07-18 11:30:37 +02:00
Paul Schaub 6fc1d25db8 Merge branch 'fix298' 2022-07-16 12:37:20 +02:00
Paul Schaub ba191a1d0f
Prevent adding NULL to symmetric algorithm preference when generating key
Fixes #301
2022-07-15 14:19:45 +02:00
Paul Schaub dec3c8be60
Add SecretKeyRingEditor.replaceUserId(old,new,protector) 2022-07-15 14:00:41 +02:00
Paul Schaub 2ad67a85fb
Add test to make sure we do not allow unencrypted as sym alg preference 2022-07-15 13:20:23 +02:00
Paul Schaub 4730ac427b
Add test for #298 2022-07-13 14:54:16 +02:00
Paul Schaub 223cf009fc
Fix User-ID format in documentation and note invalid user-id formats in tests 2022-07-12 10:33:43 +02:00
Paul Schaub 3842aa9ced
Add test to explore behavior when dealing with V3 keys 2022-07-08 15:08:45 +02:00
Paul Schaub 8b66b3527e
Add tests for pet name certification and scoped delegation 2022-06-30 13:16:15 +02:00
Paul Schaub b8f4cc3935 Merge branch 'certification' 2022-06-29 16:01:03 +02:00
Paul Schaub b2a5351cc3
Delete unused KeyRingValidator class 2022-06-29 16:00:21 +02:00
Paul Schaub b6975b38f1
Add tests for KeyFlag bitmask methods 2022-06-20 19:03:52 +02:00
Paul Schaub 0690a21360
Increase coverage of Policy class 2022-06-20 18:48:27 +02:00
Paul Schaub 37441a81e8
Add OpenPgpV5Fingerprint constructor tests using mocked v5 keys 2022-06-20 18:35:48 +02:00
Paul Schaub fed3080ae8
Add tests to increase coverage of v5 fingerprint class 2022-06-20 18:19:24 +02:00
Paul Schaub ca39efda99
Add test for CleartextSignedMessageUtil 2022-06-20 18:10:44 +02:00
Paul Schaub a944d2a6b9
Fix build errors 2022-06-20 15:09:02 +02:00
Paul Schaub 1483ff9e24 Add another test for Trustworthiness 2022-06-20 12:44:40 +02:00
Paul Schaub d2b48e83d9 Implement certifying of certifications 2022-06-20 12:44:40 +02:00
Paul Schaub fa5ddfd112 WIP: Implement delegations
THERE ARE THINGS BROKEN NOW. DO NOT MERGE!
2022-06-20 12:44:40 +02:00
Paul Schaub c1170773bc Implement certification of third party keys 2022-06-20 12:44:40 +02:00
Paul Schaub 75455f1a3c
Add OpenPgpMetadata.isCleartextSigned and use it in sop to determine if message was cleartext signed 2022-06-19 17:31:48 +02:00
Paul Schaub dd26b5230d Use newly introduced modernKeyRing(userId) method 2022-06-19 16:59:42 +02:00
Paul Schaub 44c32d0620
When setting expiration dates: Prevent integer overflow 2022-06-01 13:36:00 +02:00
Paul Schaub 9921fc6ff6
Add and test OpenPgpFingerprint.parseFromBinary(bytes) 2022-05-18 14:19:08 +02:00
Paul Schaub 3a9bfd57ac Add test for SignatureUtils.getSignaturesForUserIdBy() 2022-05-17 18:38:48 +02:00
Paul Schaub 12e62d381c
Make readSignatures skip over compressed data packets without decompression. 2022-05-08 11:24:34 +02:00
Paul Schaub 49d65788b4 Remove support for processing compressed detached signatures
Signatures are indistinguishable from randomness, so there is no point in
compressing them, apart from attempting to exploit flaws in compression
algorithms.
Thanks to @DemiMarie for pointing this out

Fixes #286
2022-05-07 21:46:12 +02:00
Paul Schaub 64a50266f1
Test for detection of uncompressed, signed messages, and improve decryption of seip messages 2022-05-05 12:43:44 +02:00