final class com.google.common.hash.MacHashFunction extends com.google.common.hash.AbstractHashFunction
{
private final javax.crypto.Mac prototype;
private final java.security.Key key;
private final java.lang.String toString;
private final int bits;
private final boolean supportsClone;
void <init>(java.lang.String, java.security.Key, java.lang.String)
{
javax.crypto.Mac v, v, v;
com.google.common.hash.MacHashFunction v;
java.security.Key v;
int v, v;
java.lang.Object v, v;
java.lang.String v, v;
boolean v;
v := @this: com.google.common.hash.MacHashFunction;
v := @parameter: java.lang.String;
v := @parameter: java.security.Key;
v := @parameter: java.lang.String;
specialinvoke v.<com.google.common.hash.AbstractHashFunction: void <init>()>();
v = staticinvoke <com.google.common.hash.MacHashFunction: javax.crypto.Mac getMac(java.lang.String,java.security.Key)>(v, v);
v.<com.google.common.hash.MacHashFunction: javax.crypto.Mac prototype> = v;
v = staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v.<com.google.common.hash.MacHashFunction: java.security.Key key> = v;
v = staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v.<com.google.common.hash.MacHashFunction: java.lang.String toString> = v;
v = v.<com.google.common.hash.MacHashFunction: javax.crypto.Mac prototype>;
v = virtualinvoke v.<javax.crypto.Mac: int getMacLength()>();
v = v * 8;
v.<com.google.common.hash.MacHashFunction: int bits> = v;
v = v.<com.google.common.hash.MacHashFunction: javax.crypto.Mac prototype>;
v = staticinvoke <com.google.common.hash.MacHashFunction: boolean supportsClone(javax.crypto.Mac)>(v);
v.<com.google.common.hash.MacHashFunction: boolean supportsClone> = v;
return;
}
public int bits()
{
com.google.common.hash.MacHashFunction v;
int v;
v := @this: com.google.common.hash.MacHashFunction;
v = v.<com.google.common.hash.MacHashFunction: int bits>;
return v;
}
private static boolean supportsClone(javax.crypto.Mac)
{
javax.crypto.Mac v;
java.lang.CloneNotSupportedException v;
v := @parameter: javax.crypto.Mac;
label:
virtualinvoke v.<javax.crypto.Mac: java.lang.Object clone()>();
label:
return 1;
label:
v := @caughtexception;
return 0;
catch java.lang.CloneNotSupportedException from label to label with label;
}
private static javax.crypto.Mac getMac(java.lang.String, java.security.Key)
{
java.security.Key v;
java.lang.IllegalStateException v;
java.security.NoSuchAlgorithmException v;
javax.crypto.Mac v;
java.security.InvalidKeyException v;
java.lang.String v;
java.lang.IllegalArgumentException v;
v := @parameter: java.lang.String;
v := @parameter: java.security.Key;
label:
v = staticinvoke <javax.crypto.Mac: javax.crypto.Mac getInstance(java.lang.String)>(v);
virtualinvoke v.<javax.crypto.Mac: void init(java.security.Key)>(v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.security.NoSuchAlgorithmException from label to label with label;
catch java.security.InvalidKeyException from label to label with label;
}
public com.google.common.hash.Hasher newHasher()
{
com.google.common.hash.MacHashFunction$MacHasher v, v;
javax.crypto.Mac v, v, v;
java.lang.CloneNotSupportedException v;
com.google.common.hash.MacHashFunction v;
java.security.Key v;
java.lang.Object v;
java.lang.String v;
boolean v;
v := @this: com.google.common.hash.MacHashFunction;
v = v.<com.google.common.hash.MacHashFunction: boolean supportsClone>;
if v == 0 goto label;
label:
v = new com.google.common.hash.MacHashFunction$MacHasher;
v = v.<com.google.common.hash.MacHashFunction: javax.crypto.Mac prototype>;
v = virtualinvoke v.<javax.crypto.Mac: java.lang.Object clone()>();
specialinvoke v.<com.google.common.hash.MacHashFunction$MacHasher: void <init>(javax.crypto.Mac)>(v);
label:
return v;
label:
v := @caughtexception;
label:
v = new com.google.common.hash.MacHashFunction$MacHasher;
v = v.<com.google.common.hash.MacHashFunction: javax.crypto.Mac prototype>;
v = virtualinvoke v.<javax.crypto.Mac: java.lang.String getAlgorithm()>();
v = v.<com.google.common.hash.MacHashFunction: java.security.Key key>;
v = staticinvoke <com.google.common.hash.MacHashFunction: javax.crypto.Mac getMac(java.lang.String,java.security.Key)>(v, v);
specialinvoke v.<com.google.common.hash.MacHashFunction$MacHasher: void <init>(javax.crypto.Mac)>(v);
return v;
catch java.lang.CloneNotSupportedException from label to label with label;
}
public java.lang.String toString()
{
com.google.common.hash.MacHashFunction v;
java.lang.String v;
v := @this: com.google.common.hash.MacHashFunction;
v = v.<com.google.common.hash.MacHashFunction: java.lang.String toString>;
return v;
}
}