aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-09-19 13:44:17 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-09-19 13:44:17 +0200
commit1ad36e2dbdd7f6e6d6c68723fe82512dd6c01371 (patch)
tree1ad0c14bcb920bde99b038592631551abf7a666e /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java
parent99bf77dd8435932fcd039964fec3f00d4d2544c0 (diff)
downloadopen-keychain-1ad36e2dbdd7f6e6d6c68723fe82512dd6c01371.tar.gz
open-keychain-1ad36e2dbdd7f6e6d6c68723fe82512dd6c01371.tar.bz2
open-keychain-1ad36e2dbdd7f6e6d6c68723fe82512dd6c01371.zip
Beautify key id (thanks to Tim Bray)
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.java54
1 files changed, 54 insertions, 0 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 fc206aaf5..2b56dd3a7 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
@@ -22,9 +22,13 @@ import android.content.Context;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.PorterDuff;
+import android.graphics.Typeface;
import android.text.Spannable;
+import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
+import android.text.style.StyleSpan;
+import android.text.style.TypefaceSpan;
import android.view.View;
import android.widget.ImageView;
@@ -250,6 +254,56 @@ public class KeyFormattingUtils {
return hexString;
}
+ /**
+ * 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)
+ *
+ * @param idHex - the key id
+ * @return - the beautified form
+ */
+ public static SpannableString beautifyKeyId(String idHex) {
+ if (idHex.startsWith("0x")) {
+ idHex = idHex.substring(2);
+ }
+ if ((idHex.length() % 4) == 0) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < idHex.length(); i += 4) {
+ if (i != 0) {
+ sb.appendCodePoint(0x2008); // U+2008 PUNCTUATION SPACE
+ }
+ sb.append(idHex.substring(i, i + 4).toLowerCase(Locale.US));
+ }
+ idHex = sb.toString();
+ }
+
+ SpannableString ss = new SpannableString(idHex);
+ ss.setSpan(new TypefaceSpan("monospace"), 0, idHex.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ return ss;
+ }
+
+ /**
+ * 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)
+ *
+ * @param keyId - the key id
+ * @return - the beautified form
+ */
+ public static SpannableString beautifyKeyId(long keyId) {
+ return beautifyKeyId(convertKeyIdToHex(keyId));
+ }
+
+ public static SpannableStringBuilder beautifyKeyIdWithPrefix(Context context, String idHex) {
+ SpannableStringBuilder ssb = new SpannableStringBuilder();
+ ssb.append("ID");
+ ssb.append(": ");
+ ssb.append(beautifyKeyId(idHex));
+ return ssb;
+ }
+
+ public static SpannableStringBuilder beautifyKeyIdWithPrefix(Context context, long keyId) {
+ return beautifyKeyIdWithPrefix(context, convertKeyIdToHex(keyId));
+ }
+
public static SpannableStringBuilder colorizeFingerprint(String fingerprint) {
// split by 4 characters
fingerprint = fingerprint.replaceAll("(.{4})(?!$)", "$1 ");