Home / Function/ supportedCiphers() — netty Function Reference

supportedCiphers() — netty Function Reference

Architecture documentation for the supportedCiphers() function in JdkSslContext.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  42e71854_5300_5427_a868_fea31fd76042["supportedCiphers()"]
  3d4632d0_2f31_c47f_5ff2_913e505ddf39["JdkSslContext"]
  42e71854_5300_5427_a868_fea31fd76042 -->|defined in| 3d4632d0_2f31_c47f_5ff2_913e505ddf39
  72fd56fa_278f_1c21_43ff_0abc25ab65d4["JdkSslContext()"]
  72fd56fa_278f_1c21_43ff_0abc25ab65d4 -->|calls| 42e71854_5300_5427_a868_fea31fd76042
  91c2cc55_5baf_f1e1_9478_d01f7eefe9fd["init()"]
  91c2cc55_5baf_f1e1_9478_d01f7eefe9fd -->|calls| 42e71854_5300_5427_a868_fea31fd76042
  style 42e71854_5300_5427_a868_fea31fd76042 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/JdkSslContext.java lines 141–168

    private static Set<String> supportedCiphers(SSLEngine engine) {
        // Choose the sensible default list of cipher suites.
        final String[] supportedCiphers = engine.getSupportedCipherSuites();
        Set<String> supportedCiphersSet = new LinkedHashSet<String>(supportedCiphers.length);
        for (int i = 0; i < supportedCiphers.length; ++i) {
            String supportedCipher = supportedCiphers[i];
            supportedCiphersSet.add(supportedCipher);
            // IBM's J9 JVM utilizes a custom naming scheme for ciphers and only returns ciphers with the "SSL_"
            // prefix instead of the "TLS_" prefix (as defined in the JSSE cipher suite names [1]). According to IBM's
            // documentation [2] the "SSL_" prefix is "interchangeable" with the "TLS_" prefix.
            // See the IBM forum discussion [3] and issue on IBM's JVM [4] for more details.
            //[1] https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites
            //[2] https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/
            // security-component/jsse2Docs/ciphersuites.html
            //[3] https://www.ibm.com/developerworks/community/forums/html/topic?id=9b5a56a9-fa46-4031-b33b-df91e28d77c2
            //[4] https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=71770
            if (supportedCipher.startsWith("SSL_")) {
                final String tlsPrefixedCipherName = "TLS_" + supportedCipher.substring("SSL_".length());
                try {
                    engine.setEnabledCipherSuites(new String[]{tlsPrefixedCipherName});
                    supportedCiphersSet.add(tlsPrefixedCipherName);
                } catch (IllegalArgumentException ignored) {
                    // The cipher is not supported ... move on to the next cipher.
                }
            }
        }
        return supportedCiphersSet;
    }

Domain

Subdomains

Frequently Asked Questions

What does supportedCiphers() do?
supportedCiphers() is a function in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/JdkSslContext.java.
Where is supportedCiphers() defined?
supportedCiphers() is defined in handler/src/main/java/io/netty/handler/ssl/JdkSslContext.java at line 141.
What calls supportedCiphers()?
supportedCiphers() is called by 2 function(s): JdkSslContext, init.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free