Search in sources :

Example 11 with WifiConfiguration

use of android.net.wifi.WifiConfiguration in project platform_frameworks_base by android.

the class WifiNetworkAdapter method updateNetwork.

public void updateNetwork(HomeSP homeSP, X509Certificate caCert, List<X509Certificate> clientCerts, PrivateKey privateKey) throws IOException, GeneralSecurityException {
    WifiConfiguration config = getWifiConfig(homeSP);
    if (config == null) {
        throw new IOException("Failed to find matching network config");
    }
    Log.d(OSUManager.TAG, "Found matching config " + config.networkId + ", updating");
    WifiEnterpriseConfig enterpriseConfig = config.enterpriseConfig;
    WifiConfiguration newConfig = ConfigBuilder.buildConfig(homeSP, caCert != null ? caCert : enterpriseConfig.getCaCertificate(), clientCerts, privateKey);
    newConfig.networkId = config.networkId;
    WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
    wifiManager.save(newConfig, null);
    wifiManager.saveConfiguration();
}
Also used : WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig) WifiManager(android.net.wifi.WifiManager) WifiConfiguration(android.net.wifi.WifiConfiguration) IOException(java.io.IOException)

Example 12 with WifiConfiguration

use of android.net.wifi.WifiConfiguration in project platform_frameworks_base by android.

the class ConfigBuilder method buildTTLSConfig.

// Retain for debugging purposes
/*
    private static void xIterateCerts(KeyStore ks, X509Certificate caCert)
            throws GeneralSecurityException {
        Enumeration<String> aliases = ks.aliases();
        while (aliases.hasMoreElements()) {
            String alias = aliases.nextElement();
            Certificate cert = ks.getCertificate(alias);
            Log.d("HS2J", "Checking " + alias);
            if (cert instanceof X509Certificate) {
                X509Certificate x509Certificate = (X509Certificate) cert;
                boolean sm = x509Certificate.getSubjectX500Principal().equals(
                        caCert.getSubjectX500Principal());
                boolean eq = false;
                if (sm) {
                    eq = Arrays.equals(x509Certificate.getEncoded(), caCert.getEncoded());
                }
                Log.d("HS2J", "Subject: " + x509Certificate.getSubjectX500Principal() +
                        ": " + sm + "/" + eq);
            }
        }
    }
    */
private static WifiConfiguration buildTTLSConfig(HomeSP homeSP) throws IOException {
    Credential credential = homeSP.getCredential();
    if (credential.getUserName() == null || credential.getPassword() == null) {
        throw new IOException("EAP-TTLS provisioned without user name or password");
    }
    EAPMethod eapMethod = credential.getEAPMethod();
    AuthParam authParam = eapMethod.getAuthParam();
    if (authParam == null || authParam.getAuthInfoID() != EAP.AuthInfoID.NonEAPInnerAuthType) {
        throw new IOException("Bad auth parameter for EAP-TTLS: " + authParam);
    }
    WifiConfiguration config = buildBaseConfiguration(homeSP);
    NonEAPInnerAuth ttlsParam = (NonEAPInnerAuth) authParam;
    WifiEnterpriseConfig enterpriseConfig = config.enterpriseConfig;
    enterpriseConfig.setPhase2Method(remapInnerMethod(ttlsParam.getType()));
    enterpriseConfig.setIdentity(credential.getUserName());
    enterpriseConfig.setPassword(credential.getPassword());
    return config;
}
Also used : WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig) Credential(com.android.hotspot2.pps.Credential) WifiConfiguration(android.net.wifi.WifiConfiguration) IOException(java.io.IOException) AuthParam(com.android.anqp.eap.AuthParam) EAPMethod(com.android.anqp.eap.EAPMethod) NonEAPInnerAuth(com.android.anqp.eap.NonEAPInnerAuth)

Example 13 with WifiConfiguration

use of android.net.wifi.WifiConfiguration in project platform_frameworks_base by android.

the class WifiNetworkAdapter method connect.

/**
     * Connect to an OSU provisioning network. The connection should not bring down other existing
     * connection and the network should not be made the default network since the connection
     * is solely for sign up and is neither intended for nor likely provides access to any
     * generic resources.
     *
     * @param osuInfo The OSU info object that defines the parameters for the network. An OSU
     *                network is either an open network, or, if the OSU NAI is set, an "OSEN"
     *                network, which is an anonymous EAP-TLS network with special keys.
     * @param info    An opaque string that is passed on to any user notification. The string is used
     *                for the name of the service provider.
     * @return an Integer holding the network-id of the just added network configuration, or null
     * if the network existed prior to this call (was not added by the OSU infrastructure).
     * The value will be used at the end of the OSU flow to delete the network as applicable.
     * @throws IOException Issues:
     *                     1. The network id is not returned. addNetwork cannot be called from here since the method
     *                     runs in the context of the app and doesn't have the appropriate permission.
     *                     2. The connection is not immediately usable if the network was not previously selected
     *                     manually.
     */
