Information

0
Story Points

Technologies

Decompiled Java File
package iaik.security.cipher;

import java.security.InvalidKeyException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactorySpi;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.SecretKeySpec;

public class GeneralKeyFactory extends SecretKeyFactorySpi {
   // $FF: synthetic field
   static Class a;
   // $FF: synthetic field
   static Class b;
   // $FF: synthetic field
   static Class c;

   static Class a(String var0) {
      try {
         return Class.forName(var0);
      } catch (ClassNotFoundException var2) {
         throw new NoClassDefFoundError(var2.getMessage());
      }
   }

   protected SecretKey engineTranslateKey(SecretKey var1) throws InvalidKeyException {
      if(var1 == null) {
         throw new InvalidKeyException("Cannot translate a null key!");
      } else {
         return new iaik.security.cipher.SecretKey(var1);
      }
   }

   protected KeySpec engineGetKeySpec(SecretKey var1, Class var2) throws InvalidKeySpecException {
      try {
         if((c != null?c:(c = a("javax.crypto.spec.DESKeySpec"))).isAssignableFrom(var2)) {
            return new DESKeySpec(var1.getEncoded());
         } else if((b != null?b:(b = a("javax.crypto.spec.DESedeKeySpec"))).isAssignableFrom(var2)) {
            return new DESedeKeySpec(var1.getEncoded());
         } else if((a != null?a:(a = a("javax.crypto.spec.SecretKeySpec"))).isAssignableFrom(var2)) {
            return new SecretKeySpec(var1.getEncoded(), var1.getAlgorithm());
         } else {
            throw new InvalidKeySpecException("Can\'t convert key to KeySpec.");
         }
      } catch (InvalidKeyException var3) {
         throw new InvalidKeySpecException("Invalid KeySpec or key.");
      }
   }

   protected SecretKey engineGenerateSecret(KeySpec var1) throws InvalidKeySpecException {
      if(var1 instanceof DESKeySpec) {
         return new iaik.security.cipher.SecretKey(((DESKeySpec)var1).getKey(), "DES");
      } else if(var1 instanceof DESedeKeySpec) {
         return new iaik.security.cipher.SecretKey(((DESedeKeySpec)var1).getKey(), "DESede");
      } else {
         try {
            if(var1 instanceof SecretKeySpec) {
               SecretKeySpec var2 = (SecretKeySpec)var1;
               byte[] var3 = var2.getEncoded();
               String var4 = var2.getAlgorithm();
               KeyGenerator var5 = KeyGenerator.getInstance(var4, "IAIK");
               var5.init(var3.length << 3);
               int var6 = var5.generateKey().getEncoded().length;
               byte[] var7 = new byte[var6];
               System.arraycopy(var3, 0, var7, 0, var3.length >= var6?var6:var3.length);
               return new iaik.security.cipher.SecretKey(var7, var4);
            }
         } catch (Exception var8) {
            throw new InvalidKeySpecException("Could not convert key: " + var8.toString());
         }

         throw new InvalidKeySpecException("Unsupported type of keyspec: " + var1.getClass().getName());
      }
   }
}
Page generated: Oct 19, 2017 2:34:25 PM