package com.l7tech.external.assertions.gatewaygraphql.server.util;

import com.l7tech.util.Charsets;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.IOUtils;
import com.l7tech.util.RandomUtil;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.Arrays;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
import javax.security.auth.DestroyFailedException;
import javax.security.auth.Destroyable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class L7Ev03SecretBag extends SecretBag {
   private static final Logger a;
   private static final String b;
   private static final String c;
   private static final String d;
   private static final int e = 256;
   private static final int f = 32;
   private static final int g = 1000;
   private static final String h;
   public static final int SALT_SIZE = 16;
   private static final String[] j;

   @Override
   public String code() {
      return j[6];
   }

   @Override
   public boolean matches(String var1) {
      return j[6].equals(var1);
   }

   @Override
   public byte[] encrypt(@NotNull byte[] var1, @NotNull String var2) throws SecretBag.SecretBagException {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (Exception var8) {
         throw a(var8);
      }

      try {
         if (var2 == null) {
            a(1);
         }
      } catch (Exception var9) {
         throw a(var9);
      }

      try {
         byte[] var3 = new byte[16];
         RandomUtil.nextBytes(var3);
         Cipher var4 = this.getCipher();
         var4.init(1, a(var2.getBytes(StandardCharsets.UTF_8), 1000, var3), new IvParameterSpec(var3));
         ByteArrayOutputStream var5 = new ByteArrayOutputStream();
         String[] var6 = j;
         var5.write(var6[2].getBytes(StandardCharsets.UTF_8));
         var5.write(var3);
         var5.write(var4.doFinal(var1));
         return var5.toByteArray();
      } catch (Exception var7) {
         throw new SecretBag.SecretBagException(j[12], var7);
      }
   }

   @Override
   public byte[] decrypt(@NotNull byte[] var1, @NotNull String var2) throws SecretBag.SecretBagException {
      try {
         if (var1 == null) {
            a(2);
         }
      } catch (Exception var7) {
         throw a(var7);
      }

      try {
         if (var2 == null) {
            a(3);
         }
      } catch (Exception var8) {
         throw a(var8);
      }

      try {
         byte[] var3 = Arrays.copyOfRange(var1, 8, 24);
         byte[] var4 = Arrays.copyOfRange(var1, 24, var1.length);
         Cipher var5 = this.getCipher();
         var5.init(2, a(var2.getBytes(StandardCharsets.UTF_8), 1000, var3), new IvParameterSpec(var3));
         return var5.doFinal(var4);
      } catch (Exception var6) {
         throw new SecretBag.SecretBagException(j[17], var6);
      }
   }

   // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow.
   // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
   @NotNull
   private static SecretKey a(@NotNull byte[] var0, int var1, @NotNull byte[] var2) throws NoSuchAlgorithmException, InvalidKeySpecException {
      try {
         if (var0 == null) {
            a(4);
         }
      } catch (NoSuchAlgorithmException var17) {
         throw a(var17);
      }

      try {
         if (var2 == null) {
            a(5);
         }
      } catch (NoSuchAlgorithmException var18) {
         throw a(var18);
      }

      char[] var3 = IOUtils.decodeCharacters(Charsets.UTF8, var0);
      SecretKey var4 = null;
      boolean var14 = false /* VF: Semaphore variable */;

      SecretKeySpec var7;
      try {
         var14 = true;
         String[] var9 = j;
         SecretKeyFactory var5 = SecretKeyFactory.getInstance(var9[11]);
         PBEKeySpec var6 = new PBEKeySpec(var3, var2, var1, 256);
         var4 = var5.generateSecret(var6);
         var7 = new SecretKeySpec(var4.getEncoded(), 0, 32, var9[15]);
         var14 = false;
      } finally {
         if (var14) {
            Arrays.fill(var3, 'X');
            a(var4);
         }
      }

      try {
         Arrays.fill(var3, 'X');
         a(var4);
         if (var7 == null) {
            a(6);
         }

         return var7;
      } catch (NoSuchAlgorithmException var15) {
         throw a(var15);
      }
   }

   private static void a(@Nullable Key var0) {
      if (var0 instanceof Destroyable var1) {
         try {
            var1.destroy();
         } catch (DestroyFailedException var3) {
            a.log(Level.FINE, j[8] + ExceptionUtils.getMessage(var3), ExceptionUtils.getDebugException(var3));
         }
      }
   }

   static {
      String[] var5 = new String[21];
      int var3 = 0;
      String var2 = "k`5/-\u0001\u0019ml0/$N\u0019m}6a-\u0019\f{|=r5_\u0002f|wg B\b\u007fn!g3W\u001d`~4/2S\u001f~j*/4B\u0004d \u00147\u0004@];\\=c3S\u0019Jn?Ik`5/-\u0001\u0019ml0/$N\u0019m}6a-\u0019\f{|=r5_\u0002f|wg B\b\u007fn!g3W\u001d`~4/2S\u001f~j*/4B\u0004d \u00147\u0004@];\\=c3S\u0019Jn?\b,CoE7\u0006^,>I}?u,S\u0003|/>o3\u0016-F`,N4Z\u0001(\u007f9r [\b|j* f\u0013\u001e//7fa\u0013\u001e&*+ ,C\u001e|/6o5\u0016\u000fm/6u-Z\u000flj*i7S>ml*e5}\bq\u0012XM\u0013D\u0007\u0004:a{0H,W\u000e[G\u00191\b,CoE7\u0006^,\u000flj*i7S>ml*e5}\bq!]a9b-SM|`xd$E\u0019z`! $F\u0005mb=r ZMcj!:a*HA7t\u000fC\u0001d/5e5^\u0002l/}so\u0013\u001e(b-s5\u0016\u0003g{xr$B\u0018zaxn4Z\u0001\bcj!B8B\b{\u0012XM\u0013D\u0007\u0004:a{0H,W\u000e[G\u00191?M}*o3\u0016\bfl7u/B\bzj< 6^\u0004djxe/U\u001fq\u007f,i/QM|g= 1W\u0014d`9daC\u001eaa? \r\u0001(~?j #W\n\u0003IJ\u000b\nxn+s1^\u001fi|=\u0003IJ\u000b\u0007xn!l.W\t?M}*o3\u0016\bfl7u/B\bzj< 6^\u0004djxd$U\u001fq\u007f,i/QM|g= 1W\u0014d`9daC\u001eaa? \r\u0001(~?j #W\n\u0007lj;r8F\u0019";
      int var4 = "k`5/-\u0001\u0019ml0/$N\u0019m}6a-\u0019\f{|=r5_\u0002f|wg B\b\u007fn!g3W\u001d`~4/2S\u001f~j*/4B\u0004d \u00147\u0004@];\\=c3S\u0019Jn?Ik`5/-\u0001\u0019ml0/$N\u0019m}6a-\u0019\f{|=r5_\u0002f|wg B\b\u007fn!g3W\u001d`~4/2S\u001f~j*/4B\u0004d \u00147\u0004@];\\=c3S\u0019Jn?\b,CoE7\u0006^,>I}?u,S\u0003|/>o3\u0016-F`,N4Z\u0001(\u007f9r [\b|j* f\u0013\u001e//7fa\u0013\u001e&*+ ,C\u001e|/6o5\u0016\u000fm/6u-Z\u000flj*i7S>ml*e5}\bq\u0012XM\u0013D\u0007\u0004:a{0H,W\u000e[G\u00191\b,CoE7\u0006^,\u000flj*i7S>ml*e5}\bq!]a9b-SM|`xd$E\u0019z`! $F\u0005mb=r ZMcj!:a*HA7t\u000fC\u0001d/5e5^\u0002l/}so\u0013\u001e(b-s5\u0016\u0003g{xr$B\u0018zaxn4Z\u0001\bcj!B8B\b{\u0012XM\u0013D\u0007\u0004:a{0H,W\u000e[G\u00191?M}*o3\u0016\bfl7u/B\bzj< 6^\u0004djxe/U\u001fq\u007f,i/QM|g= 1W\u0014d`9daC\u001eaa? \r\u0001(~?j #W\n\u0003IJ\u000b\nxn+s1^\u001fi|=\u0003IJ\u000b\u0007xn!l.W\t?M}*o3\u0016\bfl7u/B\bzj< 6^\u0004djxd$U\u001fq\u007f,i/QM|g= 1W\u0014d`9daC\u001eaa? \r\u0001(~?j #W\n\u0007lj;r8F\u0019"
         .length();
      char var1 = 'I';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 41;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     j = var5;
                     String[] var9 = j;
                     c = j[6];
                     h = var9[13];
                     b = var9[6];
                     d = var9[5];
                     a = Logger.getLogger(L7Ev03SecretBag.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "4!{;\u0007\".t=w\tV";
                  var4 = "4!{;\u0007\".t=w\tV".length();
                  var1 = 4;
                  var7 = -1;
            }

            var10000 = 102;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static Exception a(Exception var0) {
      return var0;
   }

   private static char[] b(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 68);
      }

      return var10000;
   }

   private static String b(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 33;
            case 1 -> 38;
            case 2 -> 113;
            case 3 -> 41;
            case 4 -> 104;
            case 5 -> 31;
            default -> 68;
         });
      }

      return new String(var10001).intern();
   }
}
