Created
October 11, 2014 00:32
-
-
Save swankjesse/c6c82bd88295a8a13cc9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.squareup.okhttp.recipes; | |
import java.util.Arrays; | |
import java.util.LinkedHashMap; | |
import java.util.LinkedHashSet; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.Set; | |
public class Ciphers { | |
public static final Map<String, String> OPENSSL_TO_JAVA = new LinkedHashMap<>(); | |
public static final Map<String, String> JAVA_TO_OPENSSL = new LinkedHashMap<>(); | |
public static final Map<String, String> NAME_TO_VERSION = new LinkedHashMap<>(); | |
static { | |
// Source: http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml | |
NAME_TO_VERSION.put("TLS_NULL_WITH_NULL_NULL", "0x00,0x00"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_NULL_MD5", "0x00,0x01"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_NULL_SHA", "0x00,0x02"); | |
NAME_TO_VERSION.put("TLS_RSA_EXPORT_WITH_RC4_40_MD5", "0x00,0x03"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_RC4_128_MD5", "0x00,0x04"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_RC4_128_SHA", "0x00,0x05"); | |
NAME_TO_VERSION.put("TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5", "0x00,0x06"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_IDEA_CBC_SHA", "0x00,0x07"); | |
NAME_TO_VERSION.put("TLS_RSA_EXPORT_WITH_DES40_CBC_SHA", "0x00,0x08"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_DES_CBC_SHA", "0x00,0x09"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_3DES_EDE_CBC_SHA", "0x00,0x0A"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA", "0x00,0x0B"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_DES_CBC_SHA", "0x00,0x0C"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA", "0x00,0x0D"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA", "0x00,0x0E"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_DES_CBC_SHA", "0x00,0x0F"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA", "0x00,0x10"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", "0x00,0x11"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_DES_CBC_SHA", "0x00,0x12"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "0x00,0x13"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", "0x00,0x14"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_DES_CBC_SHA", "0x00,0x15"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "0x00,0x16"); | |
NAME_TO_VERSION.put("TLS_DH_anon_EXPORT_WITH_RC4_40_MD5", "0x00,0x17"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_RC4_128_MD5", "0x00,0x18"); | |
NAME_TO_VERSION.put("TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA", "0x00,0x19"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_DES_CBC_SHA", "0x00,0x1A"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_3DES_EDE_CBC_SHA", "0x00,0x1B"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_DES_CBC_SHA", "0x00,0x1E"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_3DES_EDE_CBC_SHA", "0x00,0x1F"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_RC4_128_SHA", "0x00,0x20"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_IDEA_CBC_SHA", "0x00,0x21"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_DES_CBC_MD5", "0x00,0x22"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_3DES_EDE_CBC_MD5", "0x00,0x23"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_RC4_128_MD5", "0x00,0x24"); | |
NAME_TO_VERSION.put("TLS_KRB5_WITH_IDEA_CBC_MD5", "0x00,0x25"); | |
NAME_TO_VERSION.put("TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", "0x00,0x26"); | |
NAME_TO_VERSION.put("TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA", "0x00,0x27"); | |
NAME_TO_VERSION.put("TLS_KRB5_EXPORT_WITH_RC4_40_SHA", "0x00,0x28"); | |
NAME_TO_VERSION.put("TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5", "0x00,0x29"); | |
NAME_TO_VERSION.put("TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5", "0x00,0x2A"); | |
NAME_TO_VERSION.put("TLS_KRB5_EXPORT_WITH_RC4_40_MD5", "0x00,0x2B"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_NULL_SHA", "0x00,0x2C"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_NULL_SHA", "0x00,0x2D"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_NULL_SHA", "0x00,0x2E"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_128_CBC_SHA", "0x00,0x2F"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_AES_128_CBC_SHA", "0x00,0x30"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_AES_128_CBC_SHA", "0x00,0x31"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "0x00,0x32"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "0x00,0x33"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", "0x00,0x34"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_256_CBC_SHA", "0x00,0x35"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_AES_256_CBC_SHA", "0x00,0x36"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_AES_256_CBC_SHA", "0x00,0x37"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", "0x00,0x38"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", "0x00,0x39"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", "0x00,0x3A"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_NULL_SHA256", "0x00,0x3B"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_128_CBC_SHA256", "0x00,0x3C"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_256_CBC_SHA256", "0x00,0x3D"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_AES_128_CBC_SHA256", "0x00,0x3E"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_AES_128_CBC_SHA256", "0x00,0x3F"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", "0x00,0x40"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_CAMELLIA_128_CBC_SHA", "0x00,0x41"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA", "0x00,0x42"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA", "0x00,0x43"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA", "0x00,0x44"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA", "0x00,0x45"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA", "0x00,0x46"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", "0x00,0x67"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_AES_256_CBC_SHA256", "0x00,0x68"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_AES_256_CBC_SHA256", "0x00,0x69"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", "0x00,0x6A"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", "0x00,0x6B"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_AES_128_CBC_SHA256", "0x00,0x6C"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_AES_256_CBC_SHA256", "0x00,0x6D"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_CAMELLIA_256_CBC_SHA", "0x00,0x84"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA", "0x00,0x85"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA", "0x00,0x86"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA", "0x00,0x87"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA", "0x00,0x88"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA", "0x00,0x89"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_RC4_128_SHA", "0x00,0x8A"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_3DES_EDE_CBC_SHA", "0x00,0x8B"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_128_CBC_SHA", "0x00,0x8C"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_256_CBC_SHA", "0x00,0x8D"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_RC4_128_SHA", "0x00,0x8E"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA", "0x00,0x8F"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_128_CBC_SHA", "0x00,0x90"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_256_CBC_SHA", "0x00,0x91"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_RC4_128_SHA", "0x00,0x92"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA", "0x00,0x93"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_AES_128_CBC_SHA", "0x00,0x94"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_AES_256_CBC_SHA", "0x00,0x95"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_SEED_CBC_SHA", "0x00,0x96"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_SEED_CBC_SHA", "0x00,0x97"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_SEED_CBC_SHA", "0x00,0x98"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_SEED_CBC_SHA", "0x00,0x99"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_SEED_CBC_SHA", "0x00,0x9A"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_SEED_CBC_SHA", "0x00,0x9B"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_128_GCM_SHA256", "0x00,0x9C"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_256_GCM_SHA384", "0x00,0x9D"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", "0x00,0x9E"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", "0x00,0x9F"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_AES_128_GCM_SHA256", "0x00,0xA0"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_AES_256_GCM_SHA384", "0x00,0xA1"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", "0x00,0xA2"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", "0x00,0xA3"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_AES_128_GCM_SHA256", "0x00,0xA4"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_AES_256_GCM_SHA384", "0x00,0xA5"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_AES_128_GCM_SHA256", "0x00,0xA6"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_AES_256_GCM_SHA384", "0x00,0xA7"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_128_GCM_SHA256", "0x00,0xA8"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_256_GCM_SHA384", "0x00,0xA9"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_128_GCM_SHA256", "0x00,0xAA"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_256_GCM_SHA384", "0x00,0xAB"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_AES_128_GCM_SHA256", "0x00,0xAC"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_AES_256_GCM_SHA384", "0x00,0xAD"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_128_CBC_SHA256", "0x00,0xAE"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_256_CBC_SHA384", "0x00,0xAF"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_NULL_SHA256", "0x00,0xB0"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_NULL_SHA384", "0x00,0xB1"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_128_CBC_SHA256", "0x00,0xB2"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_256_CBC_SHA384", "0x00,0xB3"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_NULL_SHA256", "0x00,0xB4"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_NULL_SHA384", "0x00,0xB5"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_AES_128_CBC_SHA256", "0x00,0xB6"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_AES_256_CBC_SHA384", "0x00,0xB7"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_NULL_SHA256", "0x00,0xB8"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_NULL_SHA384", "0x00,0xB9"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256", "0x00,0xBA"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256", "0x00,0xBB"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256", "0x00,0xBC"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256", "0x00,0xBD"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256", "0x00,0xBE"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256", "0x00,0xBF"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256", "0x00,0xC0"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256", "0x00,0xC1"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256", "0x00,0xC2"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256", "0x00,0xC3"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256", "0x00,0xC4"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256", "0x00,0xC5"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_NULL_SHA", "0xC0,0x01"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", "0xC0,0x02"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", "0xC0,0x03"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", "0xC0,0x04"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", "0xC0,0x05"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_NULL_SHA", "0xC0,0x06"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", "0xC0,0x07"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", "0xC0,0x08"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", "0xC0,0x09"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", "0xC0,0x0A"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_NULL_SHA", "0xC0,0x0B"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_RC4_128_SHA", "0xC0,0x0C"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", "0xC0,0x0D"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", "0xC0,0x0E"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", "0xC0,0x0F"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_NULL_SHA", "0xC0,0x10"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_RC4_128_SHA", "0xC0,0x11"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "0xC0,0x12"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "0xC0,0x13"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", "0xC0,0x14"); | |
NAME_TO_VERSION.put("TLS_ECDH_anon_WITH_NULL_SHA", "0xC0,0x15"); | |
NAME_TO_VERSION.put("TLS_ECDH_anon_WITH_RC4_128_SHA", "0xC0,0x16"); | |
NAME_TO_VERSION.put("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", "0xC0,0x17"); | |
NAME_TO_VERSION.put("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", "0xC0,0x18"); | |
NAME_TO_VERSION.put("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", "0xC0,0x19"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA", "0xC0,0x1A"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA", "0xC0,0x1B"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA", "0xC0,0x1C"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_WITH_AES_128_CBC_SHA", "0xC0,0x1D"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA", "0xC0,0x1E"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA", "0xC0,0x1F"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_WITH_AES_256_CBC_SHA", "0xC0,0x20"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA", "0xC0,0x21"); | |
NAME_TO_VERSION.put("TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA", "0xC0,0x22"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", "0xC0,0x23"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", "0xC0,0x24"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", "0xC0,0x25"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", "0xC0,0x26"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", "0xC0,0x27"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", "0xC0,0x28"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", "0xC0,0x29"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", "0xC0,0x2A"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "0xC0,0x2B"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "0xC0,0x2C"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256", "0xC0,0x2D"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384", "0xC0,0x2E"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "0xC0,0x2F"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "0xC0,0x30"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256", "0xC0,0x31"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384", "0xC0,0x32"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_RC4_128_SHA", "0xC0,0x33"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA", "0xC0,0x34"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA", "0xC0,0x35"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA", "0xC0,0x36"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256", "0xC0,0x37"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384", "0xC0,0x38"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_NULL_SHA", "0xC0,0x39"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_NULL_SHA256", "0xC0,0x3A"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_NULL_SHA384", "0xC0,0x3B"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_ARIA_128_CBC_SHA256", "0xC0,0x3C"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_ARIA_256_CBC_SHA384", "0xC0,0x3D"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256", "0xC0,0x3E"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384", "0xC0,0x3F"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256", "0xC0,0x40"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384", "0xC0,0x41"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256", "0xC0,0x42"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384", "0xC0,0x43"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256", "0xC0,0x44"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384", "0xC0,0x45"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_ARIA_128_CBC_SHA256", "0xC0,0x46"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_ARIA_256_CBC_SHA384", "0xC0,0x47"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256", "0xC0,0x48"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384", "0xC0,0x49"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256", "0xC0,0x4A"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384", "0xC0,0x4B"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256", "0xC0,0x4C"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384", "0xC0,0x4D"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256", "0xC0,0x4E"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384", "0xC0,0x4F"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_ARIA_128_GCM_SHA256", "0xC0,0x50"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_ARIA_256_GCM_SHA384", "0xC0,0x51"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256", "0xC0,0x52"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384", "0xC0,0x53"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256", "0xC0,0x54"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384", "0xC0,0x55"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256", "0xC0,0x56"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384", "0xC0,0x57"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256", "0xC0,0x58"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384", "0xC0,0x59"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_ARIA_128_GCM_SHA256", "0xC0,0x5A"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_ARIA_256_GCM_SHA384", "0xC0,0x5B"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256", "0xC0,0x5C"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384", "0xC0,0x5D"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256", "0xC0,0x5E"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384", "0xC0,0x5F"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256", "0xC0,0x60"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384", "0xC0,0x61"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256", "0xC0,0x62"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384", "0xC0,0x63"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_ARIA_128_CBC_SHA256", "0xC0,0x64"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_ARIA_256_CBC_SHA384", "0xC0,0x65"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256", "0xC0,0x66"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384", "0xC0,0x67"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256", "0xC0,0x68"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384", "0xC0,0x69"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_ARIA_128_GCM_SHA256", "0xC0,0x6A"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_ARIA_256_GCM_SHA384", "0xC0,0x6B"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256", "0xC0,0x6C"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384", "0xC0,0x6D"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256", "0xC0,0x6E"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384", "0xC0,0x6F"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256", "0xC0,0x70"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384", "0xC0,0x71"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x72"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x73"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x74"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x75"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x76"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x77"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x78"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x79"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x7A"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x7B"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x7C"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x7D"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x7E"); | |
NAME_TO_VERSION.put("TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x7F"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x80"); | |
NAME_TO_VERSION.put("TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x81"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x82"); | |
NAME_TO_VERSION.put("TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x83"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x84"); | |
NAME_TO_VERSION.put("TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x85"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x86"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x87"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x88"); | |
NAME_TO_VERSION.put("TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x89"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x8A"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x8B"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x8C"); | |
NAME_TO_VERSION.put("TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x8D"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x8E"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x8F"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x90"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x91"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256", "0xC0,0x92"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384", "0xC0,0x93"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x94"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x95"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x96"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x97"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x98"); | |
NAME_TO_VERSION.put("TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x99"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256", "0xC0,0x9A"); | |
NAME_TO_VERSION.put("TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384", "0xC0,0x9B"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_128_CCM", "0xC0,0x9C"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_256_CCM", "0xC0,0x9D"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_128_CCM", "0xC0,0x9E"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_256_CCM", "0xC0,0x9F"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_128_CCM_8", "0xC0,0xA0"); | |
NAME_TO_VERSION.put("TLS_RSA_WITH_AES_256_CCM_8", "0xC0,0xA1"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_128_CCM_8", "0xC0,0xA2"); | |
NAME_TO_VERSION.put("TLS_DHE_RSA_WITH_AES_256_CCM_8", "0xC0,0xA3"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_128_CCM", "0xC0,0xA4"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_256_CCM", "0xC0,0xA5"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_128_CCM", "0xC0,0xA6"); | |
NAME_TO_VERSION.put("TLS_DHE_PSK_WITH_AES_256_CCM", "0xC0,0xA7"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_128_CCM_8", "0xC0,0xA8"); | |
NAME_TO_VERSION.put("TLS_PSK_WITH_AES_256_CCM_8", "0xC0,0xA9"); | |
NAME_TO_VERSION.put("TLS_PSK_DHE_WITH_AES_128_CCM_8", "0xC0,0xAA"); | |
NAME_TO_VERSION.put("TLS_PSK_DHE_WITH_AES_256_CCM_8", "0xC0,0xAB"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_128_CCM", "0xC0,0xAC"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_256_CCM", "0xC0,0xAD"); | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", "0xC0,0xAE"); | |
// Manually input from Chrome. | |
NAME_TO_VERSION.put("TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "0xCC,0x14"); | |
NAME_TO_VERSION.put("TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", "0xCC,0x13"); | |
} | |
static { | |
add("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "DHE-DSS-3DES-EDE-SHA"); | |
add("TLS_DHE_DSS_WITH_CAMELLIA128_CBC_SHA", "DHE-DSS-CAMELLIA128-SHA"); | |
add("TLS_DHE_DSS_WITH_CAMELLIA256_CBC_SHA", "DHE-DSS-CAMELLIA256-SHA"); | |
add("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "DHE-RSA-3DES-EDE-SHA"); | |
add("TLS_DHE_RSA_WITH_CAMELLIA128_CBC_SHA", "DHE-RSA-CAMELLIA128-SHA"); | |
add("TLS_DHE_RSA_WITH_CAMELLIA256_CBC_SHA", "DHE-RSA-CAMELLIA256-SHA"); | |
add("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", "ECDHE-ECDSA-3DES-EDE-SHA"); | |
add("TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", "ECDHE-ECDSA-CHACHA20-POLY1305-SHA256"); | |
add("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", "ECDHE-ECDSA-RC4128-SHA"); // NEW | |
add("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "ECDHE-RSA-3DES-EDE-SHA"); | |
add("TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256", "ECDHE-RSA-CHACHA20-POLY1305-SHA256"); | |
add("TLS_ECDHE_RSA_WITH_RC4_128_SHA", "ECDHE-RSA-RC4128-SHA"); // NEW | |
add("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", "ECDH-ECDSA-3DES-EDE-SHA"); | |
add("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", "ECDH-ECDSA-RC4128-SHA"); | |
add("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", "ECDH-RSA-3DES-EDE-SHA"); | |
add("TLS_ECDH_RSA_WITH_RC4_128_SHA", "ECDH-RSA-RC4128-SHA"); | |
add("SSL_RSA_WITH_3DES_EDE_CBC_SHA", "RSA-3DES-EDE-SHA"); // NEW | |
add("TLS_RSA_WITH_AES_128_CBC_SHA", "RSA-AES128-SHA"); // NEW | |
add("TLS_RSA_WITH_AES_128_GCM_SHA256", "RSA-AES128-GCM-SHA256"); // NEW | |
add("TLS_RSA_WITH_AES_256_CBC_SHA", "RSA-AES256-SHA"); // NEW | |
add("TLS_RSA_WITH_CAMELLIA128_CBC_SHA", "RSA-CAMELLIA128-SHA"); | |
add("TLS_RSA_WITH_CAMELLIA256_CBC_SHA", "RSA-CAMELLIA256-SHA"); | |
add("TLS_RSA_WITH_FIPS_3DES_EDE_CBC_SHA", "RSA-FIPS-3DES-EDE-SHA"); | |
add("SSL_RSA_WITH_RC4_128_MD5", "RSA-RC4128-MD5"); // NEW | |
add("SSL_RSA_WITH_RC4_128_SHA", "RSA-RC4128-SHA"); // NEW | |
add("TLS_RSA_WITH_SEED_CBC_SHA", "RSA-SEED-SHA"); | |
} | |
// https://android.googlesource.com/platform/external/conscrypt/+/master/src/main/java/org/conscrypt/NativeCrypto.java#631 | |
static { | |
add("SSL_RSA_WITH_RC4_128_MD5", "RC4-MD5"); | |
add("SSL_RSA_WITH_RC4_128_SHA", "RC4-SHA"); | |
add("TLS_RSA_WITH_AES_128_CBC_SHA", "AES128-SHA"); | |
add("TLS_RSA_WITH_AES_256_CBC_SHA", "AES256-SHA"); | |
add("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", "ECDH-ECDSA-RC4-SHA"); | |
add("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", "ECDH-ECDSA-AES128-SHA"); | |
add("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", "ECDH-ECDSA-AES256-SHA"); | |
add("TLS_ECDH_RSA_WITH_RC4_128_SHA", "ECDH-RSA-RC4-SHA"); | |
add("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", "ECDH-RSA-AES128-SHA"); | |
add("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", "ECDH-RSA-AES256-SHA"); | |
add("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", "ECDHE-ECDSA-RC4-SHA"); | |
add("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", "ECDHE-ECDSA-AES128-SHA"); | |
add("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", "ECDHE-ECDSA-AES256-SHA"); | |
add("TLS_ECDHE_RSA_WITH_RC4_128_SHA", "ECDHE-RSA-RC4-SHA"); | |
add("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "ECDHE-RSA-AES128-SHA"); | |
add("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", "ECDHE-RSA-AES256-SHA"); | |
add("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "DHE-RSA-AES128-SHA"); | |
add("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", "DHE-RSA-AES256-SHA"); | |
add("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "DHE-DSS-AES128-SHA"); | |
add("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", "DHE-DSS-AES256-SHA"); | |
add("SSL_RSA_WITH_3DES_EDE_CBC_SHA", "DES-CBC3-SHA"); | |
add("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", "ECDH-ECDSA-DES-CBC3-SHA"); | |
add("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", "ECDH-RSA-DES-CBC3-SHA"); | |
add("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", "ECDHE-ECDSA-DES-CBC3-SHA"); | |
add("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "ECDHE-RSA-DES-CBC3-SHA"); | |
add("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "EDH-RSA-DES-CBC3-SHA"); | |
add("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "EDH-DSS-DES-CBC3-SHA"); | |
add("SSL_RSA_WITH_DES_CBC_SHA", "DES-CBC-SHA"); | |
add("SSL_DHE_RSA_WITH_DES_CBC_SHA", "EDH-RSA-DES-CBC-SHA"); | |
add("SSL_DHE_DSS_WITH_DES_CBC_SHA", "EDH-DSS-DES-CBC-SHA"); | |
add("SSL_RSA_EXPORT_WITH_RC4_40_MD5", "EXP-RC4-MD5"); | |
add("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", "EXP-DES-CBC-SHA"); | |
add("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", "EXP-EDH-RSA-DES-CBC-SHA"); | |
add("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", "EXP-EDH-DSS-DES-CBC-SHA"); | |
add("SSL_RSA_WITH_NULL_MD5", "NULL-MD5"); | |
add("SSL_RSA_WITH_NULL_SHA", "NULL-SHA"); | |
add("TLS_ECDH_ECDSA_WITH_NULL_SHA", "ECDH-ECDSA-NULL-SHA"); | |
add("TLS_ECDH_RSA_WITH_NULL_SHA", "ECDH-RSA-NULL-SHA"); | |
add("TLS_ECDHE_ECDSA_WITH_NULL_SHA", "ECDHE-ECDSA-NULL-SHA"); | |
add("TLS_ECDHE_RSA_WITH_NULL_SHA", "ECDHE-RSA-NULL-SHA"); | |
add("SSL_DH_anon_WITH_RC4_128_MD5", "ADH-RC4-MD5"); | |
add("TLS_DH_anon_WITH_AES_128_CBC_SHA", "ADH-AES128-SHA"); | |
add("TLS_DH_anon_WITH_AES_256_CBC_SHA", "ADH-AES256-SHA"); | |
add("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", "ADH-DES-CBC3-SHA"); | |
add("SSL_DH_anon_WITH_DES_CBC_SHA", "ADH-DES-CBC-SHA"); | |
add("TLS_ECDH_anon_WITH_RC4_128_SHA", "AECDH-RC4-SHA"); | |
add("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", "AECDH-AES128-SHA"); | |
add("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", "AECDH-AES256-SHA"); | |
add("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", "AECDH-DES-CBC3-SHA"); | |
add("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", "EXP-ADH-RC4-MD5"); | |
add("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", "EXP-ADH-DES-CBC-SHA"); | |
add("TLS_ECDH_anon_WITH_NULL_SHA", "AECDH-NULL-SHA"); | |
// TLSv1.2 cipher suites | |
add("TLS_RSA_WITH_NULL_SHA256", "NULL-SHA256"); | |
add("TLS_RSA_WITH_AES_128_CBC_SHA256", "AES128-SHA256"); | |
add("TLS_RSA_WITH_AES_256_CBC_SHA256", "AES256-SHA256"); | |
add("TLS_RSA_WITH_AES_128_GCM_SHA256", "AES128-GCM-SHA256"); | |
add("TLS_RSA_WITH_AES_256_GCM_SHA384", "AES256-GCM-SHA384"); | |
add("TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", "DHE-RSA-AES128-SHA256"); | |
add("TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", "DHE-RSA-AES256-SHA256"); | |
add("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", "DHE-RSA-AES128-GCM-SHA256"); | |
add("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", "DHE-RSA-AES256-GCM-SHA384"); | |
add("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", "DHE-DSS-AES128-SHA256"); | |
add("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", "DHE-DSS-AES256-SHA256"); | |
add("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", "DHE-DSS-AES128-GCM-SHA256"); | |
add("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", "DHE-DSS-AES256-GCM-SHA384"); | |
add("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", "ECDH-RSA-AES128-SHA256"); | |
add("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", "ECDH-RSA-AES256-SHA384"); | |
add("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256", "ECDH-RSA-AES128-GCM-SHA256"); | |
add("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384", "ECDH-RSA-AES256-GCM-SHA384"); | |
add("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", "ECDH-ECDSA-AES128-SHA256"); | |
add("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", "ECDH-ECDSA-AES256-SHA384"); | |
add("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256", "ECDH-ECDSA-AES128-GCM-SHA256"); | |
add("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384", "ECDH-ECDSA-AES256-GCM-SHA384"); | |
add("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", "ECDHE-RSA-AES128-SHA256"); | |
add("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", "ECDHE-RSA-AES256-SHA384"); | |
add("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "ECDHE-RSA-AES128-GCM-SHA256"); | |
add("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "ECDHE-RSA-AES256-GCM-SHA384"); | |
add("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", "ECDHE-ECDSA-AES128-SHA256"); | |
add("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", "ECDHE-ECDSA-AES256-SHA384"); | |
add("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", "ECDHE-ECDSA-AES128-GCM-SHA256"); | |
add("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "ECDHE-ECDSA-AES256-GCM-SHA384"); | |
add("TLS_DH_anon_WITH_AES_128_CBC_SHA256", "ADH-AES128-SHA256"); | |
add("TLS_DH_anon_WITH_AES_256_CBC_SHA256", "ADH-AES256-SHA256"); | |
add("TLS_DH_anon_WITH_AES_128_GCM_SHA256", "ADH-AES128-GCM-SHA256"); | |
add("TLS_DH_anon_WITH_AES_256_GCM_SHA384", "ADH-AES256-GCM-SHA384"); | |
// No Kerberos in Android | |
// add("TLS_KRB5_WITH_RC4_128_SHA", "KRB5-RC4-SHA"); | |
// add("TLS_KRB5_WITH_RC4_128_MD5", "KRB5-RC4-MD5"); | |
// add("TLS_KRB5_WITH_3DES_EDE_CBC_SHA", "KRB5-DES-CBC3-SHA"); | |
// add("TLS_KRB5_WITH_3DES_EDE_CBC_MD5", "KRB5-DES-CBC3-MD5"); | |
// add("TLS_KRB5_WITH_DES_CBC_SHA", "KRB5-DES-CBC-SHA"); | |
// add("TLS_KRB5_WITH_DES_CBC_MD5", "KRB5-DES-CBC-MD5"); | |
// add("TLS_KRB5_EXPORT_WITH_RC4_40_SHA", "EXP-KRB5-RC4-SHA"); | |
// add("TLS_KRB5_EXPORT_WITH_RC4_40_MD5", "EXP-KRB5-RC4-MD5"); | |
// add("TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", "EXP-KRB5-DES-CBC-SHA"); | |
// add("TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5", "EXP-KRB5-DES-CBC-MD5"); | |
// not implemented by either RI or OpenSSL | |
// add("SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA", null); | |
// add("SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA", null); | |
// EXPORT1024 suites were never standardized but were widely implemented. | |
// OpenSSL 0.9.8c and later have disabled TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES | |
// add("SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA", "EXP1024-DES-CBC-SHA"); | |
// add("SSL_RSA_EXPORT1024_WITH_RC4_56_SHA", "EXP1024-RC4-SHA"); | |
// No RC2 | |
// add("SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5", "EXP-RC2-CBC-MD5"); | |
// add("TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA", "EXP-KRB5-RC2-CBC-SHA"); | |
// add("TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5", "EXP-KRB5-RC2-CBC-MD5"); | |
// Pre-Shared Key (PSK) cipher suites | |
add("TLS_PSK_WITH_3DES_EDE_CBC_SHA", "PSK-3DES-EDE-CBC-SHA"); | |
add("TLS_PSK_WITH_AES_128_CBC_SHA", "PSK-AES128-CBC-SHA"); | |
add("TLS_PSK_WITH_AES_256_CBC_SHA", "PSK-AES256-CBC-SHA"); | |
add("TLS_PSK_WITH_RC4_128_SHA", "PSK-RC4-SHA"); | |
add("TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA", "ECDHE-PSK-AES128-CBC-SHA"); | |
add("TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA", "ECDHE-PSK-AES256-CBC-SHA"); | |
// Signaling Cipher Suite Value for secure renegotiation handled as special case. | |
// add("TLS_EMPTY_RENEGOTIATION_INFO_SCSV", null); | |
} | |
static void add(String javaName, String openSslName) { | |
OPENSSL_TO_JAVA.put(openSslName, javaName); | |
JAVA_TO_OPENSSL.put(javaName, openSslName); | |
} | |
public static final Map<String, Boolean> CHROME_37 = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> FIREFOX_21 = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> JAVA_8 = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> JAVA_7 = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> ANDROID_L = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> ANDROID_43 = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> ANDROID_44 = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> ANDROID_40 = new LinkedHashMap<>(); | |
public static final Map<String, Boolean> ANDROID_23 = new LinkedHashMap<>(); | |
static { | |
FIREFOX_21.put(toJava("EMPTY-RENEGOTIATION-INFO-SCSV"), true); | |
FIREFOX_21.put(toJava("ECDHE-ECDSA-AES256-SHA"), true); | |
FIREFOX_21.put(toJava("ECDHE-RSA-AES256-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-RSA-CAMELLIA256-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-DSS-CAMELLIA256-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-RSA-AES256-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-DSS-AES256-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-RSA-AES256-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-ECDSA-AES256-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-CAMELLIA256-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-AES256-SHA"), true); | |
FIREFOX_21.put(toJava("ECDHE-ECDSA-RC4128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDHE-ECDSA-AES128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDHE-RSA-RC4128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDHE-RSA-AES128-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-RSA-CAMELLIA128-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-DSS-CAMELLIA128-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-RSA-AES128-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-DSS-AES128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-RSA-RC4128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-RSA-AES128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-ECDSA-RC4128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-ECDSA-AES128-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-SEED-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-CAMELLIA128-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-RC4128-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-RC4128-MD5"), true); | |
FIREFOX_21.put(toJava("RSA-AES128-SHA"), true); | |
FIREFOX_21.put(toJava("ECDHE-ECDSA-3DES-EDE-SHA"), true); | |
FIREFOX_21.put(toJava("ECDHE-RSA-3DES-EDE-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-RSA-3DES-EDE-SHA"), true); | |
FIREFOX_21.put(toJava("DHE-DSS-3DES-EDE-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-RSA-3DES-EDE-SHA"), true); | |
FIREFOX_21.put(toJava("ECDH-ECDSA-3DES-EDE-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-FIPS-3DES-EDE-SHA"), true); | |
FIREFOX_21.put(toJava("RSA-3DES-EDE-SHA"), true); | |
CHROME_37.put(toJava("ECDHE-ECDSA-AES128-GCM-SHA256"), true); | |
CHROME_37.put(toJava("ECDHE-RSA-AES128-GCM-SHA256"), true); | |
CHROME_37.put(toJava("DHE-RSA-AES128-GCM-SHA256"), true); | |
CHROME_37.put(toJava("ECDHE-ECDSA-CHACHA20-POLY1305-SHA256"), true); | |
CHROME_37.put(toJava("ECDHE-RSA-CHACHA20-POLY1305-SHA256"), true); | |
CHROME_37.put(toJava("ECDHE-ECDSA-AES256-SHA"), true); | |
CHROME_37.put(toJava("ECDHE-ECDSA-AES128-SHA"), true); | |
CHROME_37.put(toJava("ECDHE-RSA-AES128-SHA"), true); | |
CHROME_37.put(toJava("ECDHE-RSA-AES256-SHA"), true); | |
CHROME_37.put(toJava("ECDHE-ECDSA-RC4128-SHA"), true); | |
CHROME_37.put(toJava("ECDHE-RSA-RC4128-SHA"), true); | |
CHROME_37.put(toJava("DHE-RSA-AES128-SHA"), true); | |
CHROME_37.put(toJava("DHE-DSS-AES128-SHA"), true); | |
CHROME_37.put(toJava("DHE-RSA-AES256-SHA"), true); | |
CHROME_37.put(toJava("RSA-AES128-GCM-SHA256"), true); | |
CHROME_37.put(toJava("RSA-AES128-SHA"), true); | |
CHROME_37.put(toJava("RSA-AES256-SHA"), true); | |
CHROME_37.put(toJava("RSA-3DES-EDE-SHA"), true); | |
CHROME_37.put(toJava("RSA-RC4128-SHA"), true); | |
CHROME_37.put(toJava("RSA-RC4128-MD5"), true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", true); | |
JAVA_8.put("TLS_RSA_WITH_AES_256_CBC_SHA256", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", true); | |
JAVA_8.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", true); | |
JAVA_8.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_8.put("TLS_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_8.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_8.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", true); | |
JAVA_8.put("TLS_RSA_WITH_AES_128_CBC_SHA256", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", true); | |
JAVA_8.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", true); | |
JAVA_8.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_8.put("TLS_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_8.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_8.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_RC4_128_SHA", true); | |
JAVA_8.put("SSL_RSA_WITH_RC4_128_SHA", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_RC4_128_SHA", true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", true); | |
JAVA_8.put("TLS_RSA_WITH_AES_256_GCM_SHA384", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384", true); | |
JAVA_8.put("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", true); | |
JAVA_8.put("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", true); | |
JAVA_8.put("TLS_RSA_WITH_AES_128_GCM_SHA256", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256", true); | |
JAVA_8.put("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", true); | |
JAVA_8.put("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", true); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_8.put("SSL_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_8.put("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_8.put("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_8.put("SSL_RSA_WITH_RC4_128_MD5", true); | |
JAVA_8.put("TLS_EMPTY_RENEGOTIATION_INFO_SCSV", true); | |
JAVA_8.put("TLS_DH_anon_WITH_AES_256_GCM_SHA384", false); | |
JAVA_8.put("TLS_DH_anon_WITH_AES_128_GCM_SHA256", false); | |
JAVA_8.put("TLS_DH_anon_WITH_AES_256_CBC_SHA256", false); | |
JAVA_8.put("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", false); | |
JAVA_8.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", false); | |
JAVA_8.put("TLS_DH_anon_WITH_AES_128_CBC_SHA256", false); | |
JAVA_8.put("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", false); | |
JAVA_8.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", false); | |
JAVA_8.put("TLS_ECDH_anon_WITH_RC4_128_SHA", false); | |
JAVA_8.put("SSL_DH_anon_WITH_RC4_128_MD5", false); | |
JAVA_8.put("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
JAVA_8.put("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
JAVA_8.put("TLS_RSA_WITH_NULL_SHA256", false); | |
JAVA_8.put("TLS_ECDHE_ECDSA_WITH_NULL_SHA", false); | |
JAVA_8.put("TLS_ECDHE_RSA_WITH_NULL_SHA", false); | |
JAVA_8.put("SSL_RSA_WITH_NULL_SHA", false); | |
JAVA_8.put("TLS_ECDH_ECDSA_WITH_NULL_SHA", false); | |
JAVA_8.put("TLS_ECDH_RSA_WITH_NULL_SHA", false); | |
JAVA_8.put("TLS_ECDH_anon_WITH_NULL_SHA", false); | |
JAVA_8.put("SSL_RSA_WITH_NULL_MD5", false); | |
JAVA_8.put("SSL_RSA_WITH_DES_CBC_SHA", false); | |
JAVA_8.put("SSL_DHE_RSA_WITH_DES_CBC_SHA", false); | |
JAVA_8.put("SSL_DHE_DSS_WITH_DES_CBC_SHA", false); | |
JAVA_8.put("SSL_DH_anon_WITH_DES_CBC_SHA", false); | |
JAVA_8.put("SSL_RSA_EXPORT_WITH_RC4_40_MD5", false); | |
JAVA_8.put("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", false); | |
JAVA_8.put("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_8.put("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_8.put("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_8.put("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_8.put("TLS_KRB5_WITH_RC4_128_SHA", false); | |
JAVA_8.put("TLS_KRB5_WITH_RC4_128_MD5", false); | |
JAVA_8.put("TLS_KRB5_WITH_3DES_EDE_CBC_SHA", false); | |
JAVA_8.put("TLS_KRB5_WITH_3DES_EDE_CBC_MD5", false); | |
JAVA_8.put("TLS_KRB5_WITH_DES_CBC_SHA", false); | |
JAVA_8.put("TLS_KRB5_WITH_DES_CBC_MD5", false); | |
JAVA_8.put("TLS_KRB5_EXPORT_WITH_RC4_40_SHA", false); | |
JAVA_8.put("TLS_KRB5_EXPORT_WITH_RC4_40_MD5", false); | |
JAVA_8.put("TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", false); | |
JAVA_8.put("TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5", false); | |
JAVA_7.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", false); | |
JAVA_7.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", false); | |
JAVA_7.put("TLS_RSA_WITH_AES_256_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", false); | |
JAVA_7.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", false); | |
JAVA_7.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", false); | |
JAVA_7.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_7.put("TLS_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_7.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", true); | |
JAVA_7.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_RSA_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_7.put("TLS_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_7.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); | |
JAVA_7.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", true); | |
JAVA_7.put("TLS_ECDHE_RSA_WITH_RC4_128_SHA", true); | |
JAVA_7.put("SSL_RSA_WITH_RC4_128_SHA", true); | |
JAVA_7.put("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", true); | |
JAVA_7.put("TLS_ECDH_RSA_WITH_RC4_128_SHA", true); | |
JAVA_7.put("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_7.put("SSL_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_7.put("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_7.put("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_7.put("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", true); | |
JAVA_7.put("SSL_RSA_WITH_RC4_128_MD5", true); | |
JAVA_7.put("TLS_EMPTY_RENEGOTIATION_INFO_SCSV", true); | |
JAVA_7.put("TLS_DH_anon_WITH_AES_256_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", false); | |
JAVA_7.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", false); | |
JAVA_7.put("TLS_DH_anon_WITH_AES_128_CBC_SHA256", false); | |
JAVA_7.put("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", false); | |
JAVA_7.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", false); | |
JAVA_7.put("TLS_ECDH_anon_WITH_RC4_128_SHA", false); | |
JAVA_7.put("SSL_DH_anon_WITH_RC4_128_MD5", false); | |
JAVA_7.put("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
JAVA_7.put("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
JAVA_7.put("TLS_RSA_WITH_NULL_SHA256", false); | |
JAVA_7.put("TLS_ECDHE_ECDSA_WITH_NULL_SHA", false); | |
JAVA_7.put("TLS_ECDHE_RSA_WITH_NULL_SHA", false); | |
JAVA_7.put("SSL_RSA_WITH_NULL_SHA", false); | |
JAVA_7.put("TLS_ECDH_ECDSA_WITH_NULL_SHA", false); | |
JAVA_7.put("TLS_ECDH_RSA_WITH_NULL_SHA", false); | |
JAVA_7.put("TLS_ECDH_anon_WITH_NULL_SHA", false); | |
JAVA_7.put("SSL_RSA_WITH_NULL_MD5", false); | |
JAVA_7.put("SSL_RSA_WITH_DES_CBC_SHA", false); | |
JAVA_7.put("SSL_DHE_RSA_WITH_DES_CBC_SHA", false); | |
JAVA_7.put("SSL_DHE_DSS_WITH_DES_CBC_SHA", false); | |
JAVA_7.put("SSL_DH_anon_WITH_DES_CBC_SHA", false); | |
JAVA_7.put("SSL_RSA_EXPORT_WITH_RC4_40_MD5", false); | |
JAVA_7.put("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", false); | |
JAVA_7.put("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_7.put("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_7.put("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_7.put("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", false); | |
JAVA_7.put("TLS_KRB5_WITH_RC4_128_SHA", false); | |
JAVA_7.put("TLS_KRB5_WITH_RC4_128_MD5", false); | |
JAVA_7.put("TLS_KRB5_WITH_3DES_EDE_CBC_SHA", false); | |
JAVA_7.put("TLS_KRB5_WITH_3DES_EDE_CBC_MD5", false); | |
JAVA_7.put("TLS_KRB5_WITH_DES_CBC_SHA", false); | |
JAVA_7.put("TLS_KRB5_WITH_DES_CBC_MD5", false); | |
JAVA_7.put("TLS_KRB5_EXPORT_WITH_RC4_40_SHA", false); | |
JAVA_7.put("TLS_KRB5_EXPORT_WITH_RC4_40_MD5", false); | |
JAVA_7.put("TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA", false); | |
JAVA_7.put("TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5", false); | |
ANDROID_L.put("SSL_RSA_WITH_RC4_128_MD5", false); | |
ANDROID_L.put("SSL_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_L.put("TLS_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_L.put("TLS_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_RC4_128_SHA", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", true); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_L.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_L.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_L.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); | |
ANDROID_L.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", true); | |
// TLS_RSA_WITH_3DES_EDE_CBC_SHA | |
ANDROID_L.put("SSL_RSA_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("SSL_RSA_WITH_DES_CBC_SHA", false); | |
ANDROID_L.put("SSL_DHE_RSA_WITH_DES_CBC_SHA", false); | |
ANDROID_L.put("SSL_DHE_DSS_WITH_DES_CBC_SHA", false); | |
ANDROID_L.put("SSL_RSA_EXPORT_WITH_RC4_40_MD5", false); | |
ANDROID_L.put("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", false); | |
ANDROID_L.put("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", false); | |
ANDROID_L.put("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", false); | |
ANDROID_L.put("SSL_RSA_WITH_NULL_MD5", false); | |
ANDROID_L.put("SSL_RSA_WITH_NULL_SHA", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_NULL_SHA", false); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_NULL_SHA", false); | |
ANDROID_L.put("SSL_DH_anon_WITH_RC4_128_MD5", false); | |
ANDROID_L.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_L.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_L.put("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("SSL_DH_anon_WITH_DES_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_anon_WITH_RC4_128_SHA", false); | |
ANDROID_L.put("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_L.put("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", false); | |
ANDROID_L.put("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", false); | |
ANDROID_L.put("TLS_ECDH_anon_WITH_NULL_SHA", false); | |
ANDROID_L.put("TLS_RSA_WITH_NULL_SHA256", false); | |
ANDROID_L.put("TLS_RSA_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_RSA_WITH_AES_256_CBC_SHA256", false); | |
ANDROID_L.put("TLS_RSA_WITH_AES_128_GCM_SHA256", true); | |
ANDROID_L.put("TLS_RSA_WITH_AES_256_GCM_SHA384", true); | |
ANDROID_L.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA256", false); | |
ANDROID_L.put("TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", true); | |
ANDROID_L.put("TLS_DHE_RSA_WITH_AES_256_GCM_SHA384", true); | |
ANDROID_L.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256", false); | |
ANDROID_L.put("TLS_DHE_DSS_WITH_AES_128_GCM_SHA256", false); | |
ANDROID_L.put("TLS_DHE_DSS_WITH_AES_256_GCM_SHA384", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256", false); | |
ANDROID_L.put("TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256", false); | |
ANDROID_L.put("TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384", false); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384", false); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", true); | |
ANDROID_L.put("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", true); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384", false); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", true); | |
ANDROID_L.put("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", true); | |
ANDROID_L.put("TLS_DH_anon_WITH_AES_128_CBC_SHA256", false); | |
ANDROID_L.put("TLS_DH_anon_WITH_AES_256_CBC_SHA256", false); | |
ANDROID_L.put("TLS_DH_anon_WITH_AES_128_GCM_SHA256", false); | |
ANDROID_L.put("TLS_DH_anon_WITH_AES_256_GCM_SHA384", false); | |
ANDROID_L.put("TLS_EMPTY_RENEGOTIATION_INFO_SCSV", true); | |
ANDROID_43.put("SSL_RSA_WITH_RC4_128_MD5", true); | |
ANDROID_43.put("SSL_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_43.put("TLS_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_43.put("TLS_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", true); | |
ANDROID_43.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDH_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_43.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_43.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_43.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_43.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); | |
ANDROID_43.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", true); | |
ANDROID_43.put("SSL_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_43.put("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_43.put("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_43.put("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_43.put("SSL_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_43.put("SSL_DHE_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_43.put("SSL_DHE_DSS_WITH_DES_CBC_SHA", true); | |
ANDROID_43.put("SSL_RSA_EXPORT_WITH_RC4_40_MD5", true); | |
ANDROID_43.put("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_43.put("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_43.put("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_43.put("SSL_RSA_WITH_NULL_MD5", false); | |
ANDROID_43.put("SSL_RSA_WITH_NULL_SHA", false); | |
ANDROID_43.put("TLS_ECDH_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_43.put("TLS_ECDH_RSA_WITH_NULL_SHA", false); | |
ANDROID_43.put("TLS_ECDHE_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_43.put("TLS_ECDHE_RSA_WITH_NULL_SHA", false); | |
ANDROID_43.put("SSL_DH_anon_WITH_RC4_128_MD5", false); | |
ANDROID_43.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_43.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_43.put("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_43.put("SSL_DH_anon_WITH_DES_CBC_SHA", false); | |
ANDROID_43.put("TLS_ECDH_anon_WITH_RC4_128_SHA", false); | |
ANDROID_43.put("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_43.put("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_43.put("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_43.put("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", false); | |
ANDROID_43.put("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", false); | |
ANDROID_43.put("TLS_ECDH_anon_WITH_NULL_SHA", false); | |
ANDROID_43.put("TLS_EMPTY_RENEGOTIATION_INFO_SCSV", true); | |
ANDROID_44.put("SSL_RSA_WITH_RC4_128_MD5", true); | |
ANDROID_44.put("SSL_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_44.put("TLS_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_44.put("TLS_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", true); | |
ANDROID_44.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDH_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_44.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_44.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_44.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_44.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); | |
ANDROID_44.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", true); | |
ANDROID_44.put("SSL_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_44.put("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_44.put("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_44.put("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_44.put("SSL_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_44.put("SSL_DHE_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_44.put("SSL_DHE_DSS_WITH_DES_CBC_SHA", true); | |
ANDROID_44.put("SSL_RSA_EXPORT_WITH_RC4_40_MD5", true); | |
ANDROID_44.put("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_44.put("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_44.put("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_44.put("SSL_RSA_WITH_NULL_MD5", false); | |
ANDROID_44.put("SSL_RSA_WITH_NULL_SHA", false); | |
ANDROID_44.put("TLS_ECDH_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_44.put("TLS_ECDH_RSA_WITH_NULL_SHA", false); | |
ANDROID_44.put("TLS_ECDHE_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_44.put("TLS_ECDHE_RSA_WITH_NULL_SHA", false); | |
ANDROID_44.put("SSL_DH_anon_WITH_RC4_128_MD5", false); | |
ANDROID_44.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_44.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_44.put("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_44.put("SSL_DH_anon_WITH_DES_CBC_SHA", false); | |
ANDROID_44.put("TLS_ECDH_anon_WITH_RC4_128_SHA", false); | |
ANDROID_44.put("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_44.put("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_44.put("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_44.put("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", false); | |
ANDROID_44.put("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", false); | |
ANDROID_44.put("TLS_ECDH_anon_WITH_NULL_SHA", false); | |
ANDROID_44.put("TLS_EMPTY_RENEGOTIATION_INFO_SCSV", true); | |
ANDROID_40.put("SSL_RSA_WITH_RC4_128_MD5", true); | |
ANDROID_40.put("SSL_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_40.put("TLS_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_40.put("TLS_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDH_ECDSA_WITH_RC4_128_SHA", true); | |
ANDROID_40.put("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDH_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_40.put("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_40.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_40.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", true); | |
ANDROID_40.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); | |
ANDROID_40.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", true); | |
ANDROID_40.put("SSL_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_40.put("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_40.put("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_40.put("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_40.put("SSL_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_40.put("SSL_DHE_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_40.put("SSL_DHE_DSS_WITH_DES_CBC_SHA", true); | |
ANDROID_40.put("SSL_RSA_EXPORT_WITH_RC4_40_MD5", true); | |
ANDROID_40.put("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_40.put("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_40.put("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_40.put("SSL_RSA_WITH_NULL_MD5", false); | |
ANDROID_40.put("SSL_RSA_WITH_NULL_SHA", false); | |
ANDROID_40.put("TLS_ECDH_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_40.put("TLS_ECDH_RSA_WITH_NULL_SHA", false); | |
ANDROID_40.put("TLS_ECDHE_ECDSA_WITH_NULL_SHA", false); | |
ANDROID_40.put("TLS_ECDHE_RSA_WITH_NULL_SHA", false); | |
ANDROID_40.put("SSL_DH_anon_WITH_RC4_128_MD5", false); | |
ANDROID_40.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_40.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_40.put("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_40.put("SSL_DH_anon_WITH_DES_CBC_SHA", false); | |
ANDROID_40.put("TLS_ECDH_anon_WITH_RC4_128_SHA", false); | |
ANDROID_40.put("TLS_ECDH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_40.put("TLS_ECDH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_40.put("TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_40.put("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", false); | |
ANDROID_40.put("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", false); | |
ANDROID_40.put("TLS_ECDH_anon_WITH_NULL_SHA", false); | |
ANDROID_40.put("TLS_EMPTY_RENEGOTIATION_INFO_SCSV", true); | |
ANDROID_23.put("SSL_RSA_WITH_RC4_128_MD5", true); | |
ANDROID_23.put("SSL_RSA_WITH_RC4_128_SHA", true); | |
ANDROID_23.put("TLS_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_23.put("TLS_RSA_WITH_AES_256_CBC_SHA", false); | |
ANDROID_23.put("TLS_DHE_RSA_WITH_AES_128_CBC_SHA", true); | |
ANDROID_23.put("TLS_DHE_RSA_WITH_AES_256_CBC_SHA", false); | |
ANDROID_23.put("TLS_DHE_DSS_WITH_AES_128_CBC_SHA", true); | |
ANDROID_23.put("TLS_DHE_DSS_WITH_AES_256_CBC_SHA", false); | |
ANDROID_23.put("SSL_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_23.put("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_23.put("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", true); | |
ANDROID_23.put("SSL_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_23.put("SSL_DHE_RSA_WITH_DES_CBC_SHA", true); | |
ANDROID_23.put("SSL_DHE_DSS_WITH_DES_CBC_SHA", true); | |
ANDROID_23.put("SSL_RSA_EXPORT_WITH_RC4_40_MD5", true); | |
ANDROID_23.put("SSL_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_23.put("SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_23.put("SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA", true); | |
ANDROID_23.put("SSL_RSA_WITH_NULL_MD5", false); | |
ANDROID_23.put("SSL_RSA_WITH_NULL_SHA", false); | |
ANDROID_23.put("SSL_DH_anon_WITH_RC4_128_MD5", false); | |
ANDROID_23.put("TLS_DH_anon_WITH_AES_128_CBC_SHA", false); | |
ANDROID_23.put("TLS_DH_anon_WITH_AES_256_CBC_SHA", false); | |
ANDROID_23.put("SSL_DH_anon_WITH_3DES_EDE_CBC_SHA", false); | |
ANDROID_23.put("SSL_DH_anon_WITH_DES_CBC_SHA", false); | |
ANDROID_23.put("SSL_DH_anon_EXPORT_WITH_RC4_40_MD5", false); | |
ANDROID_23.put("SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA", false); | |
} | |
private static String toJava(String openSslName) { | |
String javaName = OPENSSL_TO_JAVA.get(openSslName); | |
if (javaName != null) { | |
return javaName; | |
} else { | |
System.out.println("NO JAVA NAME FOR " + openSslName); | |
return openSslName; | |
} | |
} | |
public static void main(String[] args) { | |
Map<String, Map<String, Boolean>> maps = new LinkedHashMap<>(); | |
maps.put("Chrome 37", CHROME_37); | |
maps.put("Firefox 8", FIREFOX_21); | |
maps.put("Java 8", JAVA_8); | |
maps.put("Java 7", JAVA_7); | |
maps.put("Android L", ANDROID_L); | |
maps.put("Android 4.4", ANDROID_44); | |
maps.put("Android 4.3", ANDROID_43); | |
maps.put("Android 4.0", ANDROID_40); | |
maps.put("Android 2.3", ANDROID_23); | |
List<String> CIPHER_SUITES = Arrays.asList( | |
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", // ECDHE-ECDSA-AES128-GCM-SHA256 | |
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", // ECDHE-RSA-AES128-GCM-SHA256 | |
"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256", // DHE-RSA-AES128-GCM-SHA256 | |
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", // ECDHE-ECDSA-AES256-SHA | |
"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", // ECDHE-ECDSA-AES128-SHA | |
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", // ECDHE-RSA-AES128-SHA | |
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", // ECDHE-RSA-AES256-SHA | |
"TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", // ECDHE-ECDSA-RC4-SHA | |
"TLS_ECDHE_RSA_WITH_RC4_128_SHA", // ECDHE-RSA-RC4-SHA | |
"TLS_DHE_RSA_WITH_AES_128_CBC_SHA", // DHE-RSA-AES128-SHA | |
"TLS_DHE_DSS_WITH_AES_128_CBC_SHA", // DHE-DSS-AES128-SHA | |
"TLS_DHE_RSA_WITH_AES_256_CBC_SHA", // DHE-RSA-AES256-SHA | |
"TLS_RSA_WITH_AES_128_GCM_SHA256", // AES128-GCM-SHA256 | |
"TLS_RSA_WITH_AES_128_CBC_SHA", // AES128-SHA | |
"TLS_RSA_WITH_AES_256_CBC_SHA", // AES256-SHA | |
"SSL_RSA_WITH_3DES_EDE_CBC_SHA", // DES-CBC3-SHA | |
"SSL_RSA_WITH_RC4_128_SHA", // RC4-SHA | |
"SSL_RSA_WITH_RC4_128_MD5" // RC4-MD5 | |
); | |
for (String s : CIPHER_SUITES) { | |
System.out.println(s + " // " + JAVA_TO_OPENSSL.get(s)); | |
} | |
Set<String> ciphers = new LinkedHashSet<>(); | |
for (Map<String, ?> m : maps.values()) { | |
ciphers.addAll(m.keySet()); | |
} | |
System.out.print("\t"); | |
System.out.print("supported: □ enabled: ■\t"); | |
for (Map.Entry<String, Map<String, Boolean>> map : maps.entrySet()) { | |
String platform = map.getKey(); | |
System.out.print(platform + "\t"); | |
} | |
System.out.println(); | |
for (String cipher : ciphers) { | |
String version = NAME_TO_VERSION.get(cipher); | |
if (version == null && cipher.startsWith("SSL_")) { | |
version = NAME_TO_VERSION.get("TLS_" + cipher.substring(4)); | |
} | |
if (version == null) version = ""; | |
System.out.print(version + "\t"); | |
System.out.print(cipher + "\t"); | |
for (Map.Entry<String, Map<String, Boolean>> map : maps.entrySet()) { | |
Boolean b = map.getValue().get(cipher); | |
if (b == null) { | |
System.out.print("\t"); | |
} else if (b) { | |
System.out.print("■\t"); | |
} else { | |
System.out.print("□\t"); | |
} | |
} | |
System.out.println(); | |
} | |
System.out.println(ciphers.size()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment