Skip to content

Commit 50e5d7a

Browse files
committed
FingerprintUtil: Add prettifyFingerprint method
1 parent 303d59f commit 50e5d7a

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

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

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.bouncycastle.bcpg;
22

33
import org.bouncycastle.util.Pack;
4+
import org.bouncycastle.util.encoders.Hex;
45

56
public class FingerprintUtil
67
{
@@ -112,4 +113,54 @@ public static void writeKeyID(long keyID, byte[] bytes)
112113
{
113114
writeKeyID(keyID, bytes, 0);
114115
}
116+
117+
public static String prettifyFingerprint(byte[] fingerprint)
118+
{
119+
String hex = Hex.toHexString(fingerprint);
120+
StringBuilder sb = new StringBuilder();
121+
switch (hex.length())
122+
{
123+
case 32:
124+
// v3 keys
125+
for (int i = 0; i < 4; i++)
126+
{
127+
sb.append(hex, i * 4, (i + 1) * 4).append(' ');
128+
}
129+
sb.append(' ');
130+
for (int i = 4; i < 7; i++)
131+
{
132+
sb.append(hex, i * 4, (i + 1) * 4).append(' ');
133+
}
134+
sb.append(hex, 28, 32);
135+
return sb.toString();
136+
case 40:
137+
// v4 keys
138+
for (int i = 0; i <= 4; i++)
139+
{
140+
sb.append(hex, i * 4, (i + 1) * 4).append(' ');
141+
}
142+
sb.append(' ');
143+
for (int i = 5; i <= 8; i++)
144+
{
145+
sb.append(hex, i * 4, (i + 1) * 4).append(' ');
146+
}
147+
sb.append(hex, 36, 40);
148+
return sb.toString();
149+
case 64:
150+
// v5, v6 keys
151+
for (int i = 0; i < 4; i++)
152+
{
153+
sb.append(hex, i * 8, (i + 1) * 8).append(' ');
154+
}
155+
sb.append(' ');
156+
for (int i = 4; i < 7; i++)
157+
{
158+
sb.append(hex, i * 8, (i + 1) * 8).append(' ');
159+
}
160+
sb.append(hex, 56, 64);
161+
return sb.toString();
162+
default:
163+
return hex;
164+
}
165+
}
115166
}

0 commit comments

Comments
 (0)