387b2b4b43
Ensure that KeySpecBuilder gets at least one key flag
2021-09-20 11:26:00 +02:00
895adb24c6
Export dependency on bcprov
2021-09-17 18:05:54 +02:00
ce645fc429
Postpone decryption of PKESK if secret key passphrase is missing and try next PKESK first before passphrase retrieval using callback
...
Fixes #186
2021-09-15 16:33:03 +02:00
81379a5176
Add MessageInspector utility class which can be used to determine encryption keys for a message
2021-09-14 21:49:02 +02:00
fedf7c0cf8
Make AlgorithmSuite members final and remove setters
2021-09-13 19:46:18 +02:00
11ad6361f8
Reformat arguments
2021-09-13 19:46:18 +02:00
21f424551b
Simplify KeySpecBuilder
2021-09-13 19:46:18 +02:00
0a45f4de9e
Add documentation to SignatureVerification class
2021-09-13 18:18:50 +02:00
f28232893c
Refactoring: Move cleartext signed message processing to decryption_verification
2021-09-13 18:09:53 +02:00
9a8bb7d3ef
Add missing break statement to loop
2021-09-10 21:04:36 +02:00
194e4d7631
Automatically 'repair' keys with S2K usage CHECKSUM to use SHA1 when changing passphrases
2021-09-10 20:14:12 +02:00
7e71af973b
Add JUnit tests for modification of keys with different sig classes
2021-09-10 19:57:05 +02:00
c851457ef8
Add S2KUsageFix class and tests to switch secret keys encrypted with USAGE_CHECKSUM over to USAGE_SHA1
2021-09-09 20:31:02 +02:00
17ba3c3879
SecretKeyRingEditor: Take not only positive, but also generic,casual certifications into consideration
2021-09-08 11:59:28 +02:00
c942238b40
Add tests for CachingSecretKeyRingProtector
2021-09-07 18:19:34 +02:00
ab3f20ea54
VerifyCleartextSignatures: Remove deprecated methods
2021-09-07 17:44:03 +02:00
3994f87c78
Cleartext Signature Framework: Return OpenPgpMetadata
2021-09-07 14:02:07 +02:00
90a00e0541
Move signature verification to dedicated streams
2021-09-07 14:02:07 +02:00
ba0e5eb3fe
Improve readability of DecryptionStreamFactory
2021-09-06 17:15:17 +02:00
90e0f74aea
Stabilize expiration dates in revocation tests
2021-09-06 15:23:10 +02:00
e81ee648d8
Clean DecryptionStream: We only ever have one IntegrityProtectedInputStream at most
2021-09-06 15:14:13 +02:00
e5ae09b79c
Change default compression algorithm from UNCOMPRESSED to ZIP
2021-09-06 15:13:41 +02:00
f68779d8a5
Add tests for pgpainless-sop
2021-08-30 17:15:11 +02:00
97c8ff8312
Throw WrongConsumingMethodException when processing Cleartext Signed Messages with Inband Signature verification API and vice versa
2021-08-29 13:35:27 +02:00
2885ff7a14
Cleartext signature framework: Reuse ConsumerOptions
2021-08-28 11:39:50 +02:00
943360aa65
Document OpenPgpMetadata class
2021-08-26 19:53:15 +02:00
e19acb667c
Add SignatureUtils.readSignatures(byte[])
2021-08-26 19:35:25 +02:00
ac469ff5d7
Make non-test method a main method
2021-08-26 15:07:48 +02:00
004a761fdb
Globally set slf4j version
2021-08-26 15:03:20 +02:00
1124c6fd15
Wip: Configure logback logging
2021-08-26 15:03:20 +02:00
4d6ca80e25
Debug signature verification using debug build of bcpg
2021-08-26 15:03:20 +02:00
3573115a60
Add investigation test for cleartext signature verification
2021-08-23 14:27:03 +02:00
200e00990b
Remove unused class and move detached sig initialization in own method
2021-08-23 14:27:02 +02:00
772f69788b
Refactor CleartextSignatureProcessor to allow reuse in DetachInbandSignatureAndMessage
2021-08-23 14:26:17 +02:00
829068d5a8
Switch from JUL logging to SLF4J
2021-08-23 14:20:25 +02:00
ae1539fa24
Add test to check, how messages with multiple SEIP packets are handled
2021-08-23 00:48:38 +02:00
0874805580
build.gradle: get rid of quick switch for bcprov debug
...
Since we don't need to debug low level crypto often, leaving the switch
in is a source of mistakes like accidentally depending on debug versions
in releases
2021-08-18 14:59:06 +02:00
03efb5e14c
Rename verifySignatureCreationTimeIsInBounds method
2021-08-18 14:50:01 +02:00
3bee3e5916
Add README for signature package
2021-08-18 14:49:31 +02:00
3abb796220
Separate Signature verification methods out of SignatureValidator into SignatureVerifier
2021-08-18 14:28:36 +02:00
8c3b694a71
Refactoring
2021-08-18 13:19:43 +02:00
5a9b8a2c50
Verify notBefore and notAfter on any message signatures
2021-08-18 12:55:24 +02:00
099b160656
Native support for notBefore and notAfter signature creation time constraints
2021-08-17 14:47:07 +02:00
6a108cb8c0
SignatureValidityComparator: Remove member order
2021-08-15 15:46:41 +02:00
452ee3fb30
Do not hide member has with local variable
2021-08-15 15:46:41 +02:00
e368a8b16a
Reduce complexity of statements
2021-08-15 15:46:41 +02:00
6467217bd1
Make defaultDigestHashAlgorithm static
2021-08-15 15:46:41 +02:00
dd941fb293
Merge nested if-statements
2021-08-15 15:46:41 +02:00
28f6664b29
Change order of modifiers
2021-08-15 15:46:41 +02:00
09ffd527b5
Change constructor visibility of KeyAccessor
2021-08-15 15:46:41 +02:00
9ac0ee4043
Avoid hiding member with local variable
2021-08-15 15:46:41 +02:00
672acd38d0
ProviderFactory: Avoid accessing subclass in parent class initialization
2021-08-15 15:46:41 +02:00
adc69caa51
ImplementationFactory: Avoid accessing subclass in parent class initialization
2021-08-15 15:46:41 +02:00
8539157405
Move builder() method above Builder class
2021-08-15 15:46:41 +02:00
54a4625fed
fix comments and javadoc
2021-08-15 15:46:41 +02:00
c11f334fa4
Policy: Use EnumMap for improved performance
2021-08-15 15:46:41 +02:00
e5b15fe0c2
Use String-formatting in Logger statements
2021-08-15 15:46:41 +02:00
485666c72a
Change static variable names
2021-08-15 15:46:41 +02:00
20b3080e94
getBitStrenght: Throw NoSuchAlgorithmException for unknown curves
2021-08-15 15:46:41 +02:00
ccc62e090c
Make DateUtil thread-safe
2021-08-15 15:46:41 +02:00
bb27fddc89
Remove default constructor of NotationRegistry
2021-08-15 15:46:41 +02:00
ab951fcf03
InputStreams: overwrite read(b, off, len) for improved performance
2021-08-15 15:46:41 +02:00
5eb470862e
Remove OpenPgpMetadata.FileInfo subclass
2021-08-15 15:46:41 +02:00
2bd71617bd
PGPException is not thrown during secret key reading
2021-08-15 15:46:41 +02:00
6251e01d57
Make classes final where sensible
2021-08-15 15:46:41 +02:00
1ce6632f18
Rename KeyValidationException -> KeyValidationError
2021-08-15 15:46:41 +02:00
66293bf333
Add documentation to ArmoredOutputStreamFactory
2021-08-15 13:41:07 +02:00
fd867bbfbe
Allow customization of ASCII armor comment and version headers
2021-08-14 13:56:16 +02:00
a678ff1b6e
Add documentation to classes related to verification of cleartext signed data
2021-08-14 11:39:13 +02:00
468159b2ad
Add documentation to SignatureSubpacketsUtil
2021-08-14 11:19:40 +02:00
3c68840a29
Add documentation to SignatureUtils methods
2021-08-14 11:09:51 +02:00
8256cd3a5b
Test some methods of KeyRingInfo
2021-08-08 18:26:38 +02:00
50e7fd96b8
Fix javadoc issues
2021-08-08 18:13:48 +02:00
08a5ce73dc
Test SignatureValidator.verifyWasPossiblyMadeByKey()
2021-08-08 17:55:57 +02:00
aa0aaf134d
Bundle ASCII-Armor CRC related tests
2021-08-08 17:39:36 +02:00
cae099eabe
Properly evaluate key expiration dates
2021-08-08 16:58:32 +02:00
a0be510fc2
Update test key to have no key-expiration date
2021-08-08 16:57:37 +02:00
944d79b009
Rearrange armored input stream workaround code
2021-08-08 15:58:12 +02:00
1983cfb4ac
ArmoredInputStreams: Properly catch ignorable IOExceptions caused by missing CRC sums
2021-08-08 15:35:05 +02:00
089b81b070
Improve parsing of data containing invalid signatures
...
partial workaround for https://github.com/bcgit/bc-java/pull/1006
2021-08-05 15:18:33 +02:00
245e4a380d
Add JUnit test to ensure proper bracketing and nested-ness of multiple OnePassSignatures
2021-08-05 13:12:12 +02:00
9a485a3354
Encrypt to all capable subkeys by default
2021-08-04 16:38:17 +02:00
2d76cb5c82
Fix partial length encoding of some messages
...
Fixes #160
I'm not yet sure, why this issue only happened with some keys and not others,
but this fix works for now.
2021-08-04 16:02:35 +02:00
16c3116518
Fix order and nested-ness of one-pass-signatures
...
Fixes #164
2021-08-04 15:42:25 +02:00
e4fdc3bc1e
SubkeyIdentifier: Throw NoSuchElementException for non-existent subkey
2021-08-01 17:23:17 +02:00
1327e08ac3
Add tests for SubkeyIdentifier
2021-08-01 17:19:04 +02:00
99ff6d537b
Prevent IllegalArgumentException for non-v4 issuer fingerprints
2021-08-01 16:11:47 +02:00
b674a412b5
Reformat issuer-fingerprint inclusion code
2021-08-01 16:03:30 +02:00
bd04e35a53
Commit investigation code for #160 (Thunderbird interop issues)
2021-08-01 15:54:19 +02:00
6a11e39d76
Add issuer-fingerprint to message signatures
2021-08-01 15:53:51 +02:00
5422468d73
Check key flags on binding sig to determine if backsig is required
2021-07-31 22:25:55 +02:00
e7ed0f76a3
Properly ignore marker packets when reading keys/sigs
2021-07-31 22:25:12 +02:00
fb16db5db4
Improve handling of signatures with missing issuerKeyId packets
2021-07-31 22:24:39 +02:00
311c842196
Revert introduction of StreamUtil
2021-07-31 20:40:31 +02:00
107e53c03e
Fully drain ArmoredInputStreams to verify CRC checksum.
...
Fixes #159 (for real this time)
2021-07-27 15:09:59 +02:00
fc311fe781
Workaround for #159 : Avoid to prevent swallowing IOExceptions
2021-07-26 16:19:30 +02:00
3e9979240b
Add javadoc to the SignatureValidator class
2021-07-22 15:28:24 +02:00
1f08815633
Explicitly reject non-self signatures when picking user-id self sigs
2021-07-22 15:28:24 +02:00
726d22b8d6
Change passphrase: Skip GNU_DUMMY_S2K keys
2021-07-19 15:05:03 +02:00
4244107994
Add readmes for all modules
2021-07-17 00:27:58 +02:00
8cf5347b52
Base PGPainlessCLI on new sop-java module
...
* Rename pgpainless-sop -> pgpainless-cli
* Introduce sop-java (implementation-independent SOP API)
* Introduce sop-java-picocli (CLI frontend for sop-java)
* Introduce pgpainless-sop (implementation of sop-java using PGPainless)
* Rework pgpainless-cli (plugs pgpainless-sop into sop-java-picocli)
2021-07-15 17:03:56 +02:00
2ba782c451
Move file-related encryption-info into ProducerOptions
2021-07-10 12:22:47 +02:00
447c08b446
Add tests for ignoring marker packets when reading keys
2021-07-10 11:48:56 +02:00
0330d3cfa3
Add getMarkerPacket() test method
2021-07-10 11:48:46 +02:00
be4962c531
Fix KeyRingReader methods not ignoring marker packets
2021-07-10 11:48:39 +02:00
6a90c4303e
OpenPgpMetadat: identify verified sigs by SubkeyIdentifier
2021-07-04 13:08:24 +02:00
48314fde40
Assign sensible names to test() methods
2021-07-03 13:23:11 +02:00
70666d276b
Rework MultiMapTest
2021-07-03 13:20:25 +02:00
43a21de53a
Delete useless GenerateKeyTest
2021-07-03 12:59:33 +02:00
0321a6170c
Execute signature related tests on all implementations
2021-07-03 12:56:42 +02:00
a5dba7a368
Enable MultiPassphraseSymEncTest
2021-07-03 12:56:30 +02:00
7c612dd2ef
Parametrize BindingSignatureSubpacketsTest to run on all implementations
2021-07-03 12:50:44 +02:00
b4b84badc0
ImplementationFactory: override toString()
2021-07-03 12:44:21 +02:00
84ff6ce015
Improve tests
2021-07-03 12:42:17 +02:00
63c75f1f86
Rename TestUtil -> TestImplementationFactoryProvider
2021-07-03 12:42:12 +02:00
9ac4b30ec7
Delete unused NonEmptyList class
2021-07-03 12:24:08 +02:00
863d443052
Request deletion of temp test files upon exit
2021-07-03 12:23:40 +02:00
c8a281d6a4
Move UTC timestamp methods to DateUtil class
2021-07-03 12:23:24 +02:00
9b046a0cf1
Change SymmetricEncryptionAlgorithmNegotiator to return the 'best' avail. alg
2021-07-01 21:33:38 +02:00
30740aba4f
Add SymAlgoNegotiatorTest
2021-07-01 19:24:17 +02:00
3cb014e3f6
Add TestUtils.now() to have stable 'rounded' UTC dates in tests
2021-07-01 19:12:23 +02:00
9f76d16a34
Execute more tests on both implementation providers
2021-07-01 19:11:55 +02:00
cce0605ac3
Remove probably buggy, unused code
2021-07-01 18:55:21 +02:00
c234e38ae2
Add key extraction and ascii armor examples
2021-07-01 17:37:30 +02:00
77fbd8763e
PGPainless.java: Add extractCertificate and asciiArmor methods
2021-07-01 17:15:25 +02:00
b6eed91f47
Remove deprecated encryption API
2021-06-29 16:43:37 +02:00
ab347dab43
Remove deprecated decryption API code
2021-06-29 16:15:36 +02:00
42aed70719
Add SignatureTypeTest
2021-06-29 15:10:22 +02:00
fee3041bcb
Add test for SignatureSubpacket.fromCodes()
2021-06-29 15:03:37 +02:00
4947f17842
JUnit test the AlgorithmSuite class
2021-06-29 14:58:50 +02:00
733dcf0a7e
Remove deprecated method from PGPainless.java
2021-06-29 14:47:05 +02:00
9637ef5d35
Increase test coverage
2021-06-29 14:42:22 +02:00
dff47d17d1
Remove more unused methods and fix method name
2021-06-28 21:14:40 +02:00
02ddb71c07
Remove deprecated methods from PGPainless.java
2021-06-28 21:10:20 +02:00
9395fa80a2
Revert if-conditions to reduce indentation level
2021-06-28 21:06:12 +02:00
e13a2fce73
Solve some TODOs
2021-06-26 19:20:58 +02:00
60cbcac58b
Fix test and use new decryption API
2021-06-26 18:41:02 +02:00
715ae707ed
Merge branch 'decryptionAPI2'
2021-06-26 18:36:04 +02:00
fc14a86d9c
Add user-id revocation example
2021-06-26 18:33:41 +02:00
f6ffc4c28d
Add examples for encryption and decryption of messages
2021-06-26 18:33:41 +02:00
9b34664ba2
Add example for unlocking secret keys
2021-06-26 18:33:41 +02:00
8d05eea92d
Add documentation to ManagePolicy
2021-06-26 18:33:41 +02:00
e8311f0cc5
Add link to keylength.com
2021-06-26 18:33:41 +02:00
ac8fb5ad6b
Add ManagePolicy example
2021-06-26 18:33:41 +02:00
4a0ef1ac6b
Add ConvertKeys example
2021-06-26 18:33:41 +02:00
3de076eb31
Add modify keys tests
2021-06-26 18:33:41 +02:00
5c2910f6c1
Wip
2021-06-26 18:33:41 +02:00
0958915b4c
Add examples for key generation and parsing
2021-06-26 18:33:41 +02:00
41b8d15cec
CachingSecretKeyRingProtector: Add addPassphrase(OpenPgpV4Fingerprint, Passphrase)
2021-06-26 18:33:33 +02:00
dae5288456
Add KeyRingInfo.getVersion()
2021-06-26 16:30:54 +02:00
8a4908d29d
TestUtils: Set UTC timezone and add formatUTCDate()
2021-06-24 15:10:13 +02:00
a6e5ca898f
Fix NPEs in KeyRingInfo.getExpirationDateForUse()
2021-06-24 15:09:59 +02:00
548bfff93f
Fix: Respect user requested keyflags when adding a subkey.
2021-06-24 14:11:18 +02:00
259f629b3c
Further deletion of unused selection classes
2021-06-23 19:39:10 +02:00
3c37072774
Remove unused Selection classes
2021-06-23 19:33:13 +02:00
e7f685e63b
Tests: Make use of KeyRingInfo to determine encryption subkeys
2021-06-23 19:20:47 +02:00
df22c2a102
Remove duplicate code and throw NotYetImplementedExceptions where sensible
2021-06-16 15:49:43 +02:00
88891e1337
Remove usage of deprecated decryption/verification API in tests
2021-06-16 15:38:02 +02:00
715d055b41
Add documentation and deprecate old methods
2021-06-15 17:56:36 +02:00
8f425cd31d
Fix parsing of non-OpenPGP messages when handling detached signatures
2021-06-15 17:35:58 +02:00
70c4dcd1d2
Begin introducing new Decryption API
2021-06-15 17:08:40 +02:00
a65ea26181
Add tests for PublicKeyAlgorithmPolicy
2021-06-11 16:47:22 +02:00
5bb4fd3687
Add PublicKeyAlgorithmPolicy to reject weak public keys
...
BCs PGPPublicKey.getBitStrenght() appears to fail to recognize some elliptic curves.
In such cases, bitStrength is reported as -1.
I added BCUtil.getBitStrength(publicKey) to manually determine the bit strenght by OID.
See https://github.com/bcgit/bc-java/issues/972 for an upstream bug report.
2021-06-11 16:20:29 +02:00
e587fc46b8
SOP: Ignore marker packets in certificates
2021-06-10 16:56:36 +02:00
6b99f0aadc
Add tests for PGPKeyRingCollection
2021-06-10 16:21:04 +02:00
ed8584df95
Add policy tests
2021-06-10 15:41:44 +02:00
7696f120e6
Even more EncryptionOptions tests
2021-06-10 15:18:31 +02:00
762d9d4803
More EncryptionOptions tests
2021-06-10 15:04:21 +02:00
e297dfd3c1
EncryptionOptions: Consistent exceptions
2021-06-10 15:04:08 +02:00
512825aad4
Add test for EncryptionOptions
2021-06-10 14:25:00 +02:00
a2d0a75d42
Add SignatureStructureTest to test various signature field accessors
2021-06-10 13:37:10 +02:00
cc8a7826fc
Add KeyIdUtil with method to convert from 16 digit hex key-id to long
2021-06-10 13:36:44 +02:00
f7525dde65
Add get{,Un}HashedNotationData(sig, notationName) to SignatureSubpacketUtils
2021-06-10 13:35:55 +02:00
bedfef49fe
Add getSignatureDigestPrefix utility method to SignatureUtils
2021-06-10 13:35:09 +02:00
9b9064beae
Small code style fixes and optimizations
2021-06-10 12:42:48 +02:00
845779d40b
Avoid deprecated methods
2021-06-10 12:42:03 +02:00
27370fa925
Bump Bouncycastle to 1.69
2021-06-10 12:41:12 +02:00
ce4869e15a
UnlockSecretKey: Do not try to get decryptor for unencrypted keys
2021-05-31 15:38:47 +02:00
73f6c54fa2
More documentation
2021-05-31 15:33:42 +02:00
a871bc3a0c
Add documentation
2021-05-31 15:24:41 +02:00
1ad23366a7
Implement KeyRingInfo.getKeysWithFlag() and KeyRingInfo.getExpirationDateForUse()
2021-05-31 15:13:28 +02:00
8618d1faea
More tests
2021-05-31 13:59:56 +02:00
b07cb2467b
Alter tests to cover untested KeyRingBuilderInterface methods
2021-05-30 18:05:38 +02:00
ccdcd49c58
Remove deprecated method withMasterKey from KeyRingBuilderInterface
2021-05-30 18:05:09 +02:00
8e02df9a3e
Test FileBasedMultiPassStrategy
2021-05-29 14:13:08 +02:00
82536eaa77
Improve support for PGP[Secret|Public]KeyRingCollections
2021-05-29 13:52:29 +02:00
1a5baa0fa4
Clean up BCUtils class
2021-05-29 12:43:31 +02:00
13c7572c8c
Restore functionality of MissingPublicKeyCallback + JUnit test it
2021-05-29 12:19:12 +02:00
7bbc23d826
Test MissingDecryptionMethodException
2021-05-28 23:29:41 +02:00
fd0734b247
Remove legacy symmetric encryption code
2021-05-28 23:22:11 +02:00
ea03c66400
Throw MissingDecryptionMethodException when missing decryption key or -passphrase
2021-05-28 23:20:25 +02:00
77800f26e8
SecretKeyRingEditor: UserIDs only reside on primary keys
2021-05-28 23:14:20 +02:00
57c11a63e5
Remove unused throws declarations
2021-05-28 22:39:27 +02:00
c255439ee2
Cleanse duplicated code
2021-05-28 22:37:16 +02:00
a23f2c4401
Delete SelectSignatureFromKey class
2021-05-28 22:21:03 +02:00
293442d699
Delete unused EvaluatedKeyRing class
2021-05-28 21:42:31 +02:00
826c761e69
Test invalid keys cannot sign behavior
2021-05-28 21:41:02 +02:00
6f0cf35e31
Delete redundant classes
2021-05-28 21:33:20 +02:00
b1deb75969
Deprecate PGPainless.encryptAndOrSign(purpose)
2021-05-27 15:57:21 +02:00
9883d1537b
Move EncryptionPurpose to own class
2021-05-27 15:52:43 +02:00