package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.objectmodel.ExternalEntityHeader;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import com.l7tech.objectmodel.migration.PropertyResolver;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.AssertionNodeNameFactory;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.MessageTargetable;
import com.l7tech.policy.assertion.MessageTargetableSupport;
import com.l7tech.policy.assertion.TargetMessageType;
import com.l7tech.policy.assertion.UsesVariables;
import com.l7tech.policy.assertion.annotation.RequiresSOAP;
import com.l7tech.policy.variable.VariableMetadata;

@RequiresSOAP(wss = true)
public class RequireWssX509Cert extends SecurityHeaderAddressableSupport implements MessageTargetable, UsesVariables {
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   private boolean allowMultipleSignatures = false;
   private String signatureElementVariable;
   private String signatureReferenceElementVariable;
   private MessageTargetableSupport messageTargetableSupport = new MessageTargetableSupport(TargetMessageType.REQUEST, false);
   static final long serialVersionUID = 4639888522525345134L;
   private static final String[] c;

   @Override
   public boolean isCredentialSource() {
      return true;
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      String[] var2 = c;
      var1.put(var2[0], var2[20]);
      var1.put(var2[1], var2[13]);
      var1.put(var2[5], var2[17]);
      var1.put(var2[18], new String[]{var2[10]});
      var1.put(var2[6], var2[15]);
      var1.put(var2[4], var2[19]);
      var1.put(var2[9], var2[2]);
      var1.put(var2[3], var2[12]);
      var1.put(var2[8], Boolean.TRUE);
      var1.put(var2[11], var2[7]);
      var1.put(var2[16], policyNameFactory);
      return var1;
   }

   public boolean isAllowMultipleSignatures() {
      return this.allowMultipleSignatures;
   }

   public void setAllowMultipleSignatures(boolean var1) {
      this.allowMultipleSignatures = var1;
   }

   public String getSignatureElementVariable() {
      return this.signatureElementVariable;
   }

   public void setSignatureElementVariable(String var1) {
      this.signatureElementVariable = var1;
   }

   public String getSignatureReferenceElementVariable() {
      return this.signatureReferenceElementVariable;
   }

   public void setSignatureReferenceElementVariable(String var1) {
      this.signatureReferenceElementVariable = var1;
   }

   @Override
   public TargetMessageType getTarget() {
      return this.messageTargetableSupport.getTarget();
   }

   @Override
   public void setTarget(TargetMessageType var1) {
      this.messageTargetableSupport.setTarget(var1);
   }

   @Override
   public String getOtherTargetMessageVariable() {
      return this.messageTargetableSupport.getOtherTargetMessageVariable();
   }

   @Override
   public void setOtherTargetMessageVariable(String var1) {
      this.messageTargetableSupport.setOtherTargetMessageVariable(var1);
   }

   @Override
   public String getTargetName() {
      return this.messageTargetableSupport.getTargetName();
   }

   @Override
   public boolean isTargetModifiedByGateway() {
      return this.messageTargetableSupport.isTargetModifiedByGateway();
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.REQUIRED,
      export = false,
      valueType = ExternalEntityHeader.ValueType.TEXT_ARRAY,
      resolver = PropertyResolver.Type.SERVER_VARIABLE
   )
   @Override
   public String[] getVariablesUsed() {
      return this.messageTargetableSupport
         .getMessageTargetVariablesUsed()
         .withVariables(this.signatureElementVariable, this.signatureReferenceElementVariable)
         .asArray();
   }

   @Override
   public VariableMetadata[] getVariablesSet() {
      return this.messageTargetableSupport.getMessageTargetVariablesSet().asArray();
   }

   public RequireWssX509Cert clone() {
      RequireWssX509Cert var1 = (RequireWssX509Cert)super.clone();
      var1.messageTargetableSupport = new MessageTargetableSupport(this.messageTargetableSupport);
      return var1;
   }

