From 620c920579e95e5e0bd34b37967a914fb08cc2e6 Mon Sep 17 00:00:00 2001 From: Jan Nordqvist Date: Tue, 17 May 2016 17:37:18 -0700 Subject: [PATCH] Fixed binding issue. Updating cert and key for EAP-TLS during remediation. Fixed WNM remediation logic. Bug=28885285 Bug=27485600 Bug=27485524 Change-Id: I1272d8d004a8fd9853f80e951531c0b67ddf34e3 --- packages/Osu/Android.mk | 1 + packages/Osu/AndroidManifest.xml | 10 +++++----- .../android/hotspot2/flow/PlatformAdapter.java | 7 +++++++ .../osu/service/RemediationHandler.java | 18 +++++++++++------- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/Osu/Android.mk b/packages/Osu/Android.mk index 0c9006a4abbd2..1d45aa9bfe66f 100644 --- a/packages/Osu/Android.mk +++ b/packages/Osu/Android.mk @@ -1,6 +1,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) +LOCAL_PROGUARD_ENABLED := disabled LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res LOCAL_MODULE_TAGS := optional diff --git a/packages/Osu/AndroidManifest.xml b/packages/Osu/AndroidManifest.xml index fa9a656e6b95f..b804739f5e42a 100644 --- a/packages/Osu/AndroidManifest.xml +++ b/packages/Osu/AndroidManifest.xml @@ -29,7 +29,7 @@ - - - - + + + + diff --git a/packages/Osu/src/com/android/hotspot2/flow/PlatformAdapter.java b/packages/Osu/src/com/android/hotspot2/flow/PlatformAdapter.java index 0c901711cec3c..43cc1d6bfe39b 100644 --- a/packages/Osu/src/com/android/hotspot2/flow/PlatformAdapter.java +++ b/packages/Osu/src/com/android/hotspot2/flow/PlatformAdapter.java @@ -365,6 +365,13 @@ public class PlatformAdapter { altSP = homeSP; } updateNetwork(altSP, caCert, clientCerts, privateKey); + + if (privateKey != null) { + X509Certificate cltCert = getCert(certs, OSUCertType.Client); + mKeyStore.setKeyEntry(CERT_CLT_KEY_ALIAS + homeSP.getFQDN(), + privateKey, null, new X509Certificate[]{cltCert}); + mKeyStore.setCertificateEntry(CERT_CLT_CERT_ALIAS + homeSP.getFQDN(), cltCert); + } } Intent intent = new Intent(OSUService.REMEDIATION_DONE_ACTION); diff --git a/packages/Osu/src/com/android/hotspot2/osu/service/RemediationHandler.java b/packages/Osu/src/com/android/hotspot2/osu/service/RemediationHandler.java index b5533fb5a2ea2..e1c6af66a8051 100644 --- a/packages/Osu/src/com/android/hotspot2/osu/service/RemediationHandler.java +++ b/packages/Osu/src/com/android/hotspot2/osu/service/RemediationHandler.java @@ -135,13 +135,17 @@ public class RemediationHandler implements AlarmManager.OnAlarmListener { WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); try { - if (mActivePasspointConfig != null - && update.matches(wifiInfo, mActivePasspointConfig.getHomeSP())) { - Log.d(OSUManager.TAG, "WNM frame received, remediating now"); + if (mActivePasspointConfig == null) { + Log.d(OSUManager.TAG, String.format("WNM remediation frame '%s' through %012x " + + "received, adding to outstanding remediations", url, bssid)); + mOutstanding.addFirst(new PendingUpdate(bssid, url)); + } else if (update.matches(wifiInfo, mActivePasspointConfig.getHomeSP())) { + Log.d(OSUManager.TAG, String.format("WNM remediation frame '%s' through %012x " + + "received, remediating now", url, bssid)); update.remediate(wifiManager.getCurrentNetwork()); } else { - Log.d(OSUManager.TAG, "WNM frame received, adding to outstanding remediations"); - mOutstanding.addFirst(new PendingUpdate(bssid, url)); + Log.w(OSUManager.TAG, String.format("WNM remediation frame '%s' through %012x " + + "does not meet restriction", url, bssid)); } } catch (IOException ioe) { Log.w(OSUManager.TAG, "Failed to remediate from WNM: " + ioe); @@ -497,8 +501,8 @@ public class RemediationHandler implements AlarmManager.OnAlarmListener { Log.d(OSUManager.TAG, String.format("Checking applicability of %s to %012x\n", wifiInfo != null ? wifiInfo.getBSSID() : "-", mBssid)); return wifiInfo != null - && Utils.parseMac(wifiInfo.getBSSID()) == mBssid; - //&& passesRestriction(activeSP); // !!! b/28600780 + && Utils.parseMac(wifiInfo.getBSSID()) == mBssid + && passesRestriction(activeSP); // !!! b/28600780 } else { return passesRestriction(mHomeSP); }