package com.l7tech.server.policy.assertion;

import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.policy.assertion.PrivateKeyable;
import com.l7tech.security.xml.SignerInfo;
import com.l7tech.server.DefaultKey;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.util.ExceptionUtils;
import java.io.IOException;
import java.security.KeyStoreException;
import java.security.PrivateKey;
import java.security.UnrecoverableKeyException;
import java.security.cert.X509Certificate;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.BeanFactory;

public class ServerAssertionUtils {
   private static final String[] a;

   @NotNull
   public static SignerInfo getSignerInfo(BeanFactory var0, Object var1) throws KeyStoreException {
      SsgKeyEntry var10000;
      try {
         if (var1 instanceof PrivateKeyable var2 && !var2.isUsesDefaultKeyStore()) {
            Goid var3 = var2.getNonDefaultKeystoreId();
            String var4 = var2.getKeyAlias();
            String[] var18 = a;
            SsgKeyStoreManager var5 = (SsgKeyStoreManager)var0.getBean(var18[3], SsgKeyStoreManager.class);
            SsgKeyEntry var6 = var5.lookupKeyByKeyAlias(var4, var3);
            X509Certificate[] var7 = var6.getCertificateChain();
            PrivateKey var8 = var6.getPrivateKey();
            return new SignerInfo(var8, var7);
         }

         String[] var17 = a;
         DefaultKey var14 = (DefaultKey)var0.getBean(var17[0], DefaultKey.class);
         var10000 = var14.getClientSslInfo();
      } catch (IOException var10) {
         String var20 = ExceptionUtils.getMessage(var10);
         String[] var16 = a;
         throw new KeyStoreException(var16[6] + var20, var10);
      } catch (ObjectNotFoundException var11) {
         String var19 = ExceptionUtils.getMessage(var11);
         String[] var15 = a;
         throw new KeyStoreException(var15[1] + var19, var11);
      } catch (FindException var12) {
         String var10002 = ExceptionUtils.getMessage(var12);
         String[] var9 = a;
         throw new KeyStoreException(var9[5] + var10002, var12);
      } catch (UnrecoverableKeyException var13) {
         throw new KeyStoreException(a[5] + ExceptionUtils.getMessage(var13), var13);
      }

      if (var10000 == null) {
         a(0);
      }

      return var10000;
   }

   public static boolean isPreferredSigner(Object var0) {
      boolean var1 = false;
      if (var0 instanceof PrivateKeyable var2) {
         boolean var10000;
         label19: {
            try {
               if (!var2.isUsesDefaultKeyStore()) {
                  var10000 = true;
                  break label19;
               }
            } catch (IllegalStateException var3) {
               throw a(var3);
            }

            var10000 = false;
         }

         var1 = var10000;
      }

      return var1;
   }

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

   static {
      String[] var5 = new String[8];
      int var3 = 0;
      String var2 = "\u0012~ZY\u0002P6=~E85zR\u001f\u0003\u001c$\u001fuX\u0018\u0007N+\u0000zH]WW'\u000f;ZW\u0005\u001c-\u0003o^W\u0002R&VvYK\u0004]%\u0013;X]\u0014S0\u0017oUW\u0019\u0006b7\u0015tQ\u0017\u001b\u000b6\u0013xT\u0017\u0004Y0\u0000~N\u0017\u0007S.\u001fxE\u0017\u0016O1\u0013iHQ\u0018Rm%~NN\u0012N\u0003\u0005hYJ\u0003U-\u0018NHQ\u001bO\u0012\u0005h[s\u0012E\u0011\u0002tN]:],\u0017|YJ*6USL9I.\u001a;Q]\u0003T-\u0012;\u0019KY\u00191VvIK\u0003\u001c,\u0019o\u001cJ\u0012H7\u0004u\u001cV\u0002P.95zR\u001f\u0003\u001c0\u0013zX\u0018\u0003T'VpYA\u0004H-\u0004~\u001c^\u0018Nb\u0019nHZ\u0018I,\u0012;Q]\u0004O#\u0011~\u001c\\\u0012_-\u0004zHQ\u0018RxV";
      int var4 = "\u0012~ZY\u0002P6=~E85zR\u001f\u0003\u001c$\u001fuX\u0018\u0007N+\u0000zH]WW'\u000f;ZW\u0005\u001c-\u0003o^W\u0002R&VvYK\u0004]%\u0013;X]\u0014S0\u0017oUW\u0019\u0006b7\u0015tQ\u0017\u001b\u000b6\u0013xT\u0017\u0004Y0\u0000~N\u0017\u0007S.\u001fxE\u0017\u0016O1\u0013iHQ\u0018Rm%~NN\u0012N\u0003\u0005hYJ\u0003U-\u0018NHQ\u001bO\u0012\u0005h[s\u0012E\u0011\u0002tN]:],\u0017|YJ*6USL9I.\u001a;Q]\u0003T-\u0012;\u0019KY\u00191VvIK\u0003\u001c,\u0019o\u001cJ\u0012H7\u0004u\u001cV\u0002P.95zR\u001f\u0003\u001c0\u0013zX\u0018\u0003T'VpYA\u0004H-\u0004~\u001c^\u0018Nb\u0019nHZ\u0018I,\u0012;Q]\u0004O#\u0011~\u001c\\\u0012_-\u0004zHQ\u0018RxV"
         .length();
      char var1 = '\n';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     a = var5;
                     return;
                  }

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

                  var2 = "#lD\t\u0015\n&\u0005lN\u000e\u0015B1@fOW\u0012^;\u0012h\nH\u000eXt\u000fx^L\u000e_:\u0004-GK\u0012Y5\u0007h\nJ\u0004I;\u0012l^G\u000eDn@\r\u0007h^}\bM:\u0005\u007fc@\u0007E";
                  var4 = "#lD\t\u0015\n&\u0005lN\u000e\u0015B1@fOW\u0012^;\u0012h\nH\u000eXt\u000fx^L\u000e_:\u0004-GK\u0012Y5\u0007h\nJ\u0004I;\u0012l^G\u000eDn@\r\u0007h^}\bM:\u0005\u007fc@\u0007E"
                     .length();
                  var1 = '9';
                  var7 = -1;
            }

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

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

      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 -> 110;
            case 1 -> 3;
            case 2 -> 36;
            case 3 -> 32;
            case 4 -> 111;
            case 5 -> 36;
            default -> 90;
         });
      }

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