Red Hat Application Migration Toolkit
package iaik.security.cipher;
import iaik.security.cipher.CAST128ParameterSpec;
import iaik.security.cipher.DESParameterSpec;
import iaik.security.cipher.GOSTParameterSpec;
import iaik.security.random.SecRandom;
import java.security.AlgorithmParameters;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.RC2ParameterSpec;
import javax.crypto.spec.RC5ParameterSpec;
abstract class l {
// $FF: synthetic field
static Class b;
int d;
String e;
byte[] a;
int c = 1;
static final int l = 6;
static final int f = 5;
static final int j = 4;
static final int g = 3;
static final int k = 2;
static final int i = 1;
static final int h = 0;
static Class a(String var0) {
try {
return Class.forName(var0);
} catch (ClassNotFoundException var2) {
throw new NoClassDefFoundError(var2.getMessage());
}
}
boolean a(int var1, int var2) {
if(var1 == 1) {
this.c = var1;
return true;
} else {
this.c = 0;
return false;
}
}
final String e() {
switch(this.c) {
case 2:
return this.e + " in CBC mode";
case 3:
return this.e + " in " + this.d * 8 + "-bit OFB mode";
case 4:
return this.e + " in " + this.d * 8 + "-bit CFB mode";
case 5:
return this.e + " in PCBC mode";
case 6:
return this.e + " in CTR mode";
default:
return this.e;
}
}
static byte[] a(int var0, AlgorithmParameterSpec var1, SecureRandom var2, int var3) throws InvalidAlgorithmParameterException {
byte[] var4 = null;
if(var1 != null) {
if(var1 instanceof IvParameterSpec) {
var4 = ((IvParameterSpec)var1).getIV();
} else if(var1 instanceof RC2ParameterSpec) {
var4 = ((RC2ParameterSpec)var1).getIV();
} else if(var1 instanceof RC5ParameterSpec) {
var4 = ((RC5ParameterSpec)var1).getIV();
} else if(var1 instanceof DESParameterSpec) {
var4 = ((DESParameterSpec)var1).getIV();
} else if(var1 instanceof GOSTParameterSpec) {
var4 = ((GOSTParameterSpec)var1).getIV();
} else if(var1 instanceof CAST128ParameterSpec) {
var4 = ((CAST128ParameterSpec)var1).getIV();
}
if(var4 != null && var3 != -1 && var4.length != var3) {
throw new InvalidAlgorithmParameterException("IV must be the same length as block size of the underlying cipher.");
}
}
if(var4 == null && var3 != -1) {
if(var0 != 1) {
throw new InvalidAlgorithmParameterException("You have to specify an IV in decrypt mode!");
}
if(var2 == null) {
var2 = SecRandom.getDefault();
}
var4 = new byte[var3];
var2.nextBytes(var4);
}
return var4;
}
abstract void a(int var1, Key var2, AlgorithmParameterSpec var3, SecureRandom var4) throws InvalidAlgorithmParameterException, InvalidKeyException;
void a(int var1, Key var2, AlgorithmParameters var3, SecureRandom var4) throws InvalidAlgorithmParameterException, InvalidKeyException {
try {
AlgorithmParameterSpec var5 = var3.getParameterSpec(b != null?b:(b = a("javax.crypto.spec.IvParameterSpec")));
this.a(var1, var2, var5, var4);
} catch (InvalidParameterSpecException var6) {
throw new InvalidAlgorithmParameterException(var6.toString());
}
}
AlgorithmParameters d() {
byte[] var1 = this.engineGetIV();
if(var1 == null) {
return null;
} else {
try {
IvParameterSpec var2 = new IvParameterSpec(var1);
AlgorithmParameters var3 = AlgorithmParameters.getInstance(this.e, "IAIK");
var3.init(var2);
return var3;
} catch (Exception var4) {
return null;
}
}
}
int a(Key var1) throws InvalidKeyException {
return var1.getEncoded().length << 3;
}
byte[] engineGetIV() {
return this.a;
}
final int c() {
return this.d;
}
abstract void b(byte[] var1, int var2, int var3, byte[] var4, int var5) throws IllegalBlockSizeException;
abstract void a(byte[] var1, int var2, int var3, byte[] var4, int var5) throws IllegalBlockSizeException;
l(String var1, int var2) {
this.e = var1;
this.d = var2;
this.a = null;
}
}