aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java30
1 files changed, 27 insertions, 3 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
index 91a7d361a..0b80b5fe9 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
@@ -227,6 +227,14 @@ public class KeyFormattingUtils {
return buf.getLong();
}
+ public static int getShortKeyIdFromFingerprint(byte[] fingerprint) {
+ ByteBuffer buf = ByteBuffer.wrap(fingerprint);
+ // skip first 16 bytes of the fingerprint
+ buf.position(16);
+ // the last four bytes are the short key id (big endian, which is default order in ByteBuffer)
+ return buf.getInt();
+ }
+
/**
* Convert key id from long to 64 bit hex string
* <p/>
@@ -238,16 +246,24 @@ public class KeyFormattingUtils {
* @return
*/
public static String convertKeyIdToHex(long keyId) {
+ return convertKeyIdToHex(keyId, true);
+ }
+
+ public static String convertKeyIdToHex(long keyId, boolean header) {
long upper = keyId >> 32;
if (upper == 0) {
// this is a short key id
- return convertKeyIdToHexShort(keyId);
+ return convertKeyIdToHexShort(keyId, header);
}
- return "0x" + convertKeyIdToHex32bit(keyId >> 32) + convertKeyIdToHex32bit(keyId);
+ return header?"0x":"" + convertKeyIdToHex32bit(keyId >> 32) + convertKeyIdToHex32bit(keyId);
}
public static String convertKeyIdToHexShort(long keyId) {
- return "0x" + convertKeyIdToHex32bit(keyId);
+ return convertKeyIdToHexShort(keyId, true);
+ }
+
+ public static String convertKeyIdToHexShort(long keyId, boolean header) {
+ return header?"0x":"" + convertKeyIdToHex32bit(keyId);
}
private static String convertKeyIdToHex32bit(long keyId) {
@@ -258,6 +274,14 @@ public class KeyFormattingUtils {
return hexString;
}
+ public static String getKeyIdAsHexFromFingerprint(byte[] fingerprint, boolean header) {
+ return convertKeyIdToHex(getKeyIdFromFingerprint(fingerprint), header);
+ }
+
+ public static String getShortKeyIdAsHexFromFingerprint(byte[] fingerprint, boolean header) {
+ return convertKeyIdToHex(getShortKeyIdFromFingerprint(fingerprint), header);
+ }
+
/**
* Makes a human-readable version of a key ID, which is usually 64 bits: lower-case, no
* leading 0x, space-separated quartets (for keys whose length in hex is divisible by 4)