class com.novell.ldapchai.cr.PasswordCryptAnswer extends java.lang.Object implements com.novell.ldapchai.cr.Answer
{
private static final java.util.function.Supplier SECURE_RANDOM_SUPPLIER;
private final java.lang.String answerHash;
private final boolean caseInsensitive;
private final com.novell.ldapchai.cr.Answer$FormatType formatType;
private void <init>(java.lang.String, boolean, com.novell.ldapchai.cr.Answer$FormatType)
{
com.novell.ldapchai.cr.Answer$FormatType v;
com.novell.ldapchai.cr.PasswordCryptAnswer v;
int v;
java.lang.String v;
java.lang.IllegalArgumentException v;
boolean v;
v := @this: com.novell.ldapchai.cr.PasswordCryptAnswer;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v := @parameter: com.novell.ldapchai.cr.Answer$FormatType;
specialinvoke v.<java.lang.Object: void <init>()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= 1 goto label;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("missing answer text");
throw v;
label:
v.<com.novell.ldapchai.cr.PasswordCryptAnswer: java.lang.String answerHash> = v;
v.<com.novell.ldapchai.cr.PasswordCryptAnswer: boolean caseInsensitive> = v;
v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType> = v;
return;
}
private void <init>(com.novell.ldapchai.cr.AnswerConfiguration, java.lang.String)
{
byte[] v;
com.novell.ldapchai.cr.AnswerConfiguration v;
java.util.function.Supplier v;
int[] v;
int v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v;
boolean v, v;
com.novell.ldapchai.cr.Answer$FormatType v, v, v;
com.novell.ldapchai.cr.PasswordCryptAnswer v;
java.lang.IllegalArgumentException v, v;
char[] v;
java.lang.Object v;
v := @this: com.novell.ldapchai.cr.PasswordCryptAnswer;
v := @parameter: com.novell.ldapchai.cr.AnswerConfiguration;
v := @parameter: java.lang.String;
specialinvoke v.<java.lang.Object: void <init>()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= 1 goto label;
label:
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("missing answerHash text");
throw v;
label:
v = virtualinvoke v.<com.novell.ldapchai.cr.AnswerConfiguration: boolean isCaseInsensitive()>();
v.<com.novell.ldapchai.cr.PasswordCryptAnswer: boolean caseInsensitive> = v;
v = v.<com.novell.ldapchai.cr.AnswerConfiguration: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType> = v;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: boolean caseInsensitive>;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
goto label;
label:
v = v;
label:
v = virtualinvoke v.<com.novell.ldapchai.cr.AnswerConfiguration: int getIterations()>();
v = staticinvoke <java.lang.Math: int max(int,int)>(10, v);
v = virtualinvoke v.<com.novell.ldapchai.cr.AnswerConfiguration: int getSaltCharCount()>();
v = staticinvoke <java.lang.Math: int max(int,int)>(16, v);
v = <com.novell.ldapchai.cr.PasswordCryptAnswer$1: int[] $SwitchMap$com$novell$ldapchai$cr$Answer$FormatType>;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = virtualinvoke v.<com.novell.ldapchai.cr.Answer$FormatType: int ordinal()>();
v = v[v];
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = newarray (byte)[v];
v = <com.novell.ldapchai.cr.PasswordCryptAnswer: java.util.function.Supplier SECURE_RANDOM_SUPPLIER>;
v = interfaceinvoke v.<java.util.function.Supplier: java.lang.Object get()>();
virtualinvoke v.<java.security.SecureRandom: void nextBytes(byte[])>(v);
v = virtualinvoke v.<java.lang.String: char[] toCharArray()>();
v = staticinvoke <org.bouncycastle.crypto.generators.OpenBSDBCrypt: java.lang.String generate(char[],byte[],int)>(v, v, v);
v.<com.novell.ldapchai.cr.PasswordCryptAnswer: java.lang.String answerHash> = v;
goto label;
label:
v = staticinvoke <com.novell.ldapchai.util.internal.SCryptUtil: java.lang.String scrypt(java.lang.String,int,int)>(v, v, v);
v.<com.novell.ldapchai.cr.PasswordCryptAnswer: java.lang.String answerHash> = v;
goto label;
label:
v = new java.lang.IllegalArgumentException;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = virtualinvoke v.<com.novell.ldapchai.cr.Answer$FormatType: java.lang.String toString()>();
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[])>("can\'t test answer for unknown format \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
public org.jrivard.xmlchai.XmlElement toXml()
{
com.novell.ldapchai.cr.Answer$FormatType v;
com.novell.ldapchai.cr.PasswordCryptAnswer v;
java.lang.String v, v;
org.jrivard.xmlchai.XmlFactory v;
org.jrivard.xmlchai.XmlElement v;
v := @this: com.novell.ldapchai.cr.PasswordCryptAnswer;
v = staticinvoke <org.jrivard.xmlchai.XmlFactory: org.jrivard.xmlchai.XmlFactory getFactory()>();
v = interfaceinvoke v.<org.jrivard.xmlchai.XmlFactory: org.jrivard.xmlchai.XmlElement newElement(java.lang.String)>("answer");
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: java.lang.String answerHash>;
interfaceinvoke v.<org.jrivard.xmlchai.XmlElement: void setText(java.lang.String)>(v);
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = virtualinvoke v.<com.novell.ldapchai.cr.Answer$FormatType: java.lang.String toString()>();
interfaceinvoke v.<org.jrivard.xmlchai.XmlElement: void setAttribute(java.lang.String,java.lang.String)>("format", v);
return v;
}
public boolean testAnswer(java.lang.String)
{
int[] v;
int v, v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v;
com.novell.ldapchai.cr.Answer$FormatType v, v;
com.novell.ldapchai.cr.PasswordCryptAnswer v;
java.lang.IllegalArgumentException v;
char[] v;
v := @this: com.novell.ldapchai.cr.PasswordCryptAnswer;
v := @parameter: java.lang.String;
if v != null goto label;
return 0;
label:
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: boolean caseInsensitive>;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
goto label;
label:
v = v;
label:
v = <com.novell.ldapchai.cr.PasswordCryptAnswer$1: int[] $SwitchMap$com$novell$ldapchai$cr$Answer$FormatType>;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = virtualinvoke v.<com.novell.ldapchai.cr.Answer$FormatType: int ordinal()>();
v = v[v];
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: java.lang.String answerHash>;
v = virtualinvoke v.<java.lang.String: char[] toCharArray()>();
v = staticinvoke <org.bouncycastle.crypto.generators.OpenBSDBCrypt: boolean checkPassword(java.lang.String,char[])>(v, v);
return v;
label:
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: java.lang.String answerHash>;
v = staticinvoke <com.novell.ldapchai.util.internal.SCryptUtil: boolean check(java.lang.String,java.lang.String)>(v, v);
return v;
label:
v = new java.lang.IllegalArgumentException;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = virtualinvoke v.<com.novell.ldapchai.cr.Answer$FormatType: java.lang.String toString()>();
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[])>("can\'t test answer for unknown format \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
}
public com.novell.ldapchai.cr.bean.AnswerBean asAnswerBean()
{
com.novell.ldapchai.cr.Answer$FormatType v;
com.novell.ldapchai.cr.PasswordCryptAnswer v;
int v;
com.novell.ldapchai.cr.bean.AnswerBean v;
java.lang.String v;
boolean v;
v := @this: com.novell.ldapchai.cr.PasswordCryptAnswer;
v = new com.novell.ldapchai.cr.bean.AnswerBean;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: java.lang.String answerHash>;
v = v.<com.novell.ldapchai.cr.PasswordCryptAnswer: boolean caseInsensitive>;
v = (int) -1;
specialinvoke v.<com.novell.ldapchai.cr.bean.AnswerBean: void <init>(com.novell.ldapchai.cr.Answer$FormatType,java.lang.String,java.lang.String,java.lang.String,int,boolean)>(v, null, v, null, v, v);
return v;
}
static void <clinit>()
{
java.util.function.Supplier v;
v = staticinvoke <com.novell.ldapchai.cr.PasswordCryptAnswer$init__36: java.util.function.Supplier bootstrap$()>();
<com.novell.ldapchai.cr.PasswordCryptAnswer: java.util.function.Supplier SECURE_RANDOM_SUPPLIER> = v;
return;
}
}