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

Commit 4d56cb8b authored by Jonathan Klee's avatar Jonathan Klee
Browse files

Move stuffs in FakeStore

parent bc56dd24
Loading
Loading
Loading
Loading
Loading
−879 B (28.8 KiB)

File changed.

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

+4 B (3.95 MiB)

File changed.

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

+1 −1
Original line number Diff line number Diff line
@@ -3,5 +3,5 @@ package foundation.e.apps;
import foundation.e.apps.IAppLoungeIntegrityServiceCallback;

interface IAppLoungeIntegrityService {
    void checkIntegrity(String packageName, String nonce, IAppLoungeIntegrityServiceCallback callback);
    void checkIntegrity(String packageName, String nonce, String droidGuardToken, IAppLoungeIntegrityServiceCallback callback);
}
 No newline at end of file
+2 −50
Original line number Diff line number Diff line
@@ -33,46 +33,13 @@ class IntegrityBinder(
        const val INTEGRITY_ERROR_NETWORK_ERROR = -3
    }

    override fun checkIntegrity(packageName: String, nonce: String, callback: IAppLoungeIntegrityServiceCallback) {
        requestDroidGuardToken(packageName, nonce, callback)
    }

    private fun requestDroidGuardToken(packageName: String, nonce: String, callback: IAppLoungeIntegrityServiceCallback) {
        val integrityPackage = IntegrityPackage.newBuilder().setPackageName(packageName)
        val versionCode = PackageVersionCode.newBuilder().setVersion(10)
        val timestamp = System.currentTimeMillis().asProtoTimestamp()

        val data = DroidGuardIntegrityRequest.newBuilder()
            .setPackage(integrityPackage)
            .setVersion(versionCode)
            .setNonce(nonce)
            .setTimestamp(timestamp)
            .build()

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

        val map = buildDroidGuardData(data)

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

    private fun onDroidGuardSuccess(
    override fun checkIntegrity(
        packageName: String,
        nonce: String,
        droidGuardToken: String,
        callback: IAppLoungeIntegrityServiceCallback
    ) {
        Timber.tag(TAG).i("checkIntegrity")
        lifecycleCoroutineScope.launch {
            gPlayAPIRepository.checkIntegrity(
                authData,
@@ -88,19 +55,4 @@ class IntegrityBinder(
            }
        }
    }

    private fun buildDroidGuardData(request: DroidGuardIntegrityRequest): Map<String, String> {
        val digest = MessageDigest.getInstance("SHA-256")

        return mapOf(
            "pkg_key" to request.`package`.packageName,
            "vc_key" to request.version.version.toString(),
            "nonce_sha256_key" to request.nonce
                .let { Base64.decode(it, BASE64_ENCODING_FLAGS) }
                .let { digest.digest(it) }
                .let { Base64.encodeToString(it, BASE64_ENCODING_FLAGS or Base64.NO_PADDING) },
            "tm_s_key" to request.timestamp.seconds.toString(),
            "binding_key" to Base64.encodeToString(request.toByteArray(), BASE64_ENCODING_FLAGS)
        )
    }
}
 No newline at end of file