   static {
      String[] var5 = new String[21];
      int var3 = 0;
      String var2 = "\u001f_\u0013bLX\b\u0001R\u000b\bR\u000fsJ\u007f\u0019\u0018^\u0013~0\u000fX\u0011>T!\u001d\tT\u0014>Hy\u0005\u0005T\u0005>Nw\u0005\u0005S\u001ddWdG;D\u000fH\r&P/R\u000ednw\u0005\u0005S\u001ddWd\u0018\u000f[\u0015uVb(\u001fD\u0019bL\u007f\u0006\u0002t\u0010qKe\u0007\rZ\u0019\u0019\u001cE\u0013`]d\u001d\u0005R\u000fU\\\u007f\u001d\u0003E?|Ye\u001a\u0002V\u0011u\u000f\u001cV\u0010uLb\f\"X\u0018uqu\u0006\u0002\u0014\u001cE\u0013`]d\u001d\u0005R\u000fQ[b\u0000\u0003Y2qUs1\u000fX\u0011?T!\u001d\tT\u0014?Hd\u0006\u0014NSb]e\u0006\u0019E\u001fuK9\u001d\u001eR\u0019?@{\u0005\tY\u001fbAf\u001d\u0005X\u0012>_\u007f\u000f\f\u0019D\u0019tzo*\u0000^\u0019~L\u0018\u001cX\u0010y[o?\r[\u0015tYb\u0006\u001et\u0010qKe\u0007\rZ\u0019\r\rT\u001fuKe*\u0003Y\bbWz\u0019\u000f[\u0015uVb(\u001fD\u0019bL\u007f\u0006\u0002g\u0013|Qu\u0010%T\u0013~A\u000fX\u0011>T!\u001d\tT\u0014>Hd\u0006\u0014NR`Wz\u0000\u000fNRqKe\f\u001eC\u0015\u007fV8\u0011\u0001[\u000fu[8*\u0000^\u0019~LD\f\u001dB\u0019cLA\u001a\u001foI \u0001U\f\u001eCS8_\u00190kY(<\u0017\u0011uKe\b\u000bR\\}Me\u001dLT\u0013~Lw\u0000\u0002\u0017\u001d0oED?R\u001feJ\u007f\u001d\u0015\u0017\u000fy_x\b\u0018B\u000eu\u0018a\u0000\u0018_\\qV61B\u0002L)\u0018e\f\u000fB\u000eyLoI\u0018X\u0017uV8)>R\reQd\fL`/=ks\n\u0019E\u0015dA6:\u0005P\u0012qLc\u001b\t\u0017?b]r\f\u0002C\u0015qTe ;dQC]u\u001c\u001e^\bi\u0018E\u0000\u000bY\u001ddMd\fLg\u000e\u007fHs\u001b\u0018^\u0019c\u0015\u001cX\u0010y[o'\u0003S\u0019^Y{\f*V\u001fdWd\u0010.\u000fX\u0011?T!\u001d\tT\u0014?[y\u0007\u001fX\u0010u\u0017d\f\u001fX\tb[s\u001aCO\u0011|]x\n\u001eN\fdQy\u0007BP\u0015v\u000e\u001cV\u0010uLb\f*X\u0010t]d\u001a";
      int var4 = "\u001f_\u0013bLX\b\u0001R\u000b\bR\u000fsJ\u007f\u0019\u0018^\u0013~0\u000fX\u0011>T!\u001d\tT\u0014>Hy\u0005\u0005T\u0005>Nw\u0005\u0005S\u001ddWdG;D\u000fH\r&P/R\u000ednw\u0005\u0005S\u001ddWd\u0018\u000f[\u0015uVb(\u001fD\u0019bL\u007f\u0006\u0002t\u0010qKe\u0007\rZ\u0019\u0019\u001cE\u0013`]d\u001d\u0005R\u000fU\\\u007f\u001d\u0003E?|Ye\u001a\u0002V\u0011u\u000f\u001cV\u0010uLb\f\"X\u0018uqu\u0006\u0002\u0014\u001cE\u0013`]d\u001d\u0005R\u000fQ[b\u0000\u0003Y2qUs1\u000fX\u0011?T!\u001d\tT\u0014?Hd\u0006\u0014NSb]e\u0006\u0019E\u001fuK9\u001d\u001eR\u0019?@{\u0005\tY\u001fbAf\u001d\u0005X\u0012>_\u007f\u000f\f\u0019D\u0019tzo*\u0000^\u0019~L\u0018\u001cX\u0010y[o?\r[\u0015tYb\u0006\u001et\u0010qKe\u0007\rZ\u0019\r\rT\u001fuKe*\u0003Y\bbWz\u0019\u000f[\u0015uVb(\u001fD\u0019bL\u007f\u0006\u0002g\u0013|Qu\u0010%T\u0013~A\u000fX\u0011>T!\u001d\tT\u0014>Hd\u0006\u0014NR`Wz\u0000\u000fNRqKe\f\u001eC\u0015\u007fV8\u0011\u0001[\u000fu[8*\u0000^\u0019~LD\f\u001dB\u0019cLA\u001a\u001foI \u0001U\f\u001eCS8_\u00190kY(<\u0017\u0011uKe\b\u000bR\\}Me\u001dLT\u0013~Lw\u0000\u0002\u0017\u001d0oED?R\u001feJ\u007f\u001d\u0015\u0017\u000fy_x\b\u0018B\u000eu\u0018a\u0000\u0018_\\qV61B\u0002L)\u0018e\f\u000fB\u000eyLoI\u0018X\u0017uV8)>R\reQd\fL`/=ks\n\u0019E\u0015dA6:\u0005P\u0012qLc\u001b\t\u0017?b]r\f\u0002C\u0015qTe ;dQC]u\u001c\u001e^\bi\u0018E\u0000\u000bY\u001ddMd\fLg\u000e\u007fHs\u001b\u0018^\u0019c\u0015\u001cX\u0010y[o'\u0003S\u0019^Y{\f*V\u001fdWd\u0010.\u000fX\u0011?T!\u001d\tT\u0014?[y\u0007\u001fX\u0010u\u0017d\f\u001fX\tb[s\u001aCO\u0011|]x\n\u001eN\fdQy\u0007BP\u0015v\u000e\u001cV\u0010uLb\f*X\u0010t]d\u001a"
         .length();
      char var1 = '\t';
      int var7 = -1;

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

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

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

                  var2 = "7`)\u0006l\u0019%1l,\u0006cA?'`(M.^0:j([.y\"'Wq\u00189m4&{\u0014Zo^4&{-Msj85c+O)\u0006j5]i\\4tX\u0017\u0005SK2!}-\\y\u000e\u0002=h*It[#1/\u0007ZeJ4:{-Il]";
                  var4 = "7`)\u0006l\u0019%1l,\u0006cA?'`(M.^0:j([.y\"'Wq\u00189m4&{\u0014Zo^4&{-Msj85c+O)\u0006j5]i\\4tX\u0017\u0005SK2!}-\\y\u000e\u0002=h*It[#1/\u0007ZeJ4:{-Il]"
                     .length();
                  var1 = '5';
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String c(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 -> 86;
            case 2 -> 29;
            case 3 -> 113;
            case 4 -> 89;
            case 5 -> 119;
            default -> 8;
         });
      }

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