Home / Class/ SslContext Class — netty Architecture

SslContext Class — netty Architecture

Architecture documentation for the SslContext class in SslContext.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  ec56e535_0508_8846_8172_a704185d370e["SslContext"]
  b23c1bca_09de_e79b_f8bf_2ab31cd15d04["SslContext.java"]
  ec56e535_0508_8846_8172_a704185d370e -->|defined in| b23c1bca_09de_e79b_f8bf_2ab31cd15d04
  ee4bbebb_f18a_c683_e402_26963bb0edee["SslProvider()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| ee4bbebb_f18a_c683_e402_26963bb0edee
  580512d6_7357_fe46_10ad_036b279d6b9b["SslContext()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| 580512d6_7357_fe46_10ad_036b279d6b9b
  bb63f22a_114c_9b47_8a1b_5d2246791897["verifyNullSslContextProvider()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| bb63f22a_114c_9b47_8a1b_5d2246791897
  e7cbc46e_5090_cd09_9654_160359fee68f["ApplicationProtocolConfig()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| e7cbc46e_5090_cd09_9654_160359fee68f
  0f01004a_c79c_cb96_33d6_53be91fffb9b["AttributeMap()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| 0f01004a_c79c_cb96_33d6_53be91fffb9b
  d0f03157_79b7_7e71_5457_dfcda648b0a6["isServer()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| d0f03157_79b7_7e71_5457_dfcda648b0a6
  38137c50_89bb_82d8_ac6c_61e22cc51fd3["isClient()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| 38137c50_89bb_82d8_ac6c_61e22cc51fd3
  1c573144_cd89_3161_53dc_cd4ffa588ceb["cipherSuites()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| 1c573144_cd89_3161_53dc_cd4ffa588ceb
  8918d9d4_34bd_292b_1bd5_eae604aa8118["sessionCacheSize()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| 8918d9d4_34bd_292b_1bd5_eae604aa8118
  76169878_36e1_5c0d_9ee0_be3369ed1483["sessionTimeout()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| 76169878_36e1_5c0d_9ee0_be3369ed1483
  f707e7e7_1760_44f1_f84d_d5e62d0140a4["nextProtocols()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| f707e7e7_1760_44f1_f84d_d5e62d0140a4
  b24573ef_04c1_13f7_c94f_8642b119752c["ApplicationProtocolNegotiator()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| b24573ef_04c1_13f7_c94f_8642b119752c
  6a9dbc23_401d_015a_9de3_36547e4b7ad2["SSLEngine()"]
  ec56e535_0508_8846_8172_a704185d370e -->|method| 6a9dbc23_401d_015a_9de3_36547e4b7ad2

Relationship Graph

Source Code

handler/src/main/java/io/netty/handler/ssl/SslContext.java lines 96–1381

public abstract class SslContext {
    static final String ALIAS = "key";

    static final CertificateFactory X509_CERT_FACTORY;
    static {
        try {
            X509_CERT_FACTORY = CertificateFactory.getInstance("X.509");
        } catch (CertificateException e) {
            throw new IllegalStateException("unable to instance X.509 CertificateFactory", e);
        }
    }

    private final boolean startTls;
    private final AttributeMap attributes = new DefaultAttributeMap();
    final ResumptionController resumptionController;
    private static final String OID_PKCS5_PBES2 = "1.2.840.113549.1.5.13";
    private static final String PBES2 = "PBES2";

    /**
     * Returns the default server-side implementation provider currently in use.
     *
     * @return {@link SslProvider#OPENSSL} if OpenSSL is available. {@link SslProvider#JDK} otherwise.
     */
    public static SslProvider defaultServerProvider() {
        return defaultProvider();
    }

    /**
     * Returns the default client-side implementation provider currently in use.
     *
     * @return {@link SslProvider#OPENSSL} if OpenSSL is available. {@link SslProvider#JDK} otherwise.
     */
    public static SslProvider defaultClientProvider() {
        return defaultProvider();
    }

    private static SslProvider defaultProvider() {
        if (OpenSsl.isAvailable()) {
            return SslProvider.OPENSSL;
        } else {
            return SslProvider.JDK;
        }
    }

    /**
     * Creates a new server-side {@link SslContext}.
     *
     * @param certChainFile an X.509 certificate chain file in PEM format
     * @param keyFile a PKCS#8 private key file in PEM format
     * @return a new server-side {@link SslContext}
     * @deprecated Replaced by {@link SslContextBuilder}
     */
    @Deprecated
    public static SslContext newServerContext(File certChainFile, File keyFile) throws SSLException {
        return newServerContext(certChainFile, keyFile, null);
    }

    /**
     * Creates a new server-side {@link SslContext}.
     *
     * @param certChainFile an X.509 certificate chain file in PEM format
     * @param keyFile a PKCS#8 private key file in PEM format
     * @param keyPassword the password of the {@code keyFile}.
     *                    {@code null} if it's not password-protected.
     * @return a new server-side {@link SslContext}
     * @deprecated Replaced by {@link SslContextBuilder}
     */
    @Deprecated
    public static SslContext newServerContext(
            File certChainFile, File keyFile, String keyPassword) throws SSLException {
        return newServerContext(null, certChainFile, keyFile, keyPassword);
    }

    /**
     * Creates a new server-side {@link SslContext}.
     *
     * @param certChainFile an X.509 certificate chain file in PEM format
     * @param keyFile a PKCS#8 private key file in PEM format
     * @param keyPassword the password of the {@code keyFile}.
     *                    {@code null} if it's not password-protected.
     * @param ciphers the cipher suites to enable, in the order of preference.

Frequently Asked Questions

What is the SslContext class?
SslContext is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/SslContext.java.
Where is SslContext defined?
SslContext is defined in handler/src/main/java/io/netty/handler/ssl/SslContext.java at line 96.

Analyze Your Own Codebase

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

Try Supermodel Free