1bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/* 2bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Copyright (C) 2016 The Android Open Source Project 3bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 4bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Licensed under the Apache License, Version 2.0 (the "License"); 5bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * you may not use this file except in compliance with the License. 6bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * You may obtain a copy of the License at 7bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 8bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * http://www.apache.org/licenses/LICENSE-2.0 9bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * 10bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Unless required by applicable law or agreed to in writing, software 11bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * distributed under the License is distributed on an "AS IS" BASIS, 12bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * See the License for the specific language governing permissions and 140fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * limitations under the License. 15bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 16bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 17bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskipackage com.android.server.wifi; 18bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 19bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.net.wifi.WifiConfiguration; 20bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowskiimport android.net.wifi.WifiEnterpriseConfig; 21bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski 22bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski/** 23bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski * Helper for creating and populating WifiConfigurations in unit tests. 24bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski */ 250fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowskipublic class WifiConfigurationTestUtil { 26b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe /** 27b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe * These values are used to describe AP's security setting. One AP can support multiple of them, 28b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe * only if there is no conflict. 29b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe */ 30b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_NONE = 0; 31b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_WEP = 1 << 0; 32b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_PSK = 1 << 1; 33b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static final int SECURITY_EAP = 1 << 2; 34b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 350fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski /** 360fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Construct a {@link android.net.wifi.WifiConfiguration}. 370fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param networkId the configuration's networkId 380fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param uid the configuration's creator uid 390fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param ssid the configuration's ssid 400fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param shared whether the configuration is shared with other users on the device 410fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param enabled whether the configuration is enabled 420fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param fqdn the configuration's FQDN (Hotspot 2.0 only) 430fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only) 440fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @return the constructed {@link android.net.wifi.WifiConfiguration} 450fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski */ 46bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid, 47bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski boolean shared, boolean enabled, String fqdn, String providerFriendlyName) { 48bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski final WifiConfiguration config = new WifiConfiguration(); 49bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.SSID = ssid; 50bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.networkId = networkId; 51bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.creatorUid = uid; 52bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.shared = shared; 53bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.status = enabled ? WifiConfiguration.Status.ENABLED 54bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski : WifiConfiguration.Status.DISABLED; 55bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski if (fqdn != null) { 56bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.FQDN = fqdn; 57bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.providerFriendlyName = providerFriendlyName; 58bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM); 59bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 60bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski return config; 61bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski } 62b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 630fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski /** 640fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * Construct a {@link android.net.wifi.WifiConfiguration}. 650fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param networkId the configuration's networkId 660fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param uid the configuration's creator uid 670fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param ssid the configuration's ssid 680fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param shared whether the configuration is shared with other users on the device 690fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param enabled whether the configuration is enabled 700fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param fqdn the configuration's FQDN (Hotspot 2.0 only) 710fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only) 720fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @param security the configuration's security type 730fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski * @return the constructed {@link android.net.wifi.WifiConfiguration} 740fb9cf43830d67894b519c9a6271320c4842a5c0Bartosz Fabianowski */ 75b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid, 76b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe boolean shared, boolean enabled, String fqdn, String providerFriendlyName, 77b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe int security) { 78b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe WifiConfiguration config = generateWifiConfig(networkId, uid, ssid, shared, enabled, fqdn, 79b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe providerFriendlyName); 80b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 81b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe if (security == SECURITY_NONE) { 82b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 83b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } else { 84b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe if (((security & SECURITY_WEP) != 0) || ((security & SECURITY_PSK) != 0)) { 85b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 86b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 87b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe 88b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe if ((security & SECURITY_EAP) != 0) { 89b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP); 90b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X); 91b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 92b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 93b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe return config; 94b50356194ccfdaf5e127d9f705f99713d6f1e98cxinhe } 95bcdabb1fa1894fcca610692ec94459fe623afa74Bartosz Fabianowski} 96