class com.novell.ldapchai.impl.ad.entry.UserImpl extends com.novell.ldapchai.impl.AbstractChaiUser implements com.novell.ldapchai.impl.ad.entry.User, com.novell.ldapchai.impl.ad.entry.Top, com.novell.ldapchai.ChaiUser
{
private static final int COMPUTED_ACCOUNT_CONTROL_ACCOUNT_ACTIVE;
private static final int COMPUTED_ACCOUNT_CONTROL_UC_LOCKOUT;
private static final int COMPUTED_ACCOUNT_CONTROL_UC_PASSWORD_EXPIRED;
private static final int ADS_UF_DONT_EXPIRE_PASSWD;
private static final java.lang.String LDAP_SERVER_POLICY_HINTS_OID;
void <init>(java.lang.String, com.novell.ldapchai.provider.ChaiProvider)
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
com.novell.ldapchai.provider.ChaiProvider v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: java.lang.String;
v := @parameter: com.novell.ldapchai.provider.ChaiProvider;
specialinvoke v.<com.novell.ldapchai.impl.AbstractChaiUser: void <init>(java.lang.String,com.novell.ldapchai.provider.ChaiProvider)>(v, v);
return;
}
public java.util.Set getGroups() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
java.util.Iterator v;
java.util.Set v, v;
com.novell.ldapchai.provider.ChaiProvider v;
java.util.HashSet v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
com.novell.ldapchai.ChaiEntryFactory v;
java.lang.Object v;
com.novell.ldapchai.ChaiGroup v;
boolean v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.util.Set readMultiStringAttribute(java.lang.String)>("memberOf");
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.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.provider.ChaiProvider getChaiProvider()>();
v = interfaceinvoke v.<com.novell.ldapchai.provider.ChaiProvider: com.novell.ldapchai.ChaiEntryFactory getEntryFactory()>();
v = virtualinvoke v.<com.novell.ldapchai.ChaiEntryFactory: com.novell.ldapchai.ChaiGroup newChaiGroup(java.lang.String)>(v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = staticinvoke <java.util.Collections: java.util.Set unmodifiableSet(java.util.Set)>(v);
return v;
}
public void addGroupMembership(com.novell.ldapchai.ChaiGroup) throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
com.novell.ldapchai.ChaiGroup v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: com.novell.ldapchai.ChaiGroup;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String getEntryDN()>();
interfaceinvoke v.<com.novell.ldapchai.ChaiGroup: void addAttribute(java.lang.String,java.lang.String)>("member", v);
return;
}
public com.novell.ldapchai.ChaiPasswordPolicy getPasswordPolicy() throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiOperationException
{
java.util.LinkedHashMap v;
com.novell.ldapchai.impl.ad.entry.MsDSPasswordSettingsImpl v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
com.novell.ldapchai.util.DefaultChaiPasswordPolicy v;
java.util.regex.Matcher v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v;
java.util.Iterator v;
java.util.Set v;
com.novell.ldapchai.provider.ChaiProvider v, v;
java.lang.Object v;
com.novell.ldapchai.ChaiPasswordRule v, v, v, v;
java.util.regex.Pattern v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = new java.util.LinkedHashMap;
specialinvoke v.<java.util.LinkedHashMap: void <init>()>();
v = <com.novell.ldapchai.ChaiPasswordRule: com.novell.ldapchai.ChaiPasswordRule AllowNumeric>;
v = virtualinvoke v.<com.novell.ldapchai.ChaiPasswordRule: java.lang.String getKey()>();
v = staticinvoke <java.lang.String: java.lang.String valueOf(boolean)>(1);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = <com.novell.ldapchai.ChaiPasswordRule: com.novell.ldapchai.ChaiPasswordRule AllowSpecial>;
v = virtualinvoke v.<com.novell.ldapchai.ChaiPasswordRule: java.lang.String getKey()>();
v = staticinvoke <java.lang.String: java.lang.String valueOf(boolean)>(1);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = <com.novell.ldapchai.ChaiPasswordRule: com.novell.ldapchai.ChaiPasswordRule CaseSensitive>;
v = virtualinvoke v.<com.novell.ldapchai.ChaiPasswordRule: java.lang.String getKey()>();
v = staticinvoke <java.lang.String: java.lang.String valueOf(boolean)>(1);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String,int)>("(dc=[a-z0-9-]+[,]*)+", 2);
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String getEntryDN()>();
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean find()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String group()>();
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.provider.ChaiProvider getChaiProvider()>();
v = interfaceinvoke v.<com.novell.ldapchai.provider.ChaiProvider: java.lang.String readStringAttribute(java.lang.String,java.lang.String)>(v, "minPwdLength");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = <com.novell.ldapchai.ChaiPasswordRule: com.novell.ldapchai.ChaiPasswordRule MinimumLength>;
v = virtualinvoke v.<com.novell.ldapchai.ChaiPasswordRule: java.lang.String getKey()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String readStringAttribute(java.lang.String)>("msDS-ResultantPSO");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = new com.novell.ldapchai.impl.ad.entry.MsDSPasswordSettingsImpl;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.provider.ChaiProvider getChaiProvider()>();
specialinvoke v.<com.novell.ldapchai.impl.ad.entry.MsDSPasswordSettingsImpl: void <init>(java.lang.String,com.novell.ldapchai.provider.ChaiProvider)>(v, v);
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.MsDSPasswordSettingsImpl: java.util.Set getKeys()>();
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.<com.novell.ldapchai.impl.ad.entry.MsDSPasswordSettingsImpl: java.lang.String getValue(java.lang.String)>(v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
goto label;
label:
v = staticinvoke <com.novell.ldapchai.util.DefaultChaiPasswordPolicy: com.novell.ldapchai.util.DefaultChaiPasswordPolicy createDefaultChaiPasswordPolicy(java.util.Map)>(v);
return v;
}
public java.lang.String readPassword() throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiOperationException
{
java.lang.UnsupportedOperationException v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("ChaiUser#readPassword not implemented in ad-impl ldapChai API");
throw v;
}
public void removeGroupMembership(com.novell.ldapchai.ChaiGroup) throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
com.novell.ldapchai.ChaiGroup v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: com.novell.ldapchai.ChaiGroup;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String getEntryDN()>();
interfaceinvoke v.<com.novell.ldapchai.ChaiGroup: void deleteAttribute(java.lang.String,java.lang.String)>("member", v);
return;
}
public boolean testPassword(java.lang.String) throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiPasswordPolicyException
{
java.lang.UnsupportedOperationException v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: java.lang.String;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>(java.lang.String)>("ChaiUser#testPassword not implemented in ad-impl ldapChai API");
throw v;
}
public boolean testPasswordPolicy(java.lang.String) throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiPasswordPolicyException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: java.lang.String;
return 0;
}
public void unlockPassword() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: void writeStringAttribute(java.lang.String,java.lang.String)>("lockoutTime", "0");
return;
}
public void setPassword(java.lang.String, boolean) throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiPasswordPolicyException, com.novell.ldapchai.exception.ChaiOperationException
{
byte[] v, v;
java.lang.IllegalStateException v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
com.novell.ldapchai.ChaiRequestControl[] v;
java.lang.String v, v, v, v;
com.novell.ldapchai.exception.ChaiOperationException v, v;
boolean v, v;
com.novell.ldapchai.provider.ChaiConfiguration v;
com.novell.ldapchai.ChaiRequestControl v;
com.novell.ldapchai.provider.ChaiSetting v;
com.novell.ldapchai.exception.ChaiError v, v, v;
com.novell.ldapchai.provider.ChaiProvider v, v;
byte[][] v;
java.io.UnsupportedEncodingException v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: java.lang.String;
v := @parameter: boolean;
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[])>("\"\u0001\"");
label:
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.lang.String)>("UTF-16LE");
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("unexpected error, missing \'UTF-16LE\' character encoder", v);
throw v;
label:
v = newarray (byte[])[1];
v[0] = v;
label:
if v == 0 goto label;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.provider.ChaiProvider getChaiProvider()>();
v = interfaceinvoke v.<com.novell.ldapchai.provider.ChaiProvider: com.novell.ldapchai.provider.ChaiConfiguration getChaiConfiguration()>();
v = <com.novell.ldapchai.provider.ChaiSetting: com.novell.ldapchai.provider.ChaiSetting AD_SET_POLICY_HINTS_ON_PW_SET>;
v = virtualinvoke v.<com.novell.ldapchai.provider.ChaiConfiguration: boolean getBooleanSetting(com.novell.ldapchai.provider.ChaiSetting)>(v);
if v == 0 goto label;
v = newarray (byte)[9];
v[0] = 48;
v[1] = -124;
v[2] = 0;
v[3] = 0;
v[4] = 0;
v[5] = 3;
v[6] = 2;
v[7] = 1;
v[8] = 1;
v = newarray (com.novell.ldapchai.ChaiRequestControl)[1];
v = new com.novell.ldapchai.ChaiRequestControl;
specialinvoke v.<com.novell.ldapchai.ChaiRequestControl: void <init>(java.lang.String,boolean,byte[])>("1.2.840.113556.1.4.2066", 1, v);
v[0] = v;
v = v.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.provider.ChaiProvider chaiProvider>;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String getEntryDN()>();
interfaceinvoke v.<com.novell.ldapchai.provider.ChaiProvider: void writeBinaryAttribute(java.lang.String,java.lang.String,byte[][],boolean,com.novell.ldapchai.ChaiRequestControl[])>(v, "unicodePwd", v, 1, v);
goto label;
label:
virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: void writeBinaryAttribute(java.lang.String,byte[][])>("unicodePwd", v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<com.novell.ldapchai.exception.ChaiOperationException: com.novell.ldapchai.exception.ChaiError getErrorCode()>();
v = <com.novell.ldapchai.exception.ChaiError: com.novell.ldapchai.exception.ChaiError UNKNOWN>;
if v != v goto label;
v = new com.novell.ldapchai.exception.ChaiOperationException;
v = virtualinvoke v.<com.novell.ldapchai.exception.ChaiOperationException: java.lang.String getMessage()>();
v = <com.novell.ldapchai.exception.ChaiError: com.novell.ldapchai.exception.ChaiError PASSWORD_BADPASSWORD>;
specialinvoke v.<com.novell.ldapchai.exception.ChaiOperationException: void <init>(java.lang.String,com.novell.ldapchai.exception.ChaiError,java.lang.Throwable)>(v, v, v);
throw v;
label:
throw v;
label:
return;
catch java.io.UnsupportedEncodingException from label to label with label;
catch com.novell.ldapchai.exception.ChaiOperationException from label to label with label;
}
public boolean isPasswordExpired() throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiOperationException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
int v, v, v;
java.lang.String v;
boolean v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String readStringAttribute(java.lang.String)>("msDS-User-Account-Control-Computed");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = v & 8388608;
if v != 8388608 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 0;
}
public final java.lang.String readGivenName() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String readStringAttribute(java.lang.String)>("givenName");
return v;
}
public final java.time.Instant readLastLoginTime() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
java.lang.String[] v;
java.util.HashSet v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.util.Map v;
boolean v, v, v;
java.time.Instant v, v, v, v, v, v;
java.util.List v;
java.lang.Object v, v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = new java.util.HashSet;
v = newarray (java.lang.String)[2];
v[0] = "lastLogon";
v[1] = "lastLogonTimestamp";
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<java.util.HashSet: void <init>(java.util.Collection)>(v);
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.util.Map readStringAttributes(java.util.Set)>(v);
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>("lastLogon");
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("lastLogon");
v = staticinvoke <com.novell.ldapchai.impl.ad.entry.ADEntries: java.time.Instant convertWinEpochToDate(java.lang.String)>(v);
goto label;
label:
v = null;
label:
v = v;
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>("lastLogonTimestamp");
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("lastLogonTimestamp");
v = staticinvoke <com.novell.ldapchai.impl.ad.entry.ADEntries: java.time.Instant convertWinEpochToDate(java.lang.String)>(v);
goto label;
label:
v = null;
label:
v = v;
if v == null goto label;
if v != null goto label;
label:
if v != null goto label;
v = v;
goto label;
label:
v = v;
label:
return v;
label:
v = virtualinvoke v.<java.time.Instant: boolean isAfter(java.time.Instant)>(v);
if v == 0 goto label;
v = v;
goto label;
label:
v = v;
label:
return v;
}
public final void changePassword(java.lang.String, java.lang.String) throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiPasswordPolicyException, com.novell.ldapchai.exception.ChaiOperationException
{
byte[] v, v;
java.lang.IllegalStateException v;
com.novell.ldapchai.exception.ChaiPasswordPolicyException v, v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v, v, v, v, v, v, v;
com.novell.ldapchai.exception.ChaiOperationException v;
com.novell.ldapchai.exception.ChaiError v, v, v, v;
java.io.UnsupportedEncodingException v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
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[])>("\"\u0001\"");
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[])>("\"\u0001\"");
label:
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.lang.String)>("UTF-16LE");
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.lang.String)>("UTF-16LE");
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String,java.lang.Throwable)>("unexpected error, missing \'UTF-16LE\' character encoder", v);
throw v;
label:
virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: void replaceBinaryAttribute(java.lang.String,byte[],byte[])>("unicodePwd", v, v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<com.novell.ldapchai.exception.ChaiOperationException: com.novell.ldapchai.exception.ChaiError getErrorCode()>();
v = <com.novell.ldapchai.exception.ChaiError: com.novell.ldapchai.exception.ChaiError UNKNOWN>;
if v != v goto label;
v = new com.novell.ldapchai.exception.ChaiPasswordPolicyException;
v = virtualinvoke v.<com.novell.ldapchai.exception.ChaiOperationException: java.lang.String getMessage()>();
v = <com.novell.ldapchai.exception.ChaiError: com.novell.ldapchai.exception.ChaiError PASSWORD_BADPASSWORD>;
specialinvoke v.<com.novell.ldapchai.exception.ChaiPasswordPolicyException: void <init>(java.lang.String,com.novell.ldapchai.exception.ChaiError)>(v, v);
throw v;
label:
v = new com.novell.ldapchai.exception.ChaiPasswordPolicyException;
v = virtualinvoke v.<com.novell.ldapchai.exception.ChaiOperationException: java.lang.String getMessage()>();
v = virtualinvoke v.<com.novell.ldapchai.exception.ChaiOperationException: java.lang.String getMessage()>();
v = staticinvoke <com.novell.ldapchai.exception.ChaiErrors: com.novell.ldapchai.exception.ChaiError getErrorForMessage(java.lang.String)>(v);
specialinvoke v.<com.novell.ldapchai.exception.ChaiPasswordPolicyException: void <init>(java.lang.String,com.novell.ldapchai.exception.ChaiError)>(v, v);
throw v;
label:
return;
catch java.io.UnsupportedEncodingException from label to label with label;
catch com.novell.ldapchai.exception.ChaiOperationException from label to label with label;
}
public void expirePassword() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: void writeStringAttribute(java.lang.String,java.lang.String)>("pwdLastSet", "0");
return;
}
public boolean isPasswordLocked() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.ChaiEntry v;
long v, v, v, v, v, v, v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
byte v, v;
int v, v, v, v;
java.lang.String v, v;
boolean v, v, v;
java.time.Instant v, v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String readStringAttribute(java.lang.String)>("msDS-User-Account-Control-Computed");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = v & 16;
if v != 16 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.time.Instant readDateAttribute(java.lang.String)>("lockoutTime");
if v == null goto label;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.ChaiEntry getParentEntry()>();
v = 0L;
v = 0;
label:
v = v cmp 0L;
if v != 0 goto label;
if v == null goto label;
if v >= 50 goto label;
v = interfaceinvoke v.<com.novell.ldapchai.ChaiEntry: boolean compareStringAttribute(java.lang.String,java.lang.String)>("objectClass", "domainDNS");
if v == 0 goto label;
v = interfaceinvoke v.<com.novell.ldapchai.ChaiEntry: java.lang.String readStringAttribute(java.lang.String)>("lockoutDuration");
v = staticinvoke <java.lang.Long: long parseLong(java.lang.String)>(v);
v = staticinvoke <java.lang.Math: long abs(long)>(v);
v = v / 10000L;
label:
v = interfaceinvoke v.<com.novell.ldapchai.ChaiEntry: com.novell.ldapchai.ChaiEntry getParentEntry()>();
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = v + v;
v = staticinvoke <java.time.Instant: java.time.Instant ofEpochMilli(long)>(v);
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = v cmp v;
if v > 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 0;
}
public java.time.Instant readPasswordModificationDate() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.time.Instant v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.time.Instant readDateAttribute(java.lang.String)>("pwdLastSet");
return v;
}
public java.time.Instant readPasswordExpirationDate() throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiOperationException
{
java.lang.String[] v;
long v, v, v, v, v, v;
java.util.HashSet v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
byte v;
java.util.Map v;
int v, v, v, v, v, v;
java.lang.String v;
java.time.Instant v, v, v;
java.util.List v;
java.lang.Object v, v, v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = newarray (java.lang.String)[3];
v[0] = "pwdLastSet";
v[1] = "userAccountControl";
v[2] = "msDS-UserPasswordExpiryTimeComputed";
v = new java.util.HashSet;
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
specialinvoke v.<java.util.HashSet: void <init>(java.util.Collection)>(v);
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.util.Map readStringAttributes(java.util.Set)>(v);
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("msDS-UserPasswordExpiryTimeComputed");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <com.novell.ldapchai.impl.ad.entry.ADEntries: java.time.Instant convertWinEpochToDate(java.lang.String)>(v);
return v;
label:
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("userAccountControl");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <com.novell.ldapchai.util.internal.StringHelper: int convertStrToInt(java.lang.String,int)>(v, 0);
v = 65536 & v;
if v != 65536 goto label;
return null;
label:
v = 0L;
v = specialinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String readDomainValue(java.lang.String)>("maxPwdAge");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <java.lang.Long: long parseLong(java.lang.String)>(v);
v = staticinvoke <java.lang.Math: long abs(long)>(v);
v = v / 10000L;
v = v;
label:
v = v cmp 0L;
if v != 0 goto label;
return null;
label:
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>("pwdLastSet");
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
v = staticinvoke <com.novell.ldapchai.impl.ad.entry.ADEntries: java.time.Instant convertWinEpochToDate(java.lang.String)>(v);
if v == null goto label;
v = virtualinvoke v.<java.time.Instant: long toEpochMilli()>();
v = v + v;
v = staticinvoke <java.time.Instant: java.time.Instant ofEpochMilli(long)>(v);
return v;
label:
return null;
}
private java.lang.String readDomainValue(java.lang.String) throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiOperationException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
int v;
com.novell.ldapchai.ChaiEntry v;
java.lang.String v, v;
boolean v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v := @parameter: java.lang.String;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.ChaiEntry getParentEntry()>();
v = 0;
label:
if v == null goto label;
if v >= 50 goto label;
v = interfaceinvoke v.<com.novell.ldapchai.ChaiEntry: boolean compareStringAttribute(java.lang.String,java.lang.String)>("objectClass", "domainDNS");
if v == 0 goto label;
v = interfaceinvoke v.<com.novell.ldapchai.ChaiEntry: java.lang.String readStringAttribute(java.lang.String)>(v);
return v;
label:
v = interfaceinvoke v.<com.novell.ldapchai.ChaiEntry: com.novell.ldapchai.ChaiEntry getParentEntry()>();
v = v + 1;
goto label;
label:
return null;
}
public java.lang.String readGUID() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = staticinvoke <com.novell.ldapchai.impl.ad.entry.ADEntries: java.lang.String readGUID(com.novell.ldapchai.ChaiEntry)>(v);
return v;
}
public boolean isAccountEnabled() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
java.util.Iterator v;
com.novell.ldapchai.util.SearchHelper v;
java.util.Set v;
com.novell.ldapchai.provider.ChaiProvider v;
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.util.Map v;
java.lang.Object v;
java.lang.String v, v;
com.novell.ldapchai.provider.SearchScope v;
boolean v, v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = new com.novell.ldapchai.util.SearchHelper;
specialinvoke v.<com.novell.ldapchai.util.SearchHelper: void <init>()>();
virtualinvoke v.<com.novell.ldapchai.util.SearchHelper: void setFilter(java.lang.String)>("(useraccountcontrol:1.2.840.113556.1.4.803:=2)");
v = <com.novell.ldapchai.provider.SearchScope: com.novell.ldapchai.provider.SearchScope BASE>;
virtualinvoke v.<com.novell.ldapchai.util.SearchHelper: void setSearchScope(com.novell.ldapchai.provider.SearchScope)>(v);
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: com.novell.ldapchai.provider.ChaiProvider getChaiProvider()>();
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String getEntryDN()>();
v = interfaceinvoke v.<com.novell.ldapchai.provider.ChaiProvider: java.util.Map search(java.lang.String,com.novell.ldapchai.util.SearchHelper)>(v, v);
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
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()>();
if v == null goto label;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String getEntryDN()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
return 0;
label:
return 1;
}
public java.time.Instant readAccountExpirationDate() throws com.novell.ldapchai.exception.ChaiUnavailableException, com.novell.ldapchai.exception.ChaiOperationException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.time.Instant v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.time.Instant readDateAttribute(java.lang.String)>("accountExpires");
return v;
}
public java.lang.String readCanonicalDN() throws com.novell.ldapchai.exception.ChaiOperationException, com.novell.ldapchai.exception.ChaiUnavailableException
{
com.novell.ldapchai.impl.ad.entry.UserImpl v;
java.lang.String v;
v := @this: com.novell.ldapchai.impl.ad.entry.UserImpl;
v = virtualinvoke v.<com.novell.ldapchai.impl.ad.entry.UserImpl: java.lang.String readStringAttribute(java.lang.String)>("distinguishedName");
return v;
}
}