From 3a36bb5c2ecd80e945c184a7cdd2549886148b61 Mon Sep 17 00:00:00 2001 From: Glenn Carremans Date: Wed, 21 Oct 2020 14:58:19 +0200 Subject: [PATCH 1/7] Added check platform signature available --- .../main/java/org/fdroid/fdroid/IndexV1Updater.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java index 187750581..57554c0b7 100644 --- a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java +++ b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java @@ -24,7 +24,8 @@ package org.fdroid.fdroid; import android.content.ContentValues; import android.content.Context; - +import android.content.pm.PackageInfo; +import android.net.Uri; import androidx.annotation.NonNull; import android.text.TextUtils; import android.util.Log; @@ -92,6 +93,8 @@ public class IndexV1Updater extends IndexUpdater { public static final String SIGNED_FILE_NAME = "index-v1.jar"; public static final String DATA_FILE_NAME = "index-v1.json"; + private String platformSigCache; + public IndexV1Updater(@NonNull Context context, @NonNull Repo repo) { super(context, repo); } @@ -298,6 +301,11 @@ public class IndexV1Updater extends IndexUpdater { repo.maxage = getIntRepoValue(repoMap, "maxage"); repo.version = getIntRepoValue(repoMap, "version"); + if (platformSigCache == null || platformSigCache.isEmpty()) { + PackageInfo androidPackageInfo = Utils.getPackageInfo(context, "android"); + platformSigCache = Utils.getPackageSig(androidPackageInfo); + } + RepoPersister repoPersister = new RepoPersister(context, repo); if (apps != null && apps.length > 0) { int appCount = 0; @@ -319,6 +327,8 @@ public class IndexV1Updater extends IndexUpdater { for (Apk apk : apks) { if (!apk.isApk()) { app.isApk = false; + } else if (apk.sig.equalsIgnoreCase(platformSigCache)) { + app.preferredSigner = platformSigCache; } } } From 69fc823bebcf632fc5eef1bf3ef4bacc27171e6a Mon Sep 17 00:00:00 2001 From: Glenn C Date: Thu, 22 Oct 2020 07:17:37 +0000 Subject: [PATCH 2/7] Apply 1 suggestion(s) to 1 file(s) --- app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java index 57554c0b7..1bbfc52f7 100644 --- a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java +++ b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java @@ -301,7 +301,7 @@ public class IndexV1Updater extends IndexUpdater { repo.maxage = getIntRepoValue(repoMap, "maxage"); repo.version = getIntRepoValue(repoMap, "version"); - if (platformSigCache == null || platformSigCache.isEmpty()) { + if (TextUtils.isEmpty(platformSigCache) { PackageInfo androidPackageInfo = Utils.getPackageInfo(context, "android"); platformSigCache = Utils.getPackageSig(androidPackageInfo); } From efe757be077c8a9f2db21c58c624ba3f56261f95 Mon Sep 17 00:00:00 2001 From: Glenn C Date: Thu, 22 Oct 2020 07:20:21 +0000 Subject: [PATCH 3/7] Replaced `equalsIgnoreCase()` with `equals()` --- app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java index 1bbfc52f7..a03e49829 100644 --- a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java +++ b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java @@ -327,7 +327,7 @@ public class IndexV1Updater extends IndexUpdater { for (Apk apk : apks) { if (!apk.isApk()) { app.isApk = false; - } else if (apk.sig.equalsIgnoreCase(platformSigCache)) { + } else if (apk.sig.equals(platformSigCache)) { app.preferredSigner = platformSigCache; } } From 47e8e433184ad9e4ebf53392dac1eb7f2dc0d218 Mon Sep 17 00:00:00 2001 From: Glenn C Date: Thu, 22 Oct 2020 07:33:13 +0000 Subject: [PATCH 4/7] Fixed "apply suggestion" error --- app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java index a03e49829..f7a88cd49 100644 --- a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java +++ b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java @@ -301,7 +301,7 @@ public class IndexV1Updater extends IndexUpdater { repo.maxage = getIntRepoValue(repoMap, "maxage"); repo.version = getIntRepoValue(repoMap, "version"); - if (TextUtils.isEmpty(platformSigCache) { + if (TextUtils.isEmpty(platformSigCache)) { PackageInfo androidPackageInfo = Utils.getPackageInfo(context, "android"); platformSigCache = Utils.getPackageSig(androidPackageInfo); } From dc314963f9d27762b6a95d7a0c7d809560cdbfae Mon Sep 17 00:00:00 2001 From: Glenn Carremans Date: Thu, 22 Oct 2020 09:57:53 +0200 Subject: [PATCH 5/7] Changed to static property --- app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java index f7a88cd49..21ae6c798 100644 --- a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java +++ b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java @@ -93,7 +93,7 @@ public class IndexV1Updater extends IndexUpdater { public static final String SIGNED_FILE_NAME = "index-v1.jar"; public static final String DATA_FILE_NAME = "index-v1.json"; - private String platformSigCache; + private static String platformSigCache; public IndexV1Updater(@NonNull Context context, @NonNull Repo repo) { super(context, repo); From ee1a794680be01d7f966cc456bdb34979580a5d3 Mon Sep 17 00:00:00 2001 From: Glenn Carremans Date: Mon, 26 Oct 2020 12:17:32 +0100 Subject: [PATCH 6/7] Fixed bug package signature info not included --- .../java/org/fdroid/fdroid/IndexV1Updater.java | 2 +- app/src/main/java/org/fdroid/fdroid/Utils.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java index 21ae6c798..f9c333373 100644 --- a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java +++ b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java @@ -302,7 +302,7 @@ public class IndexV1Updater extends IndexUpdater { repo.version = getIntRepoValue(repoMap, "version"); if (TextUtils.isEmpty(platformSigCache)) { - PackageInfo androidPackageInfo = Utils.getPackageInfo(context, "android"); + PackageInfo androidPackageInfo = Utils.getPackageInfoWithSignatures(context, "android"); platformSigCache = Utils.getPackageSig(androidPackageInfo); } diff --git a/app/src/main/java/org/fdroid/fdroid/Utils.java b/app/src/main/java/org/fdroid/fdroid/Utils.java index 957746579..b9b101d48 100644 --- a/app/src/main/java/org/fdroid/fdroid/Utils.java +++ b/app/src/main/java/org/fdroid/fdroid/Utils.java @@ -19,6 +19,7 @@ package org.fdroid.fdroid; +import android.annotation.SuppressLint; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -808,6 +809,21 @@ public final class Utils { return null; } + /** + * Try to get the {@link PackageInfo} with signature info for the {@code packageName} provided. + * + * @return null on failure + */ + @SuppressLint("PackageManagerGetSignatures") + public static PackageInfo getPackageInfoWithSignatures(Context context, String packageName) { + try { + return context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES); + } catch (PackageManager.NameNotFoundException e) { + debugLog(TAG, "Could not get PackageInfo: ", e); + } + return null; + } + /** * Useful for debugging during development, so that arbitrary queries can be made, and their * results inspected in the debugger. From 30b6c28a52d982594c99ffdb2f9eb2c71115fd5c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 23 Feb 2021 13:02:33 +0100 Subject: [PATCH 7/7] remove unused import --- app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java index f9c333373..73d4b8b53 100644 --- a/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java +++ b/app/src/main/java/org/fdroid/fdroid/IndexV1Updater.java @@ -25,7 +25,6 @@ package org.fdroid.fdroid; import android.content.ContentValues; import android.content.Context; import android.content.pm.PackageInfo; -import android.net.Uri; import androidx.annotation.NonNull; import android.text.TextUtils; import android.util.Log;