fd2f6523ec
More specific exception message for when nesting depth is exceeded
2022-11-23 20:42:17 +01:00
1437604836
Add documentation to DecryptionStream
2022-11-23 20:42:17 +01:00
70cca563d7
Add javadoc to getMetadata() and getResult()
2022-11-23 20:42:17 +01:00
33d9a784bb
Add javadoc to MEssageMetadata class
2022-11-23 20:42:17 +01:00
3023d532e3
Make DecryptionStream.getMetadata() first-class, deprecate getResult()
2022-11-23 20:42:17 +01:00
e976cc6dd2
Move getResult() method around
2022-11-23 20:42:17 +01:00
03d04fb324
Tests: Replace usages of default algorithm policies with specific policies
2022-11-23 20:42:17 +01:00
d7e4fcaec6
OpenPgpMessageInputStream: Source verification certs from ConsumerOptions.getCertificateSource()
2022-11-23 20:42:17 +01:00
a792952845
Remove code to manually throw NSEE for missing certs
...
This is now done further down in the store itself
2022-11-23 20:42:17 +01:00
c19b8297a3
Add TODO for when bumping cert-d-java
2022-11-23 20:42:17 +01:00
4594b494a9
Implement signature verification with certificate stores as cert source
2022-11-23 20:42:17 +01:00
22abb62443
Add test for encryption to cert from certificate store
2022-11-23 20:42:17 +01:00
d0277fbbec
Bump cert-d-java to 0.2.0
2022-11-23 20:42:17 +01:00
6dc5b84d66
Depend on pgp-certificate-store again
2022-11-23 20:42:17 +01:00
d486a17cf1
Implement EncryptionOptions.addRecipient(store, fingerprint)
2022-11-23 20:42:17 +01:00
b287d28a28
Depend on pgp-certificate-store
2022-11-23 20:42:17 +01:00
963b678a9e
Enable test for decryption of messages without ESKs
2022-11-23 20:42:17 +01:00
59e81dc514
Use BCs PGPEncryptedDataList.extractSessionKeyEncryptedData() for decryption with session key
2022-11-23 20:42:17 +01:00
f80b3e0cdb
Use BCs PGPEncryptedDataList.isIntegrityProtected()
2022-11-23 20:42:17 +01:00
b1f9a1398a
Add comment for ArmorUtils method
2022-11-23 20:40:40 +01:00
f86aae4997
Implement efficient read(buf,off,len) for DelayedInputStream
2022-11-23 20:40:40 +01:00
ca49ed087b
Small clean-ups in OpenPgpMessageInputStream
2022-11-23 20:40:40 +01:00
58195c19b1
Properly handle failed decryption caused by removed private keys
2022-11-23 20:40:40 +01:00
58aa9f5712
Move classes related to GNU dummy keys to gnupg package
2022-11-23 20:40:40 +01:00
df4fc94ce7
Add test for decryption with removed private key
2022-11-23 20:40:40 +01:00
3af6ab1b85
Rename GnuPGDummyExtension + GnuPGDummyKeyUtil
2022-11-23 20:40:40 +01:00
033beaa8f2
Use S2K usage SHA1 in GnuDummyKeyUtil
2022-11-23 20:40:40 +01:00
a8d2319d63
Add documentation to GnuDummyKeyUtil
2022-11-23 20:40:40 +01:00
2487e3300a
Add and test GnuDummyKeyUtil
2022-11-23 20:40:40 +01:00
7467170bcc
Move CachingBcPublicKeyDataDecryptorFactoryTest to correct package
2022-11-23 20:40:40 +01:00
07320ed3cf
Fix HardwareSecurity.getIdsOfHardwareBackedKeys()
2022-11-23 20:40:40 +01:00
8c0d096fc6
Fix CachingBcPublicKeyDataDecryptorFactory
2022-11-23 20:40:40 +01:00
705e36080c
Implement caching PublicKeyDataDecryptorFactory
2022-11-23 20:40:40 +01:00
8fafb6aa56
Add comments
2022-11-23 20:40:40 +01:00
208612ab56
Add (commented-out) read(buf, off, len) implementation for DelayedTeeInputStream
2022-11-23 20:40:40 +01:00
8cb7d19487
Allow injection of different syntax into PDA
2022-11-23 20:40:40 +01:00
161ce57711
Clean up old unused code
2022-11-23 20:40:40 +01:00
ec793c66ff
More cleanup and better error reporting
2022-11-23 20:40:40 +01:00
8ca0cfd3ae
Rename *Alphabet to *Symbol and add javadoc
2022-11-23 20:40:40 +01:00
b3d61b0494
Separate out syntax logic
2022-11-23 20:40:40 +01:00
798e68e87f
Improve syntax error reporting
2022-11-23 20:40:40 +01:00
a2a5c9223e
Remove debugging fields
2022-11-23 20:40:40 +01:00
a0ba6828c9
Remove superfluous states
2022-11-23 20:40:40 +01:00
7e8841abf3
Handle unknown packet versions gracefully
2022-11-23 20:40:40 +01:00
192aa98326
Add missing REUSE license headers
2022-11-23 20:40:40 +01:00
a013ab4ebb
Wrap MalformedOpenPgpMessageException in BadData
2022-11-23 20:40:40 +01:00
8097c87b7f
Fix last two broken tests
2022-11-23 20:40:40 +01:00
e0b2145793
Fix more tests
2022-11-23 20:40:40 +01:00
aa398f9963
Only check message integrity once
2022-11-23 20:40:40 +01:00
e281143d48
Delete old DecryptionStreamFactory
2022-11-23 20:40:40 +01:00
3f8653cf2e
Fix CRCing test and fully depend on new stream for decryption
2022-11-23 20:40:40 +01:00
54cb9dad71
Further increase coverage of PDA class
2022-11-23 20:40:40 +01:00
3977d1f407
Add more direct PDA tests
2022-11-23 20:40:40 +01:00
977f8c4101
Rename automaton package to syntax_check
2022-11-23 20:40:40 +01:00
a27c0ff36e
Add detailled logging to OpenPgpMessageInputStream
2022-11-23 20:40:40 +01:00
b7acb2a59c
Enable logging in tests
2022-11-23 20:40:40 +01:00
a9993fd866
Throw UnacceptableAlgEx for unencrypted encData
2022-11-23 20:40:40 +01:00
3d5916c545
Implement custom decryptor factories in pda
2022-11-23 20:40:40 +01:00
a39c6bc881
Identify custom decryptor factories by subkey id
2022-11-23 20:40:40 +01:00
cfd3f77491
Make map final
2022-11-23 20:40:40 +01:00
228918f96b
Change HardwareSecurity DecryptionCallback to emit key-id
2022-11-23 20:40:40 +01:00
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
d39d062a0d
WIP: Explore Hardware Decryption
2022-11-23 20:40:40 +01:00
7da34c8329
Work on postponed keys
2022-11-23 20:40:40 +01:00
d3f07a2250
Reuse *SignatureCheck class
2022-11-23 20:40:40 +01:00
dfbb01d61c
Enfore max recursion depth and fix CRC test
2022-11-23 20:40:40 +01:00
7097d44916
Fix NPEs and expose decryption keys
2022-11-23 20:40:40 +01:00
6fd705b1dc
Fix checkstyle issues
2022-11-23 20:40:40 +01:00
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
654493dfcc
Properly expose signatures
2022-11-23 20:40:40 +01:00
a9f77ea100
Cleaning up and collect signature verifications
2022-11-23 20:40:40 +01:00
43c369f1f9
It was the buffering.
2022-11-23 20:40:40 +01:00
bdc968dd43
Create TeeBCPGInputStream to move teeing logic out of OpenPgpMessageInputStream
2022-11-23 20:40:40 +01:00
e420678076
2/3 the way to working sig verification
2022-11-23 20:40:40 +01:00
5e37d8038a
WIP: So close to working notarizations
2022-11-23 20:40:39 +01:00
5288fb81c3
Reformat KeyRingReader
2022-11-23 20:40:03 +01:00
18b1fadeb6
Suppress DefaultCharset warning
2022-11-23 20:40:03 +01:00
2ce4486e89
Convert links in javadoc to html
2022-11-23 20:40:03 +01:00
babd1542e3
DO NOT MERGE: Disable broken test
2022-11-23 20:40:03 +01:00
09f94944b3
Remove unnecessary throws declarations
2022-11-23 20:40:03 +01:00
81bb8cba54
Use BCs Arrays.constantTimeAreEqual(char[], char[])
2022-11-23 20:40:03 +01:00
527aab922e
Fix ModificationDetectionException by not calling PGPUtil.getDecoderStream()
2022-11-23 20:40:03 +01:00
ec28ba2924
SIGNATURE VERIFICATION IN OPENPGP SUCKS BIG TIME
2022-11-23 20:40:03 +01:00
4e44691ef6
Wip
2022-11-23 20:40:03 +01:00
45555bf82d
Wip: Work on OPS verification
2022-11-23 20:40:03 +01:00
e25f6e1712
Fix checkstyle issues
2022-11-23 20:40:03 +01:00
5c93eb3705
Wip: Introduce MessageMetadata class
2022-11-23 20:40:03 +01:00
efdf2bca0d
WIP: Play around with TeeInputStreams
2022-11-23 20:40:03 +01:00
7537c9520c
WIP: Add LayerMetadata class
2022-11-23 20:40:03 +01:00
54d7d0c7ae
Implement experimental signature verification (correctness only)
2022-11-23 20:40:03 +01:00
9366700895
Add read(b,off,len)
2022-11-23 20:40:03 +01:00
7b9db97212
Clean close() method
2022-11-23 20:40:03 +01:00
0753f4d38a
Work on getting signature verification to function again
2022-11-23 20:40:03 +01:00
d81c0d4400
Fix tests
2022-11-23 20:40:02 +01:00
e86062c427
WIP: Replace nesting with independent instancing
2022-11-23 20:40:02 +01:00
bf8949d7f4
WIP: Implement custom PGPDecryptionStream
2022-11-23 20:40:02 +01:00
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
ae88fdf4ab
Document ArmoredOutputStreamFactory.setVersionInfo(null)
2022-11-11 13:49:28 +01:00
86b06ee5e3
SOP: Hide armor version header by default
2022-11-11 13:46:43 +01:00
c253732ad9
Do not reject bnacksig signatures when they predate subkey binding date
...
Fixes #334
2022-11-09 15:44:20 +01:00
50d18a4581
Fix NPE when validating signature made by key without keyflags on direct key sigature
...
(Presumably) fixes #332
2022-11-07 15:34:18 +01:00
b02ae86ff6
Annotate SignatureSubpacketsUtil methods with @Nullable and @Nonnull
2022-11-07 15:34:18 +01:00
f5e4c7571c
Bump BC to 1.72, BCPG to 1.72.1
2022-11-02 10:53:53 +01:00
754fcf72a1
Implement ProducerOptions.setHideArmorHeaders()
...
Fixes #328
2022-10-31 11:43:24 +01:00
8834d8ad10
Increase timeframe for some tests which check expiration dates
2022-10-18 15:13:49 +02:00
f94917d01f
Fix checkstyle issue
2022-09-28 13:18:34 +02:00
6a2a604ba4
Update TODO for BC 173
2022-09-27 16:47:23 +02:00
d74a8d0408
Add PGPainless.asciiArmor(PGPSignature)
2022-09-27 16:28:31 +02:00
dac059c702
Add test for PGPainless.asciiArmor(key, stream)
2022-09-27 16:17:22 +02:00
5bccc1960e
Add PGPainless.asciiArmor(key, outputStream)
2022-09-27 16:12:26 +02:00
639d2a19f8
Remove unused provideSessionKeyDataDecryptorFactory() methods
2022-09-13 20:27:16 +02:00
609bb4556a
Use ImplementationFactory.getSessionKeyDataDecryptorFactory() method
2022-09-13 20:26:13 +02:00
0e45de9b4a
Formatting
2022-09-13 20:23:06 +02:00
9e403c1124
Add ImplementationFactory.getSessionKeyDataDecryptorFactory() and impls
2022-09-13 20:22:53 +02:00
8dfabf1842
Test decryption of messages using Session Key
2022-09-12 15:26:06 +02:00
7480c47fa7
Add behavior test to ensure that ArmoredInputStream cuts away any data outside of the armor
2022-09-08 18:15:52 +02:00
31c4570d10
Move finalization of signatures into own method
2022-09-07 13:48:59 +02:00
0dd54f27b7
Add test for processing message byte by byte
2022-09-05 15:43:32 +02:00
0bafc410a0
Add missing parseAndCombineSignatures call
...
For some reason this was missing from the single-byte read() method
of the SignatureInputStream, causing issues if draining the stream
byte by byte
2022-09-05 15:41:58 +02:00
9106d98449
Add tests for Certificate merging
2022-09-05 15:25:29 +02:00
cd0b9603e7
Add KeyRingUtils.injectCertification(keys, certification)
2022-09-05 15:15:58 +02:00
5be42b22bd
Add test for KeyRingUtils.keysPlusPublicKey
2022-09-05 14:45:22 +02:00
4ec38bb63b
Add tests for ArmoredInputStreamFactory
2022-09-05 14:37:23 +02:00
70ce4d45f4
Remove unused CRCinArmoredInputStreamWrapper.possiblyWrap()
2022-09-05 14:20:11 +02:00
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
3cd5a95d89
Rename inspectionDate to referenceTime
2022-09-03 13:48:02 +02:00
7189516dd4
Add documentation for modifyKeyRing(keys, date)
2022-09-03 13:46:32 +02:00
c3dc3c9d87
Allow modification of keys with custom reference date
...
Also, bind subkeys using SubkeyBindingSignatureBuilder
2022-09-03 13:42:58 +02:00
15046cdc32
Switch default S2K for secret key protection over to use SHA256 and add documentation
2022-08-31 21:37:31 +02:00
c6676d3c91
Add support for generating keys without user-ids
...
Fixes #296
2022-08-29 14:12:02 +02:00
bc24c4626a
Add ConsumerOptions.get() factory method
2022-08-29 13:00:50 +02:00
5746985bb7
Add EncryptionOptions.get() factory method
2022-08-29 12:46:36 +02:00
d1001412a1
Add SigningOptions.addDetachedSignature(protector, key) shortcut method
2022-08-29 12:36:16 +02:00
39ff2bca73
Fix javadoc of SigningOptions methods
2022-08-29 12:35:51 +02:00
1b04d67e1a
Remove unused SignatureSubpacketGeneratorUtil class and tests
2022-08-29 11:30:26 +02:00
0cc884523c
Integrate RevocationState into KeyRingInfo class
2022-08-29 11:30:10 +02:00
c73905d179
Import RevocationStateTest from wot branch
2022-08-29 11:12:42 +02:00
d019c0d5db
Add RevocationState implementation from wot branch
2022-08-29 11:09:32 +02:00
405e67c0cb
Add documentation to AlgorithmNegotiator classes
2022-08-29 11:06:17 +02:00
7faa6c580a
Remove deprecated ArmorUtils.createArmoredOutputStream()
2022-08-29 10:38:44 +02:00
054828ef8c
Remove deprecated EncryptionResult.getSymmetricKeyAlgorithm()
...
Use getEncryptionAlgorithm() instead
2022-08-29 10:37:55 +02:00
bc5dc50b78
Add KeyRingInfo.isSigningCapable()
...
Fixes #307
2022-08-09 15:08:59 +02:00
b9845912ee
Add tests for readKeyRing()
2022-08-08 13:20:28 +02:00
e6b89e2c3b
Add KeyRingReader.keyRing(*) mnethods to read either a public or secret key ring
2022-08-08 13:15:03 +02:00
ca09ac62ca
KeyRingInfo.isUsableFor*(): Check if primary key is revoked
2022-08-03 13:37:18 +02:00
c1de66e1d7
Fix javadoc lying about only encrypting to single subkeys
...
Fixes #305
2022-08-02 16:53:01 +02:00
895fcced9a
Add gradle CI action
2022-07-22 20:21:02 +02:00
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
c4bffad478
Abort (skip) tests reading from resources
2022-07-21 21:34:44 +02:00
f966c1ed07
Explicitly cast Long to long to fix ambiguity in debian tests
2022-07-20 18:07:42 +02:00
e67d5b405c
Add javadoc to ProducerOptions.noEncryptionNoSigning()
2022-07-18 14:50:53 +02:00
9b6d08f3c5
Add MODIFICATION_DETECTION_2 feature constant
2022-07-18 12:03:16 +02:00
cd5982cd47
Add AEADAlgorithm class and test
2022-07-18 11:30:37 +02:00
59adbe1d0a
Add SHA3 hash algorithms to HashAlgorithm class
2022-07-18 11:30:25 +02:00
fe913172d5
Add missing javadoc
2022-07-16 12:58:22 +02:00
6fc1d25db8
Merge branch 'fix298'
2022-07-16 12:37:20 +02:00
ba191a1d0f
Prevent adding NULL to symmetric algorithm preference when generating key
...
Fixes #301
2022-07-15 14:19:45 +02:00
dec3c8be60
Add SecretKeyRingEditor.replaceUserId(old,new,protector)
2022-07-15 14:00:41 +02:00
32e1f1234b
Add KeyRingUtils.publicKeyRingCollectionFrom(PGPSecretKeyRingCollection)
2022-07-15 13:21:59 +02:00
2ad67a85fb
Add test to make sure we do not allow unencrypted as sym alg preference
2022-07-15 13:20:23 +02:00
4730ac427b
Add test for #298
2022-07-13 14:54:16 +02:00
223cf009fc
Fix User-ID format in documentation and note invalid user-id formats in tests
2022-07-12 10:33:43 +02:00
50d31eb463
KeyRingTemplates: Add methods taking Passphrase as argument
2022-07-11 14:15:54 +02:00
52c8439da5
Prevent third-party assigned user-ids from being accidentally returned as primary user-id
...
Fixes #293
2022-07-10 23:02:00 +02:00
3842aa9ced
Add test to explore behavior when dealing with V3 keys
2022-07-08 15:08:45 +02:00
170aaaa0c5
Document KO protection utility class
2022-07-04 11:05:16 +02:00
8b66b3527e
Add tests for pet name certification and scoped delegation
2022-06-30 13:16:15 +02:00
a99ce15969
Forward userIdOnCertificate() method call
2022-06-30 13:11:27 +02:00
b8f4cc3935
Merge branch 'certification'
2022-06-29 16:01:03 +02:00
b2a5351cc3
Delete unused KeyRingValidator class
2022-06-29 16:00:21 +02:00
7e0b1b344c
s/{validation|evaluation}Date/referenceTime/g
2022-06-24 12:47:35 +02:00
0c0f82ce2e
Add KeyRingInfo constructor that takes Policy instance
2022-06-24 12:29:03 +02:00
3f40fb99ef
Add RevocationState enum
2022-06-24 12:28:56 +02:00
0c28c7a389
symmetrically encrypted messages are still encrypted
2022-06-23 11:46:19 +02:00
e5ba4f9933
Add buffer to improve encryption performance
2022-06-21 19:48:49 +02:00
8d1794544a
Fix indentation
2022-06-21 19:48:38 +02:00
b6975b38f1
Add tests for KeyFlag bitmask methods
2022-06-20 19:03:52 +02:00
0690a21360
Increase coverage of Policy class
2022-06-20 18:48:27 +02:00
37441a81e8
Add OpenPgpV5Fingerprint constructor tests using mocked v5 keys
2022-06-20 18:35:48 +02:00
2873de0d05
Include mockito as test dependency
2022-06-20 18:35:31 +02:00
fed3080ae8
Add tests to increase coverage of v5 fingerprint class
2022-06-20 18:19:24 +02:00
ca39efda99
Add test for CleartextSignedMessageUtil
2022-06-20 18:10:44 +02:00
82ff62b4e6
Remove unused NotYetImplementedException
2022-06-20 17:58:27 +02:00
a944d2a6b9
Fix build errors
2022-06-20 15:09:02 +02:00
7223b40b23
Add javadoc and indentation
2022-06-20 12:44:40 +02:00
8d2afdf3b6
Make certify() methods public
2022-06-20 12:44:40 +02:00
bbd94c6c9a
More documentation
2022-06-20 12:44:40 +02:00
1483ff9e24
Add another test for Trustworthiness
2022-06-20 12:44:40 +02:00
870af0e005
Add javadoc documentation to Trustworthiness class
2022-06-20 12:44:40 +02:00
d2b48e83d9
Implement certifying of certifications
2022-06-20 12:44:40 +02:00
fa5ddfd112
WIP: Implement delegations
...
THERE ARE THINGS BROKEN NOW. DO NOT MERGE!
2022-06-20 12:44:40 +02:00
c1170773bc
Implement certification of third party keys
2022-06-20 12:44:40 +02:00
75455f1a3c
Add OpenPgpMetadata.isCleartextSigned and use it in sop to determine if message was cleartext signed
2022-06-19 17:31:48 +02:00
2d60650cc6
Progress on SOP04 support
2022-06-19 16:59:42 +02:00
53df487e59
Adopt changes from SOP-Java and add test for using incapable keys
2022-06-19 16:59:42 +02:00
dd26b5230d
Use newly introduced modernKeyRing(userId) method
2022-06-19 16:59:42 +02:00
9a545a2936
Wip: SOP 4
2022-06-19 16:59:42 +02:00
57fbb469ea
Fix performance issue of encrypt and sign operations by buffering
2022-06-16 11:22:35 +02:00
444ec6d593
Add documentation to enforceBounds()
2022-06-01 13:40:07 +02:00