diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni
index 3c4912bcde7..25d50db8dd9 100644
--- a/android/brave_java_sources.gni
+++ b/android/brave_java_sources.gni
@@ -17,7 +17,6 @@ import(
"//brave/components/cached_flags/brave_components_cached_flags_java_sources.gni")
import("//brave/components/embedder_support/android/java_sources.gni")
import("//brave/components/permissions/android/java_sources.gni")
-import("//brave/components/safetynet/java_sources.gni")
import("//brave/components/signin/public/android/java_sources.gni")
brave_java_sources = [
@@ -452,7 +451,6 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/ui/system/BraveStatusBarColorController.java",
"../../brave/android/java/org/chromium/chrome/browser/undo_tab_close_snackbar/BraveUndoBarControllerBase.java",
"../../brave/android/java/org/chromium/chrome/browser/upgrade/BravePackageReplacedBroadcastReceiver.java",
- "../../brave/android/java/org/chromium/chrome/browser/upgrade/BraveUpgradeJobIntentServiceImpl.java",
"../../brave/android/java/org/chromium/chrome/browser/upgrade/NotificationIntent.java",
"../../brave/android/java/org/chromium/chrome/browser/util/BraveConstants.java",
"../../brave/android/java/org/chromium/chrome/browser/util/BraveDbUtil.java",
@@ -521,7 +519,6 @@ brave_java_sources = [
brave_java_sources += brave_ads_java_sources
brave_java_sources += brave_components_embedder_support_java_sources
brave_java_sources += brave_components_signin_java_sources
-brave_java_sources += brave_rewards_java_sources
brave_java_sources += brave_feed_java_sources
brave_java_sources += brave_public_tab_management_java_sources
brave_java_sources += brave_share_java_sources
@@ -551,7 +548,6 @@ brave_java_base_sources = [
brave_java_base_module_sources = [
"//brave/android/java/org/chromium/chrome/browser/base/SplitCompatJobIntentService.java",
"//brave/android/java/org/chromium/chrome/browser/playlist/hls_content/HlsService.java",
- "//brave/android/java/org/chromium/chrome/browser/upgrade/BraveUpgradeJobIntentService.java",
"//brave/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardService.java",
]
diff --git a/android/java/AndroidManifest.xml b/android/java/AndroidManifest.xml
index f948e496af1..beceb2a0704 100644
--- a/android/java/AndroidManifest.xml
+++ b/android/java/AndroidManifest.xml
@@ -173,10 +173,6 @@
android:resource="@xml/quick_action_search_and_bookmark_widget_info" />
-
-
{
- BrowserStartupController.getInstance()
- .addStartupCompletedObserver(
- new BrowserStartupController.StartupCallback() {
- @Override
- public void onSuccess() {
- BraveRewardsNativeWorker braveRewardsNativeWorker =
- BraveRewardsNativeWorker.getInstance();
- if (braveRewardsNativeWorker != null
- && braveRewardsNativeWorker.isSupported()
- && BravePrefServiceBridge.getInstance()
- .getSafetynetCheckFailed()) {
- Callback callback =
- value -> {
- if (value == null
- || !value.booleanValue()) {
- return;
- }
- // Reset flag and update UI
- BravePrefServiceBridge.getInstance()
- .setSafetynetCheckFailed(false);
- TabUtils.enableRewardsButton();
- };
- // Re-perform safetynet check
- SafetyNetCheck.updateSafetynetStatus(callback);
- }
- }
-
- @Override
- public void onFailure() {
- Log.e(
- TAG,
- "Failed to perform upgrade tasks:"
- + " BrowserStartupController.StartupCallback"
- + " failed");
- }
- });
- });
- }
-}
diff --git a/browser/android/preferences/brave_pref_service_bridge.cc b/browser/android/preferences/brave_pref_service_bridge.cc
index fb69e596209..c6ff7af7ed2 100644
--- a/browser/android/preferences/brave_pref_service_bridge.cc
+++ b/browser/android/preferences/brave_pref_service_bridge.cc
@@ -188,15 +188,6 @@ void JNI_BravePrefServiceBridge_SetOldHttpsUpgradesCount(
kHttpsUpgrades, count + profile->GetPrefs()->GetUint64(kHttpsUpgrades));
}
-void JNI_BravePrefServiceBridge_SetSafetynetCheckFailed(JNIEnv* env,
- jboolean value) {
- GetOriginalProfile()->GetPrefs()->SetBoolean(kSafetynetCheckFailed, value);
-}
-
-jboolean JNI_BravePrefServiceBridge_GetSafetynetCheckFailed(JNIEnv* env) {
- return GetOriginalProfile()->GetPrefs()->GetBoolean(kSafetynetCheckFailed);
-}
-
void JNI_BravePrefServiceBridge_ResetPromotionLastFetchStamp(JNIEnv* env) {
GetOriginalProfile()->GetPrefs()->SetUint64(
brave_rewards::prefs::kPromotionLastFetchStamp, 0);
diff --git a/browser/brave_profile_prefs.cc b/browser/brave_profile_prefs.cc
index b7fb794fde9..73bc4a4e521 100644
--- a/browser/brave_profile_prefs.cc
+++ b/browser/brave_profile_prefs.cc
@@ -281,6 +281,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(kPlayYTVideoInBrowserEnabled, true);
registry->RegisterBooleanPref(kBackgroundVideoPlaybackEnabled, false);
registry->RegisterBooleanPref(kSafetynetCheckFailed, false);
+ registry->RegisterStringPref(kSafetynetStatus, "");
// clear default popular sites
registry->SetDefaultPrefValue(ntp_tiles::prefs::kPopularSitesJsonPref,
base::Value(base::Value::Type::LIST));
diff --git a/browser/ui/webui/brave_rewards/rewards_web_ui_utils.cc b/browser/ui/webui/brave_rewards/rewards_web_ui_utils.cc
index 405a3c05cea..88912c4bf81 100644
--- a/browser/ui/webui/brave_rewards/rewards_web_ui_utils.cc
+++ b/browser/ui/webui/brave_rewards/rewards_web_ui_utils.cc
@@ -36,12 +36,6 @@ bool ShouldBlockRewardsWebUI(content::BrowserContext* browser_context,
: brave_rewards::IsSupportedOptions::kNone)) {
return true;
}
-#if BUILDFLAG(IS_ANDROID)
- auto* prefs = profile->GetPrefs();
- if (prefs && prefs->GetBoolean(kSafetynetCheckFailed)) {
- return true;
- }
-#endif // BUILDFLAG(IS_ANDROID)
}
return false;
}
diff --git a/build/android/config.gni b/build/android/config.gni
index 778afe4557a..35b28571fb1 100644
--- a/build/android/config.gni
+++ b/build/android/config.gni
@@ -136,5 +136,4 @@ brave_jni_headers_sources = [
"//brave/android/java/org/chromium/chrome/browser/vpn/BraveVpnServiceFactoryAndroid.java",
"//brave/android/java/org/chromium/chrome/browser/webcompat_reporter/WebcompatReporterServiceFactory.java",
"//brave/browser/brave_ads/android/java/org/chromium/chrome/browser/BraveAdsNativeHelper.java",
- "//brave/components/safetynet/java/org/chromium/chrome/browser/util/SafetyNetCheck.java",
]
diff --git a/build/commands/lib/config.js b/build/commands/lib/config.js
index 4cf855d5f79..cc0b6130e64 100644
--- a/build/commands/lib/config.js
+++ b/build/commands/lib/config.js
@@ -238,7 +238,6 @@ const Config = function () {
this.extraGnGenOpts = getEnvConfig(['brave_extra_gn_gen_opts']) || ''
this.extraNinjaOpts = []
this.braveAndroidSafeBrowsingApiKey = getEnvConfig(['brave_safebrowsing_api_key']) || ''
- this.braveSafetyNetApiKey = getEnvConfig(['brave_safetynet_api_key']) || ''
this.braveAndroidDeveloperOptionsCode = getEnvConfig(['brave_android_developer_options_code']) || ''
this.braveAndroidKeystorePath = getEnvConfig(['brave_android_keystore_path'])
this.braveAndroidKeystoreName = getEnvConfig(['brave_android_keystore_name'])
@@ -609,7 +608,6 @@ Config.prototype.buildArgs = function () {
args.android_override_version_name = this.androidOverrideVersionName
args.brave_android_developer_options_code = this.braveAndroidDeveloperOptionsCode
- args.brave_safetynet_api_key = this.braveSafetyNetApiKey
args.brave_safebrowsing_api_key = this.braveAndroidSafeBrowsingApiKey
args.safe_browsing_mode = 2
diff --git a/chromium_presubmit_config.json5 b/chromium_presubmit_config.json5
index 26e4fe6fa6c..44cec718606 100644
--- a/chromium_presubmit_config.json5
+++ b/chromium_presubmit_config.json5
@@ -111,7 +111,6 @@
"android/java/org/chromium/chrome/browser/help/BraveHelpAndFeedbackLauncher\\.java",
"android/java/org/chromium/chrome/browser/search_engines/settings/BraveSearchEngineAdapter\\.java",
"android/java/org/chromium/chrome/browser/settings/BravePreferenceDialogFragment\\.java",
- "android/java/org/chromium/chrome/browser/upgrade/BraveUpgradeJobIntentServiceImpl\\.java",
],
"_CheckAndroidToastUsage": [
"android/java/org/chromium/chrome/browser/brave_news/BraveNewsBottomSheetDialogFragment\\.java",
diff --git a/chromium_src/chrome/browser/prefs/browser_prefs.cc b/chromium_src/chrome/browser/prefs/browser_prefs.cc
index 421e8575b37..ef1db4b5dd8 100644
--- a/chromium_src/chrome/browser/prefs/browser_prefs.cc
+++ b/chromium_src/chrome/browser/prefs/browser_prefs.cc
@@ -188,6 +188,12 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs,
// Added 2024-10
brave_adaptive_captcha::MigrateObsoleteProfilePrefs(profile_prefs);
+#if BUILDFLAG(IS_ANDROID)
+ // Added 27/11/2024: https://github.com/brave/brave-core/pull/26719
+ profile_prefs->ClearPref(kSafetynetCheckFailed);
+ profile_prefs->ClearPref(kSafetynetStatus);
+#endif // BUILDFLAG(IS_ANDROID)
+
// END_MIGRATE_OBSOLETE_PROFILE_PREFS
}
diff --git a/components/brave_referrals/browser/BUILD.gn b/components/brave_referrals/browser/BUILD.gn
index 0192e6cfce3..310573e49e6 100644
--- a/components/brave_referrals/browser/BUILD.gn
+++ b/components/brave_referrals/browser/BUILD.gn
@@ -44,10 +44,7 @@ static_library("browser") {
"android_brave_referrer.h",
]
- deps += [
- ":jni_headers",
- "//brave/components/safetynet:android",
- ]
+ deps += [ ":jni_headers" ]
}
}
diff --git a/components/brave_referrals/browser/brave_referrals_service.cc b/components/brave_referrals/browser/brave_referrals_service.cc
index d381fd33710..389440d22d1 100644
--- a/components/brave_referrals/browser/brave_referrals_service.cc
+++ b/components/brave_referrals/browser/brave_referrals_service.cc
@@ -463,9 +463,6 @@ std::string BraveReferralsService::BuildReferralFinalizationCheckPayload()
base::Value::Dict root;
root.Set("api_key", api_key_);
root.Set("download_id", pref_service_->GetString(kReferralDownloadID));
-#if BUILDFLAG(IS_ANDROID)
- root.Set("safetynet_status", pref_service_->GetString(kSafetynetStatus));
-#endif
std::string result;
base::JSONWriter::Write(root, &result);
@@ -518,31 +515,7 @@ void BraveReferralsService::InitReferral() {
kMaxReferralServerResponseSizeBytes);
}
-#if BUILDFLAG(IS_ANDROID)
-void BraveReferralsService::GetSafetynetStatusResult(
- const bool token_received,
- const std::string& result_string,
- const bool attestation_passed) {
- if (pref_service_->GetString(kSafetynetStatus).empty()) {
- // The device could not support SafetyNet.
- pref_service_->SetString(kSafetynetStatus, "not verified");
- }
- CheckForReferralFinalization();
-}
-#endif
-
void BraveReferralsService::CheckForReferralFinalization() {
-#if BUILDFLAG(IS_ANDROID)
- if (pref_service_->GetString(kSafetynetStatus).empty()) {
- // Get safetynet status before finalization
- safetynet_check::ClientAttestationCallback attest_callback =
- base::BindOnce(&BraveReferralsService::GetSafetynetStatusResult,
- weak_factory_.GetWeakPtr());
- safetynet_check_runner_.performSafetynetCheck(
- "", std::move(attest_callback), true);
- return;
- }
-#endif
net::NetworkTrafficAnnotationTag traffic_annotation =
net::DefineNetworkTrafficAnnotation("brave_referral_finalization_checker",
R"(
@@ -618,7 +591,6 @@ void RegisterPrefsForBraveReferralsService(PrefRegistrySimple* registry) {
registry->RegisterIntegerPref(kReferralAttemptCount, 0);
#if BUILDFLAG(IS_ANDROID)
registry->RegisterTimePref(kReferralAndroidFirstRunTimestamp, base::Time());
- registry->RegisterStringPref(kSafetynetStatus, std::string());
#endif
}
diff --git a/components/brave_referrals/browser/brave_referrals_service.h b/components/brave_referrals/browser/brave_referrals_service.h
index db1a94c7eac..ab1387fecf7 100644
--- a/components/brave_referrals/browser/brave_referrals_service.h
+++ b/components/brave_referrals/browser/brave_referrals_service.h
@@ -20,7 +20,6 @@
#if BUILDFLAG(IS_ANDROID)
#include "brave/components/brave_referrals/browser/android_brave_referrer.h"
-#include "brave/components/safetynet/safetynet_check.h"
#endif
class PrefRegistrySimple;
@@ -105,11 +104,6 @@ class BraveReferralsService {
void OnReadPromoCodeComplete(const std::string& promo_code);
#if BUILDFLAG(IS_ANDROID)
- void GetSafetynetStatusResult(const bool token_received,
- const std::string& result_string,
- const bool attestation_passed);
- safetynet_check::SafetyNetCheckRunner safetynet_check_runner_;
-
void InitAndroidReferrer();
void OnAndroidBraveReferrerReady();
android_brave_referrer::BraveReferrer android_brave_referrer_;
diff --git a/components/brave_rewards/content/BUILD.gn b/components/brave_rewards/content/BUILD.gn
index 296902f297d..57163177ee6 100644
--- a/components/brave_rewards/content/BUILD.gn
+++ b/components/brave_rewards/content/BUILD.gn
@@ -66,10 +66,6 @@ static_library("content") {
]
public_deps = [ "//brave/components/brave_rewards/core/engine:headers" ]
-
- if (is_android) {
- deps += [ "//brave/components/safetynet:android" ]
- }
}
source_set("testutil") {
diff --git a/components/brave_rewards/content/rewards_service_impl.h b/components/brave_rewards/content/rewards_service_impl.h
index 6a7022c2044..4a23a5d0639 100644
--- a/components/brave_rewards/content/rewards_service_impl.h
+++ b/components/brave_rewards/content/rewards_service_impl.h
@@ -39,10 +39,6 @@
#include "mojo/public/cpp/bindings/remote.h"
#include "ui/gfx/image/image.h"
-#if BUILDFLAG(IS_ANDROID)
-#include "brave/components/safetynet/safetynet_check.h"
-#endif
-
namespace base {
class OneShotTimer;
class SequencedTaskRunner;
@@ -489,7 +485,6 @@ class RewardsServiceImpl final : public RewardsService,
#if BUILDFLAG(IS_ANDROID)
mojom::Environment GetDefaultServerEnvironmentForAndroid();
- safetynet_check::SafetyNetCheckRunner safetynet_check_runner_;
#endif
raw_ptr prefs_; // NOT OWNED
raw_ptr favicon_service_;
diff --git a/components/safetynet/BUILD.gn b/components/safetynet/BUILD.gn
deleted file mode 100644
index 3775b987b0a..00000000000
--- a/components/safetynet/BUILD.gn
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (c) 2023 The Brave Authors. All rights reserved.
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this file,
-# You can obtain one at https://mozilla.org/MPL/2.0/.
-
-import("//build/buildflag_header.gni")
-import("//build/config/android/rules.gni")
-import("//third_party/jni_zero/jni_zero.gni")
-
-declare_args() {
- brave_safetynet_api_key = ""
-}
-
-buildflag_header("buildflags") {
- header = "buildflags.h"
- flags = [ "SAFETYNET_API_KEY=\"$brave_safetynet_api_key\"" ]
-}
-
-group("android") {
- public_deps = [ ":safetynet" ]
-}
-
-source_set("safetynet") {
- sources = [
- "safetynet_check.cc",
- "safetynet_check.h",
- ]
-
- deps = [
- ":buildflags",
- ":jni_headers",
- "//base",
- "//net",
- ]
-}
-
-generate_jni("jni_headers") {
- sources = [ "java/org/chromium/chrome/browser/util/SafetyNetCheck.java" ]
-}
diff --git a/components/safetynet/java/org/chromium/chrome/browser/util/SafetyNetCheck.java b/components/safetynet/java/org/chromium/chrome/browser/util/SafetyNetCheck.java
deleted file mode 100644
index 502cf4fddd6..00000000000
--- a/components/safetynet/java/org/chromium/chrome/browser/util/SafetyNetCheck.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/* Copyright (c) 2020 The Brave Authors. All rights reserved.
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-package org.chromium.chrome.browser.util;
-
-import android.app.Activity;
-import android.content.SharedPreferences;
-import android.util.Base64;
-
-import androidx.annotation.NonNull;
-
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-import com.google.android.gms.safetynet.SafetyNet;
-import com.google.android.gms.safetynet.SafetyNetApi;
-import com.google.android.gms.safetynet.SafetyNetClient;
-import com.google.android.gms.tasks.OnFailureListener;
-import com.google.android.gms.tasks.OnSuccessListener;
-import com.google.android.gms.tasks.Task;
-
-import org.jni_zero.CalledByNative;
-import org.jni_zero.JNINamespace;
-import org.jni_zero.NativeMethods;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import org.chromium.base.Callback;
-import org.chromium.base.ContextUtils;
-import org.chromium.base.Log;
-import org.chromium.chrome.browser.BraveLocalState;
-import org.chromium.chrome.browser.BraveRewardsHelper;
-import org.chromium.chrome.browser.preferences.BravePref;
-
-import java.security.SecureRandom;
-import java.util.Calendar;
-import java.util.Random;
-import java.util.regex.Pattern;
-
-/**
- * Utility class for providing additional safety checks.
- */
-@JNINamespace("safetynet_check")
-public class SafetyNetCheck {
- private static final String TAG = "SafetyNetCheck";
-
- private static final String PREF_SAFETYNET_RESULT = "safetynet_result";
- private static final String PREF_SAFETYNET_LAST_TIME_CHECK = "safetynet_last_time_check";
-
- private static final String SAFETYNET_STATUS_VERIFIED_PASSED = "verified, passed";
- private static final String SAFETYNET_STATUS_VERIFIED_NOT_PASSED = "verified, not passed";
- private static final String SAFETYNET_STATUS_NOT_VERIFIED = "not verified";
-
- private static final long TEN_DAYS = 10 * 24 * 60 * 60 * 1000;
-
- private long mNativeSafetyNetCheck;
- private Callback mSafetyNetCheckCallback;
-
- private SafetyNetCheck(long staticSafetyNetCheck) {
- mNativeSafetyNetCheck = staticSafetyNetCheck;
- mSafetyNetCheckCallback = null;
- }
-
- private SafetyNetCheck(Callback safetyNetCheckCallback) {
- mNativeSafetyNetCheck = 0;
- mSafetyNetCheckCallback = safetyNetCheckCallback;
- }
-
- @CalledByNative
- private static SafetyNetCheck create(long staticSafetyNetCheck) {
- return new SafetyNetCheck(staticSafetyNetCheck);
- }
-
- @CalledByNative
- private void destroy() {
- assert mNativeSafetyNetCheck != 0;
- mNativeSafetyNetCheck = 0;
- }
-
- /**
- * Performs client attestation
- */
- @CalledByNative
- public boolean clientAttestation(String nonceData, String apiKey,
- boolean performAttestationOnClient) {
- return clientAttestation(nonceData, apiKey, performAttestationOnClient, false);
- }
-
- private boolean clientAttestation(String nonceData, String apiKey,
- boolean performAttestationOnClient, boolean forceCheck) {
- boolean res = false;
- try {
- Activity activity = (Activity)BraveRewardsHelper.getChromeTabbedActivity();
- if (activity == null) return false;
- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity) == ConnectionResult.SUCCESS) {
- SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences();
- String safetyNetResult = sharedPreferences.getString(PREF_SAFETYNET_RESULT, "");
- long lastTimeCheck = sharedPreferences.getLong(PREF_SAFETYNET_LAST_TIME_CHECK, 0);
- Calendar currentTime = Calendar.getInstance();
- long milliSeconds = currentTime.getTimeInMillis();
- if (!forceCheck && nonceData.isEmpty() && !safetyNetResult.isEmpty()
- && (milliSeconds - lastTimeCheck < TEN_DAYS)) {
- clientAttestationResult(true, safetyNetResult, performAttestationOnClient);
- return true;
- }
- byte[] nonce = nonceData.isEmpty() ? getRequestNonce() : nonceData.getBytes();
- SafetyNetClient client = SafetyNet.getClient(ContextUtils.getApplicationContext());
- Task attestTask = client.attest(nonce, apiKey);
- attestTask.addOnSuccessListener(activity,
- new OnSuccessListener() {
- @Override
- public void onSuccess(SafetyNetApi.AttestationResponse response) {
- SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit();
- sharedPreferencesEditor.putString(PREF_SAFETYNET_RESULT, response.getJwsResult());
- sharedPreferencesEditor.putLong(PREF_SAFETYNET_LAST_TIME_CHECK, milliSeconds);
- sharedPreferencesEditor.apply();
- clientAttestationResult(true, response.getJwsResult(), performAttestationOnClient);
- }
- }).addOnFailureListener(activity, new OnFailureListener() {
- @Override
- public void onFailure(@NonNull Exception e) {
- Log.e(TAG, "Failed to perform SafetyNetCheck: " + e);
- clientAttestationResult(false, e.toString(), performAttestationOnClient);
- }
- });
- res = true;
- } else {
- clientAttestationResult(
- false,
- "Google Play Services are not available",
- performAttestationOnClient);
- // This result just indicates that callback with the actual result was called
- res = true;
- }
- } catch (Exception e) {
- Log.e(TAG, "SafetyNetCheck error: " + e);
- }
-
- return res;
- }
-
- /**
- * Generates a random 24-byte nonce.
- */
- private byte[] getRequestNonce() {
- byte[] bytes = new byte[24];
- Random random = new SecureRandom();
- random.nextBytes(bytes);
- return bytes;
- }
-
- /**
- * Returns client attestation final result
- */
- private void clientAttestationResult(
- boolean tokenReceived, String resultString, boolean performAttestationOnClient) {
- boolean attestationPassed = false;
- if (performAttestationOnClient) {
- if (tokenReceived) {
- String[] tokenParts = resultString.split(Pattern.quote("."));
- if (tokenParts.length >= 2) {
- String tokenPart2 = new String(Base64.decode(tokenParts[1], Base64.DEFAULT));
- boolean ctsProfileMatch = false;
- boolean basicIntegrity = false;
- try {
- JSONObject json = new JSONObject(tokenPart2);
- if (json.has("ctsProfileMatch")) {
- ctsProfileMatch = json.getBoolean("ctsProfileMatch");
- }
- if (json.has("basicIntegrity")) {
- basicIntegrity = json.getBoolean("basicIntegrity");
- }
- } catch (JSONException e) {
- Log.e(TAG, "Unable to perform SafetyNet attestation: " + e);
- }
- attestationPassed = ctsProfileMatch && basicIntegrity;
- BraveLocalState.get().setString(BravePref.SAFETYNET_STATUS,
- attestationPassed ? SAFETYNET_STATUS_VERIFIED_PASSED
- : SAFETYNET_STATUS_VERIFIED_NOT_PASSED);
- if (mSafetyNetCheckCallback != null) {
- mSafetyNetCheckCallback.onResult(attestationPassed);
- }
- }
- } else {
- BraveLocalState.get().setString(
- BravePref.SAFETYNET_STATUS, SAFETYNET_STATUS_NOT_VERIFIED);
- }
- }
- if (mNativeSafetyNetCheck == 0) return;
- SafetyNetCheckJni.get().clientAttestationResult(
- mNativeSafetyNetCheck, tokenReceived, resultString, attestationPassed);
- }
-
- public String getApiKey() {
- return SafetyNetCheckJni.get().getApiKey();
- }
-
- public static boolean updateSafetynetStatus(Callback safetyNetCheckCallback) {
- SafetyNetCheck safetyNet = new SafetyNetCheck(safetyNetCheckCallback);
- return safetyNet.clientAttestation("", safetyNet.getApiKey(), true, true);
- }
-
- @NativeMethods
- interface Natives {
- void clientAttestationResult(long nativeSafetyNetCheck, boolean tokenReceived,
- String resultString, boolean attestationPassed);
- String getApiKey();
- }
-}
diff --git a/components/safetynet/java_sources.gni b/components/safetynet/java_sources.gni
deleted file mode 100644
index 52817e64d48..00000000000
--- a/components/safetynet/java_sources.gni
+++ /dev/null
@@ -1 +0,0 @@
-brave_rewards_java_sources = [ "../../brave/components/safetynet/java/org/chromium/chrome/browser/util/SafetyNetCheck.java" ]
diff --git a/components/safetynet/safetynet_check.cc b/components/safetynet/safetynet_check.cc
deleted file mode 100644
index cdb01ceeaf0..00000000000
--- a/components/safetynet/safetynet_check.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Copyright (c) 2019 The Brave Authors. All rights reserved.
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "brave/components/safetynet/safetynet_check.h"
-
-#include
-#include
-
-#include "base/android/jni_android.h"
-#include "base/android/jni_string.h"
-#include "brave/components/safetynet/buildflags.h"
-#include "brave/components/safetynet/jni_headers/SafetyNetCheck_jni.h"
-
-namespace safetynet_check {
-
-static base::android::ScopedJavaLocalRef JNI_SafetyNetCheck_GetApiKey(
- JNIEnv* env) {
- return base::android::ConvertUTF8ToJavaString(env,
- BUILDFLAG(SAFETYNET_API_KEY));
-}
-
-SafetyNetCheck::SafetyNetCheck(SafetyNetCheckRunner* runner) {
- JNIEnv* env = base::android::AttachCurrentThread();
- java_obj_.Reset(env, Java_SafetyNetCheck_create(env,
- reinterpret_cast(this)).obj());
- runner_ = runner;
-}
-
-SafetyNetCheck::~SafetyNetCheck() {
- Java_SafetyNetCheck_destroy(base::android::AttachCurrentThread(), java_obj_);
-}
-
-bool SafetyNetCheck::clientAttestation(const std::string& nonce,
- ClientAttestationCallback attest_callback,
- const bool perform_attestation_on_client) {
- attest_callback_ = std::move(attest_callback);
- JNIEnv* env = base::android::AttachCurrentThread();
- base::android::ScopedJavaLocalRef jnonce =
- base::android::ConvertUTF8ToJavaString(env, nonce);
- base::android::ScopedJavaLocalRef japiKey =
- base::android::ConvertUTF8ToJavaString(env, BUILDFLAG(SAFETYNET_API_KEY));
- return Java_SafetyNetCheck_clientAttestation(env, java_obj_, jnonce,
- japiKey, perform_attestation_on_client);
-}
-
-void SafetyNetCheck::ClientAttestationResult(
- JNIEnv* env,
- jboolean jtoken_received,
- const base::android::JavaParamRef& jresult_string,
- jboolean jattestation_passed) {
- bool token_received = jtoken_received;
- bool attestation_passed = jattestation_passed;
- std::string result_string = base::android::ConvertJavaStringToUTF8(env,
- jresult_string);
- std::move(attest_callback_)
- .Run(token_received, result_string, attestation_passed);
- if (runner_ != nullptr) {
- runner_->jobFinished(this);
- }
-}
-
-SafetyNetCheckRunner::SafetyNetCheckRunner() {
-}
-
-SafetyNetCheckRunner::~SafetyNetCheckRunner() {
-}
-
-void SafetyNetCheckRunner::performSafetynetCheck(const std::string& nonce,
- ClientAttestationCallback attest_callback,
- const bool perform_attestation_on_client) {
- jobs_.push_back(std::make_unique(this));
- if (!jobs_.back()->clientAttestation(nonce, std::move(attest_callback),
- perform_attestation_on_client)) {
- std::move(jobs_.back()->attest_callback_).Run(false, "", false);
- jobFinished(jobs_.back().get());
- }
-}
-
-void SafetyNetCheckRunner::jobFinished(SafetyNetCheck* finished_job) {
- auto it = find_if(jobs_.begin(), jobs_.end(),
- [finished_job] (const std::unique_ptr& job) {
- return static_cast(job.get() == finished_job);
- });
- CHECK(it != jobs_.end())
- << "SafetyNetCheck code is obsolete and should not be called anymore";
- jobs_.erase(it);
-}
-
-} // namespace safetynet_check
diff --git a/components/safetynet/safetynet_check.h b/components/safetynet/safetynet_check.h
deleted file mode 100644
index ff4ba888ed6..00000000000
--- a/components/safetynet/safetynet_check.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (c) 2019 The Brave Authors. All rights reserved.
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef BRAVE_COMPONENTS_SAFETYNET_SAFETYNET_CHECK_H_
-#define BRAVE_COMPONENTS_SAFETYNET_SAFETYNET_CHECK_H_
-
-#include
-#include
-#include
-#include
-
-#include "base/android/scoped_java_ref.h"
-#include "base/memory/raw_ptr.h"
-#include "net/base/completion_once_callback.h"
-
-namespace safetynet_check {
-
-class SafetyNetCheckRunner;
-using ClientAttestationCallback =
- base::OnceCallback;
-
-class SafetyNetCheck {
- public:
- explicit SafetyNetCheck(SafetyNetCheckRunner* runner);
- SafetyNetCheck(const SafetyNetCheck&) = delete;
- SafetyNetCheck& operator=(const SafetyNetCheck&) = delete;
- ~SafetyNetCheck();
-
- // Performs client attestation, called from C++
- bool clientAttestation(const std::string& nonce,
- ClientAttestationCallback attest_callback,
- const bool perform_attestation_on_client);
- // Callback returns client attestation final result, called from Java
- void ClientAttestationResult(
- JNIEnv* env,
- jboolean token_received,
- const base::android::JavaParamRef& jresult_string,
- jboolean attestation_passed);
- friend class SafetyNetCheckRunner;
- private:
- base::android::ScopedJavaGlobalRef java_obj_;
- ClientAttestationCallback attest_callback_;
- raw_ptr runner_ = nullptr;
-};
-
-class SafetyNetCheckRunner {
- public:
- SafetyNetCheckRunner();
- SafetyNetCheckRunner(const SafetyNetCheckRunner&) = delete;
- SafetyNetCheckRunner& operator=(const SafetyNetCheckRunner&) = delete;
- ~SafetyNetCheckRunner();
-
- void performSafetynetCheck(const std::string& nonce,
- ClientAttestationCallback attest_callback,
- const bool perform_attestation_on_client = false);
- void jobFinished(SafetyNetCheck* finished_job);
- private:
- std::vector> jobs_;
-};
-
-} // namespace safetynet_check
-
-#endif // BRAVE_COMPONENTS_SAFETYNET_SAFETYNET_CHECK_H_