Red Hat Application Migration Toolkit
package iaik.security.cipher;
import iaik.security.cipher.RC2;
import iaik.security.pbe.PBEGenParameterSpec;
import iaik.security.spec.PBEKeyAndParameterSpec;
import iaik.utils.InternalErrorException;
import java.security.AlgorithmParameterGenerator;
import java.security.AlgorithmParameters;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.InvalidParameterSpecException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEParameterSpec;
public class PbeWithSHAAnd40BitRC2_CBC extends RC2 {
// $FF: synthetic field
static Class a;
protected AlgorithmParameters params;
static Class a(String var0) {
try {
return Class.forName(var0);
} catch (ClassNotFoundException var2) {
throw new NoClassDefFoundError(var2.getMessage());
}
}
protected void initCipher(int var1, Key var2, SecureRandom var3) throws InvalidAlgorithmParameterException, InvalidKeyException {
if(var2 != null && var2.getAlgorithm().equals("PBE") && var2.getFormat().equals("RAW_BMP")) {
byte[] var4 = var2.getEncoded();
PBEParameterSpec var5;
try {
var5 = (PBEParameterSpec)this.params.getParameterSpec(a != null?a:(a = a("javax.crypto.spec.PBEParameterSpec")));
} catch (InvalidParameterSpecException var12) {
throw new InvalidAlgorithmParameterException(var12.getMessage());
}
PBEKeyAndParameterSpec var6 = new PBEKeyAndParameterSpec(var4, var5.getSalt(), var5.getIterationCount(), 5);
try {
KeyGenerator var7 = KeyGenerator.getInstance("PKCS#12");
var7.init(var6);
SecretKey var8 = var7.generateKey();
var7 = KeyGenerator.getInstance("PKCS#12-IV");
var6 = new PBEKeyAndParameterSpec(var4, var5.getSalt(), var5.getIterationCount(), 8);
var7.init(var6);
iaik.security.cipher.SecretKey var9 = (iaik.security.cipher.SecretKey)var7.generateKey();
IvParameterSpec var10 = new IvParameterSpec(var9.getEncoded());
super.engineInit(var1, var8, var10, var3);
} catch (NoSuchAlgorithmException var11) {
throw new InternalErrorException(var11);
}
} else {
throw new InvalidKeyException("Must be a PBEKey in RAW_BMP format.");
}
}
public void engineSetPadding(String var1) throws NoSuchPaddingException {
}
public void engineSetMode(String var1) throws NoSuchAlgorithmException {
}
public void engineInit(int var1, Key var2, AlgorithmParameterSpec var3, SecureRandom var4) throws InvalidAlgorithmParameterException, InvalidKeyException {
if(var3 == null) {
this.engineInit(var1, var2, var4);
} else {
if(var3 instanceof PBEParameterSpec) {
try {
this.params.init(var3);
} catch (InvalidParameterSpecException var7) {
throw new InvalidAlgorithmParameterException("Error setting algorithm parameters.");
}
} else {
if(!(var3 instanceof PBEGenParameterSpec)) {
throw new InvalidAlgorithmParameterException("Parameters must be an instance of PBEParameterSpec or PBEGenParameterSpec.");
}
try {
AlgorithmParameterGenerator var5 = AlgorithmParameterGenerator.getInstance("PBE");
var5.init(var3, var4);
this.params = var5.generateParameters();
} catch (NoSuchAlgorithmException var6) {
throw new InvalidAlgorithmParameterException("Error setting algorithm parameters.");
}
}
this.initCipher(var1, var2, var4);
}
}
public void engineInit(int var1, Key var2, SecureRandom var3) throws InvalidKeyException {
try {
AlgorithmParameterGenerator var4 = AlgorithmParameterGenerator.getInstance("PBE");
var4.init(8, var3);
this.params = var4.generateParameters();
this.initCipher(var1, var2, var3);
} catch (NoSuchAlgorithmException var5) {
throw new InvalidKeyException(var5.getMessage());
} catch (InvalidAlgorithmParameterException var6) {
throw new InvalidKeyException(var6.getMessage());
}
}
public void engineInit(int var1, Key var2, AlgorithmParameters var3, SecureRandom var4) throws InvalidAlgorithmParameterException, InvalidKeyException {
if(var3 != null && var3.getAlgorithm() == "PBE") {
this.params = var3;
this.initCipher(var1, var2, var4);
} else {
throw new InvalidAlgorithmParameterException("Parameters must be of type PBEParameters.");
}
}
public AlgorithmParameters engineGetParameters() {
return this.params;
}
public PbeWithSHAAnd40BitRC2_CBC() throws NoSuchPaddingException, NoSuchAlgorithmException {
super.engineSetPadding("PKCS5Padding");
super.engineSetMode("CBC");
this.params = AlgorithmParameters.getInstance("PBE");
}
}