diff options
author | Honore Tricot <honorex.tricot@intel.com> | 2014-11-12 17:15:42 +0100 |
---|---|---|
committer | Vinit Deshpande <vinitd@google.com> | 2015-03-25 15:08:17 -0700 |
commit | f97140d51d14ce0659d381f443c08dbd94dfea28 (patch) | |
tree | fd9221f92b5efe93f217315be793fdaa7c1ac90b /service/java/com/android/server/wifi/WifiMonitor.java | |
parent | ad607d99c372160c7d4b38e755e1b47d6419856e (diff) | |
download | frameworks_opt_net_wifi-f97140d51d14ce0659d381f443c08dbd94dfea28.tar.gz frameworks_opt_net_wifi-f97140d51d14ce0659d381f443c08dbd94dfea28.tar.bz2 frameworks_opt_net_wifi-f97140d51d14ce0659d381f443c08dbd94dfea28.zip |
WIFI: EAP-AKA End-To-End
- Decode UMTS-AUTH form of CTRL-REQ-SIM request
- manage UMTS authentication
- cleanup useless code
- make Native API simAuthResponse usable for both
EAP-SIM and EAP-AKA
Change-Id: Ie24c59d87ba2e6a17a0da25fa3d58803aab423f9
Signed-off-by: Honore Tricot <honorex.tricot@intel.com>
Signed-off-by: Abdelmajid MLAYEH <abdelmajidx.mlayeh@intel.com>
Diffstat (limited to 'service/java/com/android/server/wifi/WifiMonitor.java')
-rw-r--r-- | service/java/com/android/server/wifi/WifiMonitor.java | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/service/java/com/android/server/wifi/WifiMonitor.java b/service/java/com/android/server/wifi/WifiMonitor.java index 97e8824..227c8d2 100644 --- a/service/java/com/android/server/wifi/WifiMonitor.java +++ b/service/java/com/android/server/wifi/WifiMonitor.java @@ -278,6 +278,19 @@ public class WifiMonitor { Pattern.compile("SIM-([0-9]*):GSM-AUTH((:[0-9a-f]+)+) needed for SSID (.+)"); /** + * Regex pattern for extracting an external 3G sim authentication request from a string. + * Matches a strings like the following:<pre> + * CTRL-REQ-SIM-<network id>:UMTS-AUTH:<RAND>:<AUTN> needed for SSID <SSID> + * This pattern should find + * 1 - id + * 2 - Rand + * 3 - Autn + * 4 - SSID + */ + private static Pattern mRequestUmtsAuthPattern = + Pattern.compile("SIM-([0-9]*):UMTS-AUTH:([0-9a-f]+):([0-9a-f]+) needed for SSID (.+)"); + + /** * Regex pattern for extracting SSIDs from request identity string. * Matches a strings like the following:<pre> * CTRL-REQ-IDENTITY-xx:Identity needed for SSID XXXX</pre> @@ -1248,14 +1261,23 @@ public class WifiMonitor { } mStateMachine.sendMessage(SUP_REQUEST_IDENTITY, eventLogCounter, reason, SSID); } else if (requestName.startsWith(SIM_STR)) { - Matcher match = mRequestGsmAuthPattern.matcher(requestName); - if (match.find()) { - WifiStateMachine.SimAuthRequestData data = - new WifiStateMachine.SimAuthRequestData(); - data.networkId = Integer.parseInt(match.group(1)); + Matcher matchGsm = mRequestGsmAuthPattern.matcher(requestName); + Matcher matchUmts = mRequestUmtsAuthPattern.matcher(requestName); + WifiStateMachine.SimAuthRequestData data = + new WifiStateMachine.SimAuthRequestData(); + if (matchGsm.find()) { + data.networkId = Integer.parseInt(matchGsm.group(1)); data.protocol = WifiEnterpriseConfig.Eap.SIM; - data.ssid = match.group(4); - data.challenges = match.group(2).split(":"); + data.ssid = matchGsm.group(4); + data.data = matchGsm.group(2).split(":"); + mStateMachine.sendMessage(SUP_REQUEST_SIM_AUTH, data); + } else if (matchUmts.find()) { + data.networkId = Integer.parseInt(matchUmts.group(1)); + data.protocol = WifiEnterpriseConfig.Eap.AKA; + data.ssid = matchUmts.group(4); + data.data = new String[2]; + data.data[0] = matchUmts.group(2); + data.data[1] = matchUmts.group(3); mStateMachine.sendMessage(SUP_REQUEST_SIM_AUTH, data); } else { Log.e(TAG, "couldn't parse SIM auth request - " + requestName); |