public class org.apache.kafkaesque.common.security.kerberos.KerberosLogin extends org.apache.kafkaesque.common.security.authenticator.AbstractLogin
{
private static final org.slf4j.Logger log;
private static final java.util.Random RNG;
private final org.apache.kafkaesque.common.utils.Time time;
private java.lang.Thread t;
private boolean isKrbTicket;
private boolean isUsingTicketCache;
private java.lang.String principal;
private double ticketRenewWindowFactor;
private double ticketRenewJitter;
private long minTimeBeforeRelogin;
private java.lang.String kinitCmd;
private volatile javax.security.auth.Subject subject;
private javax.security.auth.login.LoginContext loginContext;
private java.lang.String serviceName;
private long lastLogin;
public void <init>()
{
org.apache.kafkaesque.common.utils.Time v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
specialinvoke v.<org.apache.kafkaesque.common.security.authenticator.AbstractLogin: void <init>()>();
v = <org.apache.kafkaesque.common.utils.Time: org.apache.kafkaesque.common.utils.Time SYSTEM>;
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.apache.kafkaesque.common.utils.Time time> = v;
return;
}
public void configure(java.util.Map, java.lang.String, javax.security.auth.login.Configuration, org.apache.kafkaesque.common.security.auth.AuthenticateCallbackHandler)
{
long v;
java.util.Map v;
org.apache.kafkaesque.common.security.auth.AuthenticateCallbackHandler v;
java.lang.Object v, v, v, v;
java.lang.String v, v;
javax.security.auth.login.Configuration v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
double v, v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v := @parameter: java.util.Map;
v := @parameter: java.lang.String;
v := @parameter: javax.security.auth.login.Configuration;
v := @parameter: org.apache.kafkaesque.common.security.auth.AuthenticateCallbackHandler;
specialinvoke v.<org.apache.kafkaesque.common.security.authenticator.AbstractLogin: void configure(java.util.Map,java.lang.String,javax.security.auth.login.Configuration,org.apache.kafkaesque.common.security.auth.AuthenticateCallbackHandler)>(v, v, v, v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("sasl.kerberos.ticket.renew.window.factor");
v = virtualinvoke v.<java.lang.Double: double doubleValue()>();
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: double ticketRenewWindowFactor> = v;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("sasl.kerberos.ticket.renew.jitter");
v = virtualinvoke v.<java.lang.Double: double doubleValue()>();
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: double ticketRenewJitter> = v;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("sasl.kerberos.min.time.before.relogin");
v = virtualinvoke v.<java.lang.Long: long longValue()>();
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long minTimeBeforeRelogin> = v;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("sasl.kerberos.kinit.cmd");
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String kinitCmd> = v;
v = staticinvoke <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String getServiceName(java.util.Map,java.lang.String,javax.security.auth.login.Configuration)>(v, v, v);
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String serviceName> = v;
return;
}
public javax.security.auth.login.LoginContext login() throws javax.security.auth.login.LoginException
{
java.lang.Runnable v;
java.lang.Thread v;
java.util.Map v, v, v, v;
javax.security.auth.login.Configuration v;
boolean v, v, v, v;
java.util.Set v;
javax.security.auth.login.AppConfigurationEntry[] v;
java.lang.Object[] v;
javax.security.auth.login.AppConfigurationEntry v;
long v;
javax.security.auth.login.LoginContext v, v, v, v;
int v;
java.lang.String v, v, v, v, v;
org.apache.kafkaesque.common.utils.KafkaThread v;
org.slf4j.Logger v, v;
javax.security.auth.Subject v, v;
java.lang.Object v, v, v, v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = specialinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long currentElapsedTime()>();
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long lastLogin> = v;
v = specialinvoke v.<org.apache.kafkaesque.common.security.authenticator.AbstractLogin: javax.security.auth.login.LoginContext login()>();
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext> = v;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext>;
v = virtualinvoke v.<javax.security.auth.login.LoginContext: javax.security.auth.Subject getSubject()>();
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.Subject subject> = v;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.Subject subject>;
v = virtualinvoke v.<javax.security.auth.Subject: java.util.Set getPrivateCredentials(java.lang.Class)>(class "Ljavax/security/auth/kerberos/KerberosTicket;");
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: boolean isKrbTicket> = v;
v = virtualinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.Configuration configuration()>();
v = virtualinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String contextName()>();
v = virtualinvoke v.<javax.security.auth.login.Configuration: javax.security.auth.login.AppConfigurationEntry[] getAppConfigurationEntry(java.lang.String)>(v);
v = lengthof v;
if v != 0 goto label;
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: boolean isUsingTicketCache> = 0;
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal> = null;
goto label;
label:
v = v[0];
v = virtualinvoke v.<javax.security.auth.login.AppConfigurationEntry: java.util.Map getOptions()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("useTicketCache");
if v == null goto label;
v = virtualinvoke v.<javax.security.auth.login.AppConfigurationEntry: java.util.Map getOptions()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("useTicketCache");
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("true");
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: boolean isUsingTicketCache> = v;
goto label;
label:
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: boolean isUsingTicketCache> = 0;
label:
v = virtualinvoke v.<javax.security.auth.login.AppConfigurationEntry: java.util.Map getOptions()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("principal");
if v == null goto label;
v = virtualinvoke v.<javax.security.auth.login.AppConfigurationEntry: java.util.Map getOptions()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("principal");
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal> = v;
goto label;
label:
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal> = null;
label:
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: boolean isKrbTicket>;
if v != 0 goto label;
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("[Principal={}]: It is not a Kerberos ticket", v);
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.Thread t> = null;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext>;
return v;
label:
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object)>("[Principal={}]: It is a Kerberos ticket", v);
v = newarray (java.lang.Object)[1];
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("kafka-kerberos-refresh-thread-%s", v);
v = staticinvoke <org.apache.kafkaesque.common.security.kerberos.KerberosLogin$lambda_login_0__628: java.lang.Runnable bootstrap$(org.apache.kafkaesque.common.security.kerberos.KerberosLogin)>(v);
v = staticinvoke <org.apache.kafkaesque.common.utils.KafkaThread: org.apache.kafkaesque.common.utils.KafkaThread daemon(java.lang.String,java.lang.Runnable)>(v, v);
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.Thread t> = v;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.Thread t>;
virtualinvoke v.<java.lang.Thread: void start()>();
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext>;
return v;
}
public void close()
{
org.slf4j.Logger v;
java.lang.InterruptedException v;
java.lang.Thread v, v, v, v, v;
java.lang.String v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
boolean v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.Thread t>;
if v == null goto label;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.Thread t>;
v = virtualinvoke v.<java.lang.Thread: boolean isAlive()>();
if v == 0 goto label;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.Thread t>;
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.Thread t>;
virtualinvoke v.<java.lang.Thread: void join()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("[Principal={}]: Error while waiting for Login thread to shutdown.", v, v);
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
return;
catch java.lang.InterruptedException from label to label with label;
}
public javax.security.auth.Subject subject()
{
javax.security.auth.Subject v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.Subject subject>;
return v;
}
public java.lang.String serviceName()
{
java.lang.String v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String serviceName>;
return v;
}
private static java.lang.String getServiceName(java.util.Map, java.lang.String, javax.security.auth.login.Configuration)
{
java.lang.Object[] v;
java.lang.IllegalArgumentException v, v;
java.util.List v;
javax.security.auth.login.AppConfigurationEntry[] v;
java.util.Map v;
java.lang.Object v;
java.lang.String v, v, v;
javax.security.auth.login.Configuration v;
boolean v;
v := @parameter: java.util.Map;
v := @parameter: java.lang.String;
v := @parameter: javax.security.auth.login.Configuration;
v = virtualinvoke v.<javax.security.auth.login.Configuration: javax.security.auth.login.AppConfigurationEntry[] getAppConfigurationEntry(java.lang.String)>(v);
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
v = staticinvoke <org.apache.kafkaesque.common.security.JaasContext: java.lang.String configEntryOption(java.util.List,java.lang.String,java.lang.String)>(v, "serviceName", null);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("sasl.kerberos.service.name");
if v == null goto label;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = newarray (java.lang.Object)[2];
v[0] = v;
v[1] = v;
v = staticinvoke <java.lang.String: java.lang.String format(java.lang.String,java.lang.Object[])>("Conflicting serviceName values found in JAAS and Kafka configs value in JAAS file %s, value in Kafka config %s", v);
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
if v == null goto label;
return v;
label:
if v == null goto label;
return v;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("No serviceName defined in either JAAS or Kafka config");
throw v;
}
private long getRefreshTime(javax.security.auth.kerberos.KerberosTicket)
{
java.util.Date v, v, v, v;
java.util.Random v;
long v, v, v, v, v;
byte v;
java.lang.String v, v;
double v, v, v, v, v, v;
org.slf4j.Logger v, v;
javax.security.auth.kerberos.KerberosTicket v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v := @parameter: javax.security.auth.kerberos.KerberosTicket;
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosTicket: java.util.Date getStartTime()>();
v = virtualinvoke v.<java.util.Date: long getTime()>();
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosTicket: java.util.Date getEndTime()>();
v = virtualinvoke v.<java.util.Date: long getTime()>();
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosTicket: java.util.Date getStartTime()>();
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("[Principal={}]: TGT valid starting at: {}", v, v);
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosTicket: java.util.Date getEndTime()>();
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object,java.lang.Object)>("[Principal={}]: TGT expires: {}", v, v);
v = v - v;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: double ticketRenewWindowFactor>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: double ticketRenewJitter>;
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.util.Random RNG>;
v = virtualinvoke v.<java.util.Random: double nextDouble()>();
v = v * v;
v = v + v;
v = v * v;
v = v + v;
v = v cmp v;
if v <= 0 goto label;
v = specialinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long currentWallTime()>();
return v;
label:
return v;
}
private javax.security.auth.kerberos.KerberosTicket getTGT()
{
java.lang.String v, v, v, v, v, v;
boolean v, v;
org.slf4j.Logger v;
java.util.Iterator v;
javax.security.auth.kerberos.KerberosPrincipal v, v, v;
java.util.Set v;
javax.security.auth.Subject v;
java.lang.Object v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.Subject subject>;
v = virtualinvoke v.<javax.security.auth.Subject: java.util.Set getPrivateCredentials(java.lang.Class)>(class "Ljavax/security/auth/kerberos/KerberosTicket;");
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 = virtualinvoke v.<javax.security.auth.kerberos.KerberosTicket: javax.security.auth.kerberos.KerberosPrincipal getServer()>();
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosPrincipal: java.lang.String getName()>();
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosPrincipal: java.lang.String getRealm()>();
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosPrincipal: java.lang.String getRealm()>();
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[])>("krbtgt/\u0001@\u0001");
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosTicket: javax.security.auth.kerberos.KerberosPrincipal getClient()>();
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosPrincipal: java.lang.String getName()>();
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosTicket: javax.security.auth.kerberos.KerberosPrincipal getServer()>();
v = virtualinvoke v.<javax.security.auth.kerberos.KerberosPrincipal: java.lang.String getName()>();
interfaceinvoke v.<org.slf4j.Logger: void debug(java.lang.String,java.lang.Object,java.lang.Object)>("Found TGT with client principal \'{}\' and server principal \'{}\'.", v, v);
return v;
label:
return null;
}
private boolean hasSufficientTimeElapsed()
{
org.slf4j.Logger v;
long v, v, v, v, v, v;
byte v;
java.lang.Long v;
java.lang.String v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = specialinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long currentElapsedTime()>();
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long lastLogin>;
v = v - v;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long minTimeBeforeRelogin>;
v = v cmp v;
if v >= 0 goto label;
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long minTimeBeforeRelogin>;
v = v / 1000L;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("[Principal={}]: Not attempting to re-login since the last re-login was attempted less than {} seconds before.", v, v);
return 0;
label:
return 1;
}
private void reLogin() throws javax.security.auth.login.LoginException
{
java.lang.Throwable v;
javax.security.auth.login.LoginException v;
long v;
javax.security.auth.login.LoginContext v, v, v, v;
java.lang.String v, v, v;
javax.security.auth.login.Configuration v;
boolean v, v;
org.slf4j.Logger v, v;
javax.security.auth.Subject v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: boolean isKrbTicket>;
if v != 0 goto label;
return;
label:
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext>;
if v != null goto label;
v = new javax.security.auth.login.LoginException;
specialinvoke v.<javax.security.auth.login.LoginException: void <init>(java.lang.String)>("Login must be done first");
throw v;
label:
v = specialinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: boolean hasSufficientTimeElapsed()>();
if v != 0 goto label;
return;
label:
entermonitor class "Lorg/apache/kafkaesque/common/security/kerberos/KerberosLogin;";
label:
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Initiating logout for {}", v);
v = specialinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long currentElapsedTime()>();
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: long lastLogin> = v;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext>;
virtualinvoke v.<javax.security.auth.login.LoginContext: void logout()>();
v = new javax.security.auth.login.LoginContext;
v = virtualinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String contextName()>();
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.Subject subject>;
v = virtualinvoke v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.Configuration configuration()>();
specialinvoke v.<javax.security.auth.login.LoginContext: void <init>(java.lang.String,javax.security.auth.Subject,javax.security.auth.callback.CallbackHandler,javax.security.auth.login.Configuration)>(v, v, null, v);
v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext> = v;
v = <org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log>;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.lang.String principal>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("Initiating re-login for {}", v);
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: javax.security.auth.login.LoginContext loginContext>;
virtualinvoke v.<javax.security.auth.login.LoginContext: void login()>();
exitmonitor class "Lorg/apache/kafkaesque/common/security/kerberos/KerberosLogin;";
label:
goto label;
label:
v := @caughtexception;
exitmonitor class "Lorg/apache/kafkaesque/common/security/kerberos/KerberosLogin;";
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private long currentElapsedTime()
{
long v;
org.apache.kafkaesque.common.utils.Time v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.apache.kafkaesque.common.utils.Time time>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.utils.Time: long hiResClockMs()>();
return v;
}
private long currentWallTime()
{
long v;
org.apache.kafkaesque.common.utils.Time v;
org.apache.kafkaesque.common.security.kerberos.KerberosLogin v;
v := @this: org.apache.kafkaesque.common.security.kerberos.KerberosLogin;
v = v.<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.apache.kafkaesque.common.utils.Time time>;
v = interfaceinvoke v.<org.apache.kafkaesque.common.utils.Time: long milliseconds()>();
return v;
}
static void <clinit>()
{
java.util.Random v;
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/kafkaesque/common/security/kerberos/KerberosLogin;");
<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: org.slf4j.Logger log> = v;
v = new java.util.Random;
specialinvoke v.<java.util.Random: void <init>()>();
<org.apache.kafkaesque.common.security.kerberos.KerberosLogin: java.util.Random RNG> = v;
return;
}
}