1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2025-09-11 03:09:41 +02:00

Compare commits

..

259 commits

Author SHA1 Message Date
b485c9c1d6
Bump sop-java to 14.0.0-SNAPSHOT 2025-06-17 11:48:39 +02:00
77f237908d
Bump BC to 1.81 + BC/#2105 2025-06-17 10:19:58 +02:00
335f7c8ac5
EncryptImpl: Emit session-key 2025-06-16 13:34:37 +02:00
b3602bf2e4
Add test for PolicyAdapter properly adapting NotationRegistry implementations 2025-06-16 11:21:31 +02:00
afbd4e6105
Add tests for SignatureSubpacketsCallback implementations 2025-06-16 11:12:30 +02:00
2270c69af7
setPreferredAEADCiphersuites(): Add missing method taking PreferredAEADCiphersuites object 2025-06-16 11:12:08 +02:00
9a8ecb7fa0
Add missing implementations of then() method 2025-06-16 11:11:20 +02:00
ffebdda214
Remove unused SignatureSubpackets callback related methods 2025-06-16 11:10:35 +02:00
db0d753867
Implement update-key command properly 2025-06-12 13:35:24 +02:00
6fe4a6c9c6
Add test for CompressionAlgorithmNegotiator 2025-06-03 12:25:40 +02:00
f834ebe6f0
Move SymmetricKeyAlgorithmNegotiatorTest to negotiation package 2025-06-03 12:11:30 +02:00
ff59fb4591
Swappable algorithm negotiation delegates 2025-06-03 11:58:59 +02:00
8a161255ca
SOP encrypt --profile=rfc9580: Only override enc mechanism with seipd2 if exclusively symmetric encryption is used 2025-06-03 11:51:30 +02:00
f6806d05da
EncryptionMechanismNegotiator: Allow producing AEADED/OED packets 2025-06-03 11:49:59 +02:00
c20c25a448
ValidateUserIdImpl: throw CertUserIdNoMatch for unbound user-ids 2025-06-02 14:45:51 +02:00
5691d09e5f
SOP encrypt: Add profile for rfc9580 2025-05-30 14:45:34 +02:00
8988708126
Enable additional profiles 2025-05-30 14:29:55 +02:00
ea644e73e1
SOP generate-key: Implement additional profiles 2025-05-30 14:21:43 +02:00
cf5d04d1de
SOP generate-key: Add rfc9580 profile 2025-05-27 19:27:19 +02:00
4e2950b4bc
Move EncryptionMechanismNegotiator into own interface, improve negotiation 2025-05-25 16:27:49 +02:00
80b8441b92
Replace usage of KeyIdentifier.matches() with matchesExplicitly() 2025-05-21 11:57:13 +02:00
93a3d992bd
Remove SignerUserIdValidation enum 2025-05-20 15:32:34 +02:00
005322dc70
Add deprecation notices 2025-05-20 15:32:07 +02:00
13c78e1c8a
WIP: EncryptionMechanismPolicy 2025-05-20 15:05:24 +02:00
be852035bf
Improve GnuPGDummyKeyUtilTest 2025-05-19 14:22:52 +02:00
799f4cc377
Test v6 key revocation 2025-05-15 14:58:24 +02:00
9d34bac0cc
Test edge-cases in inline-detach operation 2025-05-15 14:50:47 +02:00
3948029ce0
Document KOpenPGP mitigations 2025-05-15 14:50:47 +02:00
74111be0c1
Simplify SessionKey conversion 2025-05-15 14:50:47 +02:00
828e31e12c
Document KOpenPGP mitigations 2025-05-15 14:31:40 +02:00
a31cc46c93
Fix more javadoc references 2025-05-15 14:21:06 +02:00
69164d3dc8
Fix references in javadoc 2025-05-15 14:05:36 +02:00
63d199d76b
Add OpenPGPCertificateUtil and unify the way, SOP encodes/armors certificates/keys 2025-05-14 13:27:06 +02:00
b42d96f31b
KeyRingReaderTest: Remove unused import 2025-05-14 13:26:30 +02:00
1d60d25360
TestAllImplementations: Fix javadoc 2025-05-14 13:26:01 +02:00
53e1674d2f
Fix test 2025-05-14 12:17:36 +02:00
ec4b963fdb
Generate-Key: Use new packet tags 2025-05-13 15:36:09 +02:00
34ac4ea520
Add missing license headers 2025-05-13 15:35:31 +02:00
b862cb4932
Add documentation 2025-05-13 13:53:55 +02:00
31b2edc651
Update documentation of AEADAlgorithm 2025-05-13 13:10:21 +02:00
bf5e3b6296
Port CertificateAuthority to KeyIdentifier, add tests for authenticated cert selection 2025-05-13 12:28:54 +02:00
4de9634a61
Add tests for LongExtension methods 2025-05-12 13:06:21 +02:00
668b3622de
Add test and documentation to DateExtensions 2025-05-12 12:45:32 +02:00
5d23481a39
Some updates to the README file 2025-05-12 12:32:26 +02:00
df95860f24
Add AEADAlkgorithm.toMechanism(SymAlg) shortcut method 2025-05-12 12:32:06 +02:00
49a507b8d1
Update README 2025-05-08 20:58:03 +02:00
0b7d373e1e
Port GnuPGDummyExtension implementation 2025-05-08 16:54:39 +02:00
03e731dd3f
Port Exception classes to Kotlin 2025-05-08 16:16:08 +02:00
017d9ce0f8
Remove usage of OpenPgpKeyAttributeUtil 2025-05-08 14:56:35 +02:00
62fe69db75
Port OpenPGPInputStream to Kotlin as OpenPGPAnimalSnifferInputStream 2025-05-08 14:38:48 +02:00
bef30223fa
Typo 2025-05-08 13:53:00 +02:00
c79a05ce45
Clean up OnePassSignatureCheck 2025-05-08 12:57:59 +02:00
bb5849c533
Remove unused SignatureComparator classes 2025-05-08 12:54:25 +02:00
0aebc2812d
Fix comment block layout 2025-05-08 12:50:36 +02:00
aeb2e638cd
Update documentation of SignatureVerification 2025-05-08 12:47:53 +02:00
d477203a77
Rework ASCII armor API 2025-05-07 14:06:34 +02:00
165ea8ae76
Add documentation to PGPainless class 2025-05-07 11:29:06 +02:00
2d7fc16607
Replace static decryptAndOrVerify() method with non-static processMessage() function 2025-05-06 22:21:02 +02:00
d835dea837
Prevent NULL encryption algorithm 2025-05-06 17:05:47 +02:00
4d48cd4c8e
Test encryptionMechanismOverride for symmetric and asymmetric encryption 2025-05-06 16:53:44 +02:00
a2d575e0e8
Respect encryptionMechanismOverride 2025-05-06 16:53:24 +02:00
57345edf94
Remove debugging prints 2025-05-06 16:53:05 +02:00
0351f62f09
Add documentation 2025-05-06 12:04:08 +02:00
7463ada774
Rework OpenPGPInputStream to rely on BCPGInputStream for packet parsing 2025-05-06 00:07:27 +02:00
0c4a305432
Workaround for OpenPGPInputStream to recognize PKESKv6 packets 2025-05-05 14:19:32 +02:00
7a8cc221b6
Fix checkstyle issues 2025-05-05 13:30:52 +02:00
6a3d405b36
Move negotiation tests to dedicated test class 2025-05-05 13:30:21 +02:00
74067f644c
First draft for SEIPD2 negotiation 2025-05-05 12:17:47 +02:00
de24da8698
Rework KeyAccessor 2025-05-05 10:58:24 +02:00
2aa6d85991
Expose encryption mechanism during decryption 2025-04-30 15:57:54 +02:00
30b5bf2cc6
Add BUILD.md 2025-04-30 15:57:22 +02:00
e444fdd6ca
gradle: migrate to new shadow plugin namespace 2025-04-28 11:41:11 +02:00
a80c4fb4bb
Re-add shadow plugin 2025-04-28 11:40:57 +02:00
4a6f201619
Update README 2025-04-28 10:40:49 +02:00
ac808e258c
Raise kotlin lib version 2025-04-14 11:11:47 +02:00
5b1f721eea
Remove duplicate line in build.gradle 2025-04-14 11:11:32 +02:00
8d925b09d0
Implement crude update-key command (only merges certs for now) 2025-04-10 15:28:06 +02:00
07f3d1f28a
SOP certify-userid: Properly throw KeyCannotCertify exception 2025-04-10 15:26:59 +02:00
fe29abd335
Add PGPainlessCertifyValidateUserIdTest 2025-04-10 13:52:13 +02:00
71479f0221
Certify-UserId: Throw proper exception on unbound user-id 2025-04-10 13:51:52 +02:00
85c58ac78f
Set relaxed PK policies for tests with weak DSA keys 2025-04-10 13:24:19 +02:00
33f438acfe
Fix checkstyle issues 2025-04-10 13:12:45 +02:00
a4f91d9a98
Add comments 2025-04-10 12:29:37 +02:00
7fc24f06d0
SOP: Implement merge-certs subcommand 2025-04-10 12:26:58 +02:00
ce36d52865
Update SOP version in VersionImpl 2025-04-08 17:22:27 +02:00
752c5e9375
Add PublicKeyAlgorithmPolicy based on rfc9580 2025-04-08 17:07:16 +02:00
b301e7571d
Implement SOPs validate-userid command 2025-04-08 16:10:38 +02:00
e61374ef12
Implement SOPs certify-userid command 2025-04-08 15:42:16 +02:00
c270ea76e6
SOP-Java: These go to 11 2025-04-08 13:24:46 +02:00
f1ed377f58
HardwareSecurity: Replace usage of Long KeyId with KeyIdentifier 2025-04-08 13:21:11 +02:00
68bf99ceb1
Remove unused test 2025-04-08 13:15:47 +02:00
38fa4e040e
Port ReadKeys example 2025-04-07 16:30:27 +02:00
5ee9339020
Port Encrypt example 2025-04-07 16:27:39 +02:00
1346810b59
Port DecryptOrVerify example 2025-04-07 16:25:10 +02:00
4adb65deb1
Port EncryptDecryptTest 2025-04-07 16:19:24 +02:00
21bf140228
Improve API for signatures in results 2025-04-07 16:03:01 +02:00
1f8809be81
Replace all remaining usages of PGPainless.generateKeyRing() 2025-04-07 14:09:21 +02:00
1738ce0f74
Add tests for v6<->v4 certificate certification 2025-04-07 13:34:23 +02:00
ead6b4ce38
Implement graal nativeimage compilation
Requires sop-java 10.1.1-SNAPSHOT for now, as that version includes picocli configurations files
2025-04-03 14:59:08 +02:00
bf5416846b
Port KeyWithUnknownSecretKeyEncryptionMethodTest 2025-04-03 12:49:24 +02:00
7d3431c58a
Port a bunch of more tests 2025-04-02 20:54:19 +02:00
b5f140dc6e
Add missing methods for SecretKeyRing protection 2025-04-02 20:50:25 +02:00
1ee960e58f
Add OpenPGPSecretKey.unlock(Passphrase) extension method 2025-04-02 20:50:03 +02:00
92ec1a3c66
Port BcHashContextSigner and test 2025-04-02 20:05:12 +02:00
7ae92ce973
Port TryDecryptWithUnavailableGnuDummyKeyTest 2025-04-02 15:59:04 +02:00
aba2d46686
Port more tests 2025-04-02 15:37:19 +02:00
8e7b64d2d9
Port some more tests 2025-04-02 15:27:58 +02:00
0d7914ce63
Port UnlockSecretKey method 2025-04-02 15:27:49 +02:00
bc681b87e8
Small javadoc fixes 2025-04-02 13:46:17 +02:00
1ecc931a3e
Add test for overriding features during key generation 2025-04-02 13:46:05 +02:00
ee3b8d4da3
KeySpecBuilder: Expose API for overriding default AEAD algorithms and features 2025-04-02 13:45:21 +02:00
573ebf6e06
Add missing javadoc to SigningOptions 2025-04-01 20:08:12 +02:00
f150f33403
Remove API instance parameter from ProducerOptions 2025-04-01 14:52:48 +02:00
e62e8b8f29
Port ConvertKeys example 2025-04-01 14:44:43 +02:00
5dfc6905c0
Port GenerateKeys examples 2025-04-01 14:43:42 +02:00
a02f6a5d98
Port PGPPublicKeyRingTest 2025-04-01 14:39:57 +02:00
984bd0ed20
Port ExtractCertCmdTest 2025-04-01 14:33:18 +02:00
58cf2db8b1
generate-key: Use API instance when generating keys 2025-04-01 14:33:08 +02:00
3d5c6692c4
Migrate GenerateKeyWithoutUserIdTest 2025-04-01 14:16:42 +02:00
5110acc912
Migrate some tests to new API 2025-04-01 14:13:21 +02:00
38545ecf52
IntegrityProtectedInputStream: remove useless logger 2025-03-31 11:46:50 +02:00
c0e6b4b6ba
Remove SignatureValidator methods 2025-03-31 11:36:38 +02:00
1dc57ef62a
Remove unused SignatureValidator methods 2025-03-31 09:58:19 +02:00
20282a0576
Replace SignatureVerifier usage with BC API 2025-03-31 09:52:49 +02:00
b88440028a
Remove usage of deprecated methods in SOP implementations 2025-03-28 16:02:36 +01:00
aaf7aa7ee9
Port MessageInspector 2025-03-28 16:02:10 +01:00
72a56c3a70
KeyRingUtils: Use KeyIdentifier instead of keyId 2025-03-28 16:01:36 +01:00
62bcd77ab1
KeyRingReader: Replace usage of deprecated PGPainless method with BC method 2025-03-28 16:01:04 +01:00
ad2850caa1
Improve readability of OpenPGPMessageInputStream 2025-03-28 16:00:22 +01:00
c2b047f6a7
Remove duplicate Padding parser branch 2025-03-28 15:59:31 +01:00
48d501ddc1
Replace KeyRingUtils usage with toCertificate() 2025-03-28 15:43:51 +01:00
d900330ca6
KeyRingInfo: Apply latest method name change from BC 2025-03-27 15:49:31 +01:00
69e87a6f3b
Rename new CertifyCertificate API methods and add revocation methods 2025-03-26 15:01:30 +01:00
e8fac3c9cc
Fix RevocationSignatureBuilder properly calculating 3rd-party delegation revocations 2025-03-26 15:00:59 +01:00
5cd60a8f73
Test v6 third party certification generation 2025-03-26 13:20:17 +01:00
808cd92d63
CertifyCertificate: Change visibility of internal members to private 2025-03-26 10:54:37 +01:00
8e8d89f85b
Remove Tuple class 2025-03-26 10:39:47 +01:00
2da476179c
Remove unused KeyRingSelectionStrategy implementations 2025-03-26 10:39:47 +01:00
94511a42fa
Rework some more tests 2025-03-26 10:39:47 +01:00
402c340ca0
Port SigningTest 2025-03-26 10:39:46 +01:00
530e7615c5
Introduce PGPainless.toKeyOrCertificate(PGPKeyRing) and constrain argument type of PGPainless.toCertificate(PGPPublicKeyRing) 2025-03-26 10:39:46 +01:00
6627e02de4
Remove SignerUserId check, Policy setting only via constructor parameter 2025-03-26 10:39:46 +01:00
f707d87c67
Port signature validation to BC 2025-03-26 10:39:46 +01:00
b248882f72
Rework ModifiedPublicKeysInvestigation 2025-03-26 10:39:46 +01:00
828a7cd0aa
Avoid usage of PGPainless.getPolicy() 2025-03-26 10:39:46 +01:00
b8df8e16fe
KeySpecBuilder: Do not use PGPainless.getPolicy() method 2025-03-26 10:39:45 +01:00
fda5537fcc
Policy is no longer a Singleton 2025-03-26 10:39:45 +01:00
c1661f53f0
Determine, whether to use AEAD by cosulting KeyRingProtectionSettings 2025-03-26 10:39:45 +01:00
deb79832ce
Port SelectUserId.validUserIds() 2025-03-26 10:39:45 +01:00
4042db262c
Change argument type for toCertificate() method to more general PGPKeyRing 2025-03-26 10:39:45 +01:00
2be5525ec2
Delete SignaturePicker class 2025-03-26 10:39:44 +01:00
acbf7142a8
Fix test name 2025-03-26 10:39:44 +01:00
e0cc63416d
Port more extension functions 2025-03-26 10:39:44 +01:00
2ea67d656f
Migrate some extension functions 2025-03-26 10:39:44 +01:00
ed775274d5
PGPSignatureExtensions: Port wasIssuedBy() to KeyIdentifier 2025-03-26 10:39:44 +01:00
786836fc07
Update some examples in the README file 2025-03-26 10:39:44 +01:00
4e10c8a030
SOP: Inject API instance 2025-03-26 10:39:43 +01:00
261838dd2a
Port SecretKeyRingEditor, replace Singleton usage with API instance calls 2025-03-26 10:39:43 +01:00
9041a6c601
Add more deprecation annotations, workaround for BC armor bug 2025-03-26 10:39:43 +01:00
b29cbd34bb
GnuPGDummyKeyUtil: Migrate to KeyIdentifier 2025-03-26 10:39:43 +01:00
49ff4c4afb
Remove ProviderFactory classes
It is no longer possible to inject custom SecurityProviders.
Instead, you can create and inject your own implementation of BCs OpenPGPImplementation
2025-03-26 10:39:43 +01:00
c5dc7efc12
Fix javadoc parameter names 2025-03-26 10:39:43 +01:00
1eb50c7454
UserId: Remove deprecated method usage 2025-03-26 10:39:42 +01:00
fc9da45d6e
KeyRingUtils: Replace deprecated method usage 2025-03-26 10:39:42 +01:00
c472f02e24
Replace deprecated method usage and make policy injectable in UnlockSecretKey utility class 2025-03-26 10:39:42 +01:00
4646f4319b
Remove deprecated KeyInfo class
If you relied on it, replace its usage with the Kotlin extension functions as documented.
If you are using Java, use static methods from PGPPublicKeyExtensionsKt and PGPSecretKeyExtensionsKt instead.
2025-03-26 10:39:42 +01:00
8b8bd798a3
Move default parameters of Options classes to factory methods 2025-03-26 10:39:42 +01:00
5bc8ae7c2d
ConsumerOptions: Pass down API 2025-03-26 10:39:41 +01:00
e5273fe3d9
More API down-handing 2025-03-26 10:39:41 +01:00
ba39a109d6
Cleanup PGPainless class 2025-03-26 10:39:41 +01:00
e2aa5e332f
Pass down API instance in more places 2025-03-26 10:39:41 +01:00
12ff104cf8
Pass down API instance 2025-03-26 10:39:41 +01:00
d24a4a0883
More code cleanup 2025-03-26 10:39:41 +01:00
eb5dbb0850
Add documentation 2025-03-26 10:39:40 +01:00
bb31437ebf
Code cleanup 2025-03-26 10:39:40 +01:00
bd9337820e
Allow passing creation time into KeyRingTemplates, replace deprecated methods 2025-03-26 10:39:40 +01:00
6916d5f7bb
Fix GenerateV6KeyTest.generateAEADProtectedModernKey() test 2025-03-26 10:39:40 +01:00
fe45ee12be
Rework Policy to be immutable. Changes are now done by calling policy.copy().withXYZ().build() 2025-03-26 10:39:40 +01:00
a1c19020c5
PublicKeyAlgorithms: Update documentation 2025-03-26 10:39:39 +01:00
98d7b7392c
PublicKeyAlgorithm: Ask PublicKeyUtils for algorithm capabilities, add persistent symmetric key algorithm ids 2025-03-26 10:39:39 +01:00
b86714d6a9
Add OpenPGPImplementation.checksumCalculator() extension function 2025-03-26 10:39:39 +01:00
610e8a1930
Replace usage of .let() 2025-03-26 10:39:39 +01:00
91cde1de56
Make secret key protection settings customizable via policy 2025-03-26 10:39:39 +01:00
5b8c598d73
Copy deprecation annotation 2025-03-26 10:39:39 +01:00
d37fe077bc
Rename parameter 2025-03-26 10:39:38 +01:00
f38b64b4ae
Use relaxed PBE parameters 2025-03-26 10:39:38 +01:00
bfbac4563e
WIP: Migrate SecretKeyRingEditor 2025-03-26 10:39:38 +01:00
56508d2527
Transform SignatureSubpackets class into simple wrapper around PGPSignatureSubpacketGenerator 2025-03-26 10:39:38 +01:00
c6c5134f2f
Avoid deprecated API and remove unnecessary code 2025-03-26 10:39:38 +01:00
2b87943916
Tests: Avoid usage of now deprecated functionality 2025-03-26 10:39:38 +01:00
46eebb2dbb
Remove ImplementationFactory in favor of BCs OpenPGPImplementation 2025-03-26 10:39:37 +01:00
a1caf19d54
SigningOptions: Properly init PGPSignatureGenerator to support v6 keys 2025-03-26 10:39:37 +01:00
5441774887
Policy: Change default compression algorithm to UNCOMPRESSED 2025-03-26 10:39:37 +01:00
535bb0811f
Implement applying algorithm preferences as extension functions 2025-03-26 10:39:37 +01:00
d8980ed163
buildKey(): Use BC KeyGenerator, but apply PGPainless algorithm preferences 2025-03-26 10:39:37 +01:00
fb2c6f09ae
Add missing method implementations 2025-03-26 10:39:36 +01:00
7afb7ab920
Work on AlgorithmSuite 2025-03-26 10:39:36 +01:00
02477a18e8
Fix: Do not set IssuerKeyId on v6 key-signatures 2025-03-26 10:39:36 +01:00
ae005357c1
Progress on the migration guide 2025-03-26 10:39:36 +01:00
9217c4f85b
Start working on migration guide 2025-03-26 10:39:36 +01:00
0b11634d27
Add some missing documentation to ConsumerOptions 2025-03-26 10:39:35 +01:00
e7da1bc66a
Rework OnePassSignatureCheck 2025-03-26 10:39:35 +01:00
7f8fc340d8
Add documentation to PolicyAdapter 2025-03-26 10:39:35 +01:00
920c3f3d28
Add getKeyVersion() extension methods to certificate + subclasses and use it in KeyRingInfo.version 2025-03-26 10:39:35 +01:00
bef10a4f68
Fix more spotless formatting errors 2025-03-26 10:39:35 +01:00
a374da74d7
Fix spotless error 2025-03-26 10:39:35 +01:00
00fcd80834
Add comments to OpenPGPKeyVersion 2025-03-26 10:39:34 +01:00
171a7fd7dd
Add comments to HashAlgorithm 2025-03-26 10:39:34 +01:00
4fb2b4ac4f
Add javadoc 2025-03-26 10:39:34 +01:00
25f7bf600c
Clean up KeyAccessor class 2025-03-26 10:39:34 +01:00
737efaa8a4
Complete migration of KeyRingInfo to KeyIdentifier, javadoc 2025-03-26 10:39:34 +01:00
5ed42d38b5
Replace KeyRingInfo.publicKey with primaryKey 2025-03-26 10:39:33 +01:00
3c1439be58
Improve KeyRingInfos getPreferences implementations 2025-03-26 10:39:33 +01:00
8ee68c2f47
Migrate from MissingPublicKeyCallback to OpenPGPCertifcateProvider 2025-03-26 10:39:33 +01:00
f309e7b74d
Fix addSubkey method 2025-03-26 10:39:33 +01:00
a58a111d4b
Fix some tests 2025-03-26 10:39:33 +01:00
94211a7d07
Port SignatureBuilders over to new classes 2025-03-26 10:39:32 +01:00
74e0c2036d
Rename and document members of SubkeyIdentifier 2025-03-26 10:39:32 +01:00
c775ef2b24
OpenPGPFingerprint(s): Use FingerprintUtil to calculate key-ids 2025-03-26 10:39:32 +01:00
724de3e300
Remove unnecessary imports 2025-03-26 10:39:32 +01:00
17e8c1f88d
Add workaround for decryption with non-encryption subkey 2025-03-26 10:39:32 +01:00
1c0514ba03
Fix version 2025-03-26 10:39:32 +01:00
fe0f022ddf
Port CanonicalizedDataEncryptionTest 2025-03-26 10:39:31 +01:00
138203a021
Port Sign and UnlockSecretKeys examples 2025-03-26 10:39:31 +01:00
d13e3deabf
Port ReadKeys example 2025-03-26 10:39:31 +01:00
0b891162e3
Progress porting the example tests 2025-03-26 10:39:31 +01:00
96287a3f13
Improve KeyExceptions 2025-03-26 10:39:31 +01:00
b860cac003
OpenPGPFingerprint: Add factory methods for new key / subkey classes 2025-03-26 10:39:30 +01:00
0aedd53eff
Port test 2025-03-26 10:39:30 +01:00
4ab4a06936
Port EncryptionOptions over to OpenPGPCertificate 2025-03-26 10:39:30 +01:00
a1215ef846
Port ConsumerOptions, SigningOptions to new OpenPGPCertificate, OpenPGPKey classes 2025-03-26 10:39:30 +01:00
70f006271f
Reenable disabled test and add workaround for broken one 2025-03-26 10:39:30 +01:00
0453109463
Even more migration and code compiles again 2025-03-26 10:39:30 +01:00
d4084dbc9a
WIP: Transform Options and OpenPgpMessageInputStream 2025-03-26 10:39:29 +01:00
35ecb086fe
Change return type of KeyRingBuilder.build() to OpenPGPKey 2025-03-26 10:39:29 +01:00
39ad8f43db
WIP: Migrate away from static methods 2025-03-26 10:39:29 +01:00
64dd7a9245
Begin transition to instance-based PGPainless, adapt policy 2025-03-26 10:39:29 +01:00
c9dba65378
Tests: Remove unused throws declarations 2025-03-26 10:39:29 +01:00
dbc119bac6
Fix tests 2025-03-26 10:39:28 +01:00
bb997951ab
KeyRingInfo: Replace PGPainless signature evaluation with BCs 2025-03-26 10:39:28 +01:00
933f61e99a
Disable ElGamal key tests 2025-03-26 10:39:28 +01:00
bac4e633a4
KeyRingInfo: Expose OpenPGPComponentKey in place of PGPPublicKey, OpenPGPSecretKey instead of PGPSecretKey 2025-03-26 10:39:28 +01:00
9a13183f30
Change type of KeyRingInfo.publicKey to OpenPGPPrimaryKey 2025-03-26 10:39:28 +01:00
afc7b86a92
Further integration of OpenPGPCertificate into KeyRingInfo 2025-03-26 10:39:27 +01:00
96fd965b77
Add some debug checks to test 2025-03-26 10:39:27 +01:00
c88dbbf36a
Fix some tests 2025-03-26 10:39:27 +01:00
584adf2477
Fix test stability 2025-03-26 10:39:27 +01:00
b64dee4b4e
Start porting KeyRingInfo over to OpenPGPCertificate 2025-03-26 10:39:27 +01:00
c2f7105786
Integrate KeyIdentifier with SubkeyIdentifier 2025-03-26 10:39:27 +01:00
e706923154
Add missing license headers 2025-03-26 10:39:26 +01:00
055764971e
Basic v6 key generation test 2025-03-26 10:39:26 +01:00
9e285bf6b8
Add new key types to default policy 2025-03-26 10:39:26 +01:00
dca9aa8cc2
Add new key types X25519, X448, Ed25519, Ed448 2025-03-26 10:39:26 +01:00
f63d07ab92
Pass version down in tests 2025-03-26 10:39:26 +01:00
c86dd8e916
Allow passing version number to key generator 2025-03-26 10:39:25 +01:00
aa51e3a7db
Simplify code for setExpirationDate() 2025-03-26 10:39:25 +01:00
26aeeafdcf
Adapt PGPKeyPairGenerator and remove support for generating ElGamal keys 2025-03-26 10:39:25 +01:00
3007bcec91
PGPainless 2.0.0-SNAPSHOT 2025-03-26 10:39:24 +01:00
768d5c4964
Bump bc to 1.80-SNAPSHOT, sop-java to 10.1.0-SNAPSHOT 2025-03-26 10:39:08 +01:00
12 changed files with 6 additions and 1057 deletions

