public class org.apache.shiro.crypto.DefaultBlockCipherService extends org.apache.shiro.crypto.AbstractSymmetricCipherService
{
private static final int DEFAULT_BLOCK_SIZE;
private static final java.lang.String TRANSFORMATION_STRING_DELIMITER;
private static final int DEFAULT_STREAMING_BLOCK_SIZE;
private java.lang.String modeName;
private int blockSize;
private java.lang.String paddingSchemeName;
private java.lang.String streamingModeName;
private int streamingBlockSize;
private java.lang.String streamingPaddingSchemeName;
private java.lang.String transformationString;
private java.lang.String streamingTransformationString;
public void <init>(java.lang.String)
{
org.apache.shiro.crypto.PaddingScheme v, v;
org.apache.shiro.crypto.OperationMode v, v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v, v, v, v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
specialinvoke v.<org.apache.shiro.crypto.AbstractSymmetricCipherService: void <init>(java.lang.String)>(v);
v = <org.apache.shiro.crypto.OperationMode: org.apache.shiro.crypto.OperationMode CBC>;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String modeName> = v;
v = <org.apache.shiro.crypto.PaddingScheme: org.apache.shiro.crypto.PaddingScheme PKCS5>;
v = virtualinvoke v.<org.apache.shiro.crypto.PaddingScheme: java.lang.String getTransformationName()>();
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String paddingSchemeName> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: int blockSize> = 0;
v = <org.apache.shiro.crypto.OperationMode: org.apache.shiro.crypto.OperationMode CBC>;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingModeName> = v;
v = <org.apache.shiro.crypto.PaddingScheme: org.apache.shiro.crypto.PaddingScheme PKCS5>;
v = virtualinvoke v.<org.apache.shiro.crypto.PaddingScheme: java.lang.String getTransformationName()>();
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingPaddingSchemeName> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: int streamingBlockSize> = 8;
return;
}
public java.lang.String getModeName()
{
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String modeName>;
return v;
}
public void setModeName(java.lang.String)
{
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String modeName> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String transformationString> = null;
return;
}
public void setMode(org.apache.shiro.crypto.OperationMode)
{
org.apache.shiro.crypto.OperationMode v;
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: org.apache.shiro.crypto.OperationMode;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: void setModeName(java.lang.String)>(v);
return;
}
public java.lang.String getPaddingSchemeName()
{
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String paddingSchemeName>;
return v;
}
public void setPaddingSchemeName(java.lang.String)
{
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String paddingSchemeName> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String transformationString> = null;
return;
}
public void setPaddingScheme(org.apache.shiro.crypto.PaddingScheme)
{
org.apache.shiro.crypto.PaddingScheme v;
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: org.apache.shiro.crypto.PaddingScheme;
v = virtualinvoke v.<org.apache.shiro.crypto.PaddingScheme: java.lang.String getTransformationName()>();
virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: void setPaddingSchemeName(java.lang.String)>(v);
return;
}
public int getBlockSize()
{
int v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: int blockSize>;
return v;
}
public void setBlockSize(int)
{
int v, v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: int;
v = staticinvoke <java.lang.Math: int max(int,int)>(0, v);
v.<org.apache.shiro.crypto.DefaultBlockCipherService: int blockSize> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String transformationString> = null;
return;
}
public java.lang.String getStreamingModeName()
{
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingModeName>;
return v;
}
private boolean isModeStreamingCompatible(java.lang.String)
{
org.apache.shiro.crypto.OperationMode v, v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v, v, v;
boolean v, v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
if v == null goto label;
v = <org.apache.shiro.crypto.OperationMode: org.apache.shiro.crypto.OperationMode ECB>;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = <org.apache.shiro.crypto.OperationMode: org.apache.shiro.crypto.OperationMode NONE>;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void setStreamingModeName(java.lang.String)
{
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v, v;
java.lang.IllegalArgumentException v;
boolean v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: boolean isModeStreamingCompatible(java.lang.String)>(v);
if v != 0 goto label;
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[])>("mode [\u] is not a valid operation mode for block cipher streaming.");
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingModeName> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingTransformationString> = null;
return;
}
public void setStreamingMode(org.apache.shiro.crypto.OperationMode)
{
org.apache.shiro.crypto.OperationMode v;
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: org.apache.shiro.crypto.OperationMode;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: void setStreamingModeName(java.lang.String)>(v);
return;
}
public java.lang.String getStreamingPaddingSchemeName()
{
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingPaddingSchemeName>;
return v;
}
public void setStreamingPaddingSchemeName(java.lang.String)
{
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingPaddingSchemeName> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingTransformationString> = null;
return;
}
public void setStreamingPaddingScheme(org.apache.shiro.crypto.PaddingScheme)
{
org.apache.shiro.crypto.PaddingScheme v;
java.lang.String v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: org.apache.shiro.crypto.PaddingScheme;
v = virtualinvoke v.<org.apache.shiro.crypto.PaddingScheme: java.lang.String getTransformationName()>();
virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: void setStreamingPaddingSchemeName(java.lang.String)>(v);
return;
}
public int getStreamingBlockSize()
{
int v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: int streamingBlockSize>;
return v;
}
public void setStreamingBlockSize(int)
{
int v, v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: int;
v = staticinvoke <java.lang.Math: int max(int,int)>(0, v);
v.<org.apache.shiro.crypto.DefaultBlockCipherService: int streamingBlockSize> = v;
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingTransformationString> = null;
return;
}
protected java.lang.String getTransformationString(boolean)
{
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v, v, v, v, v, v;
boolean v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: boolean;
if v == 0 goto label;
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingTransformationString>;
if v != null goto label;
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String buildStreamingTransformationString()>();
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingTransformationString> = v;
label:
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String streamingTransformationString>;
return v;
label:
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String transformationString>;
if v != null goto label;
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String buildTransformationString()>();
v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String transformationString> = v;
label:
v = v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String transformationString>;
return v;
}
private java.lang.String buildTransformationString()
{
org.apache.shiro.crypto.DefaultBlockCipherService v;
int v;
java.lang.String v, v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getModeName()>();
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getPaddingSchemeName()>();
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: int getBlockSize()>();
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String buildTransformationString(java.lang.String,java.lang.String,int)>(v, v, v);
return v;
}
private java.lang.String buildStreamingTransformationString()
{
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v, v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getStreamingModeName()>();
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getStreamingPaddingSchemeName()>();
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String buildTransformationString(java.lang.String,java.lang.String,int)>(v, v, 0);
return v;
}
private java.lang.String buildTransformationString(java.lang.String, java.lang.String, int)
{
org.apache.shiro.crypto.DefaultBlockCipherService v;
int v;
java.lang.StringBuilder v, v, v;
java.lang.String v, v, v, v;
boolean v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
v = new java.lang.StringBuilder;
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getAlgorithmName()>();
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>(v);
v = staticinvoke <org.apache.shiro.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("/");
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
if v <= 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
label:
v = staticinvoke <org.apache.shiro.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("/");
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
private boolean isModeInitializationVectorCompatible(java.lang.String)
{
org.apache.shiro.crypto.OperationMode v, v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v, v, v;
boolean v, v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: java.lang.String;
if v == null goto label;
v = <org.apache.shiro.crypto.OperationMode: org.apache.shiro.crypto.OperationMode ECB>;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = <org.apache.shiro.crypto.OperationMode: org.apache.shiro.crypto.OperationMode NONE>;
v = virtualinvoke v.<org.apache.shiro.crypto.OperationMode: java.lang.String name()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected boolean isGenerateInitializationVectors(boolean)
{
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v;
boolean v, v, v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: boolean;
if v != 0 goto label;
v = specialinvoke v.<org.apache.shiro.crypto.AbstractSymmetricCipherService: boolean isGenerateInitializationVectors()>();
if v == 0 goto label;
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getModeName()>();
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: boolean isModeInitializationVectorCompatible(java.lang.String)>(v);
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected byte[] generateInitializationVector(boolean)
{
byte[] v;
java.lang.IllegalStateException v, v;
org.apache.shiro.crypto.DefaultBlockCipherService v;
java.lang.String v, v, v, v;
boolean v, v, v;
v := @this: org.apache.shiro.crypto.DefaultBlockCipherService;
v := @parameter: boolean;
if v == 0 goto label;
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getStreamingModeName()>();
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: boolean isModeInitializationVectorCompatible(java.lang.String)>(v);
if v != 0 goto label;
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[])>("streamingMode attribute value [\u] does not support Initialization Vectors.  Ensure the streamingMode value represents an operation mode that is compatible with initialization vectors.");
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: java.lang.String getModeName()>();
v = specialinvoke v.<org.apache.shiro.crypto.DefaultBlockCipherService: boolean isModeInitializationVectorCompatible(java.lang.String)>(v);
if v != 0 goto label;
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[])>("mode attribute value [\u] does not support Initialization Vectors.  Ensure the mode value represents an operation mode that is compatible with initialization vectors.");
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = specialinvoke v.<org.apache.shiro.crypto.AbstractSymmetricCipherService: byte[] generateInitializationVector(boolean)>(v);
return v;
}
}