1274 lines · 59.2 KB · Java
RawDownload
                } catch (NoSuchAlgorithmException e) {                    b = Boolean.FALSE;                }                availableCache.put(cipher, b);            }            return b.booleanValue();        }         public String toString() {            return description;        }    }     /**     * An SSL/TLS key MAC algorithm.     *     * Also contains a factory method to obtain an initialized MAC     * for this algorithm.     */    final static class MacAlg {         // descriptive name, e.g. MD5        final String name;         // size of the MAC value (and MAC key) in bytes        final int size;         MacAlg(String name, int size) {            this.name = name;            this.size = size;        }         /**         * Return an initialized MAC for this MacAlg. ProtocolVersion         * must either be SSL30 (SSLv3 custom MAC) or TLS10 (std. HMAC).         *         * @exception NoSuchAlgorithmException if anything goes wrong         */        MAC newMac(ProtocolVersion protocolVersion, SecretKey secret)                throws NoSuchAlgorithmException, InvalidKeyException {            return new MAC(this, protocolVersion, secret);        }         public String toString() {            return name;        }    }     // export strength ciphers    final static BulkCipher B_NULL    =                        new BulkCipher("NULL",         0,  0, 0, true);    final static BulkCipher B_RC4_40  =                        new BulkCipher(CIPHER_RC4,     5, 16, 0, true);    final static BulkCipher B_RC2_40  =                        new BulkCipher("RC2",          5, 16, 8, false);    final static BulkCipher B_DES_40  =                        new BulkCipher(CIPHER_DES,     5,  8, 8, true);     // domestic strength ciphers    final static BulkCipher B_RC4_128 =                        new BulkCipher(CIPHER_RC4,     16,  0, true);    final static BulkCipher B_DES     =                        new BulkCipher(CIPHER_DES,      8,  8, true);    final static BulkCipher B_3DES    =                        new BulkCipher(CIPHER_3DES,    24,  8, true);    final static BulkCipher B_IDEA    =                        new BulkCipher("IDEA",         16,  8, false);    final static BulkCipher B_AES_128 =                        new BulkCipher(CIPHER_AES,     16, 16, true);    final static BulkCipher B_AES_256 =                        new BulkCipher(CIPHER_AES,     32, 16, true);     // MACs    final static MacAlg M_NULL = new MacAlg("NULL", 0);    final static MacAlg M_MD5  = new MacAlg("MD5", 16);    final static MacAlg M_SHA  = new MacAlg("SHA", 20);    final static MacAlg M_SHA256  = new MacAlg("SHA256", 32);    final static MacAlg M_SHA384  = new MacAlg("SHA384", 48);     /**     * PRFs (PseudoRandom Function) from TLS specifications.     *     * TLS 1.1- uses a single MD5/SHA1-based PRF algorithm for generating     * the necessary material.     *     * In TLS 1.2+, all existing/known CipherSuites use SHA256, however     * new Ciphersuites (e.g. RFC 5288) can define specific PRF hash     * algorithms.     */    static enum PRF {         // PRF algorithms        P_NONE(     "NONE",  0,   0),        P_SHA256("SHA-256", 32,  64),        P_SHA384("SHA-384", 48, 128),        P_SHA512("SHA-512", 64, 128);  // not currently used.         // PRF characteristics        private final String prfHashAlg;        private final int prfHashLength;        private final int prfBlockSize;         PRF(String prfHashAlg, int prfHashLength, int prfBlockSize) {            this.prfHashAlg = prfHashAlg;            this.prfHashLength = prfHashLength;            this.prfBlockSize = prfBlockSize;        }         String getPRFHashAlg() {            return prfHashAlg;        }         int getPRFHashLength() {            return prfHashLength;        }         int getPRFBlockSize() {            return prfBlockSize;        }    }     static {        idMap = new HashMap<Integer,CipherSuite>();        nameMap = new HashMap<String,CipherSuite>();         final boolean F = false;        final boolean T = true;        // N: ciphersuites only allowed if we are not in FIPS mode        final boolean N = (SunJSSE.isFIPS() == false);         /*         * TLS Cipher Suite Registry, as of August 2010.         *         * http://www.iana.org/assignments/tls-parameters/tls-parameters.xml         *         * Range      Registration Procedures   Notes         * 000-191    Standards Action          Refers to value of first byte         * 192-254    Specification Required    Refers to value of first byte         * 255        Reserved for Private Use  Refers to value of first byte         *         * Value      Description                               Reference         * 0x00,0x00  TLS_NULL_WITH_NULL_NULL                   [RFC5246]         * 0x00,0x01  TLS_RSA_WITH_NULL_MD5                     [RFC5246]         * 0x00,0x02  TLS_RSA_WITH_NULL_SHA                     [RFC5246]         * 0x00,0x03  TLS_RSA_EXPORT_WITH_RC4_40_MD5            [RFC4346]         * 0x00,0x04  TLS_RSA_WITH_RC4_128_MD5                  [RFC5246]         * 0x00,0x05  TLS_RSA_WITH_RC4_128_SHA                  [RFC5246]         * 0x00,0x06  TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5        [RFC4346]         * 0x00,0x07  TLS_RSA_WITH_IDEA_CBC_SHA                 [RFC5469]         * 0x00,0x08  TLS_RSA_EXPORT_WITH_DES40_CBC_SHA         [RFC4346]         * 0x00,0x09  TLS_RSA_WITH_DES_CBC_SHA                  [RFC5469]         * 0x00,0x0A  TLS_RSA_WITH_3DES_EDE_CBC_SHA             [RFC5246]         * 0x00,0x0B  TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA      [RFC4346]         * 0x00,0x0C  TLS_DH_DSS_WITH_DES_CBC_SHA               [RFC5469]         * 0x00,0x0D  TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA          [RFC5246]         * 0x00,0x0E  TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA      [RFC4346]         * 0x00,0x0F  TLS_DH_RSA_WITH_DES_CBC_SHA               [RFC5469]         * 0x00,0x10  TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA          [RFC5246]         * 0x00,0x11  TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA     [RFC4346]         * 0x00,0x12  TLS_DHE_DSS_WITH_DES_CBC_SHA              [RFC5469]         * 0x00,0x13  TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA         [RFC5246]         * 0x00,0x14  TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA     [RFC4346]         * 0x00,0x15  TLS_DHE_RSA_WITH_DES_CBC_SHA              [RFC5469]         * 0x00,0x16  TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA         [RFC5246]         * 0x00,0x17  TLS_DH_anon_EXPORT_WITH_RC4_40_MD5        [RFC4346]         * 0x00,0x18  TLS_DH_anon_WITH_RC4_128_MD5              [RFC5246]         * 0x00,0x19  TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA     [RFC4346]         * 0x00,0x1A  TLS_DH_anon_WITH_DES_CBC_SHA              [RFC5469]         * 0x00,0x1B  TLS_DH_anon_WITH_3DES_EDE_CBC_SHA         [RFC5246]         * 0x00,0x1C-1D Reserved to avoid conflicts with SSLv3  [RFC5246]         * 0x00,0x1E  TLS_KRB5_WITH_DES_CBC_SHA                 [RFC2712]         * 0x00,0x1F  TLS_KRB5_WITH_3DES_EDE_CBC_SHA            [RFC2712]         * 0x00,0x20  TLS_KRB5_WITH_RC4_128_SHA                 [RFC2712]         * 0x00,0x21  TLS_KRB5_WITH_IDEA_CBC_SHA                [RFC2712]         * 0x00,0x22  TLS_KRB5_WITH_DES_CBC_MD5                 [RFC2712]         * 0x00,0x23  TLS_KRB5_WITH_3DES_EDE_CBC_MD5            [RFC2712]         * 0x00,0x24  TLS_KRB5_WITH_RC4_128_MD5                 [RFC2712]         * 0x00,0x25  TLS_KRB5_WITH_IDEA_CBC_MD5                [RFC2712]         * 0x00,0x26  TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA       [RFC2712]         * 0x00,0x27  TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA       [RFC2712]         * 0x00,0x28  TLS_KRB5_EXPORT_WITH_RC4_40_SHA           [RFC2712]         * 0x00,0x29  TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5       [RFC2712]         * 0x00,0x2A  TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5       [RFC2712]         * 0x00,0x2B  TLS_KRB5_EXPORT_WITH_RC4_40_MD5           [RFC2712]         * 0x00,0x2C  TLS_PSK_WITH_NULL_SHA                     [RFC4785]         * 0x00,0x2D  TLS_DHE_PSK_WITH_NULL_SHA                 [RFC4785]         * 0x00,0x2E  TLS_RSA_PSK_WITH_NULL_SHA                 [RFC4785]         * 0x00,0x2F  TLS_RSA_WITH_AES_128_CBC_SHA              [RFC5246]         * 0x00,0x30  TLS_DH_DSS_WITH_AES_128_CBC_SHA           [RFC5246]         * 0x00,0x31  TLS_DH_RSA_WITH_AES_128_CBC_SHA           [RFC5246]         * 0x00,0x32  TLS_DHE_DSS_WITH_AES_128_CBC_SHA          [RFC5246]         * 0x00,0x33  TLS_DHE_RSA_WITH_AES_128_CBC_SHA          [RFC5246]         * 0x00,0x34  TLS_DH_anon_WITH_AES_128_CBC_SHA          [RFC5246]         * 0x00,0x35  TLS_RSA_WITH_AES_256_CBC_SHA              [RFC5246]         * 0x00,0x36  TLS_DH_DSS_WITH_AES_256_CBC_SHA           [RFC5246]         * 0x00,0x37  TLS_DH_RSA_WITH_AES_256_CBC_SHA           [RFC5246]         * 0x00,0x38  TLS_DHE_DSS_WITH_AES_256_CBC_SHA          [RFC5246]         * 0x00,0x39  TLS_DHE_RSA_WITH_AES_256_CBC_SHA          [RFC5246]         * 0x00,0x3A  TLS_DH_anon_WITH_AES_256_CBC_SHA          [RFC5246]         * 0x00,0x3B  TLS_RSA_WITH_NULL_SHA256                  [RFC5246]         * 0x00,0x3C  TLS_RSA_WITH_AES_128_CBC_SHA256           [RFC5246]         * 0x00,0x3D  TLS_RSA_WITH_AES_256_CBC_SHA256           [RFC5246]         * 0x00,0x3E  TLS_DH_DSS_WITH_AES_128_CBC_SHA256        [RFC5246]         * 0x00,0x3F  TLS_DH_RSA_WITH_AES_128_CBC_SHA256        [RFC5246]         * 0x00,0x40  TLS_DHE_DSS_WITH_AES_128_CBC_SHA256       [RFC5246]         * 0x00,0x41  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA         [RFC5932]         * 0x00,0x42  TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA      [RFC5932]         * 0x00,0x43  TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA      [RFC5932]         * 0x00,0x44  TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA     [RFC5932]         * 0x00,0x45  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA     [RFC5932]         * 0x00,0x46  TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA     [RFC5932]         * 0x00,0x47-4F Reserved to avoid conflicts with         *            deployed implementations                  [Pasi_Eronen]         * 0x00,0x50-58 Reserved to avoid conflicts             [Pasi Eronen]         * 0x00,0x59-5C Reserved to avoid conflicts with         *            deployed implementations                  [Pasi_Eronen]         * 0x00,0x5D-5F Unassigned         * 0x00,0x60-66 Reserved to avoid conflicts with widely         *            deployed implementations                  [Pasi_Eronen]         * 0x00,0x67  TLS_DHE_RSA_WITH_AES_128_CBC_SHA256       [RFC5246]         * 0x00,0x68  TLS_DH_DSS_WITH_AES_256_CBC_SHA256        [RFC5246]         * 0x00,0x69  TLS_DH_RSA_WITH_AES_256_CBC_SHA256        [RFC5246]         * 0x00,0x6A  TLS_DHE_DSS_WITH_AES_256_CBC_SHA256       [RFC5246]         * 0x00,0x6B  TLS_DHE_RSA_WITH_AES_256_CBC_SHA256       [RFC5246]         * 0x00,0x6C  TLS_DH_anon_WITH_AES_128_CBC_SHA256       [RFC5246]         * 0x00,0x6D  TLS_DH_anon_WITH_AES_256_CBC_SHA256       [RFC5246]         * 0x00,0x6E-83 Unassigned         * 0x00,0x84  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA         [RFC5932]         * 0x00,0x85  TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA      [RFC5932]         * 0x00,0x86  TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA      [RFC5932]         * 0x00,0x87  TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA     [RFC5932]         * 0x00,0x88  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA     [RFC5932]         * 0x00,0x89  TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA     [RFC5932]         * 0x00,0x8A  TLS_PSK_WITH_RC4_128_SHA                  [RFC4279]         * 0x00,0x8B  TLS_PSK_WITH_3DES_EDE_CBC_SHA             [RFC4279]         * 0x00,0x8C  TLS_PSK_WITH_AES_128_CBC_SHA              [RFC4279]         * 0x00,0x8D  TLS_PSK_WITH_AES_256_CBC_SHA              [RFC4279]         * 0x00,0x8E  TLS_DHE_PSK_WITH_RC4_128_SHA              [RFC4279]         * 0x00,0x8F  TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA         [RFC4279]         * 0x00,0x90  TLS_DHE_PSK_WITH_AES_128_CBC_SHA          [RFC4279]         * 0x00,0x91  TLS_DHE_PSK_WITH_AES_256_CBC_SHA          [RFC4279]         * 0x00,0x92  TLS_RSA_PSK_WITH_RC4_128_SHA              [RFC4279]         * 0x00,0x93  TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA         [RFC4279]         * 0x00,0x94  TLS_RSA_PSK_WITH_AES_128_CBC_SHA          [RFC4279]         * 0x00,0x95  TLS_RSA_PSK_WITH_AES_256_CBC_SHA          [RFC4279]         * 0x00,0x96  TLS_RSA_WITH_SEED_CBC_SHA                 [RFC4162]         * 0x00,0x97  TLS_DH_DSS_WITH_SEED_CBC_SHA              [RFC4162]         * 0x00,0x98  TLS_DH_RSA_WITH_SEED_CBC_SHA              [RFC4162]         * 0x00,0x99  TLS_DHE_DSS_WITH_SEED_CBC_SHA             [RFC4162]         * 0x00,0x9A  TLS_DHE_RSA_WITH_SEED_CBC_SHA             [RFC4162]         * 0x00,0x9B  TLS_DH_anon_WITH_SEED_CBC_SHA             [RFC4162]         * 0x00,0x9C  TLS_RSA_WITH_AES_128_GCM_SHA256           [RFC5288]         * 0x00,0x9D  TLS_RSA_WITH_AES_256_GCM_SHA384           [RFC5288]         * 0x00,0x9E  TLS_DHE_RSA_WITH_AES_128_GCM_SHA256       [RFC5288]         * 0x00,0x9F  TLS_DHE_RSA_WITH_AES_256_GCM_SHA384       [RFC5288]         * 0x00,0xA0  TLS_DH_RSA_WITH_AES_128_GCM_SHA256        [RFC5288]         * 0x00,0xA1  TLS_DH_RSA_WITH_AES_256_GCM_SHA384        [RFC5288]         * 0x00,0xA2  TLS_DHE_DSS_WITH_AES_128_GCM_SHA256       [RFC5288]         * 0x00,0xA3  TLS_DHE_DSS_WITH_AES_256_GCM_SHA384       [RFC5288]         * 0x00,0xA4  TLS_DH_DSS_WITH_AES_128_GCM_SHA256        [RFC5288]         * 0x00,0xA5  TLS_DH_DSS_WITH_AES_256_GCM_SHA384        [RFC5288]         * 0x00,0xA6  TLS_DH_anon_WITH_AES_128_GCM_SHA256       [RFC5288]         * 0x00,0xA7  TLS_DH_anon_WITH_AES_256_GCM_SHA384       [RFC5288]         * 0x00,0xA8  TLS_PSK_WITH_AES_128_GCM_SHA256           [RFC5487]         * 0x00,0xA9  TLS_PSK_WITH_AES_256_GCM_SHA384           [RFC5487]         * 0x00,0xAA  TLS_DHE_PSK_WITH_AES_128_GCM_SHA256       [RFC5487]         * 0x00,0xAB  TLS_DHE_PSK_WITH_AES_256_GCM_SHA384       [RFC5487]         * 0x00,0xAC  TLS_RSA_PSK_WITH_AES_128_GCM_SHA256       [RFC5487]         * 0x00,0xAD  TLS_RSA_PSK_WITH_AES_256_GCM_SHA384       [RFC5487]         * 0x00,0xAE  TLS_PSK_WITH_AES_128_CBC_SHA256           [RFC5487]         * 0x00,0xAF  TLS_PSK_WITH_AES_256_CBC_SHA384           [RFC5487]         * 0x00,0xB0  TLS_PSK_WITH_NULL_SHA256                  [RFC5487]         * 0x00,0xB1  TLS_PSK_WITH_NULL_SHA384                  [RFC5487]         * 0x00,0xB2  TLS_DHE_PSK_WITH_AES_128_CBC_SHA256       [RFC5487]         * 0x00,0xB3  TLS_DHE_PSK_WITH_AES_256_CBC_SHA384       [RFC5487]         * 0x00,0xB4  TLS_DHE_PSK_WITH_NULL_SHA256              [RFC5487]         * 0x00,0xB5  TLS_DHE_PSK_WITH_NULL_SHA384              [RFC5487]         * 0x00,0xB6  TLS_RSA_PSK_WITH_AES_128_CBC_SHA256       [RFC5487]         * 0x00,0xB7  TLS_RSA_PSK_WITH_AES_256_CBC_SHA384       [RFC5487]         * 0x00,0xB8  TLS_RSA_PSK_WITH_NULL_SHA256              [RFC5487]         * 0x00,0xB9  TLS_RSA_PSK_WITH_NULL_SHA384              [RFC5487]         * 0x00,0xBA  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256      [RFC5932]         * 0x00,0xBB  TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256   [RFC5932]         * 0x00,0xBC  TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256   [RFC5932]         * 0x00,0xBD  TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256  [RFC5932]         * 0x00,0xBE  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256  [RFC5932]         * 0x00,0xBF  TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256  [RFC5932]         * 0x00,0xC0  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256      [RFC5932]         * 0x00,0xC1  TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256   [RFC5932]         * 0x00,0xC2  TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256   [RFC5932]         * 0x00,0xC3  TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256  [RFC5932]         * 0x00,0xC4  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256  [RFC5932]         * 0x00,0xC5  TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256  [RFC5932]         * 0x00,0xC6-FE         Unassigned         * 0x00,0xFF  TLS_EMPTY_RENEGOTIATION_INFO_SCSV         [RFC5746]         * 0x01-BF,*  Unassigned         * 0xC0,0x01  TLS_ECDH_ECDSA_WITH_NULL_SHA              [RFC4492]         * 0xC0,0x02  TLS_ECDH_ECDSA_WITH_RC4_128_SHA           [RFC4492]         * 0xC0,0x03  TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA      [RFC4492]         * 0xC0,0x04  TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA       [RFC4492]         * 0xC0,0x05  TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA       [RFC4492]         * 0xC0,0x06  TLS_ECDHE_ECDSA_WITH_NULL_SHA             [RFC4492]         * 0xC0,0x07  TLS_ECDHE_ECDSA_WITH_RC4_128_SHA          [RFC4492]         * 0xC0,0x08  TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA     [RFC4492]         * 0xC0,0x09  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA      [RFC4492]         * 0xC0,0x0A  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA      [RFC4492]         * 0xC0,0x0B  TLS_ECDH_RSA_WITH_NULL_SHA                [RFC4492]         * 0xC0,0x0C  TLS_ECDH_RSA_WITH_RC4_128_SHA             [RFC4492]         * 0xC0,0x0D  TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA        [RFC4492]         * 0xC0,0x0E  TLS_ECDH_RSA_WITH_AES_128_CBC_SHA         [RFC4492]         * 0xC0,0x0F  TLS_ECDH_RSA_WITH_AES_256_CBC_SHA         [RFC4492]         * 0xC0,0x10  TLS_ECDHE_RSA_WITH_NULL_SHA               [RFC4492]         * 0xC0,0x11  TLS_ECDHE_RSA_WITH_RC4_128_SHA            [RFC4492]         * 0xC0,0x12  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA       [RFC4492]         * 0xC0,0x13  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA        [RFC4492]         * 0xC0,0x14  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA        [RFC4492]         * 0xC0,0x15  TLS_ECDH_anon_WITH_NULL_SHA               [RFC4492]         * 0xC0,0x16  TLS_ECDH_anon_WITH_RC4_128_SHA            [RFC4492]         * 0xC0,0x17  TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA       [RFC4492]         * 0xC0,0x18  TLS_ECDH_anon_WITH_AES_128_CBC_SHA        [RFC4492]         * 0xC0,0x19  TLS_ECDH_anon_WITH_AES_256_CBC_SHA        [RFC4492]         * 0xC0,0x1A  TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA         [RFC5054]         * 0xC0,0x1B  TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA     [RFC5054]         * 0xC0,0x1C  TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA     [RFC5054]         * 0xC0,0x1D  TLS_SRP_SHA_WITH_AES_128_CBC_SHA          [RFC5054]         * 0xC0,0x1E  TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA      [RFC5054]         * 0xC0,0x1F  TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA      [RFC5054]         * 0xC0,0x20  TLS_SRP_SHA_WITH_AES_256_CBC_SHA          [RFC5054]         * 0xC0,0x21  TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA      [RFC5054]         * 0xC0,0x22  TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA      [RFC5054]         * 0xC0,0x23  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256   [RFC5289]         * 0xC0,0x24  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384   [RFC5289]         * 0xC0,0x25  TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256    [RFC5289]         * 0xC0,0x26  TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384    [RFC5289]         * 0xC0,0x27  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256     [RFC5289]         * 0xC0,0x28  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384     [RFC5289]         * 0xC0,0x29  TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256      [RFC5289]         * 0xC0,0x2A  TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384      [RFC5289]         * 0xC0,0x2B  TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256   [RFC5289]         * 0xC0,0x2C  TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384   [RFC5289]         * 0xC0,0x2D  TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256    [RFC5289]         * 0xC0,0x2E  TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384    [RFC5289]         * 0xC0,0x2F  TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256     [RFC5289]         * 0xC0,0x30  TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384     [RFC5289]         * 0xC0,0x31  TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256      [RFC5289]         * 0xC0,0x32  TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384      [RFC5289]         * 0xC0,0x33  TLS_ECDHE_PSK_WITH_RC4_128_SHA            [RFC5489]         * 0xC0,0x34  TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA       [RFC5489]         * 0xC0,0x35  TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA        [RFC5489]         * 0xC0,0x36  TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA        [RFC5489]         * 0xC0,0x37  TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256     [RFC5489]         * 0xC0,0x38  TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384     [RFC5489]         * 0xC0,0x39  TLS_ECDHE_PSK_WITH_NULL_SHA               [RFC5489]         * 0xC0,0x3A  TLS_ECDHE_PSK_WITH_NULL_SHA256            [RFC5489]         * 0xC0,0x3B  TLS_ECDHE_PSK_WITH_NULL_SHA384            [RFC5489]         * 0xC0,0x3C-FF Unassigned         * 0xC1-FD,*  Unassigned         * 0xFE,0x00-FD Unassigned         * 0xFE,0xFE-FF Reserved to avoid conflicts with widely         *            deployed implementations                  [Pasi_Eronen]         * 0xFF,0x00-FF Reserved for Private Use                [RFC5246]         */         add("SSL_NULL_WITH_NULL_NULL",                              0x0000,   1, K_NULL,       B_NULL,    F);         /*         * Definition of the CipherSuites that are enabled by default.         * They are listed in preference order, most preferred first, using         * the following criteria:         * 1. Prefer the stronger buld cipher, in the order of AES_256,         *    AES_128, RC-4, 3DES-EDE.         * 2. Prefer the stronger MAC algorithm, in the order of SHA384,         *    SHA256, SHA, MD5.         * 3. Prefer the better performance of key exchange and digital         *    signature algorithm, in the order of ECDHE-ECDSA, ECDHE-RSA,         *    RSA, ECDH-ECDSA, ECDH-RSA, DHE-RSA, DHE-DSS.         */        int p = DEFAULT_SUITES_PRIORITY * 2;         // shorten names to fit the following table cleanly.        int max = ProtocolVersion.LIMIT_MAX_VALUE;        int tls11 = ProtocolVersion.TLS11.v;        int tls12 = ProtocolVersion.TLS12.v;         //  ID           Key Exchange   Cipher     A  obs  suprt  PRF        //  ======       ============   =========  =  ===  =====  ========        add("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",            0xc024, --p, K_ECDHE_ECDSA, B_AES_256, T, max, tls12, P_SHA384);        add("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",            0xc028, --p, K_ECDHE_RSA,   B_AES_256, T, max, tls12, P_SHA384);        add("TLS_RSA_WITH_AES_256_CBC_SHA256",            0x003d, --p, K_RSA,         B_AES_256, T, max, tls12, P_SHA256);        add("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384",            0xc026, --p, K_ECDH_ECDSA,  B_AES_256, T, max, tls12, P_SHA384);        add("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384",            0xc02a, --p, K_ECDH_RSA,    B_AES_256, T, max, tls12, P_SHA384);        add("TLS_DHE_RSA_WITH_AES_256_CBC_SHA256",            0x006b, --p, K_DHE_RSA,     B_AES_256, T, max, tls12, P_SHA256);        add("TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",            0x006a, --p, K_DHE_DSS,     B_AES_256, T, max, tls12, P_SHA256);         add("TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",            0xC00A, --p, K_ECDHE_ECDSA, B_AES_256, T);        add("TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",            0xC014, --p, K_ECDHE_RSA,   B_AES_256, T);        add("TLS_RSA_WITH_AES_256_CBC_SHA",            0x0035, --p, K_RSA,         B_AES_256, T);        add("TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",            0xC005, --p, K_ECDH_ECDSA,  B_AES_256, T);        add("TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",            0xC00F, --p, K_ECDH_RSA,    B_AES_256, T);        add("TLS_DHE_RSA_WITH_AES_256_CBC_SHA",            0x0039, --p, K_DHE_RSA,     B_AES_256, T);        add("TLS_DHE_DSS_WITH_AES_256_CBC_SHA",            0x0038, --p, K_DHE_DSS,     B_AES_256, T);         add("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",            0xc023, --p, K_ECDHE_ECDSA, B_AES_128, T, max, tls12, P_SHA256);        add("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",            0xc027, --p, K_ECDHE_RSA,   B_AES_128, T, max, tls12, P_SHA256);        add("TLS_RSA_WITH_AES_128_CBC_SHA256",            0x003c, --p, K_RSA,         B_AES_128, T, max, tls12, P_SHA256);        add("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256",            0xc025, --p, K_ECDH_ECDSA,  B_AES_128, T, max, tls12, P_SHA256);        add("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256",            0xc029, --p, K_ECDH_RSA,    B_AES_128, T, max, tls12, P_SHA256);        add("TLS_DHE_RSA_WITH_AES_128_CBC_SHA256",            0x0067, --p, K_DHE_RSA,     B_AES_128, T, max, tls12, P_SHA256);        add("TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",            0x0040, --p, K_DHE_DSS,     B_AES_128, T, max, tls12, P_SHA256);         add("TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",            0xC009, --p, K_ECDHE_ECDSA, B_AES_128, T);        add("TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",            0xC013, --p, K_ECDHE_RSA,   B_AES_128, T);        add("TLS_RSA_WITH_AES_128_CBC_SHA",            0x002f, --p, K_RSA,         B_AES_128, T);        add("TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",            0xC004, --p, K_ECDH_ECDSA,  B_AES_128, T);        add("TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",            0xC00E, --p, K_ECDH_RSA,    B_AES_128, T);        add("TLS_DHE_RSA_WITH_AES_128_CBC_SHA",            0x0033, --p, K_DHE_RSA,     B_AES_128, T);        add("TLS_DHE_DSS_WITH_AES_128_CBC_SHA",            0x0032, --p, K_DHE_DSS,     B_AES_128, T);         add("TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",            0xC007, --p, K_ECDHE_ECDSA, B_RC4_128, N);        add("TLS_ECDHE_RSA_WITH_RC4_128_SHA",            0xC011, --p, K_ECDHE_RSA,   B_RC4_128, N);        add("SSL_RSA_WITH_RC4_128_SHA",            0x0005, --p, K_RSA,         B_RC4_128, N);        add("TLS_ECDH_ECDSA_WITH_RC4_128_SHA",            0xC002, --p, K_ECDH_ECDSA,  B_RC4_128, N);        add("TLS_ECDH_RSA_WITH_RC4_128_SHA",            0xC00C, --p, K_ECDH_RSA,    B_RC4_128, N);         add("TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",            0xC008, --p, K_ECDHE_ECDSA, B_3DES,    T);        add("TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",            0xC012, --p, K_ECDHE_RSA,   B_3DES,    T);        add("SSL_RSA_WITH_3DES_EDE_CBC_SHA",            0x000a, --p, K_RSA,         B_3DES,    T);        add("TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",            0xC003, --p, K_ECDH_ECDSA,  B_3DES,    T);        add("TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",            0xC00D, --p, K_ECDH_RSA,    B_3DES,    T);        add("SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",            0x0016, --p, K_DHE_RSA,     B_3DES,    T);        add("SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",            0x0013, --p, K_DHE_DSS,     B_3DES,    N);         add("SSL_RSA_WITH_RC4_128_MD5",            0x0004, --p, K_RSA,         B_RC4_128, N);         // Renegotiation protection request Signalling Cipher Suite Value (SCSV)        add("TLS_EMPTY_RENEGOTIATION_INFO_SCSV",            0x00ff, --p, K_SCSV,        B_NULL,    T);         /*         * Definition of the CipherSuites that are supported but not enabled         * by default.         * They are listed in preference order, preferred first, using the         * following criteria:         * 1. CipherSuites for KRB5 need additional KRB5 service         *    configuration, and these suites are not common in practice,         *    so we put KRB5 based cipher suites at the end of the supported         *    list.         * 2. If a cipher suite has been obsoleted, we put it at the end of         *    the list.         * 3. Prefer the stronger bulk cipher, in the order of AES_256,         *    AES_128, RC-4, 3DES-EDE, DES, RC4_40, DES40, NULL.         * 4. Prefer the stronger MAC algorithm, in the order of SHA384,         *    SHA256, SHA, MD5.         * 5. Prefer the better performance of key exchange and digital         *    signature algorithm, in the order of ECDHE-ECDSA, ECDHE-RSA,         *    RSA, ECDH-ECDSA, ECDH-RSA, DHE-RSA, DHE-DSS, anonymous.         */        p = DEFAULT_SUITES_PRIORITY;

Lines 501–1000 of 1274. Previous lines