Information

0
Story Points

Technologies

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