Information

0
Story Points

Technologies

Decompiled Java File
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");
   }
}
Page generated: Oct 19, 2017 2:34:21 PM