diff options
author | William Faulk <wfaulk@webassign.net> | 2015-04-29 19:59:32 -0400 |
---|---|---|
committer | William Faulk <wfaulk@webassign.net> | 2015-05-04 16:46:15 -0400 |
commit | b06e7cd737c9f85c37fb2d17533cc1a2b25715a9 (patch) | |
tree | abf70471c2e4253033d9fb11adeb1196648f8c9d /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util | |
parent | 291f95db5ad2028ef252448e47b4ad22a297bf33 (diff) | |
download | open-keychain-b06e7cd737c9f85c37fb2d17533cc1a2b25715a9.tar.gz open-keychain-b06e7cd737c9f85c37fb2d17533cc1a2b25715a9.tar.bz2 open-keychain-b06e7cd737c9f85c37fb2d17533cc1a2b25715a9.zip |
Fix Bluetooth share without breaking others
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java | 30 |
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) |