diff --git a/app/src/main/java/com/aurora/store/util/CertUtil.kt b/app/src/main/java/com/aurora/store/util/CertUtil.kt index 8d17c64ed..e7c3d3ac8 100644 --- a/app/src/main/java/com/aurora/store/util/CertUtil.kt +++ b/app/src/main/java/com/aurora/store/util/CertUtil.kt @@ -25,22 +25,18 @@ import android.content.pm.PackageManager import android.util.Base64 import android.util.Log import com.aurora.extensions.generateX509Certificate +import com.aurora.extensions.getInstallerPackageNameCompat import com.aurora.extensions.isPAndAbove import com.aurora.store.util.PackageUtil.getPackageInfo import java.security.MessageDigest import java.security.cert.X509Certificate -import java.util.Locale object CertUtil { private val TAG = "CertUtil" - private val fdroidSubjects = listOf("FDROID", "GUARDIANPROJECT.INFO") fun isFDroidApp(context: Context, packageName: String): Boolean { - return getX509Certificates( - context, - packageName - ).any { it.subjectDN.name.uppercase(Locale.getDefault()) in fdroidSubjects } + return isInstalledByFDroid(context, packageName) || isSignedByFDroid(context, packageName) } fun getEncodedCertificateHashes(context: Context, packageName: String): List { @@ -60,6 +56,24 @@ object CertUtil { } } + private fun isSignedByFDroid(context: Context, packageName: String): Boolean { + return getX509Certificates(context, packageName).any { cert -> + cert.subjectDN.name.split(",").associate { + val (left, right) = it.split("=") + left to right + }["O"] == "fdroid.org" + } + } + + private fun isInstalledByFDroid(context: Context, packageName: String): Boolean { + val fdroidPackages = listOf( + "org.fdroid.basic", "org.fdroid.fdroid", "org.fdroid.fdroid.privileged" + ) + return fdroidPackages.contains( + context.packageManager.getInstallerPackageNameCompat(packageName) + ) + } + private fun getX509Certificates(context: Context, packageName: String): List { return try { val packageInfo = getPackageInfoWithSignature(context, packageName) diff --git a/app/src/main/java/com/aurora/store/util/PackageUtil.kt b/app/src/main/java/com/aurora/store/util/PackageUtil.kt index 5111c4725..6f0baa84d 100644 --- a/app/src/main/java/com/aurora/store/util/PackageUtil.kt +++ b/app/src/main/java/com/aurora/store/util/PackageUtil.kt @@ -199,16 +199,9 @@ object PackageUtil { /*Filter F-Droid apps*/ if (isFDroidFilterEnabled) { - packageInfoList = packageInfoList - .filter { - val packageInstaller = packageManager.getInstallerPackageNameCompat(it.packageName) - !listOf( - "org.fdroid.fdroid", - "org.fdroid.fdroid.privileged" - ).contains(packageInstaller) - }.filter { - !CertUtil.isFDroidApp(context, it.packageName) - } + packageInfoList = packageInfoList.filter { + !CertUtil.isFDroidApp(context, it.packageName) + } } packageInfoList.forEach {