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

import com.l7tech.gateway.common.transport.jms.JmsConnection;
import com.l7tech.gateway.common.transport.jms.JmsProviderType;
import com.l7tech.gateway.common.transport.jms.TibcoEmsConstants;
import com.l7tech.gateway.common.transport.jms.TibcoEmsConstants.TibjmsContext;
import com.l7tech.gateway.common.transport.jms.TibcoEmsConstants.TibjmsSSL;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;

public class JmsSslDetailsHelper {
   public static final Set<String> JMS_KNOWN_PROPERTIES;
   private static final String[] a;

   public static JmsDestinationDTO.JmsSslDetails getJndiSslDetailsFrom(Properties var0) {
      JmsDestinationDTO.JmsSslDetails var1 = new JmsDestinationDTO.JmsSslDetails();
      var1.setSslEnabled(TibcoEmsConstants.SSL.equals(var0.getProperty(TibjmsContext.SECURITY_PROTOCOL)));
      var1.setSslForAuthenticationOnly(JmsHelper.fromJmsBooleanValue(var0.getProperty(TibjmsContext.SSL_AUTH_ONLY)));
      var1.setSslVerifyServerCertificate(JmsHelper.fromJmsBooleanValue(var0.getProperty(TibjmsContext.SSL_ENABLE_VERIFY_HOST)));
      var1.setSslVerifyServerHostname(JmsHelper.fromJmsBooleanValue(var0.getProperty(TibjmsContext.SSL_ENABLE_VERIFY_HOST_NAME)));
      var1.setSslClientKeyAlias(
         JmsHelper.toFQKeyAlias(var0.getProperty(JmsConnection.PROP_JNDI_SSG_KEYSTORE_ID), var0.getProperty(JmsConnection.PROP_JNDI_SSG_KEY_ALIAS))
      );
      return var1;
   }

   private JmsSslDetailsHelper() {
   }

   public static void setJndiSslDetailsTo(Properties var0, JmsDestinationDTO.JmsSslDetails var1, JmsProviderType var2) {
      if (var1 != null && var1.isSslEnabled()) {
         var0.setProperty(TibjmsContext.SECURITY_PROTOCOL, TibcoEmsConstants.SSL);
         var0.setProperty(TibjmsContext.SSL_AUTH_ONLY, JmsHelper.toJmsBooleanValue(var1.isSslForAuthenticationOnly()));
         var0.setProperty(TibjmsContext.SSL_ENABLE_VERIFY_HOST, JmsHelper.toJmsBooleanValue(var1.isSslVerifyServerCertificate()));
         var0.setProperty(TibjmsContext.SSL_ENABLE_VERIFY_HOST_NAME, JmsHelper.toJmsBooleanValue(var1.isSslVerifyServerHostname()));
         if (var1.isSslVerifyServerCertificate()) {
            var0.setProperty(TibjmsContext.SSL_TRUSTED_CERTIFICATES, JmsConnection.VALUE_TRUSTED_LIST);
         }

         if (StringUtils.isNotEmpty(var1.getSslClientKeyAlias())) {
            String[] var3 = JmsHelper.toKeyInfo(var1.getSslClientKeyAlias());
            var0.setProperty(JmsConnection.PROP_JNDI_SSG_KEYSTORE_ID, var3[0]);
            var0.setProperty(JmsConnection.PROP_JNDI_SSG_KEY_ALIAS, var3[1]);
            String var4 = "\t" + var3[0] + "\t" + var3[1];
            var0.setProperty(TibjmsContext.SSL_IDENTITY, JmsConnection.VALUE_KEYSTORE + var4);
            var0.setProperty(TibjmsContext.SSL_PASSWORD, JmsConnection.VALUE_KEYSTORE_PASSWORD + var4);
         }
      }
   }

   public static JmsDestinationDTO.JmsSslDetails getDestinationSslDetailsFrom(Properties var0) {
      JmsDestinationDTO.JmsSslDetails var1 = new JmsDestinationDTO.JmsSslDetails();
      var1.setSslEnabled(var0.getProperty(JmsConnection.PROP_CUSTOMIZER) != null);
      var1.setSslForAuthenticationOnly(JmsHelper.fromJmsBooleanValue(var0.getProperty(TibjmsSSL.AUTH_ONLY)));
      var1.setSslVerifyServerCertificate(JmsHelper.fromJmsBooleanValue(var0.getProperty(TibjmsSSL.ENABLE_VERIFY_HOST)));
      var1.setSslVerifyServerHostname(JmsHelper.fromJmsBooleanValue(var0.getProperty(TibjmsSSL.ENABLE_VERIFY_HOST_NAME)));
      var1.setSslClientKeyAlias(
         JmsHelper.toFQKeyAlias(
            var0.getProperty(JmsConnection.PROP_QUEUE_SSG_KEYSTORE_ID),
            var0.getProperty(JmsConnection.PROP_QUEUE_SSG_KEY_ALIAS),
            Boolean.parseBoolean(var0.getProperty(JmsConnection.PROP_QUEUE_USE_CLIENT_AUTH))
         )
      );
      return var1;
   }

