|
1 | 1 | package org.bouncycastle.bcpg; |
2 | 2 |
|
3 | 3 | import org.bouncycastle.util.Pack; |
| 4 | +import org.bouncycastle.util.encoders.Hex; |
4 | 5 |
|
5 | 6 | public class FingerprintUtil |
6 | 7 | { |
@@ -112,4 +113,54 @@ public static void writeKeyID(long keyID, byte[] bytes) |
112 | 113 | { |
113 | 114 | writeKeyID(keyID, bytes, 0); |
114 | 115 | } |
| 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 | + } |
115 | 166 | } |
0 commit comments