public Integer connect(OSUInfo osuInfo, final String info) throws IOException {
    WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
    WifiConfiguration config = new WifiConfiguration();
    config.SSID = '"' + osuInfo.getSSID() + '"';
    if (osuInfo.getOSUBssid() != 0) {
        config.BSSID = Utils.macToString(osuInfo.getOSUBssid());
        Log.d(OSUManager.TAG, String.format("Setting BSSID of '%s' to %012x", osuInfo.getSSID(), osuInfo.getOSUBssid()));
    }
    if (osuInfo.getOSUProvider().getOsuNai() == null) {
        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
    } else {
        config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.OSEN);
        config.allowedProtocols.set(WifiConfiguration.Protocol.OSEN);
        config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
        config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.GTK_NOT_USED);
        config.enterpriseConfig = new WifiEnterpriseConfig();
        config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.UNAUTH_TLS);
        config.enterpriseConfig.setIdentity(osuInfo.getOSUProvider().getOsuNai());
    // !!! OSEN CA Cert???
    }
    int networkId = wifiManager.addNetwork(config);
    if (wifiManager.enableNetwork(networkId, true)) {
        return networkId;
    } else {
        return null;
    }
/* sequence of addNetwork(), enableNetwork(), saveConfiguration() and reconnect()
        wifiManager.connect(config, new WifiManager.ActionListener() {
            @Override
            public void onSuccess() {
                // Connection event comes from network change intent registered in initialize
            }

            @Override
            public void onFailure(int reason) {
                mOSUManager.notifyUser(OSUOperationStatus.ProvisioningFailure,
                        "Cannot connect to OSU network: " + reason, info);
            }
        });
        return null;

        /*
        try {
            int nwkID = wifiManager.addOrUpdateOSUNetwork(config);
            if (nwkID == WifiConfiguration.INVALID_NETWORK_ID) {
                throw new IOException("Failed to add OSU network");
            }
            wifiManager.enableNetwork(nwkID, false);
            wifiManager.reconnect();
            return nwkID;
        }
        catch (SecurityException se) {
            Log.d("ZXZ", "Blah: " + se, se);
            wifiManager.connect(config, new WifiManager.ActionListener() {
                @Override
                public void onSuccess() {
                    // Connection event comes from network change intent registered in initialize
                }

                @Override
                public void onFailure(int reason) {
                    mOSUManager.notifyUser(OSUOperationStatus.ProvisioningFailure,
                            "Cannot connect to OSU network: " + reason, info);
                }
            });
            return null;
        }
        */
}
Also used : WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig) WifiManager(android.net.wifi.WifiManager) WifiConfiguration(android.net.wifi.WifiConfiguration)

Example 14 with WifiConfiguration

use of android.net.wifi.WifiConfiguration in project platform_frameworks_base by android.

the class AccessPoint method getSavedNetworkSummary.

public String getSavedNetworkSummary() {
    WifiConfiguration config = mConfig;
    if (config != null) {
        PackageManager pm = mContext.getPackageManager();
        String systemName = pm.getNameForUid(android.os.Process.SYSTEM_UID);
        int userId = UserHandle.getUserId(config.creatorUid);
        ApplicationInfo appInfo = null;
        if (config.creatorName != null && config.creatorName.equals(systemName)) {
            appInfo = mContext.getApplicationInfo();
        } else {
            try {
                IPackageManager ipm = AppGlobals.getPackageManager();
                appInfo = ipm.getApplicationInfo(config.creatorName, 0, /* flags */
                userId);
            } catch (RemoteException rex) {
            }
        }
        if (appInfo != null && !appInfo.packageName.equals(mContext.getString(R.string.settings_package)) && !appInfo.packageName.equals(mContext.getString(R.string.certinstaller_package))) {
            return mContext.getString(R.string.saved_network, appInfo.loadLabel(pm));
        }
    }
    return "";
}
Also used : WifiConfiguration(android.net.wifi.WifiConfiguration) PackageManager(android.content.pm.PackageManager) IPackageManager(android.content.pm.IPackageManager) IPackageManager(android.content.pm.IPackageManager) ApplicationInfo(android.content.pm.ApplicationInfo) SpannableString(android.text.SpannableString) RemoteException(android.os.RemoteException)

Example 15 with WifiConfiguration

use of android.net.wifi.WifiConfiguration in project platform_frameworks_base by android.

the class AccessPoint method generateOpenNetworkConfig.

/**
     * Generate and save a default wifiConfiguration with common values.
     * Can only be called for unsecured networks.
     */
public void generateOpenNetworkConfig() {
    if (security != SECURITY_NONE)
        throw new IllegalStateException();
    if (mConfig != null)
        return;
    mConfig = new WifiConfiguration();
    mConfig.SSID = AccessPoint.convertToQuotedString(ssid);
    mConfig.allowedKeyManagement.set(KeyMgmt.NONE);
}
Also used : WifiConfiguration(android.net.wifi.WifiConfiguration)

Aggregations

WifiConfiguration (android.net.wifi.WifiConfiguration)316 WifiManager (android.net.wifi.WifiManager)54 LargeTest (android.test.suitebuilder.annotation.LargeTest)53 IOException (java.io.IOException)44 ArrayList (java.util.ArrayList)38 WifiEnterpriseConfig (android.net.wifi.WifiEnterpriseConfig)32 ScanResult (android.net.wifi.ScanResult)27 Credential (com.android.hotspot2.pps.Credential)20 Scanner (com.android.settingslib.wifi.WifiTracker.Scanner)20 WifiInfo (android.net.wifi.WifiInfo)16 Bundle (android.os.Bundle)12 NetworkPolicy (android.net.NetworkPolicy)10 SpannableString (android.text.SpannableString)10 EAP (com.android.anqp.eap.EAP)10 X509Certificate (java.security.cert.X509Certificate)10 StaticIpConfiguration (android.net.StaticIpConfiguration)7 PackageManager (android.content.pm.PackageManager)6 NetworkInfo (android.net.NetworkInfo)6 PowerManager (android.os.PowerManager)6 RemoteException (android.os.RemoteException)6