package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
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.PrivateKeyable;
import com.l7tech.policy.assertion.TargetMessageType;
import com.l7tech.policy.assertion.XpathBasedAssertionFactory;
import com.l7tech.security.xml.KeyReference;
import com.l7tech.util.GoidUpgradeMapper;
import com.l7tech.xml.xpath.XpathExpression;
import org.jetbrains.annotations.Nullable;

public class WssSignElement extends XmlSecurityAssertionBase implements WssDecorationConfig, PrivateKeyable {
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   private String keyReference = KeyReference.BST.getName();
   private boolean protectTokens = false;
   private boolean usesDefaultKeyStore = true;
   private Goid nonDefaultKeystoreId;
   private String keyId;
   @Nullable
   private String digestAlgorithmName;
   static final long serialVersionUID = 6338872133329107002L;
   private static final String[] c;

   public WssSignElement() {
      this(compatOrigDefaultXpathValue());
   }

   public WssSignElement(XpathExpression var1) {
      super(TargetMessageType.RESPONSE, true);
      this.setXpathExpression(var1);
   }

   @Override
   public String getKeyReference() {
      return this.keyReference;
   }

   @Override
   public void setKeyReference(String var1) {
      this.keyReference = var1;
   }

   @Override
   public boolean isUsesDefaultKeyStore() {
      return this.usesDefaultKeyStore;
   }

   @Override
   public void setUsesDefaultKeyStore(boolean var1) {
      this.usesDefaultKeyStore = var1;
   }

   @Migration(mapName = MigrationMappingSelection.REQUIRED, export = false, resolver = PropertyResolver.Type.SSGKEY)
   @Override
   public Goid getNonDefaultKeystoreId() {
      return this.nonDefaultKeystoreId;
   }

   @Override
   public void setNonDefaultKeystoreId(Goid var1) {
      this.nonDefaultKeystoreId = var1;
   }

   @Deprecated
   public void setNonDefaultKeystoreId(long var1) {
      this.nonDefaultKeystoreId = GoidUpgradeMapper.mapOid(EntityType.SSG_KEYSTORE, var1);
   }

   @Override
   public String getKeyAlias() {
      return this.keyId;
   }

   @Override
   public void setKeyAlias(String var1) {
      this.keyId = var1;
   }

   @Override
   public boolean isProtectTokens() {
      return this.protectTokens;
   }

   @Override
   public void setProtectTokens(boolean var1) {
      this.protectTokens = var1;
   }

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

   @Nullable
   @Override
   public String getDigestAlgorithmName() {
      return this.digestAlgorithmName;
   }

   @Override
   public void setDigestAlgorithmName(@Nullable String var1) {
      this.digestAlgorithmName = var1;
   }

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

