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;
static final boolean JAVAX_CERTIFICATE_CREATION_SUPPORTED;
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 = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
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, 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;
v = <io.netty.handler.ssl.OpenSslContextOption: io.netty.handler.ssl.OpenSslContextOption MAX_CERTIFICATE_LIST_BYTES>;
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 = <io.netty.util.internal.EmptyArrays: java.lang.String[] EMPTY_STRINGS>;
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, 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, 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;
javax.security.cert.CertificateException 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, 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, 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);
label:
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);
staticinvoke <javax.security.cert.X509Certificate: javax.security.cert.X509Certificate getInstance(byte[])>(v);
v = 1;
label:
goto label;
label:
v := @caughtexception;
v = 0;
label:
<io.netty.handler.ssl.OpenSsl: boolean JAVAX_CERTIFICATE_CREATION_SUPPORTED> = 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;
<io.netty.handler.ssl.OpenSsl: boolean JAVAX_CERTIFICATE_CREATION_SUPPORTED> = 0;
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;
catch javax.security.cert.CertificateException from label to label with label;
}
}