class com.novell.ldapchai.cr.HashSaltAnswer extends java.lang.Object implements com.novell.ldapchai.cr.Answer
{
private static final java.lang.String VERSION_SEPARATOR;
private static final com.novell.ldapchai.cr.HashSaltAnswer$VERSION DEFAULT_VERSION;
protected final java.lang.String answerHash;
protected final java.lang.String salt;
protected final int hashCount;
protected final boolean caseInsensitive;
protected final com.novell.ldapchai.cr.Answer$FormatType formatType;
protected final com.novell.ldapchai.cr.HashSaltAnswer$VERSION version;
void <init>(java.lang.String, java.lang.String, int, boolean, com.novell.ldapchai.cr.Answer$FormatType, com.novell.ldapchai.cr.HashSaltAnswer$VERSION)
{
com.novell.ldapchai.cr.HashSaltAnswer v;
com.novell.ldapchai.cr.Answer$FormatType v;
java.lang.IllegalArgumentException v;
com.novell.ldapchai.cr.HashSaltAnswer$VERSION v;
int v;
java.lang.String v, v;
boolean v, v;
v := @this: com.novell.ldapchai.cr.HashSaltAnswer;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: com.novell.ldapchai.cr.Answer$FormatType;
v := @parameter: com.novell.ldapchai.cr.HashSaltAnswer$VERSION;
specialinvoke v.<java.lang.Object: void <init>()>();
v = staticinvoke <com.novell.ldapchai.util.internal.StringHelper: boolean isEmpty(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("missing answerHash value");
throw v;
label:
staticinvoke <com.novell.ldapchai.cr.HashSaltAnswer$HashType: com.novell.ldapchai.cr.HashSaltAnswer$HashType forFormatType(com.novell.ldapchai.cr.Answer$FormatType)>(v);
v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String answerHash> = v;
v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.HashSaltAnswer$VERSION version> = v;
v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType> = v;
v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String salt> = v;
v.<com.novell.ldapchai.cr.HashSaltAnswer: int hashCount> = v;
v.<com.novell.ldapchai.cr.HashSaltAnswer: boolean caseInsensitive> = v;
return;
}
void <init>(com.novell.ldapchai.cr.AnswerConfiguration, java.lang.String)
{
com.novell.ldapchai.cr.HashSaltAnswer v;
com.novell.ldapchai.cr.AnswerConfiguration v;
int v, v;
java.lang.String v, v, v, v, v, v, v;
boolean v, v, v, v;
com.novell.ldapchai.cr.Answer$FormatType v, v;
java.lang.IllegalArgumentException v;
com.novell.ldapchai.cr.HashSaltAnswer$VERSION v;
com.novell.ldapchai.cr.HashSaltAnswer$HashType v;
v := @this: com.novell.ldapchai.cr.HashSaltAnswer;
v := @parameter: com.novell.ldapchai.cr.AnswerConfiguration;
v := @parameter: java.lang.String;
specialinvoke v.<java.lang.Object: void <init>()>();
v = v.<com.novell.ldapchai.cr.AnswerConfiguration: int iterations>;
v.<com.novell.ldapchai.cr.HashSaltAnswer: int hashCount> = v;
v = v.<com.novell.ldapchai.cr.AnswerConfiguration: boolean caseInsensitive>;
v.<com.novell.ldapchai.cr.HashSaltAnswer: boolean caseInsensitive> = v;
v = v.<com.novell.ldapchai.cr.AnswerConfiguration: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType> = v;
v = <com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.HashSaltAnswer$VERSION DEFAULT_VERSION>;
v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.HashSaltAnswer$VERSION version> = v;
v = staticinvoke <com.novell.ldapchai.util.internal.StringHelper: boolean isEmpty(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("missing answer value");
throw v;
label:
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = staticinvoke <com.novell.ldapchai.cr.HashSaltAnswer$HashType: com.novell.ldapchai.cr.HashSaltAnswer$HashType forFormatType(com.novell.ldapchai.cr.Answer$FormatType)>(v);
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer$HashType: boolean isSaltEnabled()>();
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: boolean caseInsensitive>;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
goto label;
label:
v = v;
label:
v = v;
if v == 0 goto label;
v = virtualinvoke v.<com.novell.ldapchai.cr.AnswerConfiguration: int getSaltCharCount()>();
v = staticinvoke <com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String generateSalt(int)>(v);
goto label;
label:
v = "";
label:
v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String salt> = v;
if v == 0 goto label;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String salt>;
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[])>("\u0001\u0001");
goto label;
label:
v = v;
label:
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String hashValue(java.lang.String)>(v);
v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String answerHash> = v;
return;
}
public org.jrivard.xmlchai.XmlElement toXml()
{
com.novell.ldapchai.cr.HashSaltAnswer v;
com.novell.ldapchai.cr.Answer$FormatType v;
org.jrivard.xmlchai.XmlElement v;
com.novell.ldapchai.cr.HashSaltAnswer$VERSION v;
int v, v;
java.lang.String v, v, v, v, v, v, v;
org.jrivard.xmlchai.XmlFactory v;
boolean v;
v := @this: com.novell.ldapchai.cr.HashSaltAnswer;
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.HashSaltAnswer: com.novell.ldapchai.cr.HashSaltAnswer$VERSION version>;
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer$VERSION: java.lang.String toString()>();
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String answerHash>;
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[])>("\u0001:\u0001");
interfaceinvoke v.<org.jrivard.xmlchai.XmlElement: void setText(java.lang.String)>(v);
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String salt>;
v = staticinvoke <com.novell.ldapchai.util.internal.StringHelper: boolean isEmpty(java.lang.CharSequence)>(v);
if v != 0 goto label;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String salt>;
interfaceinvoke v.<org.jrivard.xmlchai.XmlElement: void setAttribute(java.lang.String,java.lang.String)>("salt", v);
label:
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: 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);
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: int hashCount>;
if v <= 1 goto label;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: int hashCount>;
v = staticinvoke <java.lang.String: java.lang.String valueOf(int)>(v);
interfaceinvoke v.<org.jrivard.xmlchai.XmlElement: void setAttribute(java.lang.String,java.lang.String)>("hashcount", v);
label:
return v;
}
public boolean testAnswer(java.lang.String)
{
com.novell.ldapchai.cr.HashSaltAnswer v;
java.lang.String v, v, v, v, v, v;
boolean v, v;
v := @this: com.novell.ldapchai.cr.HashSaltAnswer;
v := @parameter: java.lang.String;
if v != null goto label;
return 0;
label:
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: boolean caseInsensitive>;
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
goto label;
label:
v = v;
label:
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String salt>;
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[])>("\u0001\u0001");
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String hashValue(java.lang.String)>(v);
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String answerHash>;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
return v;
}
protected java.lang.String hashValue(java.lang.String)
{
com.novell.ldapchai.cr.HashSaltAnswer v;
com.novell.ldapchai.cr.Answer$FormatType v;
com.novell.ldapchai.cr.HashSaltAnswer$VERSION v;
int v;
java.lang.String v, v;
v := @this: com.novell.ldapchai.cr.HashSaltAnswer;
v := @parameter: java.lang.String;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: int hashCount>;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.HashSaltAnswer$VERSION version>;
v = staticinvoke <com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String doHash(java.lang.String,int,com.novell.ldapchai.cr.Answer$FormatType,com.novell.ldapchai.cr.HashSaltAnswer$VERSION)>(v, v, v, v);
return v;
}
static java.lang.String doHash(java.lang.String, int, com.novell.ldapchai.cr.Answer$FormatType, com.novell.ldapchai.cr.HashSaltAnswer$VERSION) throws java.lang.IllegalStateException
{
byte[] v, v;
java.lang.IllegalStateException v, v;
java.security.MessageDigest v;
com.novell.ldapchai.util.internal.StringHelper$Base64Options[] v, v;
java.nio.charset.Charset v;
int[] v;
int v, v, v, v;
java.lang.String v, v, v, v, v, v, v;
com.novell.ldapchai.cr.Answer$FormatType v;
com.novell.ldapchai.cr.HashSaltAnswer$VERSION v;
java.security.NoSuchAlgorithmException v;
com.novell.ldapchai.cr.HashSaltAnswer$HashType v;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: com.novell.ldapchai.cr.Answer$FormatType;
v := @parameter: com.novell.ldapchai.cr.HashSaltAnswer$VERSION;
v = staticinvoke <com.novell.ldapchai.cr.HashSaltAnswer$HashType: com.novell.ldapchai.cr.HashSaltAnswer$HashType forFormatType(com.novell.ldapchai.cr.Answer$FormatType)>(v);
label:
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer$HashType: java.lang.String getHashAlgName()>();
v = staticinvoke <java.security.MessageDigest: java.security.MessageDigest getInstance(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer$HashType: java.lang.String getHashAlgName()>();
v = virtualinvoke v.<java.security.NoSuchAlgorithmException: java.lang.String getMessage()>();
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[])>("unable to load \u message digest algorithm: \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = <com.novell.ldapchai.cr.ChaiCrFactory: java.nio.charset.Charset DEFAULT_CHARSET>;
v = virtualinvoke v.<java.lang.String: byte[] getBytes(java.nio.charset.Charset)>(v);
v = <com.novell.ldapchai.cr.HashSaltAnswer$1: int[] $SwitchMap$com$novell$ldapchai$cr$HashSaltAnswer$VERSION>;
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer$VERSION: int ordinal()>();
v = v[v];
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<java.security.MessageDigest: byte[] digest(byte[])>(v);
v = newarray (com.novell.ldapchai.util.internal.StringHelper$Base64Options)[0];
v = staticinvoke <com.novell.ldapchai.util.internal.StringHelper: java.lang.String base64Encode(byte[],com.novell.ldapchai.util.internal.StringHelper$Base64Options[])>(v, v);
return v;
label:
v = 0;
label:
if v >= v goto label;
v = virtualinvoke v.<java.security.MessageDigest: byte[] digest(byte[])>(v);
v = v + 1;
goto label;
label:
v = newarray (com.novell.ldapchai.util.internal.StringHelper$Base64Options)[0];
v = staticinvoke <com.novell.ldapchai.util.internal.StringHelper: java.lang.String base64Encode(byte[],com.novell.ldapchai.util.internal.StringHelper$Base64Options[])>(v, v);
return v;
label:
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("unexpected version enum in hash method");
throw v;
catch java.security.NoSuchAlgorithmException from label to label with label;
}
private static java.lang.String generateSalt(int)
{
char v;
java.security.SecureRandom v;
int v, v, v, v;
java.lang.StringBuilder v;
java.lang.String v, v, v;
v := @parameter: int;
v = new java.security.SecureRandom;
specialinvoke v.<java.security.SecureRandom: void <init>()>();
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = 0;
label:
if v >= v goto label;
v = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
v = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
v = virtualinvoke v.<java.lang.String: int length()>();
v = virtualinvoke v.<java.security.SecureRandom: int nextInt(int)>(v);
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(v);
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
public com.novell.ldapchai.cr.bean.AnswerBean asAnswerBean()
{
com.novell.ldapchai.cr.HashSaltAnswer v;
com.novell.ldapchai.cr.Answer$FormatType v;
com.novell.ldapchai.cr.HashSaltAnswer$VERSION v;
int v;
com.novell.ldapchai.cr.bean.AnswerBean v;
java.lang.String v, v, v, v;
boolean v;
v := @this: com.novell.ldapchai.cr.HashSaltAnswer;
v = new com.novell.ldapchai.cr.bean.AnswerBean;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.Answer$FormatType formatType>;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.HashSaltAnswer$VERSION version>;
v = virtualinvoke v.<com.novell.ldapchai.cr.HashSaltAnswer$VERSION: java.lang.String toString()>();
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String answerHash>;
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[])>("\u0001:\u0001");
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: java.lang.String salt>;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: int hashCount>;
v = v.<com.novell.ldapchai.cr.HashSaltAnswer: boolean caseInsensitive>;
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, v, v, v);
return v;
}
static void <clinit>()
{
com.novell.ldapchai.cr.HashSaltAnswer$VERSION v;
v = <com.novell.ldapchai.cr.HashSaltAnswer$VERSION: com.novell.ldapchai.cr.HashSaltAnswer$VERSION B>;
<com.novell.ldapchai.cr.HashSaltAnswer: com.novell.ldapchai.cr.HashSaltAnswer$VERSION DEFAULT_VERSION> = v;
return;
}
}