()
| 1800 | } |
| 1801 | |
| 1802 | static SpannableStringBuilder getCiphers() { |
| 1803 | SpannableStringBuilder ssb = new SpannableStringBuilderEx(); |
| 1804 | |
| 1805 | for (Provider provider : new Provider[]{ |
| 1806 | null, // Android |
| 1807 | new BouncyCastleJsseProvider(), |
| 1808 | new BouncyCastleJsseProvider(true)}) |
| 1809 | for (String protocol : new String[]{"SSL", "TLS"}) |
| 1810 | try { |
| 1811 | int begin = ssb.length(); |
| 1812 | |
| 1813 | SSLContext sslContext = (provider == null |
| 1814 | ? SSLContext.getInstance(protocol) |
| 1815 | : SSLContext.getInstance(protocol, provider)); |
| 1816 | |
| 1817 | ssb.append("SSL protocol: ").append(sslContext.getProtocol()).append("\r\n"); |
| 1818 | Provider sslProvider = sslContext.getProvider(); |
| 1819 | ssb.append("SSL provider: ").append(sslProvider.getName()); |
| 1820 | if (sslProvider instanceof BouncyCastleJsseProvider) { |
| 1821 | boolean fips = ((BouncyCastleJsseProvider) sslProvider).isFipsMode(); |
| 1822 | if (fips) |
| 1823 | ssb.append(" FIPS"); |
| 1824 | } |
| 1825 | ssb.append("\r\n"); |
| 1826 | ssb.append("SSL class: ").append(sslProvider.getClass().getName()).append("\r\n"); |
| 1827 | |
| 1828 | ssb.setSpan(new StyleSpan(Typeface.BOLD), begin, ssb.length(), 0); |
| 1829 | ssb.append("\r\n"); |
| 1830 | |
| 1831 | TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); |
| 1832 | tmf.init((KeyStore) null); |
| 1833 | |
| 1834 | ssb.append("Trust provider: ").append(tmf.getProvider().getName()).append("\r\n"); |
| 1835 | ssb.append("Trust class: ").append(tmf.getProvider().getClass().getName()).append("\r\n"); |
| 1836 | ssb.append("Trust algorithm: ").append(tmf.getAlgorithm()).append("\r\n"); |
| 1837 | |
| 1838 | TrustManager[] tms = tmf.getTrustManagers(); |
| 1839 | if (tms != null) |
| 1840 | for (TrustManager tm : tms) |
| 1841 | ssb.append("Trust manager: ").append(tm.getClass().getName()).append("\r\n"); |
| 1842 | ssb.append("\r\n"); |
| 1843 | |
| 1844 | sslContext.init(null, tmf.getTrustManagers(), null); |
| 1845 | SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket(); |
| 1846 | |
| 1847 | List<String> protocols = new ArrayList<>(); |
| 1848 | protocols.addAll(Arrays.asList(socket.getEnabledProtocols())); |
| 1849 | |
| 1850 | for (String p : socket.getSupportedProtocols()) { |
| 1851 | boolean enabled = protocols.contains(p); |
| 1852 | if (!enabled) |
| 1853 | ssb.append('('); |
| 1854 | int start = ssb.length(); |
| 1855 | ssb.append(p); |
| 1856 | if (!enabled) { |
| 1857 | ssb.setSpan(new StrikethroughSpan(), start, ssb.length(), 0); |
| 1858 | ssb.append(')'); |
| 1859 | } |
no test coverage detected