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