package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.objectmodel.EntityHeader;
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.IdentityTarget;
import com.l7tech.policy.assertion.RequestIdentityTargetable;
import com.l7tech.policy.assertion.TargetMessageType;
import com.l7tech.policy.assertion.UsesEntities;
import com.l7tech.policy.assertion.XpathBasedAssertionFactory;
import com.l7tech.security.xml.KeyReference;
import com.l7tech.xml.xpath.XpathExpression;

public class WssEncryptElement extends XmlSecurityAssertionBase implements RequestIdentityTargetable, UsesEntities {
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   private IdentityTarget identityTarget;
   private String xencAlgorithm;
   private String xencKeyAlgorithm;
   private String keyReference;
   private boolean encryptContentsOnly;
   static final long serialVersionUID = 6786847056395838531L;
   private static final String[] c;

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

   public WssEncryptElement(XpathExpression var1) {
      super(TargetMessageType.RESPONSE, true);
      this.xencAlgorithm = c[2];
      this.xencKeyAlgorithm = null;
      this.keyReference = KeyReference.SKI.getName();
      this.encryptContentsOnly = true;
      this.setXpathExpression(var1);
   }

   public String getXEncAlgorithm() {
      return this.xencAlgorithm;
   }

   public void setXEncAlgorithm(String var1) {
      try {
         if (var1 == null) {
            throw new IllegalArgumentException();
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      this.xencAlgorithm = var1;
   }

   public String getKeyEncryptionAlgorithm() {
      return this.xencKeyAlgorithm;
   }

   public boolean isEncryptContentsOnly() {
      return this.encryptContentsOnly;
   }

   public void setEncryptContentsOnly(boolean var1) {
      this.encryptContentsOnly = var1;
   }

   public void setKeyEncryptionAlgorithm(String var1) {
      this.xencKeyAlgorithm = var1;
   }

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

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

   @Override
   public IdentityTarget getIdentityTarget() {
      return this.identityTarget;
   }

   @Override
   public void setIdentityTarget(IdentityTarget var1) {
      this.identityTarget = var1;
   }

   @Migration(mapName = MigrationMappingSelection.REQUIRED, export = false, resolver = PropertyResolver.Type.USERGROUP)
   @Override
   public EntityHeader[] getEntitiesUsed() {
      try {
         if (this.identityTarget != null) {
            return this.identityTarget.getEntitiesUsed();
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      return new EntityHeader[0];
   }

   @Override
   public void replaceEntity(EntityHeader var1, EntityHeader var2) {
      try {
         if (this.identityTarget != null) {
            this.identityTarget.replaceEntity(var1, var2);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }
   }

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

   static {
      String[] var5 = new String[26];
      int var3 = 0;
      String var2 = "di:\rf2\u001dtv6\u001a|/3iQ2\u001ao#(t1dj>Gdq(bf;Gx43\u007f||\u001am53rw0\r{i(u`6Gp+0bk0\u001aq6(nj=Fo/:+oq'\u00182ispr$F\u007furhw4G:vl6*c\\'>1k`=\u000b+'9t4aP%%>d.dj>Gdq(bf;Gk)2tj?\r'49tj&\u001ak#/(}>\u0004m(?u|#\u001ca)2)b:\u000e\u0019ww<\u0018m4(n` -l/(hw\u0010\u0004i5/id>\r\u000ewd?\r|29Aj?\fm4/\u0018wj?\u0001k?\nfi:\fi23uF?\t{52fh6\u000bc` \u000bz/,sl<\u0006\u0010fv \rz25hk\u0015\tk23u|=dj>Fdq(bf;Fk)2tj?\r&6=i`?\u001b&\u001e,fq;*i59cD \u001bm4(nj=8z),bw'\u0001m5\u0018nd?\u0007o\u000b\u007fh?;m%)ul'\u0011\u0017wd?\r|29Ij7\r[).sU!\u0001g45s|Idj>Fdq(bf;Fx43\u007f|}\u0018g*5d|}\t{59uq:\u0007fh$ji \rkh\u001fkl6\u0006|\u00149tu<\u0006{#\u000btv\u0010\u0007f 5c`=\u001ca'0nq*\u000fBk0\u001aq6('@?\re#2s\bu` \u0018g(/b\u0015wj?\u0001k?\u0012ha6&i+9Ad0\u001cg4%\u000fwd?\r|29Ij7\rA%3i\ttm<\u001a|\b=j`\u000fBk0\u001aq6('@?\re#2s\u0018di:\rf2\u001dtv6\u001a|/3iF?\t{52fh6\frv6\fJ?\u001fkl6\u0006|,Bk0\u001aq6('j=\r().'h<\u001amf9k`>\rf2/'j5H|.9'h6\u001b{';b+\u0014ww<\u0018m4(n` )k25hk\u001d\te#6dj>Fdq(bf;Fx)0nf*F~'0na2\u001cg4rPv -f%.~u'-d#1bk'>i*5cd'\u0007z";
      int var4 = "di:\rf2\u001dtv6\u001a|/3iQ2\u001ao#(t1dj>Gdq(bf;Gx43\u007f||\u001am53rw0\r{i(u`6Gp+0bk0\u001aq6(nj=Fo/:+oq'\u00182ispr$F\u007furhw4G:vl6*c\\'>1k`=\u000b+'9t4aP%%>d.dj>Gdq(bf;Gk)2tj?\r'49tj&\u001ak#/(}>\u0004m(?u|#\u001ca)2)b:\u000e\u0019ww<\u0018m4(n` -l/(hw\u0010\u0004i5/id>\r\u000ewd?\r|29Aj?\fm4/\u0018wj?\u0001k?\nfi:\fi23uF?\t{52fh6\u000bc` \u000bz/,sl<\u0006\u0010fv \rz25hk\u0015\tk23u|=dj>Fdq(bf;Fk)2tj?\r&6=i`?\u001b&\u001e,fq;*i59cD \u001bm4(nj=8z),bw'\u0001m5\u0018nd?\u0007o\u000b\u007fh?;m%)ul'\u0011\u0017wd?\r|29Ij7\r[).sU!\u0001g45s|Idj>Fdq(bf;Fx43\u007f|}\u0018g*5d|}\t{59uq:\u0007fh$ji \rkh\u001fkl6\u0006|\u00149tu<\u0006{#\u000btv\u0010\u0007f 5c`=\u001ca'0nq*\u000fBk0\u001aq6('@?\re#2s\bu` \u0018g(/b\u0015wj?\u0001k?\u0012ha6&i+9Ad0\u001cg4%\u000fwd?\r|29Ij7\rA%3i\ttm<\u001a|\b=j`\u000fBk0\u001aq6('@?\re#2s\u0018di:\rf2\u001dtv6\u001a|/3iF?\t{52fh6\frv6\fJ?\u001fkl6\u0006|,Bk0\u001aq6('j=\r().'h<\u001amf9k`>\rf2/'j5H|.9'h6\u001b{';b+\u0014ww<\u0018m4(n` )k25hk\u001d\te#6dj>Fdq(bf;Fx)0nf*F~'0na2\u001cg4rPv -f%.~u'-d#1bk'>i*5cd'\u0007z"
         .length();
      char var1 = 22;
      int var7 = -1;

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

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

                  var2 = "\u0007.u_4smb\u0005zH fw6`F_\"s|04\u007fH>\u0019!,\u007fH#wX13s_9jv,\u0010yA$``\u000b#yC";
                  var4 = "\u0007.u_4smb\u0005zH fw6`F_\"s|04\u007fH>\u0019!,\u007fH#wX13s_9jv,\u0010yA$``\u000b#yC".length();
                  var1 = 26;
                  var7 = -1;
            }

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

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

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

      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 -> 109;
            case 1 -> 111;
            case 2 -> 57;
            case 3 -> 2;
            case 4 -> 98;
            case 5 -> 44;
            default -> 54;
         });
      }

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