Skip to content

Commit 44f5bc3

Browse files
committed
KeyIdentifier: Allow parsing hex encoded Long Key-IDs
1 parent 951d6a2 commit 44f5bc3

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

pg/src/main/java/org/bouncycastle/bcpg/KeyIdentifier.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ public KeyIdentifier(String hexEncoded)
3232
*/
3333
public KeyIdentifier(byte[] fingerprint)
3434
{
35+
// Long KeyID
36+
if (fingerprint.length == 8)
37+
{
38+
keyId = FingerprintUtil.longFromRightMostBytes(fingerprint);
39+
this.fingerprint = null;
40+
return;
41+
}
42+
3543
this.fingerprint = Arrays.clone(fingerprint);
3644

3745
// v4

pg/src/test/java/org/bouncycastle/openpgp/test/KeyIdentifierTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public void performTest()
3939
testWildcardIdentifier();
4040
testIdentifierFromKeyId();
4141

42+
testIdentifierFromLongKeyId();
43+
4244
testIdentifierFromV4Fingerprint();
4345
testIdentifierFromV6Fingerprint();
4446

@@ -70,6 +72,17 @@ private void testIdentifierFromKeyId()
7072
isEquals("1234", identifier.toString());
7173
}
7274

75+
private void testIdentifierFromLongKeyId()
76+
{
77+
isEquals(5145070902336167606L, new KeyIdentifier("4766F6B9D5F21EB6").getKeyId());
78+
isEquals(5145070902336167606L, new KeyIdentifier("4766f6b9d5f21eb6").getKeyId());
79+
80+
isEquals(5507497285755629956L, new KeyIdentifier("4C6E8F99F6E47184").getKeyId());
81+
isEquals(1745434690267590572L, new KeyIdentifier("1839079A640B2FAC").getKeyId());
82+
83+
isTrue(new KeyIdentifier("1839079A640B2FAC").getFingerprint() == null);
84+
}
85+
7386
private void testIdentifierFromV4Fingerprint()
7487
{
7588
String hexFingerprint = "D1A66E1A23B182C9980F788CFBFCC82A015E7330";

0 commit comments

Comments
 (0)