1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.server.wifi;
17 
18 import android.annotation.NonNull;
19 import android.hardware.wifi.supplicant.V1_0.ISupplicantStaNetworkCallback;
20 
21 import com.android.server.wifi.util.NativeUtil;
22 
23 class SupplicantStaNetworkCallbackImpl extends ISupplicantStaNetworkCallback.Stub {
24     private final SupplicantStaNetworkHal mNetworkHal;
25 
26     /**
27      * Current configured network's framework network id.
28      */
29     private final int mFrameworkNetworkId;
30     /**
31      * Current configured network's ssid.
32      */
33     private final String mSsid;
34 
35     private final String mIfaceName;
36 
37     private final Object mLock;
38 
39     private final WifiMonitor mWifiMonitor;
40 
SupplicantStaNetworkCallbackImpl( @onNull SupplicantStaNetworkHal networkHal, int frameworkNetworkId, String ssid, @NonNull String ifaceName, @NonNull Object lock, @NonNull WifiMonitor wifiMonitor)41     SupplicantStaNetworkCallbackImpl(
42             @NonNull SupplicantStaNetworkHal networkHal,
43             int frameworkNetworkId, String ssid,
44             @NonNull String ifaceName, @NonNull Object lock, @NonNull WifiMonitor wifiMonitor) {
45         mNetworkHal = networkHal;
46 
47         mFrameworkNetworkId = frameworkNetworkId;
48         mSsid = ssid;
49 
50         mIfaceName = ifaceName;
51         mLock = lock;
52         mWifiMonitor = wifiMonitor;
53     }
54 
55     @Override
onNetworkEapSimGsmAuthRequest( ISupplicantStaNetworkCallback.NetworkRequestEapSimGsmAuthParams params)56     public void onNetworkEapSimGsmAuthRequest(
57             ISupplicantStaNetworkCallback.NetworkRequestEapSimGsmAuthParams params) {
58         synchronized (mLock) {
59             mNetworkHal.logCallback("onNetworkEapSimGsmAuthRequest");
60             String[] data = new String[params.rands.size()];
61             int i = 0;
62             for (byte[] rand : params.rands) {
63                 data[i++] = NativeUtil.hexStringFromByteArray(rand);
64             }
65             mWifiMonitor.broadcastNetworkGsmAuthRequestEvent(
66                     mIfaceName, mFrameworkNetworkId, mSsid, data);
67         }
68     }
69 
70     @Override
onNetworkEapSimUmtsAuthRequest( ISupplicantStaNetworkCallback.NetworkRequestEapSimUmtsAuthParams params)71     public void onNetworkEapSimUmtsAuthRequest(
72             ISupplicantStaNetworkCallback.NetworkRequestEapSimUmtsAuthParams params) {
73         synchronized (mLock) {
74             mNetworkHal.logCallback("onNetworkEapSimUmtsAuthRequest");
75             String randHex = NativeUtil.hexStringFromByteArray(params.rand);
76             String autnHex = NativeUtil.hexStringFromByteArray(params.autn);
77             String[] data = {randHex, autnHex};
78             mWifiMonitor.broadcastNetworkUmtsAuthRequestEvent(
79                     mIfaceName, mFrameworkNetworkId, mSsid, data);
80         }
81     }
82 
83     @Override
onNetworkEapIdentityRequest()84     public void onNetworkEapIdentityRequest() {
85         synchronized (mLock) {
86             mNetworkHal.logCallback("onNetworkEapIdentityRequest");
87             mWifiMonitor.broadcastNetworkIdentityRequestEvent(
88                     mIfaceName, mFrameworkNetworkId, mSsid);
89         }
90     }
91 }
92