JdkSslContext Class — netty Architecture
Architecture documentation for the JdkSslContext class in JdkSslContext.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 3d4632d0_2f31_c47f_5ff2_913e505ddf39["JdkSslContext"] c1423531_50e1_4073_7612_9aad399b2c5d["JdkSslContext.java"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|defined in| c1423531_50e1_4073_7612_9aad399b2c5d c06a4c54_3aed_2107_6854_defd58ec014b["defaultProtocols()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| c06a4c54_3aed_2107_6854_defd58ec014b 42e71854_5300_5427_a868_fea31fd76042["supportedCiphers()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 42e71854_5300_5427_a868_fea31fd76042 0830e989_bd68_1162_3e91_ff3228f713a1["defaultCiphers()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 0830e989_bd68_1162_3e91_ff3228f713a1 c21f09d3_9683_0c32_3b9e_2c877e618505["isTlsV13Supported()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| c21f09d3_9683_0c32_3b9e_2c877e618505 72fd56fa_278f_1c21_43ff_0abc25ab65d4["JdkSslContext()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 72fd56fa_278f_1c21_43ff_0abc25ab65d4 cb7f18a6_a51e_0e31_d75b_a4791221e7ef["SSLContext()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| cb7f18a6_a51e_0e31_d75b_a4791221e7ef 0f5a2636_95aa_cef1_9c58_eea8cca1ec98["isClient()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 0f5a2636_95aa_cef1_9c58_eea8cca1ec98 3e9e4202_bad7_e9f9_02f5_f8af2404899f["SSLSessionContext()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 3e9e4202_bad7_e9f9_02f5_f8af2404899f 2ffe13b9_2193_e990_0a8e_db6459dd7f9a["cipherSuites()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 2ffe13b9_2193_e990_0a8e_db6459dd7f9a 725a80ce_befc_1e85_c67b_e47f1920b3d9["SSLEngine()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 725a80ce_befc_1e85_c67b_e47f1920b3d9 d20cac20_7586_c985_8c1b_5dd1b3574328["configureSSLParameters()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| d20cac20_7586_c985_8c1b_5dd1b3574328 998c989d_ede9_bf92_f5e5_d6e2a56f73ad["JdkApplicationProtocolNegotiator()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| 998c989d_ede9_bf92_f5e5_d6e2a56f73ad a9ac4b01_c2aa_1963_cee8_0840b70acdcf["KeyManagerFactory()"] 3d4632d0_2f31_c47f_5ff2_913e505ddf39 -->|method| a9ac4b01_c2aa_1963_cee8_0840b70acdcf
Relationship Graph
Source Code
handler/src/main/java/io/netty/handler/ssl/JdkSslContext.java lines 60–537
public class JdkSslContext extends SslContext {
private static final InternalLogger logger = InternalLoggerFactory.getInstance(JdkSslContext.class);
static final String PROTOCOL = "TLS";
private static final String[] DEFAULT_PROTOCOLS;
private static final List<String> DEFAULT_CIPHERS;
private static final List<String> DEFAULT_CIPHERS_NON_TLSV13;
private static final Set<String> SUPPORTED_CIPHERS;
private static final Set<String> SUPPORTED_CIPHERS_NON_TLSV13;
private static final Provider DEFAULT_PROVIDER;
static {
Defaults defaults = new Defaults();
defaults.init();
DEFAULT_PROVIDER = defaults.defaultProvider;
DEFAULT_PROTOCOLS = defaults.defaultProtocols;
SUPPORTED_CIPHERS = defaults.supportedCiphers;
DEFAULT_CIPHERS = defaults.defaultCiphers;
DEFAULT_CIPHERS_NON_TLSV13 = defaults.defaultCiphersNonTLSv13;
SUPPORTED_CIPHERS_NON_TLSV13 = defaults.supportedCiphersNonTLSv13;
if (logger.isDebugEnabled()) {
logger.debug("Default protocols (JDK): {} ", Arrays.asList(DEFAULT_PROTOCOLS));
logger.debug("Default cipher suites (JDK): {}", DEFAULT_CIPHERS);
}
}
private static final class Defaults {
String[] defaultProtocols;
List<String> defaultCiphers;
List<String> defaultCiphersNonTLSv13;
Set<String> supportedCiphers;
Set<String> supportedCiphersNonTLSv13;
Provider defaultProvider;
void init() {
SSLContext context;
try {
context = SSLContext.getInstance(PROTOCOL);
context.init(null, null, null);
} catch (Exception e) {
throw new Error("failed to initialize the default SSL context", e);
}
defaultProvider = context.getProvider();
SSLEngine engine = context.createSSLEngine();
defaultProtocols = defaultProtocols(context, engine);
supportedCiphers = Collections.unmodifiableSet(supportedCiphers(engine));
defaultCiphers = Collections.unmodifiableList(defaultCiphers(engine, supportedCiphers));
List<String> ciphersNonTLSv13 = new ArrayList<String>(defaultCiphers);
ciphersNonTLSv13.removeAll(Arrays.asList(SslUtils.DEFAULT_TLSV13_CIPHER_SUITES));
defaultCiphersNonTLSv13 = Collections.unmodifiableList(ciphersNonTLSv13);
Set<String> suppertedCiphersNonTLSv13 = new LinkedHashSet<String>(supportedCiphers);
suppertedCiphersNonTLSv13.removeAll(Arrays.asList(SslUtils.DEFAULT_TLSV13_CIPHER_SUITES));
supportedCiphersNonTLSv13 = Collections.unmodifiableSet(suppertedCiphersNonTLSv13);
}
}
private static String[] defaultProtocols(SSLContext context, SSLEngine engine) {
// Choose the sensible default list of protocols that respects JDK flags, eg. jdk.tls.client.protocols
final String[] supportedProtocols = context.getDefaultSSLParameters().getProtocols();
Set<String> supportedProtocolsSet = new HashSet<String>(supportedProtocols.length);
Collections.addAll(supportedProtocolsSet, supportedProtocols);
List<String> protocols = new ArrayList<String>();
addIfSupported(
supportedProtocolsSet, protocols,
SslProtocols.TLS_v1_3, SslProtocols.TLS_v1_2,
SslProtocols.TLS_v1_1, SslProtocols.TLS_v1);
if (!protocols.isEmpty()) {
return protocols.toArray(EmptyArrays.EMPTY_STRINGS);
}
return engine.getEnabledProtocols();
}
Source
Frequently Asked Questions
What is the JdkSslContext class?
JdkSslContext is a class in the netty codebase, defined in handler/src/main/java/io/netty/handler/ssl/JdkSslContext.java.
Where is JdkSslContext defined?
JdkSslContext is defined in handler/src/main/java/io/netty/handler/ssl/JdkSslContext.java at line 60.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free