public class org.apache.dubbo.remoting.transport.netty.SslContexts extends java.lang.Object
{
private static final org.apache.dubbo.common.logger.Logger logger;
public void <init>()
{
org.apache.dubbo.remoting.transport.netty.SslContexts v;
v := @this: org.apache.dubbo.remoting.transport.netty.SslContexts;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static io.netty.handler.ssl.SslContext buildServerSslContext(org.apache.dubbo.common.URL)
{
java.lang.IllegalStateException v;
org.apache.dubbo.config.context.ConfigManager v;
java.util.function.Supplier v;
io.netty.handler.ssl.ClientAuth v;
org.apache.dubbo.common.URL v;
java.lang.String v;
io.netty.handler.ssl.SslContext v;
java.lang.IllegalArgumentException v;
java.lang.Exception v;
javax.net.ssl.SSLException v;
io.netty.handler.ssl.SslProvider v;
io.netty.handler.ssl.SslContextBuilder v, v;
java.util.Optional v;
java.lang.Object v;
java.io.InputStream v, v, v, v, v, v;
v := @parameter: org.apache.dubbo.common.URL;
v = staticinvoke <org.apache.dubbo.rpc.model.ApplicationModel: org.apache.dubbo.config.context.ConfigManager getConfigManager()>();
v = virtualinvoke v.<org.apache.dubbo.config.context.ConfigManager: java.util.Optional getSsl()>();
v = staticinvoke <org.apache.dubbo.remoting.transport.netty.SslContexts$lambda_buildServerSslContext_0__366: java.util.function.Supplier bootstrap$()>();
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElseThrow(java.util.function.Supplier)>(v);
label:
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.lang.String getServerKeyPassword()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getServerKeyCertChainPathStream()>();
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getServerPrivateKeyPathStream()>();
v = staticinvoke <io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder forServer(java.io.InputStream,java.io.InputStream,java.lang.String)>(v, v, v);
goto label;
label:
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getServerKeyCertChainPathStream()>();
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getServerPrivateKeyPathStream()>();
v = staticinvoke <io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder forServer(java.io.InputStream,java.io.InputStream)>(v, v);
label:
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getServerTrustCertCollectionPathStream()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getServerTrustCertCollectionPathStream()>();
virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder trustManager(java.io.InputStream)>(v);
v = <io.netty.handler.ssl.ClientAuth: io.netty.handler.ssl.ClientAuth REQUIRE>;
virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder clientAuth(io.netty.handler.ssl.ClientAuth)>(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)>("Could not find certificate file or the certificate is invalid.", v);
throw v;
label:
v = staticinvoke <org.apache.dubbo.remoting.transport.netty.SslContexts: io.netty.handler.ssl.SslProvider findSslProvider()>();
v = virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder sslProvider(io.netty.handler.ssl.SslProvider)>(v);
v = virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContext build()>();
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Build SslSession failed.", v);
throw v;
catch java.lang.Exception from label to label with label;
catch javax.net.ssl.SSLException from label to label with label;
}
public static io.netty.handler.ssl.SslContext buildClientSslContext(org.apache.dubbo.common.URL)
{
java.lang.IllegalStateException v;
org.apache.dubbo.config.context.ConfigManager v;
java.util.function.Supplier v;
org.apache.dubbo.common.URL v;
java.lang.String v;
io.netty.handler.ssl.SslContext v;
java.lang.IllegalArgumentException v;
java.lang.Exception v;
javax.net.ssl.SSLException v;
io.netty.handler.ssl.SslProvider v;
io.netty.handler.ssl.SslContextBuilder v, v;
java.util.Optional v;
java.lang.Object v;
java.io.InputStream v, v, v, v;
v := @parameter: org.apache.dubbo.common.URL;
v = staticinvoke <org.apache.dubbo.rpc.model.ApplicationModel: org.apache.dubbo.config.context.ConfigManager getConfigManager()>();
v = virtualinvoke v.<org.apache.dubbo.config.context.ConfigManager: java.util.Optional getSsl()>();
v = staticinvoke <org.apache.dubbo.remoting.transport.netty.SslContexts$lambda_buildClientSslContext_1__367: java.util.function.Supplier bootstrap$()>();
v = virtualinvoke v.<java.util.Optional: java.lang.Object orElseThrow(java.util.function.Supplier)>(v);
v = staticinvoke <io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder forClient()>();
label:
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getClientTrustCertCollectionPathStream()>();
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getClientTrustCertCollectionPathStream()>();
virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder trustManager(java.io.InputStream)>(v);
label:
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getClientKeyCertChainPathStream()>();
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.io.InputStream getClientPrivateKeyPathStream()>();
if v == null goto label;
if v == null goto label;
v = virtualinvoke v.<org.apache.dubbo.config.SslConfig: java.lang.String getClientKeyPassword()>();
if v == null goto label;
virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder keyManager(java.io.InputStream,java.io.InputStream,java.lang.String)>(v, v, v);
goto label;
label:
virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder keyManager(java.io.InputStream,java.io.InputStream)>(v, 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)>("Could not find certificate file or find invalid certificate.", v);
throw v;
label:
v = staticinvoke <org.apache.dubbo.remoting.transport.netty.SslContexts: io.netty.handler.ssl.SslProvider findSslProvider()>();
v = virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContextBuilder sslProvider(io.netty.handler.ssl.SslProvider)>(v);
v = virtualinvoke v.<io.netty.handler.ssl.SslContextBuilder: io.netty.handler.ssl.SslContext build()>();
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("Build SslSession failed.", v);
throw v;
catch java.lang.Exception from label to label with label;
catch javax.net.ssl.SSLException from label to label with label;
}
private static io.netty.handler.ssl.SslProvider findSslProvider()
{
java.lang.IllegalStateException v;
io.netty.handler.ssl.SslProvider v, v;
org.apache.dubbo.common.logger.Logger v, v;
boolean v, v;
v = staticinvoke <io.netty.handler.ssl.OpenSsl: boolean isAvailable()>();
if v == 0 goto label;
v = <org.apache.dubbo.remoting.transport.netty.SslContexts: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>("Using OPENSSL provider.");
v = <io.netty.handler.ssl.SslProvider: io.netty.handler.ssl.SslProvider OPENSSL>;
return v;
label:
v = staticinvoke <org.apache.dubbo.remoting.transport.netty.SslContexts: boolean checkJdkProvider()>();
if v == 0 goto label;
v = <org.apache.dubbo.remoting.transport.netty.SslContexts: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void info(java.lang.String)>("Using JDK provider.");
v = <io.netty.handler.ssl.SslProvider: io.netty.handler.ssl.SslProvider JDK>;
return v;
label:
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Could not find any valid TLS provider, please check your dependency or deployment environment, usually netty-tcnative, Conscrypt, or Jetty NPN/ALPN is needed.");
throw v;
}
private static boolean checkJdkProvider()
{
int v;
java.security.Provider[] v;
boolean v;
v = staticinvoke <java.security.Security: java.security.Provider[] getProviders(java.lang.String)>("SSLContext.TLS");
if v == null goto label;
v = lengthof v;
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
static void <clinit>()
{
org.apache.dubbo.common.logger.Logger v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/remoting/transport/netty4/SslContexts;");
<org.apache.dubbo.remoting.transport.netty.SslContexts: org.apache.dubbo.common.logger.Logger logger> = v;
return;
}
}