View file

@ -5,15 +5,6 @@ SPDX-License-Identifier: CC0-1.0
# PGPainless Changelog
## 1.7.7-SNAPSHOT
- Bump `bcpg-jdk8on` to `1.81`
- Bump `bcprov-jdk18on` to `1.81`
## 1.7.6
- Fix `RevocationSignatureBuilder` properly calculating third-party signatures of type `KeyRevocation` (delegation revocations)
- Enable support for native images
- Re-enable shadow plugin and build fat-jar
## 1.7.5
- Actually attempt to fix Kotlin desugaring.
- Bump javaSourceCompatibility and javaTargetCompatibility to 11

View file

@ -193,7 +193,7 @@ repositories {
}
dependencies {
implementation 'org.pgpainless:pgpainless-core:1.7.6'
implementation 'org.pgpainless:pgpainless-core:1.7.5'
}
```

View file

@ -93,12 +93,6 @@ precedence = "aggregate"
SPDX-FileCopyrightText = "2022 Paul Schaub <info@pgpainless.org>, 2017 Steve Smith"
SPDX-License-Identifier = "CC-BY-SA-3.0"
[[annotations]]
path = "pgpainless-cli/src/main/resources/META-INF/native-image/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "2025 Paul Schaub <info@pgpainless.org>"
SPDX-License-Identifier = "Apache-2.0"
[[annotations]]
path = "pgpainless-cli/rewriteManPages.sh"
precedence = "aggregate"

View file

@ -42,7 +42,7 @@ allprojects {
// checkstyle
checkstyle {
toolVersion = '10.25.0'
toolVersion = '10.12.1'
}
spotless {

View file

@ -1,7 +0,0 @@
[
{
"type":"agent-extracted",
"classes":[
]
}
]

View file

@ -1,891 +0,0 @@
[
{
"name":"[Ljava.lang.Object;"
},
{
"name":"ch.qos.logback.classic.encoder.PatternLayoutEncoder",
"queryAllPublicMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.joran.SerializedModelConfigurator",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.util.DefaultJoranConfigurator",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.core.ConsoleAppender",
"queryAllPublicMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"setTarget","parameterTypes":["java.lang.String"] }]
},
{
"name":"ch.qos.logback.core.OutputStreamAppender",
"methods":[{"name":"setEncoder","parameterTypes":["ch.qos.logback.core.encoder.Encoder"] }]
},
{
"name":"ch.qos.logback.core.encoder.Encoder",
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
},
{
"name":"ch.qos.logback.core.encoder.LayoutWrappingEncoder",
"methods":[{"name":"setParent","parameterTypes":["ch.qos.logback.core.spi.ContextAware"] }]
},
{
"name":"ch.qos.logback.core.pattern.PatternLayoutEncoderBase",
"methods":[{"name":"setPattern","parameterTypes":["java.lang.String"] }]
},
{
"name":"ch.qos.logback.core.spi.ContextAware",
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
},
{
"name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"groovy.lang.Closure"
},
{
"name":"java.io.FilePermission"
},
{
"name":"java.lang.Enum"
},
{
"name":"java.lang.Object",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"java.lang.RuntimePermission"
},
{
"name":"java.lang.System",
"methods":[{"name":"console","parameterTypes":[] }]
},
{
"name":"java.lang.invoke.MethodHandle"
},
{
"name":"java.net.NetPermission"
},
{
"name":"java.net.SocketPermission"
},
{
"name":"java.net.URLPermission",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String","java.lang.String"] }]
},
{
"name":"java.nio.channels.SelectionKey",
"fields":[{"name":"attachment"}]
},
{
"name":"java.nio.file.Path"
},
{
"name":"java.nio.file.Paths",
"methods":[{"name":"get","parameterTypes":["java.lang.String","java.lang.String[]"] }]
},
{
"name":"java.security.AllPermission"
},
{
"name":"java.security.MessageDigestSpi"
},
{
"name":"java.security.SecureRandomParameters"
},
{
"name":"java.security.SecurityPermission"
},
{
"name":"java.security.cert.PKIXRevocationChecker"
},
{
"name":"java.sql.Connection"
},
{
"name":"java.sql.Driver"
},
{
"name":"java.sql.DriverManager",
"methods":[{"name":"getConnection","parameterTypes":["java.lang.String"] }, {"name":"getDriver","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.sql.Time",
"methods":[{"name":"<init>","parameterTypes":["long"] }]
},
{
"name":"java.sql.Timestamp",
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.time.Duration",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.Instant",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.LocalDate",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.LocalDateTime",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.LocalTime",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.MonthDay",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.OffsetDateTime",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.OffsetTime",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.Period",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.Year",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.YearMonth",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.time.ZoneId",
"methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.time.ZoneOffset",
"methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.time.ZonedDateTime",
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
},
{
"name":"java.util.HashSet"
},
{
"name":"java.util.LinkedHashSet"
},
{
"name":"java.util.PropertyPermission"
},
{
"name":"java.util.concurrent.ArrayBlockingQueue"
},
{
"name":"java.util.concurrent.atomic.AtomicReference",
"fields":[{"name":"value"}]
},
{
"name":"java.util.concurrent.locks.AbstractOwnableSynchronizer"
},
{
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer"
},
{
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject"
},
{
"name":"java.util.concurrent.locks.ReentrantLock"
},
{
"name":"java.util.concurrent.locks.ReentrantLock$NonfairSync"
},
{
"name":"java.util.concurrent.locks.ReentrantLock$Sync"
},
{
"name":"javax.smartcardio.CardPermission"
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.CONTEXT$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.CompositeSignatures$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.Dilithium$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.Falcon$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.LMS$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.MLDSA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.MLKEM$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.NTRU$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.NoSig$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.SLHDSA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.SPHINCSPlus$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$EdDSA",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$XDH",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyPairGeneratorSpi",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Blake3$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Haraka$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Keccak$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.MD2$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.MD4$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.MD5$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.SHA1$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.SHA224$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.SHA256$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.SHA3$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.SHA384$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.SHA512$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.SM3$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Skein$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Tiger$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.keystore.BC$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.AES$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.DES$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.ExitCodeTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"successfulExecutionDoesNotTerminateJVM","parameterTypes":[] }, {"name":"testCommandWithUnknownOption_37","parameterTypes":[] }, {"name":"testUnknownCommand_69","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.TestUtils",
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true
},
{
"name":"org.pgpainless.cli.commands.ArmorCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"armorAlreadyArmoredDataIsIdempotent","parameterTypes":[] }, {"name":"armorMessage","parameterTypes":[] }, {"name":"armorPublicKey","parameterTypes":[] }, {"name":"armorSecretKey","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.CLITest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"methods":[{"name":"cleanup","parameterTypes":[] }, {"name":"setup","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.DearmorCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"dearmorBrokenArmoredKeyFails","parameterTypes":[] }, {"name":"dearmorCertificate","parameterTypes":[] }, {"name":"dearmorGarbageEmitsEmpty","parameterTypes":[] }, {"name":"dearmorMessage","parameterTypes":[] }, {"name":"dearmorSecretKey","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.ExtractCertCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"extractCertFromGarbageFails","parameterTypes":[] }, {"name":"testExtractCert","parameterTypes":[] }, {"name":"testExtractCertFromCertFails","parameterTypes":[] }, {"name":"testExtractCertUnarmored","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.GenerateKeyCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"testGenerateBinaryKey","parameterTypes":[] }, {"name":"testGenerateKey","parameterTypes":[] }, {"name":"testGenerateKeyWithMultipleUserIds","parameterTypes":[] }, {"name":"testGeneratePasswordProtectedKey_missingPasswordFile","parameterTypes":[] }, {"name":"testPasswordProtectedKey","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.InlineDetachCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"detachInbandSignatureAndMessage","parameterTypes":[] }, {"name":"detachInbandSignatureAndMessageNoArmor","parameterTypes":[] }, {"name":"detachMissingSignaturesFromCleartextSignedMessageFails","parameterTypes":[] }, {"name":"detachNonOpenPgpDataFails","parameterTypes":[] }, {"name":"existingSignatureOutCausesException","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.ListProfilesCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"listProfileOfGenerateKey","parameterTypes":[] }, {"name":"listProfilesOfEncrypt","parameterTypes":[] }, {"name":"listProfilesWithoutCommand","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.RoundTripEncryptDecryptCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"decryptGarbageFails","parameterTypes":[] }, {"name":"decryptMalformedMessageYieldsBadData","parameterTypes":[] }, {"name":"decryptMessageWithSessionKey","parameterTypes":[] }, {"name":"decryptMessageWithWrongKeyFails","parameterTypes":[] }, {"name":"decryptWithPasswordWithPendingWhitespaceWorks","parameterTypes":[] }, {"name":"decryptWithWhitespacePasswordWorks","parameterTypes":[] }, {"name":"decrypt_verifyWithGarbageCertFails","parameterTypes":[] }, {"name":"decrypt_withGarbageKeyFails","parameterTypes":[] }, {"name":"encryptAndDecryptAMessage","parameterTypes":[] }, {"name":"encryptAndDecryptMessageWithPassphrase","parameterTypes":[] }, {"name":"encryptWithGarbageCertFails","parameterTypes":[] }, {"name":"encryptWithPasswordADecryptWithPasswordBFails","parameterTypes":[] }, {"name":"encryptWithProtectedKey_wrongPassphraseFails","parameterTypes":[] }, {"name":"encryptWithTrailingWhitespaceDecryptWithoutWorks","parameterTypes":[] }, {"name":"encrypt_signWithGarbageKeyFails","parameterTypes":[] }, {"name":"testDecryptVerifyOut_withoutVerifyWithFails","parameterTypes":[] }, {"name":"testDecryptWithSessionKeyVerifyWithYieldsExpectedVerifications","parameterTypes":[] }, {"name":"testDecryptWithoutDecryptionOptionFails","parameterTypes":[] }, {"name":"testEncryptDecryptRoundTripWithPasswordProtectedKey","parameterTypes":[] }, {"name":"testEncryptDecryptWithFreshRSAKey","parameterTypes":[] }, {"name":"testEncryptWithIncapableCert","parameterTypes":[] }, {"name":"testEncrypt_SignWithCertFails","parameterTypes":[] }, {"name":"testMissingArgumentsIfNoArgsSupplied","parameterTypes":[] }, {"name":"testSessionKeyOutWritesSessionKeyOut","parameterTypes":[] }, {"name":"testSignWithIncapableKey","parameterTypes":[] }, {"name":"testVerificationsOutAlreadyExistFails","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.RoundTripInlineSignInlineVerifyCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"cannotVerifyEncryptedMessage","parameterTypes":[] }, {"name":"cannotVerifyMalformedMessage","parameterTypes":[] }, {"name":"createAndVerifyCleartextSignedMessage","parameterTypes":[] }, {"name":"createAndVerifyMultiKeyBinarySignedMessage","parameterTypes":[] }, {"name":"createAndVerifyTextSignedMessage","parameterTypes":[] }, {"name":"createCleartextSignedMessage","parameterTypes":[] }, {"name":"createMalformedMessage","parameterTypes":[] }, {"name":"createSignedMessageWithKeyAAndVerifyWithKeyBFails","parameterTypes":[] }, {"name":"createTextSignedMessageInlineDetachAndDetachedVerify","parameterTypes":[] }, {"name":"signWithProtectedKeyWithWrongPassphraseFails","parameterTypes":[] }, {"name":"testInlineSignWithMissingSecretKeysFails","parameterTypes":[] }, {"name":"testUnlockKeyWithOneOfMultiplePasswords","parameterTypes":[] }, {"name":"verifyPrependedSignedMessage","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.RoundTripInlineSignVerifyCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"encryptAndDecryptAMessage","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.RoundTripSignVerifyCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"createArmoredSignature","parameterTypes":[] }, {"name":"createUnarmoredSignature","parameterTypes":[] }, {"name":"signWithProtectedKey","parameterTypes":[] }, {"name":"signWithProtectedKey_missingPassphraseFails","parameterTypes":[] }, {"name":"signWithProtectedKey_wrongPassphraseFails","parameterTypes":[] }, {"name":"testNotAfter","parameterTypes":[] }, {"name":"testNotBefore","parameterTypes":[] }, {"name":"testSignWithIncapableKey","parameterTypes":[] }, {"name":"testSignatureCreationAndVerification","parameterTypes":[] }, {"name":"unarmorArmoredSigAndVerify","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.commands.VersionCmdTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"testExtendedVersion","parameterTypes":[] }, {"name":"testGetBackendVersion","parameterTypes":[] }, {"name":"testSopSpecVersion","parameterTypes":[] }, {"name":"testVersion","parameterTypes":[] }]
},
{
"name":"org.pgpainless.cli.misc.SignUsingPublicKeyBehaviorTest",
"allDeclaredFields":true,
"allDeclaredClasses":true,
"queryAllDeclaredMethods":true,
"queryAllPublicMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"testSignatureCreationAndVerification","parameterTypes":[] }]
},
{
"name":"picocli.AutoComplete$GenerateCompletion",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"picocli.CommandLine$AutoHelpMixin",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"picocli.CommandLine$HelpCommand",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"sop.cli.picocli.SopCLI",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.SopCLI$InitLocale",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"sop.cli.picocli.commands.AbstractSopCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"sop.cli.picocli.commands.ArmorCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.ChangeKeyPasswordCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"sop.cli.picocli.commands.DearmorCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.DecryptCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.EncryptCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.ExtractCertCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.GenerateKeyCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.InlineDetachCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.InlineSignCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.InlineVerifyCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.ListProfilesCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.RevokeKeyCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"sop.cli.picocli.commands.SignCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.VerifyCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.VersionCmd",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sop.cli.picocli.commands.VersionCmd$Exclusive",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.provider.NativePRNG",
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
},
{
"name":"sun.security.provider.SHA",
"methods":[{"name":"<init>","parameterTypes":[] }]
}
]

View file

@ -1,93 +0,0 @@
{
"resources":{
"includes":[{
"pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
}, {
"pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
}, {
"pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.util.spi.ResourceBundleControlProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/org.junit.platform.engine.TestEngine\\E"
}, {
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.LauncherDiscoveryListener\\E"
}, {
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.LauncherSessionListener\\E"
}, {
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.PostDiscoveryFilter\\E"
}, {
"pattern":"\\QMETA-INF/services/org.junit.platform.launcher.TestExecutionListener\\E"
}, {
"pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
}, {
"pattern":"\\Qjunit-platform.properties\\E"
}, {
"pattern":"\\Qlogback-test.scmo\\E"
}, {
"pattern":"\\Qlogback-test.xml\\E"
}, {
"pattern":"\\Qlogback.scmo\\E"
}, {
"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"
}, {
"pattern":"\\Qpgpainless-sop.properties\\E"
}, {
"pattern":"\\Qsop-java-version.properties\\E"
}, {
"pattern":"java.base:\\Qsun/text/resources/LineBreakIteratorData\\E"
}]},
"bundles":[{
"name":"msg_armor",
"locales":["de", "und"]
}, {
"name":"msg_change-key-password",
"locales":["de", "und"]
}, {
"name":"msg_dearmor",
"locales":["de", "und"]
}, {
"name":"msg_decrypt",
"locales":["de", "und"]
}, {
"name":"msg_detached-sign",
"locales":["de", "und"]
}, {
"name":"msg_detached-verify",
"locales":["de", "und"]
}, {
"name":"msg_encrypt",
"locales":["de", "und"]
}, {
"name":"msg_extract-cert",
"locales":["de", "und"]
}, {
"name":"msg_generate-key",
"locales":["de", "und"]
}, {
"name":"msg_inline-detach",
"locales":["de", "und"]
}, {
"name":"msg_inline-sign",
"locales":["de", "und"]
}, {
"name":"msg_inline-verify",
"locales":["de", "und"]
}, {
"name":"msg_list-profiles",
"locales":["de", "und"]
}, {
"name":"msg_revoke-key",
"locales":["de", "und"]
}, {
"name":"msg_sop",
"locales":["de", "und"]
}, {
"name":"msg_version",
"locales":["de", "und"]
}]
}

View file

@ -1,41 +0,0 @@
{
"types":[
{
"name":"java.lang.Enum"
},
{
"name":"java.lang.Object[]"
},
{
"name":"java.util.HashSet"
},
{
"name":"java.util.LinkedHashSet"
},
{
"name":"java.util.concurrent.ArrayBlockingQueue"
},
{
"name":"java.util.concurrent.locks.AbstractOwnableSynchronizer"
},
{
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer"
},
{
"name":"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject"
},
{
"name":"java.util.concurrent.locks.ReentrantLock"
},
{
"name":"java.util.concurrent.locks.ReentrantLock$NonfairSync"
},
{
"name":"java.util.concurrent.locks.ReentrantLock$Sync"
}
],
"lambdaCapturingTypes":[
],
"proxies":[
]
}

View file

@ -23,7 +23,7 @@ To start using pgpainless-sop in your code, include the following lines in your
...
dependencies {
...
implementation "org.pgpainless:pgpainless-sop:1.7.6"
implementation "org.pgpainless:pgpainless-sop:1.7.5"
...
}
@ -34,7 +34,7 @@ dependencies {
<dependency>
<groupId>org.pgpainless</groupId>
<artifactId>pgpainless-sop</artifactId>
<version>1.7.6</version>
<version>1.7.5</version>
</dependency>
...
</dependencies>
@ -67,7 +67,7 @@ byte[] encrypted = sop.encrypt()
// Decrypt a message
ByteArrayAndResult<DecryptionResult> messageAndVerifications = sop.decrypt()
.verifyWithCert(cert)
.verifyWith(cert)
.withKey(key)
.ciphertext(encrypted)
.toByteArrayAndResult();

View file

@ -13,6 +13,6 @@ allprojects {
logbackVersion = '1.5.13'
mockitoVersion = '4.5.1'
slf4jVersion = '1.7.36'
sopJavaVersion = '14.0.0'
sopJavaVersion = '14.0.0-SNAPSHOT'
}
}