public abstract class oadd.io.netty.handler.ssl.SslMasterKeyHandler extends oadd.io.netty.channel.ChannelInboundHandlerAdapter
{
private static final oadd.io.netty.util.internal.logging.InternalLogger logger;
private static final java.lang.Class SSL_SESSIONIMPL_CLASS;
private static final java.lang.reflect.Field SSL_SESSIONIMPL_MASTER_SECRET_FIELD;
public static final java.lang.String SYSTEM_PROP_KEY;
private static final java.lang.Throwable UNAVAILABILITY_CAUSE;
protected void <init>()
{
oadd.io.netty.handler.ssl.SslMasterKeyHandler v;
v := @this: oadd.io.netty.handler.ssl.SslMasterKeyHandler;
specialinvoke v.<oadd.io.netty.channel.ChannelInboundHandlerAdapter: void <init>()>();
return;
}
public static void ensureSunSslEngineAvailability()
{
java.lang.Throwable v, v;
java.lang.IllegalStateException v;
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.Throwable UNAVAILABILITY_CAUSE>;
if v == null goto label;
v = new java.lang.IllegalStateException;
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.Throwable UNAVAILABILITY_CAUSE>;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Failed to find SSLSessionImpl on classpath", v);
throw v;
label:
return;
}
public static java.lang.Throwable sunSslEngineUnavailabilityCause()
{
java.lang.Throwable v;
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.Throwable UNAVAILABILITY_CAUSE>;
return v;
}
public static boolean isSunSslEngineAvailable()
{
java.lang.Throwable v;
boolean v;
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.Throwable UNAVAILABILITY_CAUSE>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected abstract void accept(javax.crypto.SecretKey, javax.net.ssl.SSLSession);
public final void userEventTriggered(oadd.io.netty.channel.ChannelHandlerContext, java.lang.Object)
{
javax.crypto.spec.SecretKeySpec v;
oadd.io.netty.channel.ChannelHandler v;
javax.net.ssl.SSLEngine v;
javax.net.ssl.SSLSession v;
oadd.io.netty.channel.ChannelHandlerContext v;
oadd.io.netty.channel.ChannelPipeline v;
boolean v, v, v, v, v;
oadd.io.netty.handler.ssl.SslHandshakeCompletionEvent v;
java.lang.IllegalAccessException v;
java.lang.IllegalArgumentException v;
java.lang.reflect.Field v;
oadd.io.netty.handler.ssl.SslMasterKeyHandler v;
java.lang.Class v, v;
java.lang.Object v, v;
v := @this: oadd.io.netty.handler.ssl.SslMasterKeyHandler;
v := @parameter: oadd.io.netty.channel.ChannelHandlerContext;
v := @parameter: java.lang.Object;
v = <oadd.io.netty.handler.ssl.SslHandshakeCompletionEvent: oadd.io.netty.handler.ssl.SslHandshakeCompletionEvent SUCCESS>;
if v != v goto label;
v = virtualinvoke v.<oadd.io.netty.handler.ssl.SslMasterKeyHandler: boolean masterKeyHandlerEnabled()>();
if v == 0 goto label;
v = interfaceinvoke v.<oadd.io.netty.channel.ChannelHandlerContext: oadd.io.netty.channel.ChannelPipeline pipeline()>();
v = interfaceinvoke v.<oadd.io.netty.channel.ChannelPipeline: oadd.io.netty.channel.ChannelHandler get(java.lang.Class)>(class "Loadd/io/netty/handler/ssl/SslHandler;");
v = virtualinvoke v.<oadd.io.netty.handler.ssl.SslHandler: javax.net.ssl.SSLEngine engine()>();
v = virtualinvoke v.<javax.net.ssl.SSLEngine: javax.net.ssl.SSLSession getSession()>();
v = staticinvoke <oadd.io.netty.handler.ssl.SslMasterKeyHandler: boolean isSunSslEngineAvailable()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.Class SSL_SESSIONIMPL_CLASS>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.reflect.Field SSL_SESSIONIMPL_MASTER_SECRET_FIELD>;
v = virtualinvoke v.<java.lang.reflect.Field: java.lang.Object get(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String,java.lang.Throwable)>("Failed to access the field \'masterSecret\' via reflection.", v);
throw v;
label:
virtualinvoke v.<oadd.io.netty.handler.ssl.SslMasterKeyHandler: void accept(javax.crypto.SecretKey,javax.net.ssl.SSLSession)>(v, v);
goto label;
label:
v = staticinvoke <oadd.io.netty.handler.ssl.OpenSsl: boolean isAvailable()>();
if v == 0 goto label;
v = v instanceof oadd.io.netty.handler.ssl.ReferenceCountedOpenSslEngine;
if v == 0 goto label;
v = virtualinvoke v.<oadd.io.netty.handler.ssl.ReferenceCountedOpenSslEngine: javax.crypto.spec.SecretKeySpec masterKey()>();
virtualinvoke v.<oadd.io.netty.handler.ssl.SslMasterKeyHandler: void accept(javax.crypto.SecretKey,javax.net.ssl.SSLSession)>(v, v);
label:
interfaceinvoke v.<oadd.io.netty.channel.ChannelHandlerContext: oadd.io.netty.channel.ChannelHandlerContext fireUserEventTriggered(java.lang.Object)>(v);
return;
catch java.lang.IllegalAccessException from label to label with label;
}
protected boolean masterKeyHandlerEnabled()
{
oadd.io.netty.handler.ssl.SslMasterKeyHandler v;
boolean v;
v := @this: oadd.io.netty.handler.ssl.SslMasterKeyHandler;
v = staticinvoke <oadd.io.netty.util.internal.SystemPropertyUtil: boolean getBoolean(java.lang.String,boolean)>("oadd.io.netty.ssl.masterKeyHandler", 0);
return v;
}
public static oadd.io.netty.handler.ssl.SslMasterKeyHandler newWireSharkSslMasterKeyHandler()
{
oadd.io.netty.handler.ssl.SslMasterKeyHandler$WiresharkSslMasterKeyHandler v;
v = new oadd.io.netty.handler.ssl.SslMasterKeyHandler$WiresharkSslMasterKeyHandler;
specialinvoke v.<oadd.io.netty.handler.ssl.SslMasterKeyHandler$WiresharkSslMasterKeyHandler: void <init>()>();
return v;
}
static void <clinit>()
{
java.lang.Throwable v, v;
java.lang.reflect.Field v;
oadd.io.netty.util.internal.logging.InternalLogger v, v, v, v;
java.lang.Class v;
java.lang.String v;
boolean v;
v = staticinvoke <oadd.io.netty.util.internal.logging.InternalLoggerFactory: oadd.io.netty.util.internal.logging.InternalLogger getInstance(java.lang.Class)>(class "Loadd/io/netty/handler/ssl/SslMasterKeyHandler;");
<oadd.io.netty.handler.ssl.SslMasterKeyHandler: oadd.io.netty.util.internal.logging.InternalLogger logger> = v;
v = null;
v = null;
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("sun.security.ssl.SSLSessionImpl");
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("masterSecret");
v = staticinvoke <oadd.io.netty.util.internal.ReflectionUtil: java.lang.Throwable trySetAccessible(java.lang.reflect.AccessibleObject,boolean)>(v, 1);
label:
goto label;
label:
v := @caughtexception;
v = v;
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: oadd.io.netty.util.internal.logging.InternalLogger logger>;
v = interfaceinvoke v.<oadd.io.netty.util.internal.logging.InternalLogger: boolean isTraceEnabled()>();
if v == 0 goto label;
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: oadd.io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<oadd.io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Throwable)>("sun.security.ssl.SSLSessionImpl is unavailable.", v);
goto label;
label:
v = <oadd.io.netty.handler.ssl.SslMasterKeyHandler: oadd.io.netty.util.internal.logging.InternalLogger logger>;
v = virtualinvoke v.<java.lang.Throwable: java.lang.String getMessage()>();
interfaceinvoke v.<oadd.io.netty.util.internal.logging.InternalLogger: void debug(java.lang.String,java.lang.Object)>("sun.security.ssl.SSLSessionImpl is unavailable: {}", v);
label:
<oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.Throwable UNAVAILABILITY_CAUSE> = v;
<oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.Class SSL_SESSIONIMPL_CLASS> = v;
<oadd.io.netty.handler.ssl.SslMasterKeyHandler: java.lang.reflect.Field SSL_SESSIONIMPL_MASTER_SECRET_FIELD> = v;
return;
catch java.lang.Throwable from label to label with label;
}
}