public abstract class org.apache.zookeeper.common.X509Util extends java.lang.Object implements java.io.Closeable, java.lang.AutoCloseable
{
private static final org.slf4j.Logger LOG;
private static final java.lang.String REJECT_CLIENT_RENEGOTIATION_PROPERTY;
private static final java.lang.String FIPS_MODE_PROPERTY;
public static final java.lang.String DEFAULT_PROTOCOL;
private static final java.lang.String[] DEFAULT_CIPHERS_JAVA8;
private static final java.lang.String[] DEFAULT_CIPHERS_JAVA9;
public static final int DEFAULT_HANDSHAKE_DETECTION_TIMEOUT_MILLIS;
private final java.lang.String sslProtocolProperty;
private final java.lang.String sslEnabledProtocolsProperty;
private final java.lang.String cipherSuitesProperty;
private final java.lang.String sslKeystoreLocationProperty;
private final java.lang.String sslKeystorePasswdProperty;
private final java.lang.String sslKeystorePasswdPathProperty;
private final java.lang.String sslKeystoreTypeProperty;
private final java.lang.String sslTruststoreLocationProperty;
private final java.lang.String sslTruststorePasswdProperty;
private final java.lang.String sslTruststorePasswdPathProperty;
private final java.lang.String sslTruststoreTypeProperty;
private final java.lang.String sslContextSupplierClassProperty;
private final java.lang.String sslHostnameVerificationEnabledProperty;
private final java.lang.String sslCrlEnabledProperty;
private final java.lang.String sslOcspEnabledProperty;
private final java.lang.String sslClientAuthProperty;
private final java.lang.String sslHandshakeDetectionTimeoutMillisProperty;
private final java.util.concurrent.atomic.AtomicReference defaultSSLContextAndOptions;
private org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher;
private org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher;
private static java.lang.String[] getGCMCiphers()
{
java.lang.String[] v;
v = newarray (java.lang.String)[4];
v[0] = "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256";
v[1] = "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256";
v[2] = "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384";
v[3] = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384";
return v;
}
private static java.lang.String[] getCBCCiphers()
{
java.lang.String[] v;
v = newarray (java.lang.String)[8];
v[0] = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256";
v[1] = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256";
v[2] = "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA";
v[3] = "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA";
v[4] = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384";
v[5] = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384";
v[6] = "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA";
v[7] = "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA";
return v;
}
private static java.lang.String[] concatArrays(java.lang.String[], java.lang.String[])
{
java.lang.String[] v, v, v;
int v, v, v, v, v, v;
v := @parameter: java.lang.String[];
v := @parameter: java.lang.String[];
v = lengthof v;
v = lengthof v;
v = v + v;
v = newarray (java.lang.String)[v];
v = lengthof v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 0, v);
v = lengthof v;
v = lengthof v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, v, v);
return v;
}
public void <init>()
{
org.apache.zookeeper.common.X509Util v;
java.util.concurrent.atomic.AtomicReference 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, v, v, v;
v := @this: org.apache.zookeeper.common.X509Util;
specialinvoke v.<java.lang.Object: void <init>()>();
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001protocol");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslProtocolProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001enabledProtocols");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslEnabledProtocolsProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001ciphersuites");
v.<org.apache.zookeeper.common.X509Util: java.lang.String cipherSuitesProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001keyStore.location");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreLocationProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001keyStore.password");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystorePasswdProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001keyStore.passwordPath");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystorePasswdPathProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001keyStore.type");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreTypeProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001trustStore.location");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreLocationProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001trustStore.password");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststorePasswdProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001trustStore.passwordPath");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststorePasswdPathProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001trustStore.type");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreTypeProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001context.supplier.class");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslContextSupplierClassProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001hostnameVerification");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslHostnameVerificationEnabledProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001crl");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslCrlEnabledProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001ocsp");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslOcspEnabledProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001clientAuth");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslClientAuthProperty> = v;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getConfigPrefix()>();
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[])>("\u0001handshakeDetectionTimeoutMillis");
v.<org.apache.zookeeper.common.X509Util: java.lang.String sslHandshakeDetectionTimeoutMillisProperty> = v;
v = new java.util.concurrent.atomic.AtomicReference;
specialinvoke v.<java.util.concurrent.atomic.AtomicReference: void <init>(java.lang.Object)>(null);
v.<org.apache.zookeeper.common.X509Util: java.util.concurrent.atomic.AtomicReference defaultSSLContextAndOptions> = v;
v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher> = null;
v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher> = null;
return;
}
protected abstract java.lang.String getConfigPrefix();
protected abstract boolean shouldVerifyClientHostname();
public java.lang.String getSslProtocolProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslProtocolProperty>;
return v;
}
public java.lang.String getSslEnabledProtocolsProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslEnabledProtocolsProperty>;
return v;
}
public java.lang.String getCipherSuitesProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String cipherSuitesProperty>;
return v;
}
public java.lang.String getSslKeystoreLocationProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreLocationProperty>;
return v;
}
public java.lang.String getSslCipherSuitesProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String cipherSuitesProperty>;
return v;
}
public java.lang.String getSslKeystorePasswdProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystorePasswdProperty>;
return v;
}
public java.lang.String getSslKeystorePasswdPathProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystorePasswdPathProperty>;
return v;
}
public java.lang.String getSslKeystoreTypeProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreTypeProperty>;
return v;
}
public java.lang.String getSslTruststoreLocationProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreLocationProperty>;
return v;
}
public java.lang.String getSslTruststorePasswdProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststorePasswdProperty>;
return v;
}
public java.lang.String getSslTruststorePasswdPathProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststorePasswdPathProperty>;
return v;
}
public java.lang.String getSslTruststoreTypeProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreTypeProperty>;
return v;
}
public java.lang.String getSslContextSupplierClassProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslContextSupplierClassProperty>;
return v;
}
public java.lang.String getSslHostnameVerificationEnabledProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslHostnameVerificationEnabledProperty>;
return v;
}
public java.lang.String getSslCrlEnabledProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslCrlEnabledProperty>;
return v;
}
public java.lang.String getSslOcspEnabledProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslOcspEnabledProperty>;
return v;
}
public java.lang.String getSslClientAuthProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslClientAuthProperty>;
return v;
}
public java.lang.String getSslHandshakeDetectionTimeoutMillisProperty()
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslHandshakeDetectionTimeoutMillisProperty>;
return v;
}
public java.lang.String getFipsModeProperty()
{
org.apache.zookeeper.common.X509Util v;
v := @this: org.apache.zookeeper.common.X509Util;
return "zookeeper.fips-mode";
}
public boolean getFipsMode(org.apache.zookeeper.common.ZKConfig)
{
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
boolean v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: org.apache.zookeeper.common.ZKConfig;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: boolean getBoolean(java.lang.String,boolean)>("zookeeper.fips-mode", 1);
return v;
}
public boolean isServerHostnameVerificationEnabled(org.apache.zookeeper.common.ZKConfig)
{
org.apache.zookeeper.common.X509Util v;
java.lang.String v;
org.apache.zookeeper.common.ZKConfig v;
boolean v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: org.apache.zookeeper.common.ZKConfig;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getSslHostnameVerificationEnabledProperty()>();
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: boolean getBoolean(java.lang.String,boolean)>(v, 1);
return v;
}
public boolean isClientHostnameVerificationEnabled(org.apache.zookeeper.common.ZKConfig)
{
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
boolean v, v, v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: org.apache.zookeeper.common.ZKConfig;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: boolean isServerHostnameVerificationEnabled(org.apache.zookeeper.common.ZKConfig)>(v);
if v == 0 goto label;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: boolean shouldVerifyClientHostname()>();
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public javax.net.ssl.SSLContext getDefaultSSLContext() throws org.apache.zookeeper.common.X509Exception$SSLContextException
{
org.apache.zookeeper.common.SSLContextAndOptions v;
org.apache.zookeeper.common.X509Util v;
javax.net.ssl.SSLContext v;
v := @this: org.apache.zookeeper.common.X509Util;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions getDefaultSSLContextAndOptions()>();
v = virtualinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: javax.net.ssl.SSLContext getSSLContext()>();
return v;
}
public javax.net.ssl.SSLContext createSSLContext(org.apache.zookeeper.common.ZKConfig) throws org.apache.zookeeper.common.X509Exception$SSLContextException
{
org.apache.zookeeper.common.SSLContextAndOptions v;
javax.net.ssl.SSLContext v;
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: org.apache.zookeeper.common.ZKConfig;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptions(org.apache.zookeeper.common.ZKConfig)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: javax.net.ssl.SSLContext getSSLContext()>();
return v;
}
public org.apache.zookeeper.common.SSLContextAndOptions getDefaultSSLContextAndOptions() throws org.apache.zookeeper.common.X509Exception$SSLContextException
{
org.apache.zookeeper.common.X509Util v;
java.lang.Object v;
java.util.concurrent.atomic.AtomicReference v, v, v;
boolean v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.util.concurrent.atomic.AtomicReference defaultSSLContextAndOptions>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
if v != null goto label;
v = specialinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptions()>();
v = v.<org.apache.zookeeper.common.X509Util: java.util.concurrent.atomic.AtomicReference defaultSSLContextAndOptions>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: boolean compareAndSet(java.lang.Object,java.lang.Object)>(null, v);
if v != 0 goto label;
v = v.<org.apache.zookeeper.common.X509Util: java.util.concurrent.atomic.AtomicReference defaultSSLContextAndOptions>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: java.lang.Object get()>();
label:
return v;
}
private void resetDefaultSSLContextAndOptions() throws org.apache.zookeeper.common.X509Exception$SSLContextException
{
org.apache.zookeeper.common.SSLContextAndOptions v;
org.apache.zookeeper.common.X509Util v;
java.util.concurrent.atomic.AtomicReference v;
boolean v;
v := @this: org.apache.zookeeper.common.X509Util;
v = specialinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptions()>();
v = v.<org.apache.zookeeper.common.X509Util: java.util.concurrent.atomic.AtomicReference defaultSSLContextAndOptions>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: void set(java.lang.Object)>(v);
v = staticinvoke <java.lang.Boolean: boolean getBoolean(java.lang.String)>("zookeeper.client.certReload");
if v == 0 goto label;
staticinvoke <org.apache.zookeeper.server.auth.ProviderRegistry: void addOrUpdateProvider(java.lang.String)>("zookeeper.authProvider.x509");
label:
return;
}
private org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptions() throws org.apache.zookeeper.common.X509Exception$SSLContextException
{
org.apache.zookeeper.common.SSLContextAndOptions v;
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
v := @this: org.apache.zookeeper.common.X509Util;
v = new org.apache.zookeeper.common.ZKConfig;
specialinvoke v.<org.apache.zookeeper.common.ZKConfig: void <init>()>();
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptions(org.apache.zookeeper.common.ZKConfig)>(v);
return v;
}
public int getSslHandshakeTimeoutMillis()
{
org.slf4j.Logger v, v;
org.apache.zookeeper.common.X509Util v;
java.lang.Exception v;
org.apache.zookeeper.common.SSLContextAndOptions v;
org.apache.zookeeper.common.X509Exception$SSLContextException v;
int v;
java.lang.String v;
v := @this: org.apache.zookeeper.common.X509Util;
label:
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions getDefaultSSLContextAndOptions()>();
v = virtualinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: int getHandshakeDetectionTimeoutMillis()>();
label:
return v;
label:
v := @caughtexception;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Throwable)>("Error creating SSL context and options", v);
return 5000;
label:
v := @caughtexception;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getSslHandshakeDetectionTimeoutMillisProperty()>();
interfaceinvoke v.<org.slf4j.Logger: void error(java.lang.String,java.lang.Object,java.lang.Object)>("Error parsing config property {}", v, v);
return 5000;
catch org.apache.zookeeper.common.X509Exception$SSLContextException from label to label with label;
catch java.lang.Exception from label to label with label;
}
public org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptions(org.apache.zookeeper.common.ZKConfig) throws org.apache.zookeeper.common.X509Exception$SSLContextException
{
java.lang.Object[] v;
java.lang.reflect.Constructor v;
org.apache.zookeeper.common.SSLContextAndOptions v, v;
java.lang.String v, v, v, v, v;
org.slf4j.Logger v;
java.lang.Class[] v;
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
java.lang.Exception v;
org.apache.zookeeper.common.X509Exception$SSLContextException v;
java.lang.Class v;
java.lang.Object v, v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: org.apache.zookeeper.common.ZKConfig;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslContextSupplierClassProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String)>(v);
if v == null goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslContextSupplierClassProperty>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Loading SSLContext supplier from property \'{}\'", v);
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>(v);
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getConstructor(java.lang.Class[])>(v);
v = newarray (java.lang.Object)[0];
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Object newInstance(java.lang.Object[])>(v);
v = new org.apache.zookeeper.common.SSLContextAndOptions;
v = interfaceinvoke v.<java.util.function.Supplier: java.lang.Object get()>();
specialinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: void <init>(org.apache.zookeeper.common.X509Util,org.apache.zookeeper.common.ZKConfig,javax.net.ssl.SSLContext)>(v, v, v);
label:
return v;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$SSLContextException;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslContextSupplierClassProperty>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("Could not retrieve the SSLContext from supplier source \'\u0001\' provided in the property \'\u0001\'");
specialinvoke v.<org.apache.zookeeper.common.X509Exception$SSLContextException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptionsFromConfig(org.apache.zookeeper.common.ZKConfig)>(v);
return v;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.ClassCastException from label to label with label;
catch java.lang.NoSuchMethodException from label to label with label;
catch java.lang.reflect.InvocationTargetException from label to label with label;
catch java.lang.InstantiationException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
}
public org.apache.zookeeper.common.SSLContextAndOptions createSSLContextAndOptionsFromConfig(org.apache.zookeeper.common.ZKConfig) throws org.apache.zookeeper.common.X509Exception$SSLContextException
{
javax.net.ssl.X509KeyManager v;
javax.net.ssl.SSLContext v;
java.security.GeneralSecurityException v;
boolean v, v, v, v, v, v, v;
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
org.apache.zookeeper.common.X509Exception$SSLContextException v, v, v, v, v;
org.apache.zookeeper.common.X509Exception$TrustManagerException v;
org.apache.zookeeper.common.SSLContextAndOptions v;
org.apache.zookeeper.common.X509Exception$KeyManagerException 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;
org.slf4j.Logger v, v;
java.lang.IllegalArgumentException v, v;
javax.net.ssl.TrustManager[] v, v;
javax.net.ssl.X509TrustManager v;
javax.net.ssl.KeyManager[] v, v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: org.apache.zookeeper.common.ZKConfig;
v = null;
v = null;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreLocationProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String,java.lang.String)>(v, "");
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystorePasswdProperty>;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystorePasswdPathProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getPasswordFromConfigPropertyOrFile(org.apache.zookeeper.common.ZKConfig,java.lang.String,java.lang.String)>(v, v, v);
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreTypeProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getSslKeystoreLocationProperty()>();
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("{} not specified", v);
goto label;
label:
v = newarray (javax.net.ssl.KeyManager)[1];
v = staticinvoke <org.apache.zookeeper.common.X509Util: javax.net.ssl.X509KeyManager createKeyManager(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
v[0] = v;
v = v;
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$SSLContextException;
specialinvoke v.<org.apache.zookeeper.common.X509Exception$SSLContextException: void <init>(java.lang.String,java.lang.Throwable)>("Failed to create KeyManager", v);
throw v;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$SSLContextException;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreTypeProperty>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("Bad value for \u0001: \u0001");
specialinvoke v.<org.apache.zookeeper.common.X509Exception$SSLContextException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreLocationProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String,java.lang.String)>(v, "");
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststorePasswdProperty>;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststorePasswdPathProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getPasswordFromConfigPropertyOrFile(org.apache.zookeeper.common.ZKConfig,java.lang.String,java.lang.String)>(v, v, v);
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreTypeProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String)>(v);
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslCrlEnabledProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: boolean getBoolean(java.lang.String)>(v);
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslOcspEnabledProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: boolean getBoolean(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: boolean isServerHostnameVerificationEnabled(org.apache.zookeeper.common.ZKConfig)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: boolean isClientHostnameVerificationEnabled(org.apache.zookeeper.common.ZKConfig)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: boolean getFipsMode(org.apache.zookeeper.common.ZKConfig)>(v);
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: java.lang.String getSslTruststoreLocationProperty()>();
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object)>("{} not specified", v);
goto label;
label:
v = newarray (javax.net.ssl.TrustManager)[1];
v = staticinvoke <org.apache.zookeeper.common.X509Util: javax.net.ssl.X509TrustManager createTrustManager(java.lang.String,java.lang.String,java.lang.String,boolean,boolean,boolean,boolean,boolean)>(v, v, v, v, v, v, v, v);
v[0] = v;
v = v;
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$SSLContextException;
specialinvoke v.<org.apache.zookeeper.common.X509Exception$SSLContextException: void <init>(java.lang.String,java.lang.Throwable)>("Failed to create TrustManager", v);
throw v;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$SSLContextException;
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreTypeProperty>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("Bad value for \u0001: \u0001");
specialinvoke v.<org.apache.zookeeper.common.X509Exception$SSLContextException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslProtocolProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String,java.lang.String)>(v, "TLSv.2");
label:
v = staticinvoke <javax.net.ssl.SSLContext: javax.net.ssl.SSLContext getInstance(java.lang.String)>(v);
virtualinvoke v.<javax.net.ssl.SSLContext: void init(javax.net.ssl.KeyManager[],javax.net.ssl.TrustManager[],java.security.SecureRandom)>(v, v, null);
v = new org.apache.zookeeper.common.SSLContextAndOptions;
specialinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: void <init>(org.apache.zookeeper.common.X509Util,org.apache.zookeeper.common.ZKConfig,javax.net.ssl.SSLContext)>(v, v, v);
label:
return v;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$SSLContextException;
specialinvoke v.<org.apache.zookeeper.common.X509Exception$SSLContextException: void <init>(java.lang.Throwable)>(v);
throw v;
catch org.apache.zookeeper.common.X509Exception$KeyManagerException from label to label with label;
catch java.lang.IllegalArgumentException from label to label with label;
catch org.apache.zookeeper.common.X509Exception$TrustManagerException from label to label with label;
catch java.lang.IllegalArgumentException from label to label with label;
catch java.security.NoSuchAlgorithmException from label to label with label;
catch java.security.KeyManagementException from label to label with label;
}
public static java.security.KeyStore loadKeyStore(java.lang.String, java.lang.String, java.lang.String) throws java.io.IOException, java.security.GeneralSecurityException
{
java.security.KeyStore v;
java.lang.String v, v, v;
org.apache.zookeeper.common.FileKeyStoreLoader$Builder v, v, v;
org.apache.zookeeper.common.FileKeyStoreLoader v;
org.apache.zookeeper.common.KeyStoreFileType v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.zookeeper.common.KeyStoreFileType: org.apache.zookeeper.common.KeyStoreFileType fromPropertyValueOrFileName(java.lang.String,java.lang.String)>(v, v);
v = staticinvoke <org.apache.zookeeper.common.FileKeyStoreLoaderBuilderProvider: org.apache.zookeeper.common.FileKeyStoreLoader$Builder getBuilderForKeyStoreFileType(org.apache.zookeeper.common.KeyStoreFileType)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader$Builder: org.apache.zookeeper.common.FileKeyStoreLoader$Builder setKeyStorePath(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader$Builder: org.apache.zookeeper.common.FileKeyStoreLoader$Builder setKeyStorePassword(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader$Builder: org.apache.zookeeper.common.FileKeyStoreLoader build()>();
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader: java.security.KeyStore loadKeyStore()>();
return v;
}
public static java.security.KeyStore loadTrustStore(java.lang.String, java.lang.String, java.lang.String) throws java.io.IOException, java.security.GeneralSecurityException
{
java.security.KeyStore v;
java.lang.String v, v, v;
org.apache.zookeeper.common.FileKeyStoreLoader$Builder v, v, v;
org.apache.zookeeper.common.FileKeyStoreLoader v;
org.apache.zookeeper.common.KeyStoreFileType v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.zookeeper.common.KeyStoreFileType: org.apache.zookeeper.common.KeyStoreFileType fromPropertyValueOrFileName(java.lang.String,java.lang.String)>(v, v);
v = staticinvoke <org.apache.zookeeper.common.FileKeyStoreLoaderBuilderProvider: org.apache.zookeeper.common.FileKeyStoreLoader$Builder getBuilderForKeyStoreFileType(org.apache.zookeeper.common.KeyStoreFileType)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader$Builder: org.apache.zookeeper.common.FileKeyStoreLoader$Builder setTrustStorePath(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader$Builder: org.apache.zookeeper.common.FileKeyStoreLoader$Builder setTrustStorePassword(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader$Builder: org.apache.zookeeper.common.FileKeyStoreLoader build()>();
v = virtualinvoke v.<org.apache.zookeeper.common.FileKeyStoreLoader: java.security.KeyStore loadTrustStore()>();
return v;
}
public java.lang.String getPasswordFromConfigPropertyOrFile(org.apache.zookeeper.common.ZKConfig, java.lang.String, java.lang.String)
{
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
char[] v;
java.lang.String v, v, v, v;
boolean v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: org.apache.zookeeper.common.ZKConfig;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String,java.lang.String)>(v, "");
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String,java.lang.String)>(v, "");
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = staticinvoke <org.apache.zookeeper.common.SecretUtils: char[] readSecret(java.lang.String)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(char[])>(v);
label:
return v;
}
public static javax.net.ssl.X509KeyManager createKeyManager(java.lang.String, java.lang.String, java.lang.String) throws org.apache.zookeeper.common.X509Exception$KeyManagerException
{
javax.net.ssl.KeyManagerFactory v;
java.security.KeyStore v;
java.lang.Exception v;
javax.net.ssl.KeyManager v;
org.apache.zookeeper.common.X509Exception$KeyManagerException v, v;
int v, v;
char[] v;
java.lang.String v, v, v;
boolean v;
javax.net.ssl.KeyManager[] v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
if v != null goto label;
v = "";
label:
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.security.KeyStore loadKeyStore(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
v = staticinvoke <javax.net.ssl.KeyManagerFactory: javax.net.ssl.KeyManagerFactory getInstance(java.lang.String)>("PKIX");
v = virtualinvoke v.<java.lang.String: char[] toCharArray()>();
virtualinvoke v.<javax.net.ssl.KeyManagerFactory: void init(java.security.KeyStore,char[])>(v, v);
v = virtualinvoke v.<javax.net.ssl.KeyManagerFactory: javax.net.ssl.KeyManager[] getKeyManagers()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = v instanceof javax.net.ssl.X509KeyManager;
if v == 0 goto label;
label:
return v;
label:
v = v + 1;
goto label;
label:
v = new org.apache.zookeeper.common.X509Exception$KeyManagerException;
specialinvoke v.<org.apache.zookeeper.common.X509Exception$KeyManagerException: void <init>(java.lang.String)>("Couldn\'t find X509KeyManager");
throw v;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$KeyManagerException;
specialinvoke v.<org.apache.zookeeper.common.X509Exception$KeyManagerException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.io.IOException from label to label with label;
catch java.security.GeneralSecurityException from label to label with label;
catch java.lang.IllegalArgumentException from label to label with label;
}
public static javax.net.ssl.X509TrustManager createTrustManager(java.lang.String, java.lang.String, java.lang.String, boolean, boolean, boolean, boolean, boolean) throws org.apache.zookeeper.common.X509Exception$TrustManagerException
{
org.apache.zookeeper.common.X509Exception$TrustManagerException v, v;
javax.net.ssl.CertPathTrustManagerParameters v;
javax.net.ssl.TrustManager v;
int v, v;
java.lang.String v, v, v;
boolean v, v, v, v, v, v, v, v;
org.slf4j.Logger v, v, v, v;
javax.net.ssl.TrustManagerFactory v;
java.security.cert.X509CertSelector v;
org.apache.zookeeper.common.ZKTrustManager v;
java.security.KeyStore v;
java.lang.Exception v;
java.security.cert.PKIXBuilderParameters v;
javax.net.ssl.TrustManager[] v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v := @parameter: boolean;
v := @parameter: boolean;
v := @parameter: boolean;
v := @parameter: boolean;
if v != null goto label;
v = "";
label:
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.security.KeyStore loadTrustStore(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
v = new java.security.cert.PKIXBuilderParameters;
v = new java.security.cert.X509CertSelector;
specialinvoke v.<java.security.cert.X509CertSelector: void <init>()>();
specialinvoke v.<java.security.cert.PKIXBuilderParameters: void <init>(java.security.KeyStore,java.security.cert.CertSelector)>(v, v);
if v != 0 goto label;
if v == 0 goto label;
label:
virtualinvoke v.<java.security.cert.PKIXBuilderParameters: void setRevocationEnabled(boolean)>(1);
staticinvoke <java.lang.System: java.lang.String setProperty(java.lang.String,java.lang.String)>("com.sun.net.ssl.checkRevocation", "true");
staticinvoke <java.lang.System: java.lang.String setProperty(java.lang.String,java.lang.String)>("com.sun.security.enableCRLDP", "true");
if v == 0 goto label;
staticinvoke <java.security.Security: void setProperty(java.lang.String,java.lang.String)>("ocsp.enable", "true");
goto label;
label:
virtualinvoke v.<java.security.cert.PKIXBuilderParameters: void setRevocationEnabled(boolean)>(0);
label:
v = staticinvoke <javax.net.ssl.TrustManagerFactory: javax.net.ssl.TrustManagerFactory getInstance(java.lang.String)>("PKIX");
v = new javax.net.ssl.CertPathTrustManagerParameters;
specialinvoke v.<javax.net.ssl.CertPathTrustManagerParameters: void <init>(java.security.cert.CertPathParameters)>(v);
virtualinvoke v.<javax.net.ssl.TrustManagerFactory: void init(javax.net.ssl.ManagerFactoryParameters)>(v);
v = virtualinvoke v.<javax.net.ssl.TrustManagerFactory: javax.net.ssl.TrustManager[] getTrustManagers()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = v instanceof javax.net.ssl.X509ExtendedTrustManager;
if v == 0 goto label;
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("FIPS mode is ON: selecting standard x trust manager {}", v);
label:
return v;
label:
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String)>("FIPS mode is OFF: creating ZKTrustManager");
label:
v = new org.apache.zookeeper.common.ZKTrustManager;
specialinvoke v.<org.apache.zookeeper.common.ZKTrustManager: void <init>(javax.net.ssl.X509ExtendedTrustManager,boolean,boolean)>(v, v, v);
label:
return v;
label:
v = v + 1;
goto label;
label:
v = new org.apache.zookeeper.common.X509Exception$TrustManagerException;
specialinvoke v.<org.apache.zookeeper.common.X509Exception$TrustManagerException: void <init>(java.lang.String)>("Couldn\'t find X509TrustManager");
throw v;
label:
v := @caughtexception;
v = new org.apache.zookeeper.common.X509Exception$TrustManagerException;
specialinvoke v.<org.apache.zookeeper.common.X509Exception$TrustManagerException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.io.IOException from label to label with label;
catch java.security.GeneralSecurityException from label to label with label;
catch java.lang.IllegalArgumentException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.security.GeneralSecurityException from label to label with label;
catch java.lang.IllegalArgumentException from label to label with label;
}
public javax.net.ssl.SSLSocket createSSLSocket() throws org.apache.zookeeper.common.X509Exception, java.io.IOException
{
javax.net.ssl.SSLSocket v;
org.apache.zookeeper.common.SSLContextAndOptions v;
org.apache.zookeeper.common.X509Util v;
v := @this: org.apache.zookeeper.common.X509Util;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions getDefaultSSLContextAndOptions()>();
v = virtualinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: javax.net.ssl.SSLSocket createSSLSocket()>();
return v;
}
public javax.net.ssl.SSLSocket createSSLSocket(java.net.Socket, byte[]) throws org.apache.zookeeper.common.X509Exception, java.io.IOException
{
byte[] v;
org.apache.zookeeper.common.SSLContextAndOptions v;
java.net.Socket v;
javax.net.ssl.SSLSocket v;
org.apache.zookeeper.common.X509Util v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: java.net.Socket;
v := @parameter: byte[];
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions getDefaultSSLContextAndOptions()>();
v = virtualinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: javax.net.ssl.SSLSocket createSSLSocket(java.net.Socket,byte[])>(v, v);
return v;
}
public javax.net.ssl.SSLServerSocket createSSLServerSocket() throws org.apache.zookeeper.common.X509Exception, java.io.IOException
{
org.apache.zookeeper.common.SSLContextAndOptions v;
org.apache.zookeeper.common.X509Util v;
javax.net.ssl.SSLServerSocket v;
v := @this: org.apache.zookeeper.common.X509Util;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions getDefaultSSLContextAndOptions()>();
v = virtualinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: javax.net.ssl.SSLServerSocket createSSLServerSocket()>();
return v;
}
public javax.net.ssl.SSLServerSocket createSSLServerSocket(int) throws org.apache.zookeeper.common.X509Exception, java.io.IOException
{
org.apache.zookeeper.common.SSLContextAndOptions v;
javax.net.ssl.SSLServerSocket v;
int v;
org.apache.zookeeper.common.X509Util v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: int;
v = virtualinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.SSLContextAndOptions getDefaultSSLContextAndOptions()>();
v = virtualinvoke v.<org.apache.zookeeper.common.SSLContextAndOptions: javax.net.ssl.SSLServerSocket createSSLServerSocket(int)>(v);
return v;
}
static java.lang.String[] getDefaultCipherSuites()
{
java.lang.String[] v;
java.lang.String v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("java.specification.version");
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.lang.String[] getDefaultCipherSuitesForJavaVersion(java.lang.String)>(v);
return v;
}
static java.lang.String[] getDefaultCipherSuitesForJavaVersion(java.lang.String)
{
org.slf4j.Logger v, v, v;
java.lang.String[] v, v, v;
java.lang.String v;
boolean v, v;
v := @parameter: java.lang.String;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.String: boolean matches(java.lang.String)>("\\d+");
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Using Java+ optimized cipher suites for Java version {}", v);
v = <org.apache.zookeeper.common.X509Util: java.lang.String[] DEFAULT_CIPHERS_JAVA9>;
return v;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("1.");
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Using Java optimized cipher suites for Java version {}", v);
v = <org.apache.zookeeper.common.X509Util: java.lang.String[] DEFAULT_CIPHERS_JAVA8>;
return v;
label:
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("Could not parse java version {}, using Java optimized cipher suites", v);
v = <org.apache.zookeeper.common.X509Util: java.lang.String[] DEFAULT_CIPHERS_JAVA8>;
return v;
}
private org.apache.zookeeper.common.FileChangeWatcher newFileChangeWatcher(java.lang.String) throws java.io.IOException
{
org.apache.zookeeper.common.X509Util v;
java.io.IOException v;
java.lang.String[] v;
java.util.function.Consumer v;
org.apache.zookeeper.common.FileChangeWatcher v;
java.lang.String v, v;
java.nio.file.Path v, v, v;
boolean v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
label:
return null;
label:
v = newarray (java.lang.String)[0];
v = staticinvoke <java.nio.file.Paths: java.nio.file.Path get(java.lang.String,java.lang.String[])>(v, v);
v = interfaceinvoke v.<java.nio.file.Path: java.nio.file.Path toAbsolutePath()>();
v = interfaceinvoke v.<java.nio.file.Path: java.nio.file.Path getParent()>();
if v != null goto label;
v = new java.io.IOException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.nio.file.Path)>(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[])>("Key/trust store path does not have a parent: \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new org.apache.zookeeper.common.FileChangeWatcher;
v = staticinvoke <org.apache.zookeeper.common.X509Util$lambda_newFileChangeWatcher_0__43: java.util.function.Consumer bootstrap$(org.apache.zookeeper.common.X509Util,java.nio.file.Path)>(v, v);
specialinvoke v.<org.apache.zookeeper.common.FileChangeWatcher: void <init>(java.nio.file.Path,java.util.function.Consumer)>(v, v);
return v;
}
public void enableCertFileReloading() throws java.io.IOException
{
org.slf4j.Logger v;
org.apache.zookeeper.common.X509Util v;
org.apache.zookeeper.common.ZKConfig v;
org.apache.zookeeper.common.FileChangeWatcher v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v;
v := @this: org.apache.zookeeper.common.X509Util;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("enabling cert file reloading");
v = new org.apache.zookeeper.common.ZKConfig;
specialinvoke v.<org.apache.zookeeper.common.ZKConfig: void <init>()>();
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslKeystoreLocationProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String)>(v);
v = specialinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher newFileChangeWatcher(java.lang.String)>(v);
if v == null goto label;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher>;
if v == null goto label;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher>;
virtualinvoke v.<org.apache.zookeeper.common.FileChangeWatcher: void stop()>();
label:
v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher> = v;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher>;
virtualinvoke v.<org.apache.zookeeper.common.FileChangeWatcher: void start()>();
label:
v = v.<org.apache.zookeeper.common.X509Util: java.lang.String sslTruststoreLocationProperty>;
v = virtualinvoke v.<org.apache.zookeeper.common.ZKConfig: java.lang.String getProperty(java.lang.String)>(v);
v = specialinvoke v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher newFileChangeWatcher(java.lang.String)>(v);
if v == null goto label;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher>;
if v == null goto label;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher>;
virtualinvoke v.<org.apache.zookeeper.common.FileChangeWatcher: void stop()>();
label:
v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher> = v;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher>;
virtualinvoke v.<org.apache.zookeeper.common.FileChangeWatcher: void start()>();
label:
return;
}
public void close()
{
org.apache.zookeeper.common.FileChangeWatcher v, v, v, v;
org.apache.zookeeper.common.X509Util v;
java.util.concurrent.atomic.AtomicReference v;
v := @this: org.apache.zookeeper.common.X509Util;
v = v.<org.apache.zookeeper.common.X509Util: java.util.concurrent.atomic.AtomicReference defaultSSLContextAndOptions>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicReference: void set(java.lang.Object)>(null);
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher>;
if v == null goto label;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher>;
virtualinvoke v.<org.apache.zookeeper.common.FileChangeWatcher: void stop()>();
v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher keyStoreFileWatcher> = null;
label:
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher>;
if v == null goto label;
v = v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher>;
virtualinvoke v.<org.apache.zookeeper.common.FileChangeWatcher: void stop()>();
v.<org.apache.zookeeper.common.X509Util: org.apache.zookeeper.common.FileChangeWatcher trustStoreFileWatcher> = null;
label:
return;
}
private void handleWatchEvent(java.nio.file.Path, java.nio.file.WatchEvent)
{
java.nio.file.WatchEvent$Kind v, v, v, v, v, v, v, v;
java.nio.file.Path v, v, v;
boolean v, v, v, v, v;
org.slf4j.Logger v, v;
java.nio.file.WatchEvent v;
org.apache.zookeeper.common.X509Util v;
java.lang.RuntimeException v;
org.apache.zookeeper.common.X509Exception$SSLContextException v;
java.lang.Object v, v, v;
v := @this: org.apache.zookeeper.common.X509Util;
v := @parameter: java.nio.file.Path;
v := @parameter: java.nio.file.WatchEvent;
v = 0;
v = interfaceinvoke v.<java.nio.file.Path: java.nio.file.Path getParent()>();
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.nio.file.WatchEvent$Kind kind()>();
v = <java.nio.file.StandardWatchEventKinds: java.nio.file.WatchEvent$Kind OVERFLOW>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.nio.file.WatchEvent$Kind kind()>();
v = <java.nio.file.StandardWatchEventKinds: java.nio.file.WatchEvent$Kind ENTRY_MODIFY>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.nio.file.WatchEvent$Kind kind()>();
v = <java.nio.file.StandardWatchEventKinds: java.nio.file.WatchEvent$Kind ENTRY_CREATE>;
v = virtualinvoke v.<java.lang.Object: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.lang.Object context()>();
v = interfaceinvoke v.<java.nio.file.Path: java.nio.file.Path resolve(java.nio.file.Path)>(v);
v = interfaceinvoke v.<java.nio.file.Path: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = 1;
label:
if v == 0 goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.nio.file.WatchEvent$Kind kind()>();
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.lang.Object context()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Attempting to reset default SSL context after receiving watch event: {} with context: {}", v, v);
label:
specialinvoke v.<org.apache.zookeeper.common.X509Util: void resetDefaultSSLContextAndOptions()>();
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.nio.file.WatchEvent$Kind kind()>();
v = interfaceinvoke v.<java.nio.file.WatchEvent: java.lang.Object context()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Ignoring watch event and keeping previous default SSL context. Event kind: {} with context: {}", v, v);
label:
return;
catch org.apache.zookeeper.common.X509Exception$SSLContextException from label to label with label;
}
static void <clinit>()
{
org.slf4j.Logger v, v;
java.lang.String[] v, v, v, v, v, v;
java.lang.Boolean v;
java.lang.String v, v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/zookeeper/common/X509Util;");
<org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG> = v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("jdk.tls.rejectClientInitiatedRenegotiation");
if v != null goto label;
v = <org.apache.zookeeper.common.X509Util: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Setting -D {}=true to disable client-initiated TLS renegotiation", "jdk.tls.rejectClientInitiatedRenegotiation");
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
v = virtualinvoke v.<java.lang.Boolean: java.lang.String toString()>();
staticinvoke <java.lang.System: java.lang.String setProperty(java.lang.String,java.lang.String)>("jdk.tls.rejectClientInitiatedRenegotiation", v);
label:
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.lang.String[] getCBCCiphers()>();
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.lang.String[] getGCMCiphers()>();
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.lang.String[] concatArrays(java.lang.String[],java.lang.String[])>(v, v);
<org.apache.zookeeper.common.X509Util: java.lang.String[] DEFAULT_CIPHERS_JAVA8> = v;
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.lang.String[] getGCMCiphers()>();
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.lang.String[] getCBCCiphers()>();
v = staticinvoke <org.apache.zookeeper.common.X509Util: java.lang.String[] concatArrays(java.lang.String[],java.lang.String[])>(v, v);
<org.apache.zookeeper.common.X509Util: java.lang.String[] DEFAULT_CIPHERS_JAVA9> = v;
return;
}
}