Loading app/src/main/java/foundation/e/apps/application/model/IntegrityVerificationTask.kt +57 −23 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.content.pm.Signature import android.os.AsyncTask import android.os.Environment import android.os.Handler import android.os.Looper import android.util.Log Loading Loading @@ -53,14 +54,20 @@ class IntegrityVerificationTask( private val fullData: FullData, private val integrityVerificationCallback: IntegrityVerificationCallback ) : AsyncTask<Context, Void, Context>() { private lateinit var systemJsonData: JSONObject private var verificationSuccessful: Boolean = false private var TAG = "IntegrityVerificationTask" override fun doInBackground(vararg context: Context): Context { try { verificationSuccessful = if (isSystemApplication(fullData.packageName)) { verifySystemSignature(context[0]) //verifySystemSignature(context[0]) verifySystemValues(context[0]) } else if (isfDroidApplication(fullData.packageName)) { verifyFdroidSignature(context[0]) } else { Loading Loading @@ -88,9 +95,30 @@ class IntegrityVerificationTask( if (!fullData.getLastVersion()?.signature.isNullOrEmpty()) { return fullData.getLastVersion()?.signature == getSystemSignature(context.packageManager)?.toCharsString() } else{ } return false } private fun verifySystemValues(context: Context): Boolean { val pm: PackageManager = context.packageManager val fullPath: String = applicationInfo.getApkFile( context, fullData.basicData ).absolutePath val info = pm.getPackageArchiveInfo(fullPath, 0) if (info != null) { Log.e("TAG", ".................."+ info.packageName) Log.e("TAG", ".................."+ info.signatures) }; return false; // // return (fullData.basicData.id==systemJsonData.getString("project_id") // && fullData.basicData.name==systemJsonData.getString("app_name")) } private fun getFirstSignature(pkg: PackageInfo?): Signature? { return if (pkg?.signatures != null && pkg.signatures.isNotEmpty()) { Loading Loading @@ -159,8 +187,14 @@ class IntegrityVerificationTask( } } try { return JSONObject(jsonResponse).has(packageName); if(JSONObject(jsonResponse).has(packageName)){ systemJsonData = JSONObject(jsonResponse).getJSONObject(packageName); return true } else{ return false } // return JSONObject(jsonResponse).has(packageName); } catch (e: Exception) { if (e is JSONException) { Log.d(TAG, "$packageName is not a system application") Loading Loading
app/src/main/java/foundation/e/apps/application/model/IntegrityVerificationTask.kt +57 −23 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.content.pm.Signature import android.os.AsyncTask import android.os.Environment import android.os.Handler import android.os.Looper import android.util.Log Loading Loading @@ -53,14 +54,20 @@ class IntegrityVerificationTask( private val fullData: FullData, private val integrityVerificationCallback: IntegrityVerificationCallback ) : AsyncTask<Context, Void, Context>() { private lateinit var systemJsonData: JSONObject private var verificationSuccessful: Boolean = false private var TAG = "IntegrityVerificationTask" override fun doInBackground(vararg context: Context): Context { try { verificationSuccessful = if (isSystemApplication(fullData.packageName)) { verifySystemSignature(context[0]) //verifySystemSignature(context[0]) verifySystemValues(context[0]) } else if (isfDroidApplication(fullData.packageName)) { verifyFdroidSignature(context[0]) } else { Loading Loading @@ -88,9 +95,30 @@ class IntegrityVerificationTask( if (!fullData.getLastVersion()?.signature.isNullOrEmpty()) { return fullData.getLastVersion()?.signature == getSystemSignature(context.packageManager)?.toCharsString() } else{ } return false } private fun verifySystemValues(context: Context): Boolean { val pm: PackageManager = context.packageManager val fullPath: String = applicationInfo.getApkFile( context, fullData.basicData ).absolutePath val info = pm.getPackageArchiveInfo(fullPath, 0) if (info != null) { Log.e("TAG", ".................."+ info.packageName) Log.e("TAG", ".................."+ info.signatures) }; return false; // // return (fullData.basicData.id==systemJsonData.getString("project_id") // && fullData.basicData.name==systemJsonData.getString("app_name")) } private fun getFirstSignature(pkg: PackageInfo?): Signature? { return if (pkg?.signatures != null && pkg.signatures.isNotEmpty()) { Loading Loading @@ -159,8 +187,14 @@ class IntegrityVerificationTask( } } try { return JSONObject(jsonResponse).has(packageName); if(JSONObject(jsonResponse).has(packageName)){ systemJsonData = JSONObject(jsonResponse).getJSONObject(packageName); return true } else{ return false } // return JSONObject(jsonResponse).has(packageName); } catch (e: Exception) { if (e is JSONException) { Log.d(TAG, "$packageName is not a system application") Loading