From 649bfa10b77b3a353a26bffad60c5ba6ea7a02a2 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 25 Apr 2014 22:46:24 -0400 Subject: [PATCH] fix silly bug in signing key fingerprint calculation for display This was causing the first byte of the signature to be chopped off, so therefore it would not validate since the fingerprint of the cert from the net connection had the right fingerprint, but it was compared to the stored, truncated version. This also means that the database version needs to be bumped to trigger an upgrade so that the bad 62 char fingerprints are removed from the database. --- src/org/fdroid/fdroid/Utils.java | 4 ++-- src/org/fdroid/fdroid/data/DBHelper.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/fdroid/fdroid/Utils.java b/src/org/fdroid/fdroid/Utils.java index 62409bd15..8d146823a 100644 --- a/src/org/fdroid/fdroid/Utils.java +++ b/src/org/fdroid/fdroid/Utils.java @@ -178,7 +178,7 @@ public final class Utils { // return a fingerprint formatted for display public static String formatFingerprint(String fingerprint) { - if (fingerprint.length() != 62) // SHA-256 is 62 hex chars + if (fingerprint.length() != 64) // SHA-256 is 64 hex chars return "BAD FINGERPRINT"; String displayFP = fingerprint.substring(0, 2); for (int i = 2; i < fingerprint.length(); i = i + 2) @@ -218,7 +218,7 @@ public final class Utils { digest.update(key); byte[] fingerprint = digest.digest(); Formatter formatter = new Formatter(new StringBuilder()); - for (int i = 1; i < fingerprint.length; i++) { + for (int i = 0; i < fingerprint.length; i++) { formatter.format("%02X", fingerprint[i]); } ret = formatter.toString(); diff --git a/src/org/fdroid/fdroid/data/DBHelper.java b/src/org/fdroid/fdroid/data/DBHelper.java index 49cfda93a..4d81bb4b4 100644 --- a/src/org/fdroid/fdroid/data/DBHelper.java +++ b/src/org/fdroid/fdroid/data/DBHelper.java @@ -96,7 +96,7 @@ public class DBHelper extends SQLiteOpenHelper { + "versionName TEXT NOT NULL " + " );"; - private static final int DB_VERSION = 43; + private static final int DB_VERSION = 44; private Context context; @@ -322,7 +322,7 @@ public class DBHelper extends SQLiteOpenHelper { * calculate its fingerprint and save it to the database. */ private void addFingerprintToRepo(SQLiteDatabase db, int oldVersion) { - if (oldVersion < 29) { + if (oldVersion < 44) { if (!columnExists(db, TABLE_REPO, "fingerprint")) db.execSQL("alter table " + TABLE_REPO + " add column fingerprint text"); List oldrepos = new ArrayList();