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

import com.l7tech.policy.variable.Syntax;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.HexUtils;
import graphql.GraphQLException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;

public final class SecretUtil {
   private static final Logger a;
   private static final SecretBag b;
   private static final SecretBag c;
   private static final SecretBag d;
   private static final SecretBag e;
   private static final List<SecretBag> f;
   private static final String[] g;

   private SecretUtil() {
   }

   public static boolean isEncoded(String var0) {
      String var1 = a(var0);
      return e.matches(var1);
   }

   public static String encodeIfRequired(String var0, @NotNull String var1) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (GraphQLException var4) {
         throw a(var4);
      }

      try {
         if (Util.isEmpty(var0)) {
            return var0;
         }
      } catch (GraphQLException var2) {
         throw a(var2);
      }

      try {
         if (Syntax.isOnlyASingleVariableReferenced(var0)) {
            return var0;
         }
      } catch (GraphQLException var3) {
         throw a(var3);
      }

      return encode(var0, var1);
   }

   public static String encode(String var0, @NotNull String var1) {
      try {
         if (var1 == null) {
            a(1);
         }
      } catch (Exception var4) {
         throw a(var4);
      }

      try {
         if (var0 == null) {
            return null;
         }
      } catch (Exception var5) {
         throw a(var5);
      }

      try {
         return encode(var0.getBytes(StandardCharsets.UTF_8), var1);
      } catch (Exception var3) {
         throw new GraphQLException(g[0], var3);
      }
   }

   public static String encode(byte[] var0, @NotNull String var1) {
      try {
         if (var1 == null) {
            a(2);
         }
      } catch (Exception var4) {
         throw a(var4);
      }

      try {
         if (var0 == null) {
            return null;
         }
      } catch (Exception var5) {
         throw a(var5);
      }

      try {
         return HexUtils.encodeBase64(e.encrypt(var0, var1), true);
      } catch (Exception var3) {
         throw new GraphQLException(g[10], var3);
      }
   }

   public static String decode(String var0, @NotNull String var1) {
      try {
         if (var1 == null) {
            a(3);
         }
      } catch (SecretBag.SecretBagException var8) {
         throw a(var8);
      }

      try {
         if (var0 == null) {
            return null;
         }
      } catch (SecretBag.SecretBagException var12) {
         throw a(var12);
      }

      try {
         byte[] var2 = HexUtils.decodeBase64(var0);

         String var10000;
         label62: {
            try {
               if (var2.length > 8) {
                  var10000 = new String(var2, 0, 8);
                  break label62;
               }
            } catch (SecretBag.SecretBagException var10) {
               throw a(var10);
            }

            var10000 = "";
         }

         String var3 = var10000;
         if (e.matches(var3)) {
            return new String(e.decrypt(var2, var1), StandardCharsets.UTF_8);
         }

         if (d.matches(var3)) {
            return new String(d.decrypt(var2, var1), StandardCharsets.UTF_8);
         }

         if (!b.matches(var3)) {
            return var0;
         }

         for (SecretBag var5 : f) {
            try {
               return new String(var5.decrypt(var2, var1), StandardCharsets.UTF_8);
            } catch (SecretBag.SecretBagException var9) {
               Logger var14 = a;
               Level var10001 = Level.FINE;
               String var10002 = var5.getClass().getName();
               String var10003 = ExceptionUtils.getMessage(var9);
               String[] var7 = g;
               var14.log(var10001, var10002 + var7[9] + var10003, ExceptionUtils.getDebugException(var9));
            }
         }

         String[] var13 = g;
         throw new SecretBag.SecretBagException(var13[12]);
      } catch (Exception var11) {
         throw new GraphQLException(g[11], var11);
      }
   }

   public static byte[] decodeBytes(byte[] var0, @NotNull String var1) {
      try {
         if (var1 == null) {
            a(4);
         }
      } catch (Exception var6) {
         throw a(var6);
      }

      try {
         if (var0 == null) {
            return null;
         }
      } catch (Exception var3) {
         throw a(var3);
      }

      try {
         String var10000;
         label48: {
            try {
               if (var0.length > 8) {
                  var10000 = new String(var0, 0, 8);
                  break label48;
               }
            } catch (Exception var4) {
               throw a(var4);
            }

            var10000 = "";
         }

         String var2 = var10000;
         if (e.matches(var2)) {
            return e.decrypt(var0, var1);
         } else if (d.matches(var2)) {
            return d.decrypt(var0, var1);
         } else {
            return b.matches(var2) ? b.decrypt(var0, var1) : var0;
         }
      } catch (Exception var5) {
         throw new GraphQLException(g[7], var5);
      }
   }

   private static String a(String var0) {
      byte[] var1 = HexUtils.decodeBase64(var0);

      try {
         if (var1.length > 8) {
            return new String(var1, 0, 8);
         }
      } catch (GraphQLException var3) {
         throw a(var3);
      }

      return "";
   }

   static {
      String[] var5 = new String[13];
      int var3 = 0;
      String var2 = "\nH}\u0000-c\u0019,Gp\u0001&r\u0019=AvN2v@%Fr\n\u0006,Gp\u0001&rD*F~A. M,J{A'oM,[}\u000f.8X:Zv\u001c6~V'Z<\t#c\\>Hj\t0vI!X\u007fA1rK?LaA7cP%\u0006@\u000b!e\\=|g\u0007.\u0010,Gp\u0001&rp/{v\u001f7~K,M\u0006-Lp\u0001&r\n9H`\u001d2\u007fK(Zv\u000b-Lp\u0001&r{0]v\u001d\u0019\nH}\u0000-c\u0019-Lp\u0001&r\u0019=AvN2v@%Fr\n>\b[t\u001b/rW=\tu\u000107y\u0007Fg 7{UiYr\u001c#z\\=LaNe2Jn\t|\bb2Jg\f`N/bJ=\t}\u000167[,\t}\u001b.{'i|}\u000f {\\i]|N&rZ;Pc\u001abrW*[j\u001e6r]iYr\u001d1`V;M)N\u0019\nH}\u0000-c\u0019,Gp\u0001&r\u0019=AvN2v@%Fr\n";
      int var4 = "\nH}\u0000-c\u0019,Gp\u0001&r\u0019=AvN2v@%Fr\n\u0006,Gp\u0001&rD*F~A. M,J{A'oM,[}\u000f.8X:Zv\u001c6~V'Z<\t#c\\>Hj\t0vI!X\u007fA1rK?LaA7cP%\u0006@\u000b!e\\=|g\u0007.\u0010,Gp\u0001&rp/{v\u001f7~K,M\u0006-Lp\u0001&r\n9H`\u001d2\u007fK(Zv\u000b-Lp\u0001&r{0]v\u001d\u0019\nH}\u0000-c\u0019-Lp\u0001&r\u0019=AvN2v@%Fr\n>\b[t\u001b/rW=\tu\u000107y\u0007Fg 7{UiYr\u001c#z\\=LaNe2Jn\t|\bb2Jg\f`N/bJ=\t}\u000167[,\t}\u001b.{'i|}\u000f {\\i]|N&rZ;Pc\u001abrW*[j\u001e6r]iYr\u001d1`V;M)N\u0019\nH}\u0000-c\u0019,Gp\u0001&r\u0019=AvN2v@%Fr\n"
         .length();
      char var1 = 25;
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     g = var5;
                     a = Logger.getLogger(SecretUtil.class.getName());
                     b = new OpenSSLSecretBag();
                     c = new OpenSSLv02SecretBag();
                     d = new L7Ev02SecretBag();
                     e = new L7Ev03SecretBag();
                     f = Arrays.asList(b, c);
                     return;
                  }

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

                  var2 = "\fN{\u0006+e\u001f+Jv\u0007 t\u001f;GpH4pF#@t\f:\n]g\u000761Z!Lz\u001d*eZ=JqH3yV#J5\f!rM6_aH\u000baZ!\\f\u0004dtQ,]l\u00180t[o_t\u001b7fP=K";
                  var4 = "\fN{\u0006+e\u001f+Jv\u0007 t\u001f;GpH4pF#@t\f:\n]g\u000761Z!Lz\u001d*eZ=JqH3yV#J5\f!rM6_aH\u000baZ!\\f\u0004dtQ,]l\u00180t[o_t\u001b7fP=K"
                     .length();
                  var1 = 25;
                  var7 = -1;
            }

            var10000 = 66;
            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] ^ 125);
      }

      return var10000;
   }

   private static String a(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 -> 13;
            case 1 -> 109;
            case 2 -> 87;
            case 3 -> 42;
            case 4 -> 6;
            case 5 -> 83;
            default -> 125;
         });
      }

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