package com.l7tech.server.policy.assertion.credential;

import com.l7tech.policy.assertion.Assertion;
import com.l7tech.security.token.SecurityToken;
import com.l7tech.security.token.UsernameToken;
import com.l7tech.server.message.PolicyContextCache;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.AbstractServerAssertion;
import com.l7tech.server.policy.assertion.ServerAssertion;
import com.l7tech.xml.saml.SamlAssertion;
import java.util.logging.Level;

public abstract class AbstractServerCachedSecurityTokenAssertion<AT extends Assertion> extends AbstractServerAssertion<AT> implements ServerAssertion<AT> {
   private static final long d = 30000L;
   private static final long e = 300000L;
   private final String f;
   private static final String m;

   protected AbstractServerCachedSecurityTokenAssertion(AT var1, String var2) {
      super((AT)var1);
      this.f = var2;
   }

   protected SecurityToken getCachedSecurityToken(PolicyContextCache var1) {
      SecurityToken var2 = null;
      if (var1 != null) {
         try {
            SecurityToken var3 = (SecurityToken)var1.get(this.f);
            if (var3 != null) {
               var2 = var3;
            }
         } catch (ClassCastException var4) {
            this.logger.log(Level.SEVERE, m, var4);
         }
      }

      return var2;
   }

   protected void setCachedSecurityToken(PolicyContextCache var1, SecurityToken var2, long var3) {
      try {
         if (var1 != null) {
            var1.put(this.f, var2, new PolicyContextCache.Info(var3));
         }
      } catch (ClassCastException var5) {
         throw a(var5);
      }
   }

   protected long getSamlAssertionExpiry(SamlAssertion var1) {
      long var2;
      if (var1.getExpires() != null) {
         var2 = var1.getExpires().getTimeInMillis() - 30000L;
      } else {
         var2 = System.currentTimeMillis() + 300000L;
      }

      return var2;
   }

   protected long getUsernameTokenExpiry(UsernameToken var1) {
      return this.getDefaultExpiry();
   }

   protected long getDefaultExpiry() {
      return System.currentTimeMillis() + 300000L;
   }

   protected void addCacheInvalidator(PolicyEnforcementContext var1) {
      var1.addRoutingResultListener(new a(this, var1));
   }

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

   static {
      String var10002 = b(95, a("4=\f\u001a| ?\u0015e/\u001a|!(\u00181\u0005+p??\u001fe\u0015\u0011?7;\u0012-\u0019"));
      byte var10001 = -1;
      m = var10002;
   }

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

      return var10000;
   }

   private static String b(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 -> 46;
            case 1 -> 26;
            case 2 -> 35;
            case 3 -> 32;
            case 4 -> 64;
            case 5 -> 11;
            default -> 5;
         });
      }

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