Browse Source

GpgKeyLocator: Return subkeys instead of the first key for subkeys

Currently when a subkey is configured for signing via the git
user.signingkey configuration option the first key from the keyring for
this subkey would be returned for use (master key). The code has been
changed to return the requested key from the keyring instead.

Bug: 552288
Change-Id: I1c1cdf64c1667316a274ff9d829fc2b563797f2a
Signed-off-by: Roan Hofland <roan.hofland@hotmail.com>
next
Roan Hofland 5 years ago
parent
commit
68b8317a09
No known key found for this signature in database
GPG Key ID: 69FDC17B7BFDF862
  1. 8
      org.eclipse.jgit/src/org/eclipse/jgit/lib/internal/BouncyCastleGpgKeyLocator.java

8
org.eclipse.jgit/src/org/eclipse/jgit/lib/internal/BouncyCastleGpgKeyLocator.java

@ -202,7 +202,7 @@ class BouncyCastleGpgKeyLocator {
String fingerprint = Hex.toHexString(keyInfo.getFingerprint()) String fingerprint = Hex.toHexString(keyInfo.getFingerprint())
.toLowerCase(Locale.ROOT); .toLowerCase(Locale.ROOT);
if (fingerprint.endsWith(keyId)) { if (fingerprint.endsWith(keyId)) {
return getFirstPublicKey(keyBlob); return getPublicKey(keyBlob, keyInfo.getFingerprint());
} }
} }
return null; return null;
@ -522,6 +522,12 @@ class BouncyCastleGpgKeyLocator {
.getPublicKey(); .getPublicKey();
} }
private PGPPublicKey getPublicKey(KeyBlob blob, byte[] fingerprint)
throws IOException {
return ((PublicKeyRingBlob) blob).getPGPPublicKeyRing()
.getPublicKey(fingerprint);
}
private KeyBox readKeyBoxFile(Path keyboxFile) throws IOException, private KeyBox readKeyBoxFile(Path keyboxFile) throws IOException,
NoSuchAlgorithmException, NoSuchProviderException, NoSuchAlgorithmException, NoSuchProviderException,
NoOpenPgpKeyException { NoOpenPgpKeyException {

Loading…
Cancel
Save