1 package de.dhbwloe.campusapp.wifi;
3 import android.net.wifi.WifiConfiguration;
4 import android.net.wifi.WifiEnterpriseConfig;
5 import android.support.design.widget.TabLayout;
6 import android.util.Base64;
8 import java.io.ByteArrayInputStream;
9 import java.io.IOException;
10 import java.security.cert.CertificateException;
11 import java.security.cert.CertificateFactory;
12 import java.security.cert.X509Certificate;
13 import java.util.ArrayList;
15 import de.dhbwloe.campusapp.CampusAppContext;
18 * Created by pk910 on 08.02.2016.
20 public class WifiNetworkSettings {
21 public static WifiNetworkSettings[] LoadNetworkSettingPresets(CampusAppContext context) {
22 ArrayList<WifiNetworkSettings> presets = new ArrayList<WifiNetworkSettings>();
24 presets.add((new WifiNetworkSettings("dhbw-secure", "dhbw-secure", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)).
26 new int[]{WifiConfiguration.KeyMgmt.WPA_EAP, WifiConfiguration.KeyMgmt.IEEE8021X},
27 WifiEnterpriseConfig.Eap.PEAP,
28 WifiEnterpriseConfig.Phase2.MSCHAPV2,
30 ).setCACertificate("Deutsche Telekom Root CA 2", "-----BEGIN CERTIFICATE-----\n" +
31 "MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc\n" +
32 "MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj\n" +
33 "IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB\n" +
34 "IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE\n" +
35 "RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl\n" +
36 "U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290\n" +
37 "IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU\n" +
38 "ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC\n" +
39 "QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr\n" +
40 "rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S\n" +
41 "NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc\n" +
42 "QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH\n" +
43 "txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP\n" +
44 "BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC\n" +
45 "AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp\n" +
46 "tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa\n" +
47 "IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl\n" +
48 "6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+\n" +
49 "xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU\n" +
50 "Cm26OWMohpLzGITY+9HPBVZkVw==\n" +
51 "-----END CERTIFICATE-----"));
53 presets.add((new WifiNetworkSettings("dhbw-wlan", "dhbw-wlan", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_NONE)).
54 setDHSecureLogin(new SecureLoginManager()).setCACertificate("DHBW CA - G01", "-----BEGIN CERTIFICATE-----\n" +
55 "MIIFSjCCBDKgAwIBAgIHF6/20DYr2jANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQG\n" +
56 "EwJERTETMBEGA1UEChMKREZOLVZlcmVpbjEQMA4GA1UECxMHREZOLVBLSTEkMCIG\n" +
57 "A1UEAxMbREZOLVZlcmVpbiBQQ0EgR2xvYmFsIC0gRzAxMB4XDTE0MDYwNTE0MDU1\n" +
58 "MloXDTE5MDcwOTIzNTkwMFowcjELMAkGA1UEBhMCREUxLDAqBgNVBAoTI0R1YWxl\n" +
59 "IEhvY2hzY2h1bGUgQmFkZW4tV3VlcnR0ZW1iZXJnMRYwFAYDVQQDEw1ESEJXIENB\n" +
60 "IC0gRzAxMR0wGwYJKoZIhvcNAQkBFg5wa2lAZGhidy12cy5kZTCCASIwDQYJKoZI\n" +
61 "hvcNAQEBBQADggEPADCCAQoCggEBALtoqHrbNRjuRdIh20VPATXIitkVgIva+HcA\n" +
62 "Q7qA87lsm6v28DSasCPgx+TnGoUduGucA7fA7UhtWGqmU5cbJ5Ucsra0XBwqbOEN\n" +
63 "u7GIBVcK7vUac67Ny+9TEqB/mtKz4nU/G8TlpX5hotMDg4H46SvtIvtSz1RJ2BVs\n" +
64 "ssssubz3zI/W5Y6qqfRhZGLzrqmZYYlfCc/sn0jOkElgomAzzt4rmKRq8CsX3bYJ\n" +
65 "ImeUaEHXU5QgTEZLgA9olse54r6N2O+cM4y/eDK9q9RaWdjNKTDsRq/sILlgUIaO\n" +
66 "XcxzBa3pOhQ7zRb5amGiTIxWb2Szzy+Ka1XO9BseTFCcot8BAO8CAwEAAaOCAfsw\n" +
67 "ggH3MBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMBEGA1UdIAQK\n" +
68 "MAgwBgYEVR0gADAdBgNVHQ4EFgQUjOlwcWC4U59ExpdeQh/tKHK9Dn4wHwYDVR0j\n" +
69 "BBgwFoAUSbfGz+g9H3/qRHsTKffxCnA+3mQwGQYDVR0RBBIwEIEOcGtpQGRoYnct\n" +
70 "dnMuZGUwgYgGA1UdHwSBgDB+MD2gO6A5hjdodHRwOi8vY2RwMS5wY2EuZGZuLmRl\n" +
71 "L2dsb2JhbC1yb290LWNhL3B1Yi9jcmwvY2FjcmwuY3JsMD2gO6A5hjdodHRwOi8v\n" +
72 "Y2RwMi5wY2EuZGZuLmRlL2dsb2JhbC1yb290LWNhL3B1Yi9jcmwvY2FjcmwuY3Js\n" +
73 "MIHXBggrBgEFBQcBAQSByjCBxzAzBggrBgEFBQcwAYYnaHR0cDovL29jc3AucGNh\n" +
74 "LmRmbi5kZS9PQ1NQLVNlcnZlci9PQ1NQMEcGCCsGAQUFBzAChjtodHRwOi8vY2Rw\n" +
75 "MS5wY2EuZGZuLmRlL2dsb2JhbC1yb290LWNhL3B1Yi9jYWNlcnQvY2FjZXJ0LmNy\n" +
76 "dDBHBggrBgEFBQcwAoY7aHR0cDovL2NkcDIucGNhLmRmbi5kZS9nbG9iYWwtcm9v\n" +
77 "dC1jYS9wdWIvY2FjZXJ0L2NhY2VydC5jcnQwDQYJKoZIhvcNAQELBQADggEBAMS9\n" +
78 "5ypdDi/q3AeBOfzj3A3PZaQaLumKxvVeA2xy8j8XtwWpPeG99QwtqeKlJ3+OCuwT\n" +
79 "eRtkWxnsm0eonLYI2rSL8y94LUoM0kj4GiHbRqL4eqPJKCwoQeTWxkeW/2fmZPtn\n" +
80 "u9zBDAWFDgMtK9iiIOzp9FlNljHKJH1EdaWJD/Gv/5+ElNZpFDZ/oz/kosyvLeWZ\n" +
81 "EiA3U8/LDPFPlxe+gVqmr7+tzo88/C6i3NZSaUJ3qkaWSxx+xx/sNXoHX22msHwN\n" +
82 "SqnBQinCotrRO3WgZVDvhN3/eHZ8Zj7z6re7x/qlIGsKDVGxidWjGQDF2jp8O5Rp\n" +
83 "uD3s1d70097Es++KwAg=\n" +
84 "-----END CERTIFICATE-----\n"));
86 presets.add((new WifiNetworkSettings("dhbw-802.1x", "dhbw-802.1x", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)).
88 new int[]{WifiConfiguration.KeyMgmt.WPA_EAP, WifiConfiguration.KeyMgmt.IEEE8021X},
89 WifiEnterpriseConfig.Eap.PEAP,
90 WifiEnterpriseConfig.Phase2.GTC,
92 ).setCACertificate("Deutsche Telekom Root CA 2", "-----BEGIN CERTIFICATE-----\n" +
93 "MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc\n" +
94 "MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj\n" +
95 "IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB\n" +
96 "IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE\n" +
97 "RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl\n" +
98 "U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290\n" +
99 "IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU\n" +
100 "ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC\n" +
101 "QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr\n" +
102 "rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S\n" +
103 "NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc\n" +
104 "QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH\n" +
105 "txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP\n" +
106 "BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC\n" +
107 "AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp\n" +
108 "tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa\n" +
109 "IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl\n" +
110 "6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+\n" +
111 "xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU\n" +
112 "Cm26OWMohpLzGITY+9HPBVZkVw==\n" +
113 "-----END CERTIFICATE-----"));
115 presets.add((new WifiNetworkSettings("eduroam", "eduroam", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)).
117 new int[] {WifiConfiguration.KeyMgmt.WPA_EAP, WifiConfiguration.KeyMgmt.IEEE8021X},
118 WifiEnterpriseConfig.Eap.PEAP,
119 WifiEnterpriseConfig.Phase2.MSCHAPV2,
121 ).setCACertificate("Deutsche Telekom Root CA 2", "-----BEGIN CERTIFICATE-----\n" +
122 "MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc\n" +
123 "MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj\n" +
124 "IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB\n" +
125 "IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE\n" +
126 "RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl\n" +
127 "U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290\n" +
128 "IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU\n" +
129 "ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC\n" +
130 "QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr\n" +
131 "rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S\n" +
132 "NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc\n" +
133 "QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH\n" +
134 "txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP\n" +
135 "BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC\n" +
136 "AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp\n" +
137 "tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa\n" +
138 "IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl\n" +
139 "6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+\n" +
140 "xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU\n" +
141 "Cm26OWMohpLzGITY+9HPBVZkVw==\n" +
142 "-----END CERTIFICATE-----").
143 setUserSuffix("@dhbw-loerrach.de"));
145 WifiNetworkSettings[] presetsArr = new WifiNetworkSettings[presets.size()];
146 presetsArr = presets.toArray(presetsArr);
150 public enum WifiNetworkAuthenticationTypes {
154 WIFI_AUTHTYPE_WPA_ENTERPRISE,
159 WifiNetworkAuthenticationTypes authType;
160 int[] authAlgorithms = new int[0];
167 SecureLoginManager performDHSecureLogin;
168 String usernameSuffix;
172 public TabLayout.Tab tab;
173 public boolean isInScanResult = false;
174 public boolean isTryConnecting = false;
175 public boolean isAssociating = false;
176 public boolean isAssociated = false;
177 public boolean isAuthenticated = false;
178 public boolean isDisconnected = false;
179 public boolean failedAuthentication = false;
181 public WifiNetworkSettings(String name, String ssid, WifiNetworkAuthenticationTypes authType) {
184 this.authType = authType;
186 case WIFI_AUTHTYPE_NONE:
187 case WIFI_AUTHTYPE_WEP:
188 this.authAlgorithms = new int[] { WifiConfiguration.KeyMgmt.NONE };
190 case WIFI_AUTHTYPE_WPA:
191 this.authAlgorithms = new int[] { WifiConfiguration.KeyMgmt.WPA_PSK };
196 public WifiNetworkSettings setWpaEnterprise(int[] authAlgorithms, int eapMethod, int phase2Method, String username) {
197 this.authAlgorithms = authAlgorithms;
198 this.eapMethod = eapMethod;
199 this.phase2Method = phase2Method;
200 this.username = username;
204 public WifiNetworkSettings setPassword(String password) {
205 this.password = password;
209 public WifiNetworkSettings setCACertificate(String caname, String certificate) {
210 this.caName = caname;
211 this.caCertStr = certificate;
215 public WifiNetworkSettings setUserSuffix(String suffix) {
216 this.usernameSuffix = suffix;
220 public WifiNetworkSettings setDHSecureLogin(SecureLoginManager secureLogin) {
221 this.performDHSecureLogin = secureLogin;
225 public void setAuthData(String username, String password) {
226 this.username = username;
227 this.password = password;
230 public void setAuthData(String password) {
231 this.password = password;
234 public X509Certificate generateCertificate() throws CertificateException, IOException {
235 byte[] decoded = Base64.decode(caCertStr.replaceAll("-----BEGIN CERTIFICATE-----", "").replaceAll("-----END CERTIFICATE-----", ""), Base64.DEFAULT);
236 return (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(decoded));
241 public String getName() {
245 public String getSSID() {
249 public WifiNetworkSettings.WifiNetworkAuthenticationTypes getAuthType() {
253 public int getEapMethod() {
256 public int getPhase2Method() {
260 public String getCAName() {