Use different API key for SafetyNet checks

This commit is contained in:
Marvin W 2022-01-25 18:31:32 +01:00
parent 0497f7ead3
commit af28974d97
No known key found for this signature in database
GPG Key ID: 072E9235DB996F2A
3 changed files with 8 additions and 22 deletions

View File

@ -42,7 +42,7 @@ class SafetyNetPreferencesFragment : PreferenceFragmentCompat() {
runAttest.setIcon(R.drawable.ic_circle_pending) runAttest.setIcon(R.drawable.ic_circle_pending)
runAttest.setSummary(R.string.pref_test_summary_running) runAttest.setSummary(R.string.pref_test_summary_running)
val handler = Handler(Looper.myLooper()!!) val handler = Handler(Looper.myLooper()!!)
SafetyNetClientServiceImpl(context, "com.scottyab.safetynet.sample", lifecycle).attestWithApiKey(object : ISafetyNetCallbacks.Default() { SafetyNetClientServiceImpl(context, context.packageName, lifecycle).attestWithApiKey(object : ISafetyNetCallbacks.Default() {
override fun onAttestationData(status: Status?, attestationData: AttestationData?) { override fun onAttestationData(status: Status?, attestationData: AttestationData?) {
handler.post { handler.post {
if (status?.isSuccess == true) { if (status?.isSuccess == true) {
@ -95,7 +95,7 @@ class SafetyNetPreferencesFragment : PreferenceFragmentCompat() {
} }
} }
} }
}, Random.nextBytes(32), "AIzaSyAfcNLBpWkqrt50mluU6GswUmtysmLn9cY") }, Random.nextBytes(32), "AIzaSyCcJO6IZiA5Or_AXw3LFdaTCmpnfL4pJ-Q")
true true
} }
runReCaptcha.setOnPreferenceClickListener { runReCaptcha.setOnPreferenceClickListener {
@ -103,7 +103,7 @@ class SafetyNetPreferencesFragment : PreferenceFragmentCompat() {
runReCaptcha.setIcon(R.drawable.ic_circle_pending) runReCaptcha.setIcon(R.drawable.ic_circle_pending)
runReCaptcha.setSummary(R.string.pref_test_summary_running) runReCaptcha.setSummary(R.string.pref_test_summary_running)
val handler = Handler(Looper.myLooper()!!) val handler = Handler(Looper.myLooper()!!)
SafetyNetClientServiceImpl(context, "com.blogspot.android_er.recaptcha", lifecycle).verifyWithRecaptcha(object : ISafetyNetCallbacks.Default() { SafetyNetClientServiceImpl(context, context.packageName, lifecycle).verifyWithRecaptcha(object : ISafetyNetCallbacks.Default() {
override fun onRecaptchaResult(status: Status?, recaptchaResultData: RecaptchaResultData?) { override fun onRecaptchaResult(status: Status?, recaptchaResultData: RecaptchaResultData?) {
handler.post { handler.post {
if (status?.isSuccess == true) { if (status?.isSuccess == true) {
@ -115,7 +115,7 @@ class SafetyNetPreferencesFragment : PreferenceFragmentCompat() {
} }
} }
} }
}, "6LdMKyUUAAAAAN0ndw7byI03_qpbpjxKY-mTQnLw") }, "6Lc4TzgeAAAAAJnW7Jbo6UtQ0xGuTKjHAeyhINuq")
true true
} }
} }

View File

@ -100,9 +100,6 @@ public class Attestation {
try { try {
return ByteString.of(getPackageFileDigest(context, packageName)); return ByteString.of(getPackageFileDigest(context, packageName));
} catch (Exception e) { } catch (Exception e) {
if (packageName.equals("com.scottyab.safetynet.sample")) {
return ByteString.decodeHex("66a3b8ff8c9444ec14eee94fa006548c4c7b542d54c27f3b06635e459e77c9a0");
}
Log.w(TAG, e); Log.w(TAG, e);
return null; return null;
} }
@ -130,9 +127,6 @@ public class Attestation {
} }
return res; return res;
} catch (Exception e) { } catch (Exception e) {
if (packageName.equals("com.scottyab.safetynet.sample")) {
return Collections.singletonList(ByteString.decodeHex("31936c0e1cfc54024c985c4f3eca37f1946f644eabed5232cd4ab2a646a41bc1"));
}
Log.w(TAG, e); Log.w(TAG, e);
return null; return null;
} }

View File

@ -148,22 +148,14 @@ class SafetyNetClientServiceImpl(private val context: Context, private val packa
val packageFileDigest = try { val packageFileDigest = try {
Base64.encodeToString(Attestation.getPackageFileDigest(context, packageName), Base64.URL_SAFE or Base64.NO_WRAP or Base64.NO_PADDING) Base64.encodeToString(Attestation.getPackageFileDigest(context, packageName), Base64.URL_SAFE or Base64.NO_WRAP or Base64.NO_PADDING)
} catch (e: Exception) { } catch (e: Exception) {
if (packageName == "com.blogspot.android_er.recaptcha") { callbacks.onRecaptchaResult(Status(SafetyNetStatusCodes.ERROR, e.localizedMessage), null)
"kXkOWm-DT-q__5MnrdyCRLowptdd2PjNA1RAnyQ1A-4" return
} else {
callbacks.onRecaptchaResult(Status(SafetyNetStatusCodes.ERROR, e.localizedMessage), null)
return
}
} }
val packageSignatures = try { val packageSignatures = try {
Attestation.getPackageSignatures(context, packageName).map { Base64.encodeToString(it, Base64.URL_SAFE or Base64.NO_WRAP or Base64.NO_PADDING) } Attestation.getPackageSignatures(context, packageName).map { Base64.encodeToString(it, Base64.URL_SAFE or Base64.NO_WRAP or Base64.NO_PADDING) }
} catch (e: Exception) { } catch (e: Exception) {
if (packageName == "com.blogspot.android_er.recaptcha") { callbacks.onRecaptchaResult(Status(SafetyNetStatusCodes.ERROR, e.localizedMessage), null)
listOf("xgEpqm72luj7TLUt7kMxIyN-orV6v03_T_yCkR4A93Y") return
} else {
callbacks.onRecaptchaResult(Status(SafetyNetStatusCodes.ERROR, e.localizedMessage), null)
return
}
} }
params.appendUrlEncodedParam("k", siteKey) params.appendUrlEncodedParam("k", siteKey)
.appendUrlEncodedParam("di", androidId.toString()) .appendUrlEncodedParam("di", androidId.toString())