178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xupackage android.net.wifi; 278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport java.io.ByteArrayInputStream; 478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport java.io.InputStream; 578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport java.nio.charset.StandardCharsets; 678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport java.security.cert.CertificateFactory; 778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xuimport java.security.cert.X509Certificate; 878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu/** 1078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu * A class containing test certificates. 1178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu */ 1278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xupublic class FakeKeys { 1378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu private static final String CA_CERT0_STRING = "-----BEGIN CERTIFICATE-----\n" + 1478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "MIIDKDCCAhCgAwIBAgIJAILlFdwzLVurMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV\n" + 1578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "BAMTB0VBUCBDQTEwHhcNMTYwMTEyMTE1MDE1WhcNMjYwMTA5MTE1MDE1WjASMRAw\n" + 1678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "DgYDVQQDEwdFQVAgQ0ExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n" + 1778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "znAPUz26Msae4ws43czR41/J2QtrSIZUKmVUsVumDbYHrPNvTXKSMXAcewORDQYX\n" + 1878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "RqvHvpn8CscB1+oGXZvHwxj4zV0WKoK2zeXkau3vcyl3HIKupJfq2TEACefVjj0t\n" + 1978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "JW+X35PGWp9/H5zIUNVNVjS7Ums84IvKhRB8512PB9UyHagXYVX5GWpAcVpyfrlR\n" + 2078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "FI9Qdhh+Pbk0uyktdbf/CdfgHOoebrTtwRljM0oDtX+2Cv6j0wBK7hD8pPvf1+uy\n" + 2178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "GzczigAU/4Kw7eZqydf9B+5RupR+IZipX41xEiIrKRwqi517WWzXcjaG2cNbf451\n" + 2278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "xpH5PnV3i1tq04jMGQUzFwIDAQABo4GAMH4wHQYDVR0OBBYEFIwX4vs8BiBcScod\n" + 2378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "5noZHRM8E4+iMEIGA1UdIwQ7MDmAFIwX4vs8BiBcScod5noZHRM8E4+ioRakFDAS\n" + 2478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "MRAwDgYDVQQDEwdFQVAgQ0ExggkAguUV3DMtW6swDAYDVR0TBAUwAwEB/zALBgNV\n" + 2578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "HQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAFfQqOTA7Rv7K+luQ7pnas4BYwHE\n" + 2678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "9GEP/uohv6KOy0TGQFbrRTjFoLVNB9BZ1ymMDZ0/TIwIUc7wi7a8t5mEqYH153wW\n" + 2778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "aWooiSjyLLhuI4sNrNCOtisdBq2r2MFXt6h0mAQYOPv8R8K7/fgSxGFqzhyNmmVL\n" + 2878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "1qBJldx34SpwsTALQVPb4hGwJzZfr1PcpEQx6xMnTl8xEWZE3Ms99uaUxbQqIwRu\n" + 2978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "LgAOkNCmY2m89VhzaHJ1uV85AdM/tD+Ysmlnnjt9LRCejbBipjIGjOXrg1JP+lxV\n" + 3078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "muM4vH+P/mlmxsPPz0d65b+EGmJZpoLkO/tdNNvCYzjJpTEWpEsO6NMhKYo=\n" + 3178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "-----END CERTIFICATE-----\n"; 3278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public static final X509Certificate CA_CERT0 = loadCertificate(CA_CERT0_STRING); 3378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 3478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu private static final String CA_CERT1_STRING = "-----BEGIN CERTIFICATE-----\n" + 3578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "MIIDKDCCAhCgAwIBAgIJAOM5SzKO2pzCMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV\n" + 3678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "BAMTB0VBUCBDQTAwHhcNMTYwMTEyMDAxMDQ3WhcNMjYwMTA5MDAxMDQ3WjASMRAw\n" + 3778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "DgYDVQQDEwdFQVAgQ0EwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n" + 3878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "89ug+IEKVQXnJGKg5g4uVHg6J/8iRUxR5k2eH5o03hrJNMfN2D+cBe/wCiZcnWbI\n" + 3978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "GbGZACWm2nQth2wy9Zgm2LOd3b4ocrHYls3XLq6Qb5Dd7a0JKU7pdGufiNVEkrmF\n" + 4078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "EB+N64wgwH4COTvCiN4erp5kyJwkfqAl2xLkZo0C464c9XoyQOXbmYD9A8v10wZu\n" + 4178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "jyNsEo7Nr2USyw+qhjWSbFbEirP77Tvx+7pJQJwdtk1V9Tn73T2dGF2WHYejei9S\n" + 4278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "mcWpdIUqsu9etYH+zDmtu7I1xlkwiaVsNr2+D+qaCJyOYqrDTKVNK5nmbBPXDWZc\n" + 4378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "NoDbTOoqquX7xONpq9M6jQIDAQABo4GAMH4wHQYDVR0OBBYEFAZ3A2S4qJZZwuNY\n" + 4478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "wkJ6mAdc0gVdMEIGA1UdIwQ7MDmAFAZ3A2S4qJZZwuNYwkJ6mAdc0gVdoRakFDAS\n" + 4578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "MRAwDgYDVQQDEwdFQVAgQ0EwggkA4zlLMo7anMIwDAYDVR0TBAUwAwEB/zALBgNV\n" + 4678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "HQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAHmdMwEhtys4d0E+t7owBmoVR+lU\n" + 4778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "hMCcRtWs8YKX5WIM2kTweT0h/O1xwE1mWmRv/IbDAEb8od4BjAQLhIcolStr2JaO\n" + 4878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "9ZzyxjOnNzqeErh/1DHDbb/moPpqfeJ8YiEz7nH/YU56Q8iCPO7TsgS0sNNE7PfN\n" + 4978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "IUsBW0yHRgpQ4OxWmiZG2YZWiECRzAC0ecPzo59N5iH4vLQIMTMYquiDeMPQnn1e\n" + 5078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "NDGxG8gCtDKIaS6tMg3a28MvWB094pr2ETou8O1C8Ji0Y4hE8QJmSdT7I4+GZjgW\n" + 5178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "g94DZ5RiL7sdp3vC48CXOmeT61YBIvhGUsE1rPhXqkpqQ3Z3C4TFF0jXZZc=\n" + 5278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu "-----END CERTIFICATE-----\n"; 5378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu public static final X509Certificate CA_CERT1 = loadCertificate(CA_CERT1_STRING); 5478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 5578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 5678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu private static X509Certificate loadCertificate(String blob) { 5778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu try { 5878463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu final CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); 5978463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu InputStream stream = new ByteArrayInputStream(blob.getBytes(StandardCharsets.UTF_8)); 6078463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu 6178463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu return (X509Certificate) certFactory.generateCertificate(stream); 6278463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } catch (Exception e) { 6378463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu e.printStackTrace(); 6478463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu return null; 6578463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 6678463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu } 6778463be32c01259841f4c0b670b742c3c2040cf3Rubin Xu} 68