Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc56dd24 authored by Jonathan Klee's avatar Jonathan Klee
Browse files

Extract callbacks into methods

parent 5fbba14a
Loading
Loading
Loading
Loading
+229 B (29.7 KiB)

File changed.

Preview suppressed by a .gitattributes entry or the file's encoding is unsupported.

−2 B (3.95 MiB)

File changed.

Preview suppressed by a .gitattributes entry or the file's encoding is unsupported.

+6 −0
Original line number Diff line number Diff line
@@ -18,7 +18,13 @@

package foundation.e.apps

import android.app.AlertDialog
import android.app.Application
import android.app.Dialog
import android.content.Intent
import android.os.Bundle
import android.provider.Settings
import androidx.fragment.app.DialogFragment
import androidx.hilt.work.HiltWorkerFactory
import androidx.work.Configuration
import dagger.hilt.android.HiltAndroidApp
+5 −0
Original line number Diff line number Diff line
@@ -18,14 +18,19 @@

package foundation.e.apps

import android.app.AlertDialog
import android.app.Dialog
import android.app.usage.StorageStatsManager
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.os.StatFs
import android.os.storage.StorageManager
import android.provider.Settings
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.distinctUntilChanged
import androidx.lifecycle.lifecycleScope
+34 −7
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package foundation.e.apps.integrity

import android.content.Context
import android.util.Base64
import android.util.Log
import androidx.lifecycle.LifecycleCoroutineScope
import com.aurora.gplayapi.DroidGuardIntegrityRequest
import com.aurora.gplayapi.IntegrityPackage
@@ -9,11 +10,13 @@ import com.aurora.gplayapi.PackageVersionCode
import com.aurora.gplayapi.data.models.AuthData
import com.aurora.gplayapi.utils.asProtoTimestamp
import com.google.android.gms.droidguard.DroidGuard
import com.google.android.gms.droidguard.DroidGuardClient
import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest
import foundation.e.apps.IAppLoungeIntegrityService
import foundation.e.apps.IAppLoungeIntegrityServiceCallback
import foundation.e.apps.api.gplay.GPlayAPIRepository
import kotlinx.coroutines.launch
import timber.log.Timber
import java.security.MessageDigest

const val BASE64_ENCODING_FLAGS = Base64.URL_SAFE or Base64.NO_WRAP // = 10
@@ -39,7 +42,6 @@ class IntegrityBinder(
        val versionCode = PackageVersionCode.newBuilder().setVersion(10)
        val timestamp = System.currentTimeMillis().asProtoTimestamp()


        val data = DroidGuardIntegrityRequest.newBuilder()
            .setPackage(integrityPackage)
            .setVersion(versionCode)
@@ -49,14 +51,39 @@ class IntegrityBinder(

        val client = DroidGuard.getClient(context)
        val request = DroidGuardResultsRequest()
        request.bundle.putString("thirdPartyCallerAppPackageName", packageName)
        //request.bundle.putBoolean("apsh", false)

        val map = buildDroidGuardData(data)

        request.bundle.putString("thirdPartyCallerAppPackageName", packageName)
        client.getResults("pia_attest", map, request).addOnSuccessListener {
        client.getResults(
            "pia_attest",
            map,
            request
        ).addOnSuccessListener {
            onDroidGuardSuccess(packageName, nonce, it, callback)
        }.addOnFailureListener {
            Timber.e("Droid guard error")
        }
    }

    private fun onDroidGuardSuccess(
        packageName: String,
        nonce: String,
        droidGuardToken: String,
        callback: IAppLoungeIntegrityServiceCallback
    ) {
        lifecycleCoroutineScope.launch {
                gPlayAPIRepository.checkIntegrity(authData, packageName, nonce, it).let {
                    if (it == null) callback.onError(INTEGRITY_ERROR_NETWORK_ERROR)
                    else callback.onSuccess(it)
            gPlayAPIRepository.checkIntegrity(
                authData,
                packageName,
                nonce,
                droidGuardToken
            ).let {
                if (it == null) {
                    callback.onError(INTEGRITY_ERROR_NETWORK_ERROR)
                } else {
                    callback.onSuccess(it)
                }
            }
        }