Red Hat Application Migration Toolkit
package iaik.security.cipher; import iaik.security.cipher.DES; import iaik.security.cipher.DESKeyGenerator; import iaik.security.cipher.SecretKey; import iaik.security.pbe.PBEGenParameterSpec; import java.security.AlgorithmParameterGenerator; import java.security.AlgorithmParameters; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.Key; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.AlgorithmParameterSpec; import java.security.spec.InvalidParameterSpecException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEParameterSpec; public class PbeWithMD5AndDES_CBC extends DES { // $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) throws InvalidAlgorithmParameterException, InvalidKeyException { if(var2 != null && var2.getAlgorithm().equals("PBE") && var2.getFormat().equals("RAW")) { byte[] var3 = var2.getEncoded(); PBEParameterSpec var4; try { var4 = (PBEParameterSpec)this.params.getParameterSpec(a != null?a:(a = a("javax.crypto.spec.PBEParameterSpec"))); } catch (InvalidParameterSpecException var13) { throw new InvalidAlgorithmParameterException(var13.getMessage()); } byte[] var5 = var4.getSalt(); int var6 = var4.getIterationCount(); if(var5.length != 8) { throw new InvalidAlgorithmParameterException("Salt must be 8 bytes long."); } else { byte[] var7 = new byte[var3.length + var5.length]; System.arraycopy(var3, 0, var7, 0, var3.length); System.arraycopy(var5, 0, var7, var3.length, var5.length); MessageDigest var8; try { var8 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException var12) { throw new InvalidKeyException(var12.toString()); } for(int var9 = 0; var9 < var6; ++var9) { var7 = var8.digest(var7); } DESKeyGenerator.adjustParity(var7, 0); SecretKey var10 = new SecretKey(var7, 0, 8, "RAW"); IvParameterSpec var11 = new IvParameterSpec(var7, 8, 8); super.engineInit(var1, var10, var11, (SecureRandom)null); } } else { throw new InvalidKeyException("Must be a PBEKey in RAW format."); } } public void engineSetPadding(String var1) { } public void engineSetMode(String var1) { } 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); } } 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); } 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); } else { throw new InvalidAlgorithmParameterException("Parameters must be of type PBEParameters."); } } public AlgorithmParameters engineGetParameters() { return this.params; } public PbeWithMD5AndDES_CBC() throws NoSuchPaddingException, NoSuchAlgorithmException { super.engineSetPadding("PKCS5Padding"); super.engineSetMode("CBC"); this.params = AlgorithmParameters.getInstance("PBE"); } }