aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/gpl/GPL.kt
blob: 3824f1906b1f3060e6502ce3be4fd36226b6f3a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package moe.yuuta.workmode.gpl

import android.annotation.SuppressLint
import android.content.Context
import android.provider.Settings
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import moe.yuuta.gplicense.AESObfuscator
import moe.yuuta.gplicense.LicenseChecker
import moe.yuuta.gplicense.LicenseCheckerCallback
import moe.yuuta.gplicense.ServerManagedPolicy
import moe.yuuta.workmode.BuildConfig

// #Anti-Crack
// Google Play Licenser
class GPL(
        private val context: Context,
        private val lifecycle: Lifecycle,
        private val callback: LicenseCheckerCallback
) : LifecycleObserver {
    private val SALT = byteArrayOf(
            -90, 83, 80, -91, -37, -57, 74, -69, 52, 89,
            -9, -5, -77, -71, -36, -79, -11, 37, -69, 88
    )

    private lateinit var instance: LicenseChecker

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun start() {
        @SuppressLint("HardwareIds") val android_id = Settings.Secure.getString(context.contentResolver,
                Settings.Secure.ANDROID_ID)
        instance = LicenseChecker(
                context,
                ServerManagedPolicy(context, AESObfuscator(SALT, BuildConfig.APPLICATION_ID, android_id)),
                BuildConfig.GOOGLE_PLAY_LICENSING_KEY
        )
        instance.checkAccess(callback)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun destroy() {
        if (::instance.isInitialized) {
            instance.onDestroy()
        }
    }
}