Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

High-Level OpenPGP API #1911

Open
wants to merge 154 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
154 commits
Select commit Hold shift + click to select a range
af5d798
PGPSignatureSubpacketGenerator: Add generics to the packet list
vanitasvitae Nov 28, 2024
7cb685b
PGPSignatureSubpacketVector: Add generics to the subpacket list
vanitasvitae Nov 28, 2024
812f2bb
PGPKeyRingGenerator: Various improvements
vanitasvitae Nov 28, 2024
7e8d9a9
Add PublicKeyUtils
vanitasvitae Nov 28, 2024
0700d5f
Operator changes
vanitasvitae Dec 3, 2024
50e7373
PGPEncryptedDataGenerator: Allow extraction of session-key
vanitasvitae Dec 3, 2024
9c8d8fb
PGPEncryptedDataList: Expose encrypted data packet
vanitasvitae Dec 3, 2024
07b3733
PGPSignature: Add isRevocation, isHardRevocation methods
vanitasvitae Dec 3, 2024
f32459f
API
vanitasvitae Dec 3, 2024
4629848
Adapt KeyIdentifier changes
vanitasvitae Dec 3, 2024
fc6a625
Add fromInputStream() methods for OpenPGPKey and OpenPGPCertificate
vanitasvitae Dec 11, 2024
90855b0
PGPEncryptedDataGenerator: Allow extraction of session-key
vanitasvitae Dec 3, 2024
6e7381a
OpenPGPV6KeyGenerator: Return OpenPGPKeys
vanitasvitae Dec 17, 2024
4c5841b
Add OpenPGPKey.getPrimarySecretKey
vanitasvitae Dec 17, 2024
ca2dd71
Introduce AbstractOpenPGPKeySignatureGenerator
vanitasvitae Dec 17, 2024
da89315
WIP: Start working on an OpenPGPKeyEditor
vanitasvitae Dec 17, 2024
43008eb
Fix checkstyle issues
vanitasvitae Dec 27, 2024
7847bd4
Fix signature verification
vanitasvitae Dec 27, 2024
d0d4698
Signature validity: Take into consideration validity of signing subke…
vanitasvitae Dec 27, 2024
ca92a68
Remove duplicate method
vanitasvitae Jan 2, 2025
f36b638
PGPEncryptedDataGenerator: Allow extraction of session-key
vanitasvitae Dec 3, 2024
94c20b4
API
vanitasvitae Dec 3, 2024
77e8a0d
Add PGPKeyPairGenerator class + tests
vanitasvitae Oct 2, 2024
9932608
Implement high-level OpenPGPV6KeyGenerator class
vanitasvitae Oct 3, 2024
25e6cd6
Remove methods for adding deprecated UserAttributes
vanitasvitae Oct 7, 2024
a4e3c17
Introduce BC implementation of OpenPGPV6KeyGenerator
vanitasvitae Oct 7, 2024
06a515e
Add BcOpenPGPV6KeyGeneratorTest to RegressionTests
vanitasvitae Oct 7, 2024
77a2c1b
Javadoc, Checkstyle
vanitasvitae Oct 7, 2024
6f76b48
AEAD secret key encryption
vanitasvitae Oct 8, 2024
ccbc35b
Further progress with the new KeyGenerator API
vanitasvitae Oct 11, 2024
bd9fca4
Add more javadoc to OpenPGPV6KeyGenerator
vanitasvitae Oct 11, 2024
872b85e
Remove unused AEADSecretKeyEncryptorBuilderProvider class
vanitasvitae Oct 21, 2024
5716328
Implement AEADProtectedPGPSecretKeyTest.reencryptKeyJca()
vanitasvitae Nov 28, 2024
8447e50
Add OpenPGPDetachedSignature generator and processor
vanitasvitae Dec 11, 2024
a9ec564
WIP: Try to make stream verifying
vanitasvitae Dec 12, 2024
5341eb7
Throw exception on unknown critical packets
vanitasvitae Dec 12, 2024
d9bcc6c
Verify integrity protected encrypted data
vanitasvitae Dec 12, 2024
ada3886
Fix NPE in OPS verification
vanitasvitae Dec 22, 2024
ad70e68
Rename VerifyingInputStream to IntegrityProtectedInputStream
vanitasvitae Dec 27, 2024
9c2c47e
Add support for signature creation time intervals
vanitasvitae Dec 27, 2024
8b77a2d
Fix NPE when negotiating SEIPD2 algorithm suite if key has no Preferr…
vanitasvitae Dec 28, 2024
b256175
Fix checkstyle
vanitasvitae Dec 28, 2024
42c88e7
WIP: Work on OpenPGPPolicy
vanitasvitae Dec 28, 2024
f1a056c
More work on the policy class
vanitasvitae Dec 31, 2024
fe3e7b8
More policy progress
vanitasvitae Dec 31, 2024
8be9ac4
Move OpenPGPImplementation subclasses into packages
vanitasvitae Jan 2, 2025
95af45d
Move armor comment methods to ArmoredOutputStream.Builder
vanitasvitae Jan 2, 2025
cfa5e63
Fix lambdas
vanitasvitae Jan 2, 2025
60f65c8
Remove fingerprintSlices() method
vanitasvitae Jan 3, 2025
7ea0e2b
Add getPrimaryUserId() methods
vanitasvitae Jan 3, 2025
e445d95
Add Locale to toUpperCase() calls
vanitasvitae Jan 3, 2025
0e1aa43
Signature sanitization: Verify policy
vanitasvitae Jan 3, 2025
741be57
Add getKeyExpirationTime() method
vanitasvitae Jan 3, 2025
74352f0
Consider all non-soft revocation reasons as hard
vanitasvitae Jan 3, 2025
93fa4d8
Reject weak document signature hash algorithms
vanitasvitae Jan 3, 2025
896f642
Do not sign with weak algorithms
vanitasvitae Jan 3, 2025
2d22d5a
Add javadoc to OpenPGPDetachedSignatureGenerator
vanitasvitae Jan 8, 2025
0c1575e
Add javadoc to OpenPGPDetachedSignatureProcessor
vanitasvitae Jan 8, 2025
a80072d
OpenPGPCertificate, OpenPGPKey: Allow passing in custom OpenPGPPolicy
vanitasvitae Jan 8, 2025
7dc743e
OpenPGPCertificate, OpenPGPKey: Replace factory methods with OpenPGPK…
vanitasvitae Jan 8, 2025
6af5d39
Add OpenPGPApi class
vanitasvitae Jan 8, 2025
e6330c4
Add tests for OpenPGPKeyEditor
vanitasvitae Jan 8, 2025
69ed3f1
Throw exception if key has no usable encryption subkeys
vanitasvitae Jan 10, 2025
5cc2a66
Key generator: Only try to add non-null user-ids
vanitasvitae Jan 10, 2025
1b1c4ab
Fix JcePBESecretKeyDecryptorBuilder setting provider
vanitasvitae Jan 10, 2025
c469e3b
Implement JcaOpenPGPApi
vanitasvitae Jan 10, 2025
01a4b06
Improve OpenPGPKeyEditorTest
vanitasvitae Jan 10, 2025
7c846d6
Introduce SignatureParameters class to simplify key editor
vanitasvitae Jan 10, 2025
ccf0328
Add package-info with architectural overview
vanitasvitae Jan 11, 2025
dd86c21
Simplify OpenPGPKeyGenerator to not allow for per-key passphrases
vanitasvitae Jan 11, 2025
7dc03aa
Unify message generator API
vanitasvitae Jan 12, 2025
a6a897b
Add javadoc and allow use of SignatureParameters in message generator
vanitasvitae Jan 14, 2025
a45c22a
Run OpenPGPMessageGeneratorTest with both APIs
vanitasvitae Jan 14, 2025
ffb0f5f
Formatting
vanitasvitae Jan 14, 2025
8c6f995
Move BC-specific key generation test to general key generation tests
vanitasvitae Jan 14, 2025
1b59694
Javadoc and duplication removal
vanitasvitae Jan 14, 2025
7eeaca4
Add test for key generation without signatures
vanitasvitae Jan 14, 2025
2b342d5
Perform OpenPGPCertificateTests with all APIs
vanitasvitae Jan 14, 2025
fa281a7
Perform OpenPGPMessageProcessorTest with all APIs
vanitasvitae Jan 14, 2025
b1ba857
Bring OpenPGPDetachedSignatureGenerator in line with the other APIs
vanitasvitae Jan 14, 2025
661ec45
Add base test for OpenPGPDetachedSignatureGenerator and Processor
vanitasvitae Jan 15, 2025
2e37f2e
Optimize DefaultKeyPassphraseProvider
vanitasvitae Jan 16, 2025
a46ae61
Improve API of OpenPGPDetachedSignatureGenerator
vanitasvitae Jan 16, 2025
c26cf16
Add test for detached signing with non-signing-capable key
vanitasvitae Jan 16, 2025
b7708ce
Add test for detached signing with incapable explicit subkey
vanitasvitae Jan 16, 2025
7b2740e
Move shared document signature generation logic to super class
vanitasvitae Jan 16, 2025
6a1ad0d
OpenPGPDefaultPolicy: Reject ElGamal, DSA keys
vanitasvitae Jan 16, 2025
b5583fd
Sanitize key protection methods on unlock()
vanitasvitae Jan 16, 2025
79f0a08
Fix verification of embedded primary-key binding signatures
vanitasvitae Jan 20, 2025
38a231a
Remove test using ElGamal key
vanitasvitae Jan 20, 2025
7c96f69
More fine-grained addSigningKey() methods
vanitasvitae Jan 20, 2025
536916c
When parsing keys and certs: Ignore marker packets
vanitasvitae Jan 20, 2025
9f94b23
OpenPGPCertificate: Add javadoc
vanitasvitae Jan 20, 2025
1b4fc5a
Remove another test case using unusable ElGamal key
vanitasvitae Jan 20, 2025
2daf5df
WIP: Open up OpenPGPKeyGenerator for non-v6 keys
vanitasvitae Jan 20, 2025
1caffd2
Test DoubleBufferedOutputStream
vanitasvitae Jan 22, 2025
99e9afe
More cleanup in DoubleBufferInputStream
vanitasvitae Jan 23, 2025
7c6be1f
Add javadoc to SignatureParameters
vanitasvitae Jan 23, 2025
9e2eb7d
Add javadoc to bc and jcajce classes
vanitasvitae Jan 23, 2025
a9abf56
Clean up OpenPGPKeyPrinter
vanitasvitae Jan 23, 2025
3444985
Add javadoc to UTCUtil
vanitasvitae Jan 23, 2025
773533e
Suppress warnings in OpenPGPKeyPrinter
vanitasvitae Jan 23, 2025
4f61652
Introduce OpenPGPSignatureException, exposing the OpenPGPSignature
vanitasvitae Jan 23, 2025
dcc309e
Introduce OpenPGPKeyException exposing problematic (component) keys
vanitasvitae Jan 23, 2025
ff16e8b
Add javadoc to OpenPGPApi
vanitasvitae Jan 23, 2025
4e2403f
Remove useless method overrides
vanitasvitae Jan 23, 2025
a0fc6ce
Add javadoc to OpenPGPPolicy
vanitasvitae Jan 23, 2025
05edc83
Add javadoc to OpenPGPKeyReader
vanitasvitae Jan 23, 2025
06b3de8
Add javadoc to OpenPGPKeyEditor
vanitasvitae Jan 23, 2025
c9bb16b
Implement further functionality of OpenPGPKeyEditor
vanitasvitae Jan 24, 2025
ce14a02
Introduce APITest class for OpenPGPApi-related tests
vanitasvitae Jan 24, 2025
37ef138
Resolve some TODOs
vanitasvitae Jan 27, 2025
0e0ddf5
Add KeyIdentifier.toPrettyPrint()
vanitasvitae Jan 27, 2025
074e209
OpenPGPSignature.toAsciiArmoredString(): Add pretty-printed identifier
vanitasvitae Jan 27, 2025
73ab6c3
Add missing javadoc
vanitasvitae Jan 27, 2025
80994c3
Add more missing javadoc
vanitasvitae Jan 27, 2025
99d7e21
SignatureParameters: sanitize non-null creationTime
vanitasvitae Jan 27, 2025
0e78b7f
OpenPGPCertificate: Explicitly check primary-user-id sigs for prefere…
vanitasvitae Jan 27, 2025
965def5
Fix typo
vanitasvitae Jan 28, 2025
3c6cf05
PGPKeyPairGenerator: Implement generation of NIST ECDH and ECDSA keys
vanitasvitae Jan 28, 2025
faf5134
PGPSecretKey: Properly pass public key to PGPSignatureGenerator
vanitasvitae Jan 29, 2025
a17d97d
Fix javadoc of OpenPGPSignature
vanitasvitae Jan 29, 2025
7a824e6
Add more missing methods
vanitasvitae Jan 29, 2025
449205a
Add PGPKeyRing.getKeyIdentifier()
vanitasvitae Jan 30, 2025
4fefadf
OpenPGPSecretKey.unlock(): Return PGPKeyPair instead of PGPPrivateKey
vanitasvitae Jan 30, 2025
cf81642
Fix initialization of keys with non-UTF8 user-ids
vanitasvitae Jan 30, 2025
c96744c
Properly throw MissingIssuerCertException for third-party certifications
vanitasvitae Jan 30, 2025
0fbacdb
Add OpenPGPCertificate.getLastModificationDate() methods
vanitasvitae Jan 31, 2025
cf2050f
Properly compare OpenPGPSignatureChain objects to another
vanitasvitae Jan 31, 2025
0419ff4
Add user-id convenience methods and fix validity checks of key signat…
vanitasvitae Feb 3, 2025
cfc9904
Fix ordering of OpenPGPSignatureChains
vanitasvitae Feb 4, 2025
207916a
Only return latest key creation time if no sigs found
vanitasvitae Feb 4, 2025
45c1b9e
Implement getKeyExpirationTime
vanitasvitae Feb 4, 2025
443e504
Signature creation time collisions: certifications beat soft revocations
vanitasvitae Feb 4, 2025
0f28bd9
Fix sideeffect of accidental modification of OpenPGPSignatureChains i…
vanitasvitae Feb 4, 2025
9d15fe1
OpenPGPCertificate, OpenPGPKey: Add isSecretKey() to avoid instanceof…
vanitasvitae Feb 5, 2025
a7f6b7b
OpenPGPComponentKey: Add equals() implementation
vanitasvitae Feb 5, 2025
0df768f
Invalidate signing keys with expired primary-key binding (backsignature)
vanitasvitae Feb 5, 2025
484fa8c
Fix NPE in Link.until()
vanitasvitae Feb 6, 2025
5f73cd4
Check all primary key binding signatures
vanitasvitae Feb 7, 2025
4d47090
Add OpenPGPKeyReader.parseKeysOrCertificates()
vanitasvitae Feb 10, 2025
dd8c3fd
Improvements to OpenPGPCertificate, OpenPGPKey
vanitasvitae Feb 10, 2025
4e9fbb0
Fix NPE when extracting KeyIdentifier from v3 signatures
vanitasvitae Feb 11, 2025
d213463
Add isPrimaryKey() to OpenPGPComponentKey
vanitasvitae Feb 13, 2025
4f501ed
Fix checkstyle issues
vanitasvitae Feb 13, 2025
a29e8e1
Introduce OpenPGPPrivateKey class
vanitasvitae Feb 13, 2025
c844127
SecretKeyPacket: Properly pass newPacketFormat down to PublicKeyPacket
vanitasvitae Feb 13, 2025
ac7c601
Add test for changing individual key passphrases
vanitasvitae Feb 13, 2025
f64fee9
Use new passphrase-change API in OpenPGPKeyEditor
vanitasvitae Feb 13, 2025
7e5bfe7
Make sure, that after locking, the key uses a proper protection method
vanitasvitae Feb 13, 2025
317c865
OpenPGPCertificate: Store subkeys in LinkedHashMap to preserve ordering
vanitasvitae Feb 17, 2025
7917ff8
Properly parse certs or keys from concatenated armored blocks
vanitasvitae Feb 18, 2025
3fbddb7
OpenPGPPrivateKey: Add getPublicKey() method
vanitasvitae Feb 19, 2025
a85eb18
Move preferences getters from ComponentKey to CertificateComponent
vanitasvitae Feb 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add KeyIdentifier.toPrettyPrint()
vanitasvitae committed Jan 27, 2025
commit 0e0ddf51c27ba94a56c7222e221a0d6ba963f340
13 changes: 13 additions & 0 deletions pg/src/main/java/org/bouncycastle/bcpg/KeyIdentifier.java
Original file line number Diff line number Diff line change
@@ -250,4 +250,17 @@ public String toString()
// -DM Hex.toHexString
return Hex.toHexString(fingerprint).toUpperCase(Locale.getDefault());
}

public String toPrettyPrint()
{
if (isWildcard())
{
return "*";
}
if (fingerprint == null)
{
return "0x" + Long.toHexString(keyId).toUpperCase(Locale.getDefault());
}
return FingerprintUtil.prettifyFingerprint(fingerprint);
}
}