package com.l7tech.server.transport.jms;

import com.l7tech.common.io.SingleCertX509KeyManager;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.server.transport.http.SslClientSocketFactory;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.GoidUpgradeMapper;
import com.l7tech.util.Pair;
import java.security.GeneralSecurityException;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class JmsSslCustomizerSupport {
   private static final String a;
   private static final int b = 600;
   private static final Map<Pair<Goid, String>, SSLContext> c;
   private static SsgKeyStoreManager d;
   private static X509TrustManager e;
   private static final String[] f;

   public static synchronized SSLSocketFactory getSocketFactory(String var0, String var1) throws JmsConfigException {
      return a(var0, var1);
   }

   public static synchronized SSLContext getSSLContext(String var0, String var1) throws JmsConfigException {
      return b(var0, var1);
   }

   public static synchronized void setTrustManager(X509TrustManager var0) {
      e = var0;
   }

   public static synchronized void setSsgKeyStoreManager(SsgKeyStoreManager var0) {
      d = var0;
   }

   private static SSLSocketFactory a(String var0, String var1) throws JmsConfigException {
      return b(var0, var1).getSocketFactory();
   }

   private static SSLContext b(String var0, String var1) throws JmsConfigException {
      try {
         if (d == null) {
            throw new IllegalStateException(f[3]);
         }
      } catch (IllegalArgumentException var14) {
         throw a(var14);
      }

      try {
         if (e == null) {
            throw new IllegalStateException(f[0]);
         }
      } catch (IllegalArgumentException var9) {
         throw a(var9);
      }

      Pair var2;
      label66: {
         label75: {
            try {
               if (var0 == null && var1 == null) {
                  break label75;
               }
            } catch (IllegalArgumentException var13) {
               throw a(var13);
            }

            Goid var3;
            try {
               var3 = GoidUpgradeMapper.mapId(EntityType.SSG_KEYSTORE, var0);
            } catch (IllegalArgumentException var8) {
               String[] var7 = f;
               throw new JmsConfigException(var7[5] + var0);
            }

            var2 = new Pair(var3, var1);
            break label66;
         }

         var2 = new Pair(PersistentEntity.DEFAULT_GOID, "");
      }

      SSLContext var15 = c.get(var2);
      if (var15 == null) {
         try {
            KeyManager[] var4;
            label52: {
               label51: {
                  try {
                     if (var0 == null && var1 == null) {
                        break label51;
                     }
                  } catch (IllegalArgumentException var10) {
                     throw a(var10);
                  }

                  SsgKeyEntry var5 = d.lookupKeyByKeyAlias(var1, (Goid)var2.left);
                  SingleCertX509KeyManager var6 = new SingleCertX509KeyManager(var5.getCertificateChain(), var5.getPrivateKey());
                  var4 = new KeyManager[]{var6};
                  break label52;
               }

               var4 = null;
            }

            String[] var19 = f;
            SSLContext var16 = SSLContext.getInstance(var19[4]);
            var16.init(var4, new TrustManager[]{e}, null);
            int var17 = ConfigFactory.getIntProperty(a, 600);
            var16.getClientSessionContext().setSessionTimeout(var17);
            var15 = var16;
         } catch (GeneralSecurityException var11) {
            String var10002 = ExceptionUtils.getMessage(var11);
            String[] var18 = f;
            throw new JmsConfigException(var18[6] + var10002, var11);
         } catch (ObjectModelException var12) {
            throw new JmsConfigException(f[1] + ExceptionUtils.getMessage(var12), var12);
         }

         c.put(var2, var15);
      }

      return var15;
   }

   static {
      String[] var5 = new String[7];
      int var3 = 0;
      String var2 = "F2\u001cN\u001c4d|!\u000eX\u001aYhg3\u001d\u001d\n\u001c%a%\u001d\u001d\n\u001cc}2\f\u001d\u000e\u0010wa4IH\u001b\u001c.Q/\u001cQ\f\u0017\"f`\u0000S\u0001\rls,\u0000G\rYIV\u00019\u001d\u000b\u0015lw.\u001d\u001d;*I2#\u0006S\u001c\u001c}f`S\u001d\u0019<3\u001aQ;\u001cva)\u0006S<\u0010hw/\u001cI;\u001cf}.\rN*U!\u001dX\u001f\u0018|2\u000b\fD\u001b\rj`%Ip\t\u0017du%\u001b\u001d\u0005\fvf`\u000bXH\n`f`\u000fT\u001a\nq\u0003F\f:";
      int var4 = "F2\u001cN\u001c4d|!\u000eX\u001aYhg3\u001d\u001d\n\u001c%a%\u001d\u001d\n\u001cc}2\f\u001d\u000e\u0010wa4IH\u001b\u001c.Q/\u001cQ\f\u0017\"f`\u0000S\u0001\rls,\u0000G\rYIV\u00019\u001d\u000b\u0015lw.\u001d\u001d;*I2#\u0006S\u001c\u001c}f`S\u001d\u0019<3\u001aQ;\u001cva)\u0006S<\u0010hw/\u001cI;\u001cf}.\rN*U!\u001dX\u001f\u0018|2\u000b\fD\u001b\rj`%Ip\t\u0017du%\u001b\u001d\u0005\fvf`\u000bXH\n`f`\u000fT\u001a\nq\u0003F\f:"
         .length();
      char var1 = ')';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 14;
         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) {
                     f = var5;
                     a = SslClientSocketFactory.class.getName() + f[2];
                     c = new HashMap<>();
                     return;
                  }

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

                  var2 = "@1\u001d\r\u0013\flq$\u0016_\u001dI\\FjY.A?\fA\u001c\u00072vp\u0010C\u0011\u001d|c<\u0010W\u001dIYF\u0011)\r\u001b\u0005|g>\r\r+:Y\"3\u0016C\f\fmvpC\r";
                  var4 = "@1\u001d\r\u0013\flq$\u0016_\u001dI\\FjY.A?\fA\u001c\u00072vp\u0010C\u0011\u001d|c<\u0010W\u001dIYF\u0011)\r\u001b\u0005|g>\r\r+:Y\"3\u0016C\f\fmvpC\r"
                     .length();
                  var1 = 17;
                  var7 = -1;
            }

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

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

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

      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 -> 28;
            case 1 -> 78;
            case 2 -> 103;
            case 3 -> 51;
            case 4 -> 102;
            case 5 -> 119;
            default -> 11;
         });
      }

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