package com.l7tech.security.xml;

import com.l7tech.common.io.CertUtils;
import com.l7tech.util.DomUtils;
import com.l7tech.util.HexUtils;
import com.l7tech.util.NamespaceFactory;
import com.l7tech.util.SoapConstants;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import org.jetbrains.annotations.NotNull;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public abstract class KeyInfoDetails {
   private static final String[] d;

   @Deprecated
   public static KeyInfoDetails makeUriReference(String var0, String var1) {
      UriReferenceKeyInfoDetails var10000;
      UriReferenceKeyInfoDetails var10001;
      String var10002;
      label16: {
         try {
            var10000 = new UriReferenceKeyInfoDetails;
            var10001 = var10000;
            if (var0.startsWith("#")) {
               var10002 = var0;
               break label16;
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         var10002 = "#" + var0;
      }

      var10001./* $VF: Unable to resugar constructor */<init>(var10002, var1);
      return var10000;
   }

   public static KeyInfoDetails makeUriReferenceRaw(String var0, String var1) {
      return new UriReferenceKeyInfoDetails(var0, var1);
   }

   public static KeyInfoDetails makeKeyId(byte[] var0, String var1) {
      return new KeyIdentifierKeyInfoDetails(HexUtils.encodeBase64(var0, true), var1, true);
   }

   public static KeyInfoDetails makeKeyId(String var0, boolean var1, String var2) {
      return new KeyIdentifierKeyInfoDetails(var0, var2, var1);
   }

   public static KeyInfoDetails makeEncryptedKeySha1Ref(String var0) {
      return new KeyIdentifierKeyInfoDetails(var0, SoapConstants.VALUETYPE_ENCRYPTED_KEY_SHA1, false);
   }

   public Element createKeyInfoElement(Document var1, NamespaceFactory var2, String var3) {
      String var10000;
      label16: {
         try {
            if (var3 == null) {
               var10000 = d[8];
               break label16;
            }
         } catch (IllegalArgumentException var6) {
            throw a(var6);
         }

         var10000 = var3 + d[1];
      }

      String var4 = var10000;
      Element var5 = var1.createElementNS(SoapConstants.DIGSIG_URI, var4);
      return this.populateExistingKeyInfoElement(var2, var5);
   }

   public static KeyInfoDetails makeIssuerSerial(X509Certificate var0, boolean var1) {
      return new IssuerSerialKeyInfoDetails(var0, var1);
   }

   public static KeyInfoDetails makeThumbprintSha1(X509Certificate var0) throws CertificateEncodingException {
      String var1 = CertUtils.getThumbprintSHA1(var0);
      return new KeyIdentifierKeyInfoDetails(var1, SoapConstants.VALUETYPE_X509_THUMB_SHA1, true);
   }

   public static KeyInfoDetails makeStrKeyIdLiteralX509(X509Certificate var0) throws CertificateEncodingException {
      String var1 = HexUtils.encodeBase64(var0.getEncoded(), true);
      return new KeyIdentifierKeyInfoDetails(var1, SoapConstants.VALUETYPE_X509, true);
   }

   @NotNull
   public static KeyInfoDetails makeKeyName(@NotNull X509Certificate var0, boolean var1) {
      try {
         if (var0 == null) {
            a(0);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      return new KeyNameKeyInfoDetails(var0, var1);
   }

   public abstract Element populateExistingKeyInfoElement(NamespaceFactory var1, Element var2);

   public Element createAndAppendKeyInfoElement(NamespaceFactory var1, Node var2) {
      String[] var5 = d;
      Element var4 = DomUtils.findFirstChildElementByName(var2, SoapConstants.XMLENC_NS, var5[3]);
      Element var3;
      if (var4 == null) {
         var3 = DomUtils.createAndAppendElementNS(var2, var5[10], SoapConstants.DIGSIG_URI, var5[5]);
      } else {
         var5 = d;
         var3 = DomUtils.createAndInsertBeforeElementNS(var4, var5[8], SoapConstants.DIGSIG_URI, var5[4]);
      }

      return this.populateExistingKeyInfoElement(var1, var3);
   }

   protected static Element createStr(NamespaceFactory var0, Element var1) {
      return DomUtils.createAndAppendElementNS(var1, SoapConstants.SECURITYTOKENREFERENCE_EL_NAME, var0.getWsseNs(), d[2]);
   }

   public abstract boolean isX509ValueReference();

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

   static {
      String[] var5 = new String[11];
      int var3 = 0;
      String var2 = "`&(\u000f+N*C&.\u000f\b7\f&\u0013)E5b\u0004z40\u000f\nN.3\u0002\u0005Y\u0017l3\"\u0004i4*\r\u0004i4*\r\u000bn\"1\u001e\tM:n&7\u000f>L5$\u001f\rN=yg%\u0005\u0012\u000b\u0013C(7$\u0015G?-7\"\u0018\u0001F6y\"1JG\u000e *g,\f@\u000e #b0J\r^ yg-\u0005\u0014\u000b1hg-\u001f\fG\u0007F\":#\u000eM<";
      int var4 = "`&(\u000f+N*C&.\u000f\b7\f&\u0013)E5b\u0004z40\u000f\nN.3\u0002\u0005Y\u0017l3\"\u0004i4*\r\u0004i4*\r\u000bn\"1\u001e\tM:n&7\u000f>L5$\u001f\rN=yg%\u0005\u0012\u000b\u0013C(7$\u0015G?-7\"\u0018\u0001F6y\"1JG\u000e *g,\f@\u000e #b0J\r^ yg-\u0005\u0014\u000b1hg-\u001f\fG\u0007F\":#\u000eM<"
         .length();
      char var1 = 11;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 10;
         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) {
                     d = var5;
                     return;
                  }

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

                  var2 = "C\u0005\u0003h!1\nE\t\u0006h>c\u001dU\u0018\u000734)\u0006M\u0006A\f(\u007f7N\f\u0001\u0003(r\u001fI\u0006\u001d\u0007k\u000f\u0017\u000e#`\u0011";
                  var4 = "C\u0005\u0003h!1\nE\t\u0006h>c\u001dU\u0018\u000734)\u0006M\u0006A\f(\u007f7N\f\u0001\u0003(r\u001fI\u0006\u001d\u0007k\u000f\u0017\u000e#`\u0011"
                     .length();
                  var1 = '&';
                  var7 = -1;
            }

            var10000 = 39;
            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] ^ 89);
      }

      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 -> 7;
            case 1 -> 77;
            case 2 -> 73;
            case 3 -> 96;
            case 4 -> 106;
            case 5 -> 33;
            default -> 89;
         });
      }

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