From 7097cc931938d517ea45d48082faf8ad345798a2 Mon Sep 17 00:00:00 2001 From: Ricky Wai Date: Tue, 23 Jan 2018 04:09:45 +0000 Subject: [PATCH] Add ConnectivityManager.getNetworkWatchlistConfigHash() Apps can use this API to get network watchlist config hash for auditing. Bug: 63908748 Test: Able to compile Change-Id: I5ce9e6bb6dad88139c0a102da58be0dd7c284b7a --- core/java/android/net/ConnectivityManager.java | 16 ++++++++++++++++ core/java/android/net/IConnectivityManager.aidl | 2 ++ .../com/android/server/ConnectivityService.java | 12 ++++++++++++ 3 files changed, 30 insertions(+) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 11d338d05c..166342dd4e 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -3763,4 +3763,20 @@ public class ConnectivityManager { throw e.rethrowFromSystemServer(); } } + + /** + * The network watchlist is a list of domains and IP addresses that are associated with + * potentially harmful apps. This method returns the hash of the watchlist currently + * used by the system. + * + * @return Hash of network watchlist config file. Null if config does not exist. + */ + public byte[] getNetworkWatchlistConfigHash() { + try { + return mService.getNetworkWatchlistConfigHash(); + } catch (RemoteException e) { + Log.e(TAG, "Unable to get watchlist config hash"); + throw e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index a6fe7389bc..ce95b60dd2 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -180,4 +180,6 @@ interface IConnectivityManager void stopKeepalive(in Network network, int slot); String getCaptivePortalServerUrl(); + + byte[] getNetworkWatchlistConfigHash(); } diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index c1f4b789e0..5030dce7cb 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -69,6 +69,7 @@ import android.net.NetworkRequest; import android.net.NetworkSpecifier; import android.net.NetworkState; import android.net.NetworkUtils; +import android.net.NetworkWatchlistManager; import android.net.Proxy; import android.net.ProxyInfo; import android.net.RouteInfo; @@ -5708,6 +5709,17 @@ public class ConnectivityService extends IConnectivityManager.Stub Settings.Global.NETWORK_AVOID_BAD_WIFI, null); } + @Override + public byte[] getNetworkWatchlistConfigHash() { + NetworkWatchlistManager nwm = mContext.getSystemService(NetworkWatchlistManager.class); + if (nwm == null) { + loge("Unable to get NetworkWatchlistManager"); + return null; + } + // Redirect it to network watchlist service to access watchlist file and calculate hash. + return nwm.getWatchlistConfigHash(); + } + @VisibleForTesting public NetworkMonitor createNetworkMonitor(Context context, Handler handler, NetworkAgentInfo nai, NetworkRequest defaultRequest) {