   public static void setDestinationSslDetailsTo(Properties var0, JmsDestinationDTO.JmsSslDetails var1, JmsProviderType var2) {
      if (var1 != null && var1.isSslEnabled()) {
         String var3 = a(var2);
         if (StringUtils.isNotEmpty(var3)) {
            var0.setProperty(JmsConnection.PROP_CUSTOMIZER, var3);
         }

         var0.setProperty(TibjmsSSL.AUTH_ONLY, JmsHelper.toJmsBooleanValue(var1.isSslForAuthenticationOnly()));
         var0.setProperty(TibjmsSSL.ENABLE_VERIFY_HOST, JmsHelper.toJmsBooleanValue(var1.isSslVerifyServerCertificate()));
         var0.setProperty(TibjmsSSL.ENABLE_VERIFY_HOST_NAME, JmsHelper.toJmsBooleanValue(var1.isSslVerifyServerHostname()));
         if (var1.isSslVerifyServerCertificate()) {
            var0.setProperty(TibjmsSSL.TRUSTED_CERTIFICATES, JmsConnection.VALUE_TRUSTED_LIST);
         }

         boolean var4 = StringUtils.isNotEmpty(var1.getSslClientKeyAlias());
         var0.setProperty(JmsConnection.PROP_QUEUE_USE_CLIENT_AUTH, String.valueOf(var4));
         if (var4 && !a[2].equals(var1.getSslClientKeyAlias())) {
            String[] var5 = JmsHelper.toKeyInfo(var1.getSslClientKeyAlias());
            var0.setProperty(JmsConnection.PROP_QUEUE_SSG_KEYSTORE_ID, var5[0]);
            var0.setProperty(JmsConnection.PROP_QUEUE_SSG_KEY_ALIAS, var5[1]);
            String var6 = "\t" + var5[0] + "\t" + var5[1];
            var0.setProperty(TibjmsSSL.IDENTITY, JmsConnection.VALUE_KEYSTORE_BYTES + var6);
            var0.setProperty(TibjmsSSL.PASSWORD, JmsConnection.VALUE_KEYSTORE_PASSWORD + var6);
         }
      }
   }

   private static String a(JmsProviderType var0) {
      if (JmsProviderType.Tibco.equals(var0)) {
         String[] var1 = a;
         return var1[1];
      } else {
         return JmsProviderType.MQ.equals(var0) ? a[0] : null;
      }
   }

   static {
      String[] var5 = new String[3];
      int var3 = 0;
      String var2 = "9%c\u0016\u0018|*?)f\u0016\u0007.,,/|\u0016\u00009?49~W\u0006?p0'}\u0016\u000491,dCi'.,3/}{\u00018*5'gB\u00119E9%c\u0016\u0018|*?)f\u0016\u0007.,,/|\u0016\u00009?49~W\u0006?p0'}\u0016\u000491,dZQ\u0016(1\u0019%`V\u0011(*3%`~\u0015(*58w{\u00018*5'gB\u00119\tf\u000eK~5\u001e\u0012\u000et";
      int var4 = "9%c\u0016\u0018|*?)f\u0016\u0007.,,/|\u0016\u00009?49~W\u0006?p0'}\u0016\u000491,dCi'.,3/}{\u00018*5'gB\u00119E9%c\u0016\u0018|*?)f\u0016\u0007.,,/|\u0016\u00009?49~W\u0006?p0'}\u0016\u000491,dZQ\u0016(1\u0019%`V\u0011(*3%`~\u0015(*58w{\u00018*5'gB\u00119\tf\u000eK~5\u001e\u0012\u000et"
         .length();
      char var1 = '7';
      int var0 = -1;

      while (true) {
         String var10002 = a(3, a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            a = var5;
            JMS_KNOWN_PROPERTIES = new HashSet<>(
               Arrays.asList(
                  TibjmsSSL.AUTH_ONLY,
                  TibjmsSSL.ENABLE_VERIFY_HOST,
                  TibjmsSSL.TRUSTED_CERTIFICATES,
                  TibjmsSSL.ENABLE_VERIFY_HOST_NAME,
                  TibjmsSSL.IDENTITY,
                  TibjmsSSL.PASSWORD,
                  TibjmsContext.SECURITY_PROTOCOL,
                  TibjmsContext.SSL_AUTH_ONLY,
                  TibjmsContext.SSL_ENABLE_VERIFY_HOST,
                  TibjmsContext.SSL_TRUSTED_CERTIFICATES,
                  TibjmsContext.SSL_ENABLE_VERIFY_HOST_NAME,
                  TibjmsContext.SSL_IDENTITY,
                  TibjmsContext.SSL_PASSWORD,
                  JmsConnection.PROP_JNDI_SSG_KEYSTORE_ID,
                  JmsConnection.PROP_JNDI_SSG_KEY_ALIAS,
                  JmsConnection.PROP_CUSTOMIZER,
                  JmsConnection.PROP_QUEUE_SSG_KEYSTORE_ID,
                  JmsConnection.PROP_QUEUE_SSG_KEY_ALIAS,
                  JmsConnection.PROP_QUEUE_USE_CLIENT_AUTH
               )
            );
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

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

      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 -> 89;
            case 1 -> 73;
            case 2 -> 13;
            case 3 -> 59;
            case 4 -> 119;
            case 5 -> 72;
            default -> 93;
         });
      }

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