public final class io.netty.handler.ssl.OpenSsl extends java.lang.Object
{
private static final io.netty.util.internal.logging.InternalLogger logger;
private static final java.lang.Throwable UNAVAILABILITY_CAUSE;
static final java.util.List DEFAULT_CIPHERS;
static final java.util.Set AVAILABLE_CIPHER_SUITES;
private static final java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES;
private static final java.util.Set AVAILABLE_JAVA_CIPHER_SUITES;
private static final boolean SUPPORTS_KEYMANAGER_FACTORY;
private static final boolean USE_KEYMANAGER_FACTORY;
private static final boolean SUPPORTS_OCSP;
private static final boolean TLSV13_SUPPORTED;
private static final boolean IS_BORINGSSL;
private static final java.util.Set CLIENT_DEFAULT_PROTOCOLS;
private static final java.util.Set SERVER_DEFAULT_PROTOCOLS;
static final java.util.Set SUPPORTED_PROTOCOLS_SET;
static final java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS;
static final java.lang.String EXTRA_SUPPORTED_TLS_1_3_CIPHERS_STRING;
static final java.lang.String[] NAMED_GROUPS;
private static final java.lang.String[] DEFAULT_NAMED_GROUPS;
private static final java.lang.String CERT;
private static final java.lang.String KEY;
static final boolean $assertionsDisabled;
static java.lang.String checkTls13Ciphers(io.netty.util.internal.logging.InternalLogger, java.lang.String)
{
boolean v, v, v, v, v, v, v, v, v, v, v, v;
io.netty.util.internal.logging.InternalLogger v;
java.lang.StringBuilder v, v;
java.lang.String[] v, v, v, v, v;
java.lang.AssertionError v;
java.util.HashSet v;
int v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v;
v := @parameter: io.netty.util.internal.logging.InternalLogger;
v := @parameter: java.lang.String;
v = <io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL>;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: boolean $assertionsDisabled>;
if v != 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS>;
v = lengthof v;
if v > 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = new java.util.HashSet;
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS>;
v = lengthof v;
specialinvoke v.<java.util.HashSet: void <init>(int)>(v);
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS>;
staticinvoke <java.util.Collections: boolean addAll(java.util.Collection,java.lang.Object[])>(v, v);
v = 0;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(":");
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v == 0 goto label;
v = 1;
goto label;
label:
v = interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
if v != 0 goto label;
v = staticinvoke <io.netty.handler.ssl.CipherSuiteConverter: java.lang.String toJava(java.lang.String,java.lang.String)>(v, "TLS");
v = interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = v + 1;
goto label;
label:
v = v;
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v | v;
if v == 0 goto label;
v = interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: boolean isInfoEnabled()>();
if v == 0 goto label;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(128);
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(":");
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = staticinvoke <io.netty.handler.ssl.CipherSuiteConverter: java.lang.String toJava(java.lang.String,java.lang.String)>(v, "TLS");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(":");
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
v = v - 1;
virtualinvoke v.<java.lang.StringBuilder: void setLength(int)>(v);
v = <io.netty.handler.ssl.OpenSsl: java.lang.String EXTRA_SUPPORTED_TLS_1_3_CIPHERS_STRING>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("BoringSSL doesn\'t allow to enable or disable TLSv.3 ciphers explicitly. Provided TLSv.3 ciphers: \'{}\', default TLSv.3 ciphers that will be used: \'{}\'.", v, v);
label:
v = <io.netty.handler.ssl.OpenSsl: java.lang.String EXTRA_SUPPORTED_TLS_1_3_CIPHERS_STRING>;
return v;
label:
return v;
}
static boolean isSessionCacheSupported()
{
int v;
byte v;
boolean v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: int version()>();
v = v cmp 269484032L;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
static java.security.cert.X509Certificate selfSignedCertificate() throws java.security.cert.CertificateException
{
byte[] v;
java.security.cert.Certificate v;
java.io.ByteArrayInputStream v;
java.nio.charset.Charset v;
java.security.cert.CertificateFactory v;
java.lang.String v;
v = <io.netty.handler.ssl.SslContext: java.security.cert.CertificateFactory X509_CERT_FACTORY>;
v = new java.io.ByteArrayInputStream;
v = "-----BEGIN CERTIFICATE-----\nMIICrjCCAZagAwIBAgIIdSvQPv1QAZQwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAxMLZXhhbXBs\nZS5jb20wIBcNMTgwNDA2MjIwNjU5WhgPOTk5OTEyMzEyMzU5NTlaMBYxFDASBgNVBAMTC2V4YW1w\nbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAggbWsmDQ6zNzRZ5AW8E3eoGl\nqWvOBDb5Fs1oBRrVQHuYmVAoaqwDzXYJ0LOwa293AgWEQ1jpcbZ2hpoYQzqEZBTLnFhMrhRFlH6K\nbJND8Y33kZ/iSVBBDuGbdSbJShlM+4WwQ9IAso4MZ4vW3S1iv5fGGpLgbtXRmBf/RU8omN0Gijlv\nWlLWHWijLN8xQtySFuBQ7ssW8RcKAary3pUm6UUQB+Co6lnfti0Tzag8PgjhAJq2Z3wbsGRnP2YS\nvYoaK6qzmHXRYlp/PxrjBAZAmkLJs4YTm/XFF+fkeYx4i9zqHbyone5yerRibsHaXZWLnUL+rFoe\nMdKvr0VS3sGmhQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQADQi441pKmXf9FvUV5EHU4v8nJT9Iq\nyqwsKwXnr7AsUlDGHBD7jGrjAXnG5rGxuNKBQ35wRxJATKrUtyaquFUL6H8O6aGQehiFTk6zmPbe\n12Gu44vqqTgIUxnv3JQJiox8S2hMxsSddpeCmSdvmalvD6WG4NthH6B9ZaBEiep+0s0RUaBYn73\nI7CCUaAtbjfR6pcJjrFk5ei7uwdQZFSJtkP2z8r7zfeANJddAKFlkaMWn7u+OIVuB4XPooWicObk\nNAHFtP65bocUYnDpTVdiyvn8DdqyZ/EO8n1bBKBzuSLplk2msW4pdgaFgY7Vw/0wzcFXfUXmL1uy\nG8sQD/wx\n-----END CERTIFICATE-----";
v = <io.netty.util.CharsetUtil: java.nio.charset.Charset US_ASCII>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
v = virtualinvoke v.<java.security.cert.CertificateFactory: java.security.cert.Certificate generateCertificate(java.io.InputStream)>(v);
return v;
}
private static boolean doesSupportOcsp()
{
java.lang.Throwable v;
long v;
java.lang.Exception v;
byte v, v, v, v;
int v;
boolean v;
v = 0;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: int version()>();
v = v cmp 268443648L;
if v < 0 goto label;
v = -1L;
label:
v = staticinvoke <io.netty.internal.tcnative.SSLContext: long make(int,int)>(16, 1);
staticinvoke <io.netty.internal.tcnative.SSLContext: void enableOcsp(long,boolean)>(v, 0);
v = 1;
label:
v = v cmp -1L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSLContext: int free(long)>(v);
goto label;
label:
v := @caughtexception;
v = v cmp -1L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSLContext: int free(long)>(v);
goto label;
label:
v := @caughtexception;
v = v cmp -1L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSLContext: int free(long)>(v);
label:
throw v;
label:
return v;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static boolean doesSupportProtocol(int, int)
{
java.lang.Throwable v;
byte v;
int v, v;
long v;
java.lang.Exception v;
v := @parameter: int;
v := @parameter: int;
if v != 0 goto label;
return 0;
label:
v = staticinvoke <io.netty.internal.tcnative.SSLContext: long make(int,int)>(v, 2);
label:
v = v cmp -1L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSLContext: int free(long)>(v);
label:
return 1;
label:
v := @caughtexception;
label:
return 0;
label:
v := @caughtexception;
throw v;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public static boolean isAvailable()
{
java.lang.Throwable v;
boolean v;
v = <io.netty.handler.ssl.OpenSsl: java.lang.Throwable UNAVAILABILITY_CAUSE>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static boolean isAlpnSupported()
{
int v;
byte v;
boolean v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: int version()>();
v = v cmp 268443648L;
if v < 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static boolean isOcspSupported()
{
boolean v;
v = <io.netty.handler.ssl.OpenSsl: boolean SUPPORTS_OCSP>;
return v;
}
public static int version()
{
int v, v;
boolean v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean isAvailable()>();
if v == 0 goto label;
v = staticinvoke <io.netty.internal.tcnative.SSL: int version()>();
goto label;
label:
v = (int) -1;
v = v;
label:
return v;
}
public static java.lang.String versionString()
{
java.lang.String v;
boolean v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean isAvailable()>();
if v == 0 goto label;
v = staticinvoke <io.netty.internal.tcnative.SSL: java.lang.String versionString()>();
goto label;
label:
v = null;
label:
return v;
}
public static void ensureAvailability()
{
java.lang.Throwable v, v, v;
java.lang.UnsatisfiedLinkError v;
v = <io.netty.handler.ssl.OpenSsl: java.lang.Throwable UNAVAILABILITY_CAUSE>;
if v == null goto label;
v = new java.lang.UnsatisfiedLinkError;
specialinvoke v.<java.lang.UnsatisfiedLinkError: void <init>(java.lang.String)>("failed to load the required native library");
v = <io.netty.handler.ssl.OpenSsl: java.lang.Throwable UNAVAILABILITY_CAUSE>;
v = virtualinvoke v.<java.lang.UnsatisfiedLinkError: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
label:
return;
}
public static java.lang.Throwable unavailabilityCause()
{
java.lang.Throwable v;
v = <io.netty.handler.ssl.OpenSsl: java.lang.Throwable UNAVAILABILITY_CAUSE>;
return v;
}
public static java.util.Set availableCipherSuites()
{
java.util.Set v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: java.util.Set availableOpenSslCipherSuites()>();
return v;
}
public static java.util.Set availableOpenSslCipherSuites()
{
java.util.Set v;
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES>;
return v;
}
public static java.util.Set availableJavaCipherSuites()
{
java.util.Set v;
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_JAVA_CIPHER_SUITES>;
return v;
}
public static boolean isCipherSuiteAvailable(java.lang.String)
{
java.util.Set v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.lang.String;
v = <io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL>;
v = staticinvoke <io.netty.handler.ssl.CipherSuiteConverter: java.lang.String toOpenSsl(java.lang.String,boolean)>(v, v);
if v == null goto label;
v = v;
label:
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES>;
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
return v;
}
public static boolean supportsKeyManagerFactory()
{
boolean v;
v = <io.netty.handler.ssl.OpenSsl: boolean SUPPORTS_KEYMANAGER_FACTORY>;
return v;
}
public static boolean supportsHostnameValidation()
{
boolean v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean isAvailable()>();
return v;
}
static boolean useKeyManagerFactory()
{
boolean v;
v = <io.netty.handler.ssl.OpenSsl: boolean USE_KEYMANAGER_FACTORY>;
return v;
}
static long memoryAddress(io.netty.buffer.ByteBuf)
{
long v;
java.lang.AssertionError v;
java.nio.ByteBuffer v;
io.netty.buffer.ByteBuf v;
int v;
boolean v, v, v;
v := @parameter: io.netty.buffer.ByteBuf;
v = <io.netty.handler.ssl.OpenSsl: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: boolean isDirect()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: boolean hasMemoryAddress()>();
if v == 0 goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: long memoryAddress()>();
goto label;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readableBytes()>();
v = virtualinvoke v.<io.netty.buffer.ByteBuf: java.nio.ByteBuffer internalNioBuffer(int,int)>(0, v);
v = staticinvoke <io.netty.internal.tcnative.Buffer: long address(java.nio.ByteBuffer)>(v);
label:
return v;
}
private void <init>()
{
io.netty.handler.ssl.OpenSsl v;
v := @this: io.netty.handler.ssl.OpenSsl;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
private static void loadTcNative() throws java.lang.Exception
{
java.lang.Object[] v;
java.lang.String[] v;
java.lang.String v, v, v, v, v, v, v, v;
java.util.LinkedHashSet v;
boolean v, v;
java.util.Iterator v;
java.util.Set v;
java.lang.Object v;
java.lang.ClassLoader v;
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.lang.String normalizedOs()>();
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.lang.String normalizedArch()>();
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(5);
v = "linux";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.util.Set normalizedLinuxClassifiers()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String,java.lang.Object)>("netty_tcnative", v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001_\u0001_\u0001_\u0001");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>("netty_tcnative", v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001_\u0001_\u0001");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>("netty_tcnative", v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001_\u0001_\u0001_fedora");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>("netty_tcnative", v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001_\u0001_\u0001");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>("netty_tcnative", v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001_\u0001");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("netty_tcnative");
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.lang.ClassLoader getClassLoader(java.lang.Class)>(class "Lio/netty/internal/tcnative/SSLContext;");
v = newarray (java.lang.String)[0];
v = interfaceinvoke v.<java.util.Set: java.lang.Object[] toArray(java.lang.Object[])>(v);
staticinvoke <io.netty.util.internal.NativeLibraryLoader: void loadFirstAvailable(java.lang.ClassLoader,java.lang.String[])>(v, v);
return;
}
private static boolean initializeTcNative(java.lang.String) throws java.lang.Exception
{
java.lang.String v;
boolean v;
v := @parameter: java.lang.String;
v = staticinvoke <io.netty.internal.tcnative.Library: boolean initialize(java.lang.String,java.lang.String)>("provided", v);
return v;
}
static void releaseIfNeeded(io.netty.util.ReferenceCounted)
{
int v;
io.netty.util.ReferenceCounted v;
v := @parameter: io.netty.util.ReferenceCounted;
v = interfaceinvoke v.<io.netty.util.ReferenceCounted: int refCnt()>();
if v <= 0 goto label;
staticinvoke <io.netty.util.ReferenceCountUtil: void safeRelease(java.lang.Object)>(v);
label:
return;
}
static boolean isTlsv13Supported()
{
boolean v;
v = <io.netty.handler.ssl.OpenSsl: boolean TLSV13_SUPPORTED>;
return v;
}
static boolean isOptionSupported(io.netty.handler.ssl.SslContextOption)
{
io.netty.handler.ssl.SslContextOption v;
io.netty.handler.ssl.OpenSslContextOption v, v, v, v, v;
boolean v, v, v;
v := @parameter: io.netty.handler.ssl.SslContextOption;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean isAvailable()>();
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSslContextOption: io.netty.handler.ssl.OpenSslContextOption USE_TASKS>;
if v != v goto label;
return 1;
label:
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean isBoringSSL()>();
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSslContextOption: io.netty.handler.ssl.OpenSslContextOption ASYNC_PRIVATE_KEY_METHOD>;
if v == v goto label;
v = <io.netty.handler.ssl.OpenSslContextOption: io.netty.handler.ssl.OpenSslContextOption PRIVATE_KEY_METHOD>;
if v == v goto label;
v = <io.netty.handler.ssl.OpenSslContextOption: io.netty.handler.ssl.OpenSslContextOption CERTIFICATE_COMPRESSION_ALGORITHMS>;
if v == v goto label;
v = <io.netty.handler.ssl.OpenSslContextOption: io.netty.handler.ssl.OpenSslContextOption TLS_FALSE_START>;
if v != v goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 0;
}
private static java.util.Set protocols(java.lang.String)
{
java.lang.String[] v;
java.util.HashSet v;
int v, v;
java.lang.String v, v, v, v;
v := @parameter: java.lang.String;
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: java.lang.String get(java.lang.String,java.lang.String)>(v, null);
if v == null goto label;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(",");
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
return v;
label:
return null;
}
static java.lang.String[] defaultProtocols(boolean)
{
java.lang.Object[] v;
java.util.Iterator v;
java.util.Set v, v;
java.lang.String[] v;
java.util.ArrayList v;
int v;
java.lang.Object v;
boolean v, v, v;
v := @parameter: boolean;
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: java.util.Set CLIENT_DEFAULT_PROTOCOLS>;
goto label;
label:
v = <io.netty.handler.ssl.OpenSsl: java.util.Set SERVER_DEFAULT_PROTOCOLS>;
label:
if v != null goto label;
return null;
label:
v = new java.util.ArrayList;
v = interfaceinvoke v.<java.util.Collection: int size()>();
specialinvoke v.<java.util.ArrayList: void <init>(int)>(v);
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = <io.netty.handler.ssl.OpenSsl: java.util.Set SUPPORTED_PROTOCOLS_SET>;
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = newarray (java.lang.String)[0];
v = interfaceinvoke v.<java.util.List: java.lang.Object[] toArray(java.lang.Object[])>(v);
return v;
}
static boolean isBoringSSL()
{
boolean v;
v = <io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL>;
return v;
}
static void <clinit>()
{
byte[] v;
byte v, v, v, v, v, v, v, v;
io.netty.util.internal.logging.InternalLogger v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.StringBuilder v, v, v, v;
java.lang.ClassLoader v;
java.lang.Object[] v, v, v, v;
long v, v, v, v, v, v;
java.security.cert.X509Certificate v;
io.netty.buffer.ByteBufAllocator v;
java.nio.charset.Charset v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
io.netty.handler.ssl.SslProvider v;
java.lang.Class v, v, v, v, v;
java.lang.Object v, v;
io.netty.handler.ssl.PemEncoded v;
java.util.Set v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.Exception v, v;
io.netty.buffer.UnpooledByteBufAllocator v;
java.lang.Throwable v, v, v, v, v, v, v;
java.lang.Error v;
java.util.ArrayList v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.LinkedHashSet v, v, v, v, v, v, v;
java.lang.UnsupportedOperationException v;
java.lang.ClassNotFoundException v;
io.netty.handler.ssl.PemPrivateKey v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.List v, v, v;
java.security.cert.X509Certificate[] v;
java.lang.String[] v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.Iterator v, v;
v = class "Lio/netty/handler/ssl/OpenSsl;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<io.netty.handler.ssl.OpenSsl: boolean $assertionsDisabled> = v;
v = staticinvoke <io.netty.util.internal.logging.InternalLoggerFactory: io.netty.util.internal.logging.InternalLogger getInstance(java.lang.Class)>(class "Lio/netty/handler/ssl/OpenSsl;");
<io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger> = v;
v = newarray (java.lang.String)[4];
v[0] = "x25519";
v[1] = "secp256r1";
v[2] = "secp384r1";
v[3] = "secp521r1";
<io.netty.handler.ssl.OpenSsl: java.lang.String[] DEFAULT_NAMED_GROUPS> = v;
v = null;
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: boolean getBoolean(java.lang.String,boolean)>("io.netty.handler.ssl.noOpenSsl", 0);
if v == 0 goto label;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("OpenSSL was explicit disabled with -Dio.netty.handler.ssl.noOpenSsl=true");
v = v;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = class "Lio/netty/handler/ssl/OpenSslEngine;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("netty-tcnative explicit disabled; \u will be unavailable.");
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Throwable)>(v, v);
goto label;
label:
v = staticinvoke <io.netty.util.internal.PlatformDependent: java.lang.ClassLoader getClassLoader(java.lang.Class)>(class "Lio/netty/handler/ssl/OpenSsl;");
staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String,boolean,java.lang.ClassLoader)>("io.netty.internal.tcnative.SSLContext", 0, v);
label:
goto label;
label:
v := @caughtexception;
v = v;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = class "Lio/netty/handler/ssl/OpenSslEngine;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("netty-tcnative not in the classpath; \u will be unavailable.");
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String)>(v);
label:
if v != null goto label;
label:
staticinvoke <io.netty.handler.ssl.OpenSsl: void loadTcNative()>();
label:
goto label;
label:
v := @caughtexception;
v = v;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = class "Lio/netty/handler/ssl/OpenSslEngine;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to load netty-tcnative; \u will be unavailable, unless the application has already loaded the symbols by some other means. See https://netty.io/wiki/forked-tomcat-native.html for more information.");
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Throwable)>(v, v);
label:
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: java.lang.String get(java.lang.String,java.lang.String)>("io.netty.handler.ssl.openssl.engine", null);
if v != null goto label;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String)>("Initialize netty-tcnative using engine: \'default\'");
goto label;
label:
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Object)>("Initialize netty-tcnative using engine: \'{}\'", v);
label:
staticinvoke <io.netty.handler.ssl.OpenSsl: boolean initializeTcNative(java.lang.String)>(v);
v = null;
label:
goto label;
label:
v := @caughtexception;
if v != null goto label;
v = v;
label:
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = class "Lio/netty/handler/ssl/OpenSslEngine;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to initialize netty-tcnative; \u will be unavailable. See https://netty.io/wiki/forked-tomcat-native.html for more information.");
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Throwable)>(v, v);
label:
<io.netty.handler.ssl.OpenSsl: java.lang.Throwable UNAVAILABILITY_CAUSE> = v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: java.util.Set protocols(java.lang.String)>("jdk.tls.client.protocols");
<io.netty.handler.ssl.OpenSsl: java.util.Set CLIENT_DEFAULT_PROTOCOLS> = v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: java.util.Set protocols(java.lang.String)>("jdk.tls.server.protocols");
<io.netty.handler.ssl.OpenSsl: java.util.Set SERVER_DEFAULT_PROTOCOLS> = v;
if v != null goto label;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = staticinvoke <io.netty.internal.tcnative.SSL: java.lang.String versionString()>();
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Object)>("netty-tcnative using native library: {}", v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(128);
v = 0;
v = 0;
v = 0;
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] DEFAULT_NAMED_GROUPS>;
v = lengthof v;
v = newarray (java.lang.String)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = staticinvoke <io.netty.handler.ssl.GroupsConverter: java.lang.String toOpenSsl(java.lang.String)>(v);
v[v] = v;
v = v + 1;
goto label;
label:
v = "BoringSSL";
v = staticinvoke <io.netty.handler.ssl.OpenSsl: java.lang.String versionString()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
<io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL> = v;
v = <io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL>;
if v == 0 goto label;
v = newarray (java.lang.String)[3];
v[0] = "TLS_AES_128_GCM_SHA256";
v[1] = "TLS_AES_256_GCM_SHA384";
v[2] = "TLS_CHACHA20_POLY1305_SHA256";
<io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS> = v;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(128);
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(":");
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
v = v - 1;
virtualinvoke v.<java.lang.StringBuilder: void setLength(int)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
<io.netty.handler.ssl.OpenSsl: java.lang.String EXTRA_SUPPORTED_TLS_1_3_CIPHERS_STRING> = v;
goto label;
label:
v = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
<io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS> = v;
<io.netty.handler.ssl.OpenSsl: java.lang.String EXTRA_SUPPORTED_TLS_1_3_CIPHERS_STRING> = "";
label:
v = staticinvoke <io.netty.internal.tcnative.SSLContext: long make(int,int)>(63, 1);
v = 0L;
v = 0L;
v = 0L;
v = 0L;
label:
v = <io.netty.handler.ssl.SslProvider: io.netty.handler.ssl.SslProvider JDK>;
v = staticinvoke <io.netty.handler.ssl.SslProvider: boolean isTlsv13Supported(io.netty.handler.ssl.SslProvider)>(v);
if v == 0 goto label;
label:
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = <io.netty.handler.ssl.SslUtils: java.util.Set TLSV13_CIPHERS>;
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = <io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL>;
v = staticinvoke <io.netty.handler.ssl.CipherSuiteConverter: java.lang.String toOpenSsl(java.lang.String,boolean)>(v, v);
if v == null goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(58);
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
if v != 0 goto label;
v = 0;
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
v = v - 1;
virtualinvoke v.<java.lang.StringBuilder: void setLength(int)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
staticinvoke <io.netty.internal.tcnative.SSLContext: boolean setCipherSuite(long,java.lang.String,boolean)>(v, v, 1);
v = 1;
label:
goto label;
label:
v := @caughtexception;
v = 0;
label:
staticinvoke <io.netty.internal.tcnative.SSLContext: boolean setCipherSuite(long,java.lang.String,boolean)>(v, "ALL", 0);
v = staticinvoke <io.netty.internal.tcnative.SSL: long newSSL(long,boolean)>(v, 1);
label:
v = staticinvoke <io.netty.internal.tcnative.SSL: java.lang.String[] getCiphers(long)>(v);
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
if v != 0 goto label;
v = staticinvoke <io.netty.handler.ssl.SslUtils: boolean isTLSv13Cipher(java.lang.String)>(v);
if v != 0 goto label;
label:
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
v = <io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL>;
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS>;
staticinvoke <java.util.Collections: boolean addAll(java.util.Collection,java.lang.Object[])>(v, v);
v = newarray (java.lang.String)[3];
v[0] = "AEAD-AES128-GCM-SHA256";
v[1] = "AEAD-AES256-GCM-SHA384";
v[2] = "AEAD-CHACHA20-POLY1305-SHA256";
staticinvoke <java.util.Collections: boolean addAll(java.util.Collection,java.lang.Object[])>(v, v);
label:
v = "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCCBtayYNDrM3NFnkBbwTd6gaWp\na84ENvkWzWgFGtVAe5iZUChqrAPNdgnQs7Brb3cCBYRDWOlxtnaGmhhDOoRkFMucWEyuFEWUfops\nk0PxjfeRn+JJUEEO4Zt1JslKGUz7hbBD0gCyjgxni9bdLWK/l8YakuBu1dGYF/9FTyiY3QaKOW9a\nUtYdaKMs3zFC3JIW4FDuyxbxFwoBqvLelSbpRRAH4KjqWd+2LRPNqDw+COEAmrZnfBuwZGc/ZhK9\nihorqrOYddFiWn8/GuMEBkCaQsmzhhOb9cUX5+R5jHiL3OodvKid7nJ6tGJuwdpdlYudQv6sWh4x\n0q+vRVLewaaFAgMBAAECggEAP8tPJvFtTxhNJAkCloHz0D0vpDHqQBMgntlkgayqmBqLwhyb18pR\ni0qwgh7HHc7wWqOOQuSqlEnrWRrdcI6TSe8R/sErzfTQNoznKWIPYcI/hskk4sdnQ//Yn9/Jvnsv\nU/BBjOTJxtD+sQbhAl80JcA3R+5sArURQkfzzHOL/YMqzAsn5hTzp7HZCxUqBk3KaHRxV7NefeOE\nxlZuWSmxYWfbFIs4kx19/1t7h8CHQWezw+G60G2VBtSBBxDnhBWvqG6R/wpzJ3nEhPLLY9T+XIHe\nipzdMOOOUZorfIg7M+pyYPji+ZIZxIpY5OjrOzXHciAjRtr5Y7l99K1CG1LguQKBgQDrQfIMxxtZ\nvxU/1cRmUV9l7pt5bjV5R6byXq178LxPKVYNjdZ840Q0/OpZEVqaT1xKVi35ohP1QfNjxPLlHD+K\niDAR9z6zkwjIrbwPCnb5kuXy4lpwPcmmmkva25fI7qlpHtbcuQdoBdCfr/KkKaUCMPyY89LCXgEw\n5KTDj64UywKBgQCNfbO+eZLGzhiHhtNJurresCsIGWlInv322gL8CSfBMYl6eNfUTZvUDdFhPISL\nUljKWzXDrjw0ujFSPR0XhUGtiq89H+HUTuPPYv25gVXO+HTgBFZEPl4PpA+BUsSVZy0NddneyqLk\n42Wey9omY9Q8WsdNQS5cbUvy0uG6WFoX7wKBgQDZ1jpW8pa0x2bZsQsm4vo+3G5CRnZlUp+XlWt2\ndDcp5dC0xD1zbs1dc0NcLeGDOTDv9FSl7hok42iHXXq8AygjEm/QcuwwQ1nC2HxmQP5holAiUs4D\nWHM8PWs3wFYPzE459EBoKTxeaeP/uWAn+he8q7d5uWvSZlEcANs/6e77eQKBgD21Ar0hfFfj7mK8\n9E0FeRZBsqK3omkfnhcYgZC11Xa2SgT1yvs2Va2n0RcdM5kncr3eBZav2GYOhhAdwyBM55XuE/sO\neokDVutNeuZ6d5fqV96TRaRBpvgfTvvRwxZ9hvKF4Vz+9wfn/JvCwANaKmegF6ejs7pvmF3whq2k\ndrZVAoGAX5YxQ5XMTD0QbMAl7/6qp6S58xNoVdfCkmkj1ZLKaHKIjS/benkKGlySVQVPexPfnkZx\np/Vv9yyphBoudiTBS9Uog66ueLYZqpgxlM/6OhYg86Gm3U2ycvMxYjBM1NFiyze21AqAhI+HX+Ot\nmraV2/guSgDgZAhukRZzeQ2RucI=\n-----END PRIVATE KEY-----";
v = <io.netty.util.CharsetUtil: java.nio.charset.Charset US_ASCII>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
v = staticinvoke <io.netty.handler.ssl.PemPrivateKey: io.netty.handler.ssl.PemPrivateKey valueOf(byte[])>(v);
label:
staticinvoke <io.netty.internal.tcnative.SSLContext: void setCertificateCallback(long,io.netty.internal.tcnative.CertificateCallback)>(v, null);
v = staticinvoke <io.netty.handler.ssl.OpenSsl: java.security.cert.X509Certificate selfSignedCertificate()>();
v = <io.netty.buffer.ByteBufAllocator: io.netty.buffer.ByteBufAllocator DEFAULT>;
v = newarray (java.security.cert.X509Certificate)[1];
v[0] = v;
v = staticinvoke <io.netty.handler.ssl.ReferenceCountedOpenSslContext: long toBIO(io.netty.buffer.ByteBufAllocator,java.security.cert.X509Certificate[])>(v, v);
v = staticinvoke <io.netty.internal.tcnative.SSL: long parseX509Chain(long)>(v);
v = <io.netty.buffer.UnpooledByteBufAllocator: io.netty.buffer.UnpooledByteBufAllocator DEFAULT>;
v = interfaceinvoke v.<io.netty.handler.ssl.PemEncoded: io.netty.handler.ssl.PemEncoded retain()>();
v = staticinvoke <io.netty.handler.ssl.ReferenceCountedOpenSslContext: long toBIO(io.netty.buffer.ByteBufAllocator,io.netty.handler.ssl.PemEncoded)>(v, v);
v = staticinvoke <io.netty.internal.tcnative.SSL: long parsePrivateKey(long,java.lang.String)>(v, null);
staticinvoke <io.netty.internal.tcnative.SSL: void setKeyMaterial(long,long,long)>(v, v, v);
v = 1;
label:
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: boolean contains(java.lang.String)>("io.netty.handler.ssl.openssl.useKeyManagerFactory");
v = <io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL>;
if v != 0 goto label;
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: boolean getBoolean(java.lang.String,boolean)>("io.netty.handler.ssl.openssl.useKeyManagerFactory", 1);
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void info(java.lang.String)>("System property \'io.netty.handler.ssl.openssl.useKeyManagerFactory\' is deprecated and so will be ignored in the future");
goto label;
label:
v = 1;
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void info(java.lang.String)>("System property \'io.netty.handler.ssl.openssl.useKeyManagerFactory\' is deprecated and will be ignored when using BoringSSL");
label:
goto label;
label:
v := @caughtexception;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String)>("Failed to get useKeyManagerFactory system property.");
label:
interfaceinvoke v.<io.netty.handler.ssl.PemEncoded: boolean release()>();
goto label;
label:
v := @caughtexception;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String)>("KeyManagerFactory not supported.");
label:
interfaceinvoke v.<io.netty.handler.ssl.PemEncoded: boolean release()>();
goto label;
label:
v := @caughtexception;
interfaceinvoke v.<io.netty.handler.ssl.PemEncoded: boolean release()>();
throw v;
label:
staticinvoke <io.netty.internal.tcnative.SSL: void freeSSL(long)>(v);
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freeBIO(long)>(v);
label:
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freeBIO(long)>(v);
label:
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freeX509Chain(long)>(v);
label:
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freePrivateKey(long)>(v);
goto label;
label:
v := @caughtexception;
staticinvoke <io.netty.internal.tcnative.SSL: void freeSSL(long)>(v);
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freeBIO(long)>(v);
label:
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freeBIO(long)>(v);
label:
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freeX509Chain(long)>(v);
label:
v = v cmp 0L;
if v == 0 goto label;
staticinvoke <io.netty.internal.tcnative.SSL: void freePrivateKey(long)>(v);
label:
throw v;
label:
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: java.lang.String get(java.lang.String,java.lang.String)>("jdk.tls.namedGroups", null);
if v == null goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(",");
v = new java.util.LinkedHashSet;
v = lengthof v;
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(v);
v = new java.util.LinkedHashSet;
v = lengthof v;
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(v);
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = staticinvoke <io.netty.handler.ssl.GroupsConverter: java.lang.String toOpenSsl(java.lang.String)>(v);
v = newarray (java.lang.String)[1];
v[0] = v;
v = staticinvoke <io.netty.internal.tcnative.SSLContext: boolean setCurvesList(long,java.lang.String[])>(v, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
label:
v = v + 1;
goto label;
label:
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
v = interfaceinvoke v.<java.util.Set: java.lang.Object[] toArray(java.lang.Object[])>(v);
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] DEFAULT_NAMED_GROUPS>;
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("All configured namedGroups are not supported: {}. Use default: {}.", v, v);
goto label;
label:
v = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
v = interfaceinvoke v.<java.util.Set: java.lang.Object[] toArray(java.lang.Object[])>(v);
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void info(java.lang.String,java.lang.Object)>("Using configured namedGroups -D \'jdk.tls.namedGroup\': {} ", v);
goto label;
label:
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
v = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
v = interfaceinvoke v.<java.util.Set: java.lang.Object[] toArray(java.lang.Object[])>(v);
v = staticinvoke <java.util.Arrays: java.lang.String toString(java.lang.Object[])>(v);
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("Using supported configured namedGroups: {}. Unsupported namedGroups: {}. ", v, v);
label:
v = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
v = interfaceinvoke v.<java.util.Set: java.lang.Object[] toArray(java.lang.Object[])>(v);
goto label;
label:
v = v;
label:
staticinvoke <io.netty.internal.tcnative.SSLContext: int free(long)>(v);
goto label;
label:
v := @caughtexception;
staticinvoke <io.netty.internal.tcnative.SSLContext: int free(long)>(v);
throw v;
label:
v := @caughtexception;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void warn(java.lang.String,java.lang.Throwable)>("Failed to get the list of available OpenSSL cipher suites.", v);
label:
<io.netty.handler.ssl.OpenSsl: java.lang.String[] NAMED_GROUPS> = v;
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
<io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES> = v;
v = new java.util.LinkedHashSet;
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES>;
v = interfaceinvoke v.<java.util.Set: int size()>();
v = v * 2;
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(v);
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES>;
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = staticinvoke <io.netty.handler.ssl.SslUtils: boolean isTLSv13Cipher(java.lang.String)>(v);
if v != 0 goto label;
v = staticinvoke <io.netty.handler.ssl.CipherSuiteConverter: java.lang.String toJava(java.lang.String,java.lang.String)>(v, "TLS");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
v = staticinvoke <io.netty.handler.ssl.CipherSuiteConverter: java.lang.String toJava(java.lang.String,java.lang.String)>(v, "SSL");
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = <io.netty.handler.ssl.SslUtils: java.lang.String[] DEFAULT_CIPHER_SUITES>;
staticinvoke <io.netty.handler.ssl.SslUtils: void addIfSupported(java.util.Set,java.util.List,java.lang.String[])>(v, v, v);
v = <io.netty.handler.ssl.SslUtils: java.lang.String[] TLSV13_CIPHER_SUITES>;
staticinvoke <io.netty.handler.ssl.SslUtils: void addIfSupported(java.util.Set,java.util.List,java.lang.String[])>(v, v, v);
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS>;
staticinvoke <io.netty.handler.ssl.SslUtils: void addIfSupported(java.util.Set,java.util.List,java.lang.String[])>(v, v, v);
staticinvoke <io.netty.handler.ssl.SslUtils: void useFallbackCiphersIfDefaultIsEmpty(java.util.List,java.lang.Iterable)>(v, v);
v = staticinvoke <java.util.Collections: java.util.List unmodifiableList(java.util.List)>(v);
<io.netty.handler.ssl.OpenSsl: java.util.List DEFAULT_CIPHERS> = v;
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
<io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_JAVA_CIPHER_SUITES> = v;
v = new java.util.LinkedHashSet;
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES>;
v = interfaceinvoke v.<java.util.Set: int size()>();
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_JAVA_CIPHER_SUITES>;
v = interfaceinvoke v.<java.util.Set: int size()>();
v = v + v;
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(v);
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES>;
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
v = <io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_JAVA_CIPHER_SUITES>;
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
<io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_CIPHER_SUITES> = v;
<io.netty.handler.ssl.OpenSsl: boolean SUPPORTS_KEYMANAGER_FACTORY> = v;
<io.netty.handler.ssl.OpenSsl: boolean USE_KEYMANAGER_FACTORY> = v;
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>(int)>(6);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("SSLv2Hello");
v = <io.netty.internal.tcnative.SSL: int SSL_OP_NO_SSLv2>;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean doesSupportProtocol(int,int)>(1, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("SSLv2");
label:
v = <io.netty.internal.tcnative.SSL: int SSL_OP_NO_SSLv3>;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean doesSupportProtocol(int,int)>(2, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("SSLv3");
label:
v = <io.netty.internal.tcnative.SSL: int SSL_OP_NO_TLSv1>;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean doesSupportProtocol(int,int)>(4, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("TLSv1");
label:
v = <io.netty.internal.tcnative.SSL: int SSL_OP_NO_TLSv1_1>;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean doesSupportProtocol(int,int)>(8, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("TLSv.1");
label:
v = <io.netty.internal.tcnative.SSL: int SSL_OP_NO_TLSv1_2>;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean doesSupportProtocol(int,int)>(16, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("TLSv.2");
label:
if v == 0 goto label;
v = <io.netty.internal.tcnative.SSL: int SSL_OP_NO_TLSv1_3>;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean doesSupportProtocol(int,int)>(32, v);
if v == 0 goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>("TLSv.3");
<io.netty.handler.ssl.OpenSsl: boolean TLSV13_SUPPORTED> = 1;
goto label;
label:
<io.netty.handler.ssl.OpenSsl: boolean TLSV13_SUPPORTED> = 0;
label:
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
<io.netty.handler.ssl.OpenSsl: java.util.Set SUPPORTED_PROTOCOLS_SET> = v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean doesSupportOcsp()>();
<io.netty.handler.ssl.OpenSsl: boolean SUPPORTS_OCSP> = v;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = <io.netty.handler.ssl.OpenSsl: java.util.Set SUPPORTED_PROTOCOLS_SET>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Object)>("Supported protocols (OpenSSL): {} ", v);
v = <io.netty.handler.ssl.OpenSsl: io.netty.util.internal.logging.InternalLogger logger>;
v = <io.netty.handler.ssl.OpenSsl: java.util.List DEFAULT_CIPHERS>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Object)>("Default cipher suites (OpenSSL): {}", v);
goto label;
label:
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
<io.netty.handler.ssl.OpenSsl: java.util.List DEFAULT_CIPHERS> = v;
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
<io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_OPENSSL_CIPHER_SUITES> = v;
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
<io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_JAVA_CIPHER_SUITES> = v;
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
<io.netty.handler.ssl.OpenSsl: java.util.Set AVAILABLE_CIPHER_SUITES> = v;
<io.netty.handler.ssl.OpenSsl: boolean SUPPORTS_KEYMANAGER_FACTORY> = 0;
<io.netty.handler.ssl.OpenSsl: boolean USE_KEYMANAGER_FACTORY> = 0;
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
<io.netty.handler.ssl.OpenSsl: java.util.Set SUPPORTED_PROTOCOLS_SET> = v;
<io.netty.handler.ssl.OpenSsl: boolean SUPPORTS_OCSP> = 0;
<io.netty.handler.ssl.OpenSsl: boolean TLSV13_SUPPORTED> = 0;
<io.netty.handler.ssl.OpenSsl: boolean IS_BORINGSSL> = 0;
v = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
<io.netty.handler.ssl.OpenSsl: java.lang.String[] EXTRA_SUPPORTED_TLS_1_3_CIPHERS> = v;
<io.netty.handler.ssl.OpenSsl: java.lang.String EXTRA_SUPPORTED_TLS_1_3_CIPHERS_STRING> = "";
v = <io.netty.handler.ssl.OpenSsl: java.lang.String[] DEFAULT_NAMED_GROUPS>;
<io.netty.handler.ssl.OpenSsl: java.lang.String[] NAMED_GROUPS> = v;
label:
return;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Exception from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Error from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Exception from label to label with label;
}
}