package com.l7tech.policy.validator;

import com.l7tech.policy.AssertionPath;
import com.l7tech.policy.PolicyValidatorResult;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionUtils;
import com.l7tech.policy.assertion.xmlsec.WssEncryptElement;
import java.util.logging.Logger;

public class WssEncryptElementValidator extends j {
   private static final Logger d = Logger.getLogger(WssEncryptElementValidator.class.getName());
   private final WssEncryptElement e;
   private final XpathBasedAssertionValidator f;
   private final AssertionValidator g;
   private static final String j;

   public WssEncryptElementValidator(WssEncryptElement var1) {
      super(var1, true, false);
      this.e = var1;
      this.f = new XpathBasedAssertionValidator(var1);
      this.g = new ElementSelectingXpathValidator<>(var1);
   }

   @Override
   public void validate(AssertionPath var1, PolicyValidationContext var2, PolicyValidatorResult var3) {
      this.f.validate(var1, var2, var3);
      this.g.validate(var1, var2, var3);
      super.validate(var1, var2, var3);
   }

   @Override
   protected void validateAssertion(AssertionPath var1, Assertion var2, PolicyValidatorResult var3) {
      if (var2 instanceof WssEncryptElement && AssertionUtils.isSameTargetRecipient(this.e, var2) && AssertionUtils.isSameTargetMessage(this.e, var2)) {
         WssEncryptElement var4 = (WssEncryptElement)var2;
         if (!var4.getXEncAlgorithm().equals(this.e.getXEncAlgorithm())) {
            String var5 = j;
            var3.addError(new PolicyValidatorResult.Error(this.e, var5, null));
            d.info(var5);
         }
      }
   }

   static {
      String var10002 = c(
         15,
         c(
            "v\u0015\\/c\u00110^@S4d\u00075_\u0005^/c\u00000R\u0014I{k\u0012/^\u0012D2e\u000f/\u001b\u0010B>y\u00042O@G2~\t|_\tV=o\u00139U\u0014\u0010\u001ed\u0002.B\u0010D2e\u000f|v\u0005D3e\u0005|z\fW4x\b(S\rC"
         )
      );
      byte var10001 = -1;
      j = var10002;
   }

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

      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 -> 52;
            case 1 -> 111;
            case 2 -> 63;
            case 3 -> 84;
            case 4 -> 5;
            case 5 -> 110;
            default -> 83;
         });
      }

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