   static {
      String[] var5 = new String[23];
      int var3 = 0;
      String var2 = "w|Q\u001a.S<IrY\u001a\tH+sMO\u00165U0sd\u000bcxN\u001c(N)stR\u0011\u0017TtZ\u0011zb5bpX\u0011.\u0007\turM\u001a(S0bn\u0010fnN\u001a(S0hs{\u001e9S6ud3drPQ6\u0010-b~UQ*H5n~DQ,F5ny\\\u000b5UwPnN,3@7BqX\u0012?I-Q|Q\u0016>F-ho\fTtZ\u0011zb5bpX\u0011.\u0014woR\u000f?U-nxN>9S0hss\u001e7B)TtZ\u0011zH7b=R\rzJ6ux\u001d\u001a6B4bsI\fzH?'iU\u001azJ<tn\\\u0018?\t\fTtZ\u0011zb5bpX\u0011.\ttuR\r.i8jx\frnX\u001b\u0018^\u001aktX\u0011.\u0018wrQ\u00169^\u000ffqT\u001b;S6u^Q\u001e)T7fpX\u000fw|Q\u001a.S<IrY\u001a\u0013D6i\u0018dqT\u001a4S\u0018tnX\r.N6i^Q\u001e)T7fpX\u0019woR\u000f?U-nxN:>N-ho~\u0013;T*i|P\u001aCdrPQ6\u0010-b~UQ*U6\u007fd\u0013\u000f5K0dd\u0013\u001e)T<uiT\u00104\t!jqN\u001a9\t\u001aktX\u0011.u<tmR\u0011)B\u000etnt\u0011.B>utI\u0006.drPP6\u0010-b~UP9H7trQ\u001auU<trH\r9B*(eP\u0013?I:udM\u000b3H7)zT\u0019=drPQ6\u0010-b~UQ9H7trQ\u001atW8ixQ\ft\u007f)fiU=;T<c\\N\f?U-nrS/(H)boI\u0016?T\u001dn|Q\u0010=\buxN\u000f5I*b\u000ew|Q\u001a.S<ArQ\u001b?U*\u0016dqT\u001a4S\u0018tnX\r.N6iI\\\r=B-t";
      int var4 = "w|Q\u001a.S<IrY\u001a\tH+sMO\u00165U0sd\u000bcxN\u001c(N)stR\u0011\u0017TtZ\u0011zb5bpX\u0011.\u0007\turM\u001a(S0bn\u0010fnN\u001a(S0hs{\u001e9S6ud3drPQ6\u0010-b~UQ*H5n~DQ,F5ny\\\u000b5UwPnN,3@7BqX\u0012?I-Q|Q\u0016>F-ho\fTtZ\u0011zb5bpX\u0011.\u0014woR\u000f?U-nxN>9S0hss\u001e7B)TtZ\u0011zH7b=R\rzJ6ux\u001d\u001a6B4bsI\fzH?'iU\u001azJ<tn\\\u0018?\t\fTtZ\u0011zb5bpX\u0011.\ttuR\r.i8jx\frnX\u001b\u0018^\u001aktX\u0011.\u0018wrQ\u00169^\u000ffqT\u001b;S6u^Q\u001e)T7fpX\u000fw|Q\u001a.S<IrY\u001a\u0013D6i\u0018dqT\u001a4S\u0018tnX\r.N6i^Q\u001e)T7fpX\u0019woR\u000f?U-nxN:>N-ho~\u0013;T*i|P\u001aCdrPQ6\u0010-b~UQ*U6\u007fd\u0013\u000f5K0dd\u0013\u001e)T<uiT\u00104\t!jqN\u001a9\t\u001aktX\u0011.u<tmR\u0011)B\u000etnt\u0011.B>utI\u0006.drPP6\u0010-b~UP9H7trQ\u001auU<trH\r9B*(eP\u0013?I:udM\u000b3H7)zT\u0019=drPQ6\u0010-b~UQ9H7trQ\u001atW8ixQ\ft\u007f)fiU=;T<c\\N\f?U-nrS/(H)boI\u0016?T\u001dn|Q\u0010=\buxN\u000f5I*b\u000ew|Q\u001a.S<ArQ\u001b?U*\u0016dqT\u001a4S\u0018tnX\r.N6iI\\\r=B-t"
         .length();
      char var1 = 23;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 116;
         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[5];
                     policyNameFactory = new ad();
                     return;
                  }

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

                  var2 = "1>\u001fbq\nb;:\u0007H\u00159<\u001fXw\u0010Y&7\u0016\u007fu\u0004r\u000f2\u0010E{\u001bn";
                  var4 = "1>\u001fbq\nb;:\u0007H\u00159<\u001fXw\u0010Y&7\u0016\u007fu\u0004r\u000f2\u0010E{\u001bn".length();
                  var1 = 11;
                  var7 = -1;
            }

            var10000 = 58;
            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] ^ 45);
      }

      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 -> 115;
            case 1 -> 105;
            case 2 -> 73;
            case 3 -> 11;
            case 4 -> 46;
            case 5 -> 83;
            default -> 45;
         });
      }

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