BoringSSL Class — netty Architecture
Architecture documentation for the BoringSSL class in BoringSSL.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 1df1ee72_d088_6e8a_ed64_d1236e26b4d5["BoringSSL"] 060bba12_90b9_52cb_581d_841eb984eb6b["BoringSSL.java"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|defined in| 060bba12_90b9_52cb_581d_841eb984eb6b 08e15557_6a5a_2a60_35af_c17df7c07aa5["SSLContext_new()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 08e15557_6a5a_2a60_35af_c17df7c07aa5 270ee6a3_7b13_f5a5_b9d1_1f8a7aa3f9fb["toWireFormat()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 270ee6a3_7b13_f5a5_b9d1_1f8a7aa3f9fb 2d2a61d3_ad6c_e32b_78a3_3fd11d4eb9ec["SSLContext_new0()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 2d2a61d3_ad6c_e32b_78a3_3fd11d4eb9ec e6b0cf2c_265b_e108_5733_e58b7d9c0364["SSLContext_set_early_data_enabled()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| e6b0cf2c_265b_e108_5733_e58b7d9c0364 71650380_3fec_ef0d_e5c6_0ee45c83603f["SSLContext_setSessionCacheSize()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 71650380_3fec_ef0d_e5c6_0ee45c83603f 76d817f8_bfff_557e_d162_168e18abf4d7["SSLContext_setSessionCacheTimeout()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 76d817f8_bfff_557e_d162_168e18abf4d7 6d50d84b_4a86_2291_bb14_216cb3ab99f3["SSLContext_setSessionTicketKeys()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 6d50d84b_4a86_2291_bb14_216cb3ab99f3 9c2f9a55_2465_8e3a_3061_a6b7b0dd0a70["SSLContext_set1_groups_list()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 9c2f9a55_2465_8e3a_3061_a6b7b0dd0a70 cfac1a9e_40fe_845f_2e4d_d8eec905ac0b["SSLContext_set1_sigalgs_list()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| cfac1a9e_40fe_845f_2e4d_d8eec905ac0b e3802e9c_d9fb_583b_ffbf_a2de13307145["SSLContext_free()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| e3802e9c_d9fb_583b_ffbf_a2de13307145 b0be6c98_5c23_fc8c_7a8b_625070109c88["SSL_new()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| b0be6c98_5c23_fc8c_7a8b_625070109c88 5358e9b9_fb58_5627_16cb_f82f6944b0cf["SSL_new0()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| 5358e9b9_fb58_5627_16cb_f82f6944b0cf bc674fc6_9542_a31d_2e71_485c7e560bc2["SSL_free()"] 1df1ee72_d088_6e8a_ed64_d1236e26b4d5 -->|method| bc674fc6_9542_a31d_2e71_485c7e560bc2
Relationship Graph
Source Code
codec-classes-quic/src/main/java/io/netty/handler/codec/quic/BoringSSL.java lines 26–169
final class BoringSSL {
static final int SSL_VERIFY_NONE = BoringSSLNativeStaticallyReferencedJniMethods.ssl_verify_none();
static final int SSL_VERIFY_FAIL_IF_NO_PEER_CERT = BoringSSLNativeStaticallyReferencedJniMethods
.ssl_verify_fail_if_no_peer_cert();
static final int SSL_VERIFY_PEER = BoringSSLNativeStaticallyReferencedJniMethods.ssl_verify_peer();
static final int X509_V_OK = BoringSSLNativeStaticallyReferencedJniMethods.x509_v_ok();
static final int X509_V_ERR_CERT_HAS_EXPIRED =
BoringSSLNativeStaticallyReferencedJniMethods.x509_v_err_cert_has_expired();
static final int X509_V_ERR_CERT_NOT_YET_VALID =
BoringSSLNativeStaticallyReferencedJniMethods.x509_v_err_cert_not_yet_valid();
static final int X509_V_ERR_CERT_REVOKED = BoringSSLNativeStaticallyReferencedJniMethods.x509_v_err_cert_revoked();
static final int X509_V_ERR_UNSPECIFIED = BoringSSLNativeStaticallyReferencedJniMethods.x509_v_err_unspecified();
static long SSLContext_new(boolean server, String[] applicationProtocols,
BoringSSLHandshakeCompleteCallback handshakeCompleteCallback,
BoringSSLCertificateCallback certificateCallback,
BoringSSLCertificateVerifyCallback verifyCallback,
@Nullable BoringSSLTlsextServernameCallback servernameCallback,
@Nullable BoringSSLKeylogCallback keylogCallback,
@Nullable BoringSSLSessionCallback sessionCallback,
@Nullable BoringSSLPrivateKeyMethod privateKeyMethod,
BoringSSLSessionTicketCallback sessionTicketCallback,
int verifyMode,
byte[][] subjectNames) {
return SSLContext_new0(server, toWireFormat(applicationProtocols),
handshakeCompleteCallback, certificateCallback, verifyCallback, servernameCallback,
keylogCallback, sessionCallback, privateKeyMethod, sessionTicketCallback, verifyMode, subjectNames);
}
private static byte @Nullable [] toWireFormat(String @Nullable [] applicationProtocols) {
if (applicationProtocols == null) {
return null;
}
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
for (String p : applicationProtocols) {
byte[] bytes = p.getBytes(StandardCharsets.US_ASCII);
out.write(bytes.length);
out.write(bytes);
}
return out.toByteArray();
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
static native long SSLContext_new();
private static native long SSLContext_new0(boolean server,
byte @Nullable [] applicationProtocols, Object handshakeCompleteCallback,
Object certificateCallback, Object verifyCallback,
@Nullable Object servernameCallback, @Nullable Object keylogCallback,
@Nullable Object sessionCallback,
@Nullable Object privateKeyMethod,
Object sessionTicketCallback,
int verifyDepth, byte[][] subjectNames);
static native void SSLContext_set_early_data_enabled(long context, boolean enabled);
static native long SSLContext_setSessionCacheSize(long context, long size);
static native long SSLContext_setSessionCacheTimeout(long context, long size);
static native void SSLContext_setSessionTicketKeys(long context, boolean enableCallback);
static int SSLContext_set1_groups_list(long ctx, String... groups) {
if (groups == null) {
throw new NullPointerException("curves");
}
if (groups.length == 0) {
throw new IllegalArgumentException();
}
StringBuilder sb = new StringBuilder();
for (String group: groups) {
sb.append(group);
// Groups are separated by : as explained in the manpage.
sb.append(':');
}
sb.setLength(sb.length() - 1);
return SSLContext_set1_groups_list(ctx, sb.toString());
}
static int SSLContext_set1_sigalgs_list(long ctx, String... sigalgs) {
if (sigalgs.length == 0) {
Source
Frequently Asked Questions
What is the BoringSSL class?
BoringSSL is a class in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/BoringSSL.java.
Where is BoringSSL defined?
BoringSSL is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/BoringSSL.java at line 26.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free