// 6️⃣ Build the LicenseInfo object val expires = json.getString("expires") val features = json.getJSONArray("features") val featureSet = mutableSetOf<String>() for (i in 0 until features.length()) featureSet.add(features.getString(i))
/** * Handles verification of the license key against the remote server. * * The server expects a POST payload: * * "key": "<LICENSE_KEY>", * "machineId": "<MACHINE_ID>" // optional, may be empty string * * * Response (JSON): * * "valid": true */ object LicenseVerifier
// 3️⃣ Send POST request (blocking – called from Gradle task) val request = Request.Builder() .url(LICENSE_ENDPOINT) .post(payload.toRequestBody()) .header("User-Agent", "Apeaksoft-Toolkit/1.4.2") .build()
// Pro modules – will be ignored if license is missing implementation "com.apeaksoft:android-toolkit-pro:1.4.2"
Now you can run:
/** Helper: verify server‑side HMAC signature */ private fun verifySignature(data: String, signature: String): Boolean val secret = "s3cr3t_server_key".toByteArray(Charsets.UTF_8) // not really hard‑coded in production val mac = javax.crypto.Mac.getInstance("HmacSHA256") mac.init(javax.crypto.spec.SecretKeySpec(secret, "HmacSHA256")) val expected = Base64.getEncoder().encodeToString(mac.doFinal(data.toByteArray())) return expected == signature
// 6️⃣ Build the LicenseInfo object val expires = json.getString("expires") val features = json.getJSONArray("features") val featureSet = mutableSetOf<String>() for (i in 0 until features.length()) featureSet.add(features.getString(i))
/** * Handles verification of the license key against the remote server. * * The server expects a POST payload: * * "key": "<LICENSE_KEY>", * "machineId": "<MACHINE_ID>" // optional, may be empty string * * * Response (JSON): * * "valid": true */ object LicenseVerifier
// 3️⃣ Send POST request (blocking – called from Gradle task) val request = Request.Builder() .url(LICENSE_ENDPOINT) .post(payload.toRequestBody()) .header("User-Agent", "Apeaksoft-Toolkit/1.4.2") .build()
// Pro modules – will be ignored if license is missing implementation "com.apeaksoft:android-toolkit-pro:1.4.2"
Now you can run:
/** Helper: verify server‑side HMAC signature */ private fun verifySignature(data: String, signature: String): Boolean val secret = "s3cr3t_server_key".toByteArray(Charsets.UTF_8) // not really hard‑coded in production val mac = javax.crypto.Mac.getInstance("HmacSHA256") mac.init(javax.crypto.spec.SecretKeySpec(secret, "HmacSHA256")) val expected = Base64.getEncoder().encodeToString(mac.doFinal(data.toByteArray())) return expected == signature