public class org.apache.shiro.authc.credential.DefaultPasswordService extends java.lang.Object implements org.apache.shiro.authc.credential.HashingPasswordService
{
public static final java.lang.String DEFAULT_HASH_ALGORITHM;
public static final int DEFAULT_HASH_ITERATIONS;
private static final org.slf4j.Logger log;
private org.apache.shiro.crypto.hash.HashService hashService;
private org.apache.shiro.crypto.hash.format.HashFormat hashFormat;
private org.apache.shiro.crypto.hash.format.HashFormatFactory hashFormatFactory;
private volatile boolean hashFormatWarned;
public void <init>()
{
org.apache.shiro.crypto.hash.format.DefaultHashFormatFactory v;
org.apache.shiro.crypto.hash.DefaultHashService v;
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.Shiro1CryptFormat v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.shiro.authc.credential.DefaultPasswordService: boolean hashFormatWarned> = 0;
v = new org.apache.shiro.crypto.hash.DefaultHashService;
specialinvoke v.<org.apache.shiro.crypto.hash.DefaultHashService: void <init>()>();
virtualinvoke v.<org.apache.shiro.crypto.hash.DefaultHashService: void setHashAlgorithmName(java.lang.String)>("SHA-256");
virtualinvoke v.<org.apache.shiro.crypto.hash.DefaultHashService: void setHashIterations(int)>(500000);
virtualinvoke v.<org.apache.shiro.crypto.hash.DefaultHashService: void setGeneratePublicSalt(boolean)>(1);
v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashService hashService> = v;
v = new org.apache.shiro.crypto.hash.format.Shiro1CryptFormat;
specialinvoke v.<org.apache.shiro.crypto.hash.format.Shiro1CryptFormat: void <init>()>();
v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormat hashFormat> = v;
v = new org.apache.shiro.crypto.hash.format.DefaultHashFormatFactory;
specialinvoke v.<org.apache.shiro.crypto.hash.format.DefaultHashFormatFactory: void <init>()>();
v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormatFactory hashFormatFactory> = v;
return;
}
public java.lang.String encryptPassword(java.lang.Object)
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.HashFormat v;
org.apache.shiro.crypto.hash.Hash v;
java.lang.Object v;
java.lang.String v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.Hash hashPassword(java.lang.Object)>(v);
virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: void checkHashFormatDurability()>();
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormat hashFormat>;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.format.HashFormat: java.lang.String format(org.apache.shiro.crypto.hash.Hash)>(v);
return v;
}
public org.apache.shiro.crypto.hash.Hash hashPassword(java.lang.Object)
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.util.ByteSource v;
org.apache.shiro.crypto.hash.Hash v;
java.lang.Object v;
org.apache.shiro.crypto.hash.HashRequest v;
org.apache.shiro.crypto.hash.HashService v;
boolean v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.util.ByteSource createByteSource(java.lang.Object)>(v);
if v == null goto label;
v = interfaceinvoke v.<org.apache.shiro.util.ByteSource: boolean isEmpty()>();
if v == 0 goto label;
label:
return null;
label:
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashRequest createHashRequest(org.apache.shiro.util.ByteSource)>(v);
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashService hashService>;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.HashService: org.apache.shiro.crypto.hash.Hash computeHash(org.apache.shiro.crypto.hash.HashRequest)>(v);
return v;
}
public boolean passwordsMatch(java.lang.Object, org.apache.shiro.crypto.hash.Hash)
{
org.apache.shiro.crypto.hash.HashRequest v;
org.apache.shiro.crypto.hash.HashService v;
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.util.ByteSource v;
org.apache.shiro.crypto.hash.Hash v, v;
java.lang.Object v;
java.lang.String v, v;
boolean v, v, v, v, v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: java.lang.Object;
v := @parameter: org.apache.shiro.crypto.hash.Hash;
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.util.ByteSource createByteSource(java.lang.Object)>(v);
if v == null goto label;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.Hash: boolean isEmpty()>();
if v == 0 goto label;
label:
if v == null goto label;
v = interfaceinvoke v.<org.apache.shiro.util.ByteSource: boolean isEmpty()>();
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
if v == null goto label;
v = interfaceinvoke v.<org.apache.shiro.util.ByteSource: boolean isEmpty()>();
if v == 0 goto label;
label:
return 0;
label:
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashRequest buildHashRequest(org.apache.shiro.util.ByteSource,org.apache.shiro.crypto.hash.Hash)>(v, v);
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashService hashService>;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.HashService: org.apache.shiro.crypto.hash.Hash computeHash(org.apache.shiro.crypto.hash.HashRequest)>(v);
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = specialinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: boolean constantEquals(java.lang.String,java.lang.String)>(v, v);
return v;
}
private boolean constantEquals(java.lang.String, java.lang.String)
{
byte[] v, v;
org.apache.shiro.authc.credential.DefaultPasswordService v;
java.lang.String v, v;
boolean v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: byte[] getBytes()>();
v = virtualinvoke v.<java.lang.String: byte[] getBytes()>();
v = staticinvoke <java.security.MessageDigest: boolean isEqual(byte[],byte[])>(v, v);
return v;
}
protected void checkHashFormatDurability()
{
org.slf4j.Logger v, v;
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.HashFormat v;
java.lang.Class v, v, v;
java.lang.String v, v, v, v;
boolean v, v, v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: boolean hashFormatWarned>;
if v != 0 goto label;
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormat hashFormat>;
v = v instanceof org.apache.shiro.crypto.hash.format.ParsableHashFormat;
if v != 0 goto label;
v = <org.apache.shiro.authc.credential.DefaultPasswordService: org.slf4j.Logger log>;
v = interfaceinvoke v.<org.slf4j.Logger: boolean isWarnEnabled()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = class "Lorg/apache/shiro/crypto/hash/format/ParsableHashFormat;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = class "Lorg/apache/shiro/crypto/hash/format/ParsableHashFormat;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, 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[])>("The configured hashFormat instance [\u] is not a \u implementation.  This is required if you wish to support backwards compatibility for saved password checking (almost always desirable).  Without a \u instance, any hashService configuration changes will break previously hashed/saved passwords.");
v = <org.apache.shiro.authc.credential.DefaultPasswordService: org.slf4j.Logger log>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>(v);
v.<org.apache.shiro.authc.credential.DefaultPasswordService: boolean hashFormatWarned> = 1;
label:
return;
}
protected org.apache.shiro.crypto.hash.HashRequest createHashRequest(org.apache.shiro.util.ByteSource)
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.util.ByteSource v;
org.apache.shiro.crypto.hash.HashRequest$Builder v, v;
org.apache.shiro.crypto.hash.HashRequest v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: org.apache.shiro.util.ByteSource;
v = new org.apache.shiro.crypto.hash.HashRequest$Builder;
specialinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: void <init>()>();
v = virtualinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: org.apache.shiro.crypto.hash.HashRequest$Builder setSource(org.apache.shiro.util.ByteSource)>(v);
v = virtualinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: org.apache.shiro.crypto.hash.HashRequest build()>();
return v;
}
protected org.apache.shiro.util.ByteSource createByteSource(java.lang.Object)
{
java.lang.Object v;
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.util.ByteSource v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: java.lang.Object;
v = staticinvoke <org.apache.shiro.util.ByteSource$Util: org.apache.shiro.util.ByteSource bytes(java.lang.Object)>(v);
return v;
}
public boolean passwordsMatch(java.lang.Object, java.lang.String)
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.HashFormat v, v;
org.apache.shiro.util.ByteSource v;
int v;
java.lang.String v, v;
boolean v, v, v, v, v, v;
org.apache.shiro.crypto.hash.HashRequest v;
org.apache.shiro.crypto.hash.HashService v;
org.apache.shiro.crypto.hash.format.HashFormatFactory v;
org.apache.shiro.crypto.hash.Hash v, v;
java.lang.Object v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: java.lang.Object;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.util.ByteSource createByteSource(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v != 0 goto label;
label:
if v == null goto label;
v = interfaceinvoke v.<org.apache.shiro.util.ByteSource: boolean isEmpty()>();
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
if v == null goto label;
v = interfaceinvoke v.<org.apache.shiro.util.ByteSource: boolean isEmpty()>();
if v == 0 goto label;
label:
return 0;
label:
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormatFactory hashFormatFactory>;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.format.HashFormatFactory: org.apache.shiro.crypto.hash.format.HashFormat getInstance(java.lang.String)>(v);
if v == null goto label;
v = v instanceof org.apache.shiro.crypto.hash.format.ParsableHashFormat;
if v == 0 goto label;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.format.ParsableHashFormat: org.apache.shiro.crypto.hash.Hash parse(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: boolean passwordsMatch(java.lang.Object,org.apache.shiro.crypto.hash.Hash)>(v, v);
return v;
label:
v = virtualinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashRequest createHashRequest(org.apache.shiro.util.ByteSource)>(v);
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashService hashService>;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.HashService: org.apache.shiro.crypto.hash.Hash computeHash(org.apache.shiro.crypto.hash.HashRequest)>(v);
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormat hashFormat>;
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.format.HashFormat: java.lang.String format(org.apache.shiro.crypto.hash.Hash)>(v);
v = specialinvoke v.<org.apache.shiro.authc.credential.DefaultPasswordService: boolean constantEquals(java.lang.String,java.lang.String)>(v, v);
return v;
}
protected org.apache.shiro.crypto.hash.HashRequest buildHashRequest(org.apache.shiro.util.ByteSource, org.apache.shiro.crypto.hash.Hash)
{
org.apache.shiro.crypto.hash.HashRequest v;
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.util.ByteSource v, v;
org.apache.shiro.crypto.hash.Hash v;
org.apache.shiro.crypto.hash.HashRequest$Builder v, v, v, v, v;
int v;
java.lang.String v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: org.apache.shiro.util.ByteSource;
v := @parameter: org.apache.shiro.crypto.hash.Hash;
v = new org.apache.shiro.crypto.hash.HashRequest$Builder;
specialinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: void <init>()>();
v = virtualinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: org.apache.shiro.crypto.hash.HashRequest$Builder setSource(org.apache.shiro.util.ByteSource)>(v);
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.Hash: java.lang.String getAlgorithmName()>();
v = virtualinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: org.apache.shiro.crypto.hash.HashRequest$Builder setAlgorithmName(java.lang.String)>(v);
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.Hash: org.apache.shiro.util.ByteSource getSalt()>();
v = virtualinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: org.apache.shiro.crypto.hash.HashRequest$Builder setSalt(org.apache.shiro.util.ByteSource)>(v);
v = interfaceinvoke v.<org.apache.shiro.crypto.hash.Hash: int getIterations()>();
v = virtualinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: org.apache.shiro.crypto.hash.HashRequest$Builder setIterations(int)>(v);
v = virtualinvoke v.<org.apache.shiro.crypto.hash.HashRequest$Builder: org.apache.shiro.crypto.hash.HashRequest build()>();
return v;
}
public org.apache.shiro.crypto.hash.HashService getHashService()
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.HashService v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashService hashService>;
return v;
}
public void setHashService(org.apache.shiro.crypto.hash.HashService)
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.HashService v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: org.apache.shiro.crypto.hash.HashService;
v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.HashService hashService> = v;
return;
}
public org.apache.shiro.crypto.hash.format.HashFormat getHashFormat()
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.HashFormat v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormat hashFormat>;
return v;
}
public void setHashFormat(org.apache.shiro.crypto.hash.format.HashFormat)
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.HashFormat v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: org.apache.shiro.crypto.hash.format.HashFormat;
v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormat hashFormat> = v;
return;
}
public org.apache.shiro.crypto.hash.format.HashFormatFactory getHashFormatFactory()
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.HashFormatFactory v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v = v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormatFactory hashFormatFactory>;
return v;
}
public void setHashFormatFactory(org.apache.shiro.crypto.hash.format.HashFormatFactory)
{
org.apache.shiro.authc.credential.DefaultPasswordService v;
org.apache.shiro.crypto.hash.format.HashFormatFactory v;
v := @this: org.apache.shiro.authc.credential.DefaultPasswordService;
v := @parameter: org.apache.shiro.crypto.hash.format.HashFormatFactory;
v.<org.apache.shiro.authc.credential.DefaultPasswordService: org.apache.shiro.crypto.hash.format.HashFormatFactory hashFormatFactory> = v;
return;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/shiro/authc/credential/DefaultPasswordService;");
<org.apache.shiro.authc.credential.DefaultPasswordService: org.slf4j.Logger log> = v;
return;
}
}