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

import com.l7tech.gateway.common.audit.AssertionMessages;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.credential.CredentialFinderException;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.policy.assertion.credential.http.HttpCredentialSourceAssertion;
import com.l7tech.policy.assertion.credential.http.HttpDigest;
import com.l7tech.server.policy.assertion.credential.DigestSessions;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.HexUtils;
import jakarta.mail.internet.HeaderTokenizer;
import jakarta.mail.internet.ParseException;
import jakarta.mail.internet.HeaderTokenizer.Token;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

public class ServerHttpDigest extends ServerHttpCredentialSource<HttpDigest> {
   private static final boolean d;
   private static final String[] g;

   public ServerHttpDigest(HttpDigest var1) throws PolicyAssertionException {
      super(var1);
   }

   @Override
   protected String realm() {
      return HexUtils.REALM;
   }

   @Override
   protected AssertionStatus checkAuthParams(Map var1) {
      if (var1 == null) {
         return AssertionStatus.AUTH_REQUIRED;
      }

      String var2 = (String)var1.get(HttpDigest.PARAM_NONCE);
      String var3 = (String)var1.get(HttpDigest.PARAM_USERNAME);
      String var4 = (String)var1.get(HttpDigest.PARAM_REALM);
      String var5 = (String)var1.get(HttpDigest.PARAM_NC);
      String var6 = (String)var1.get(HttpDigest.PARAM_CNONCE);
      String var7 = (String)var1.get(HttpDigest.PARAM_QOP);
      String var8 = (String)var1.get(HttpDigest.PARAM_URI);
      String var9 = (String)var1.get(HttpDigest.PARAM_RESPONSE);
      if (var3 != null && var4 != null && var2 != null && var8 != null && var9 != null) {
         if (var7 == null || var6 != null && var5 != null) {
            DigestSessions var10 = DigestSessions.getInstance();
            if (var10.use(var2)) {
               this.logAndAudit(AssertionMessages.HTTPDIGEST_NONCE_VALID, var2, var3);
               return AssertionStatus.NONE;
            } else {
               this.logAndAudit(AssertionMessages.HTTPDIGEST_NONCE_EXPIRED, var2, var3);
               var10.invalidate(var2);
               return AssertionStatus.AUTH_FAILED;
            }
         } else {
            return AssertionStatus.AUTH_REQUIRED;
         }
      } else {
         return AssertionStatus.AUTH_REQUIRED;
      }
   }

   protected LoginCredentials doFindCredentials(Message param1, Map<String, String> param2) throws CredentialFinderException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 2
      // 01: ifnonnull 0a
      // 04: aconst_null
      // 05: areturn
      // 06: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 09: athrow
      // 0a: aload 2
      // 0b: getstatic com/l7tech/policy/assertion/credential/http/HttpDigest.PARAM_USERNAME Ljava/lang/String;
      // 0e: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 13: checkcast java/lang/String
      // 16: astore 3
      // 17: aload 2
      // 18: getstatic com/l7tech/policy/assertion/credential/http/HttpDigest.PARAM_REALM Ljava/lang/String;
      // 1b: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 20: checkcast java/lang/String
      // 23: astore 4
      // 25: aload 2
      // 26: getstatic com/l7tech/policy/assertion/credential/http/HttpDigest.PARAM_RESPONSE Ljava/lang/String;
      // 29: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 2e: checkcast java/lang/String
      // 31: astore 5
      // 33: aload 2
      // 34: getstatic com/l7tech/policy/assertion/credential/http/HttpDigest.PARAM_URI Ljava/lang/String;
      // 37: aload 1
      // 38: invokevirtual com/l7tech/message/Message.getHttpRequestKnob ()Lcom/l7tech/message/HttpRequestKnob;
      // 3b: invokeinterface com/l7tech/message/HttpRequestKnob.getRequestUri ()Ljava/lang/String; 1
      // 40: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 45: pop
      // 46: aload 2
      // 47: getstatic com/l7tech/policy/assertion/credential/http/HttpDigest.PARAM_METHOD Ljava/lang/String;
      // 4a: aload 1
      // 4b: invokevirtual com/l7tech/message/Message.getHttpRequestKnob ()Lcom/l7tech/message/HttpRequestKnob;
      // 4e: invokeinterface com/l7tech/message/HttpRequestKnob.getMethod ()Lcom/l7tech/common/http/HttpMethod; 1
      // 53: invokevirtual com/l7tech/common/http/HttpMethod.name ()Ljava/lang/String;
      // 56: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 5b: pop
      // 5c: aload 3
      // 5d: ifnull 78
      // 60: aload 4
      // 62: ifnull 78
      // 65: goto 6c
      // 68: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6b: athrow
      // 6c: aload 5
      // 6e: ifnonnull 7e
      // 71: goto 78
      // 74: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 77: athrow
      // 78: aconst_null
      // 79: areturn
      // 7a: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7d: athrow
      // 7e: new com/l7tech/security/token/http/HttpDigestToken
      // 81: dup
      // 82: aload 3
      // 83: aload 5
      // 85: aload 4
      // 87: aload 2
      // 88: invokespecial com/l7tech/security/token/http/HttpDigestToken.<init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
      // 8b: aload 0
      // 8c: getfield com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 8f: checkcast com/l7tech/policy/assertion/credential/http/HttpDigest
      // 92: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 95: invokestatic com/l7tech/policy/assertion/credential/LoginCredentials.makeLoginCredentials (Lcom/l7tech/security/token/SecurityToken;Ljava/lang/Class;)Lcom/l7tech/policy/assertion/credential/LoginCredentials;
      // 98: areturn
      // try (0 -> 4): 4 com/l7tech/policy/assertion/credential/CredentialFinderException
      // try (21 -> 40): 41 com/l7tech/policy/assertion/credential/CredentialFinderException
      // try (38 -> 45): 46 com/l7tech/policy/assertion/credential/CredentialFinderException
      // try (43 -> 50): 50 com/l7tech/policy/assertion/credential/CredentialFinderException
   }

   @Override
   protected Map<String, String> findCredentialAuthParams(LoginCredentials var1, Map<String, String> var2) {
      Object var3 = var1.getPayload();
      return var3 instanceof Map ? (Map)var3 : var2;
   }

   @Override
   protected Map<String, String> challengeParams(Message var1, Map<String, String> var2) {
      DigestSessions var3 = DigestSessions.getInstance();
      String var4 = var2 == null ? null : (String)var2.get(HttpDigest.PARAM_NONCE);
      if (var4 != null && var4.length() != 0) {
         if (!var3.use(var4)) {
            String var6 = (String)var2.get(HttpDigest.PARAM_USERNAME);
            this.logAndAudit(AssertionMessages.HTTPDIGEST_NONCE_EXPIRED, var4, var6 == null ? g[6] : var6);
            var3.invalidate(var4);
            var4 = var3.generate(this.assertion.getNonceTimeout(), this.assertion.getMaxNonceCount());
            this.logAndAudit(AssertionMessages.HTTPDIGEST_NONCE_GENERATED, var4);
         }

         return this.b(var4);
      } else {
         String var5 = var3.generate(this.assertion.getNonceTimeout(), this.assertion.getMaxNonceCount());
         this.logAndAudit(AssertionMessages.HTTPDIGEST_NONCE_GENERATED, var5);
         return this.b(var5);
      }
   }

   @Override
   protected String scheme() {
      return HttpDigest.SCHEME;
   }

   @Override
   protected LoginCredentials findCredentials(Message param1, Map<String, String> param2) throws IOException, CredentialFinderException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: invokevirtual com/l7tech/message/Message.getHttpRequestKnob ()Lcom/l7tech/message/HttpRequestKnob;
      // 04: getstatic com/l7tech/common/http/HttpConstants.HEADER_AUTHORIZATION Ljava/lang/String;
      // 07: invokeinterface com/l7tech/message/HttpRequestKnob.getHeaderSingleValue (Ljava/lang/String;)Ljava/lang/String; 2
      // 0c: astore 3
      // 0d: aload 3
      // 0e: ifnull 1f
      // 11: aload 3
      // 12: invokevirtual java/lang/String.length ()I
      // 15: ifne 25
      // 18: goto 1f
      // 1b: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1e: athrow
      // 1f: aconst_null
      // 20: areturn
      // 21: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 24: athrow
      // 25: aload 2
      // 26: aload 3
      // 27: invokevirtual java/lang/String.trim ()Ljava/lang/String;
      // 2a: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljava/util/Map;Ljava/lang/String;)Z
      // 2d: ifne 3d
      // 30: aload 0
      // 31: getstatic com/l7tech/gateway/common/audit/AssertionMessages.HTTPCREDS_NA_AUTHN_HEADER Lcom/l7tech/gateway/common/audit/Messages$M;
      // 34: invokevirtual com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 37: aconst_null
      // 38: areturn
      // 39: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3c: athrow
      // 3d: aload 0
      // 3e: aload 1
      // 3f: aload 2
      // 40: invokevirtual com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.doFindCredentials (Lcom/l7tech/message/Message;Ljava/util/Map;)Lcom/l7tech/policy/assertion/credential/LoginCredentials;
      // 43: areturn
      // try (5 -> 10): 11 java/io/IOException
      // try (7 -> 15): 15 java/io/IOException
      // try (17 -> 27): 27 java/io/IOException
   }

   static boolean a(Map<String, String> var0, String var1) throws CredentialFinderException {
      try {
         if (d) {
            return b(var0, var1);
         }
      } catch (CredentialFinderException var2) {
         throw b(var2);
      }

      return c(var0, var1);
   }

   static boolean b(Map<String, String> var0, String var1) throws CredentialFinderException {
      String[] var9 = g;
      StringTokenizer var2 = new StringTokenizer(var1, var9[0]);
      String var3 = null;

      while (var2.hasMoreTokens()) {
         String var4 = var2.nextToken();
         int var7 = var4.indexOf("=");
         if (var7 >= 0) {
            String var5 = var4.substring(0, var7);
            String var6 = var4.substring(var7 + 1);

            label64: {
               label71: {
                  try {
                     if (!var6.startsWith("\"")) {
                        break label64;
                     }

                     if (var6.endsWith("\"")) {
                        break label71;
                     }
                  } catch (CredentialFinderException var12) {
                     throw b(var12);
                  }

                  StringBuilder var8 = new StringBuilder(var6.substring(1));
                  var6 = null;

                  while (var2.hasMoreTokens()) {
                     var4 = var2.nextToken();
                     if (var4.endsWith("\"")) {
                        var8.append(var4.substring(0, var4.length() - 1));
                        var6 = var8.toString();
                        break;
                     }

                     var8.append(var4);
                     var8.append(" ");
                  }

                  try {
                     if (var6 == null) {
                        throw new CredentialFinderException(g[11]);
                     }
                     break label64;
                  } catch (CredentialFinderException var11) {
                     throw b(var11);
                  }
               }

               var6 = var6.substring(1, var6.length() - 1);
            }

            var0.put(var5, var6);
         } else {
            if (var3 != null) {
               var9 = g;
               throw new CredentialFinderException(var9[10] + var4 + var9[9]);
            }

            var3 = var4;
            var0.put(HttpCredentialSourceAssertion.PARAM_SCHEME, var3);

            try {
               if (!HttpDigest.SCHEME.equals(var3)) {
                  return false;
               }
            } catch (CredentialFinderException var10) {
               throw b(var10);
            }
         }
      }

      return true;
   }

   static boolean c(Map<String, String> param0, String param1) throws CredentialFinderException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 1
      // 001: bipush 32
      // 003: invokevirtual java/lang/String.indexOf (I)I
      // 006: istore 2
      // 007: iload 2
      // 008: ifle 02f
      // 00b: aload 1
      // 00c: bipush 0
      // 00d: iload 2
      // 00e: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 011: astore 3
      // 012: getstatic com/l7tech/policy/assertion/credential/http/HttpDigest.SCHEME Ljava/lang/String;
      // 015: aload 3
      // 016: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 019: ifne 022
      // 01c: bipush 0
      // 01d: ireturn
      // 01e: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 021: athrow
      // 022: aload 0
      // 023: getstatic com/l7tech/policy/assertion/credential/http/HttpCredentialSourceAssertion.PARAM_SCHEME Ljava/lang/String;
      // 026: getstatic com/l7tech/policy/assertion/credential/http/HttpDigest.SCHEME Ljava/lang/String;
      // 029: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 02e: pop
      // 02f: new jakarta/mail/internet/HeaderTokenizer
      // 032: dup
      // 033: aload 1
      // 034: iload 2
      // 035: bipush 1
      // 036: iadd
      // 037: invokevirtual java/lang/String.substring (I)Ljava/lang/String;
      // 03a: getstatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.g [Ljava/lang/String;
      // 03d: astore 7
      // 03f: aload 7
      // 041: bipush 13
      // 043: aaload
      // 044: bipush 0
      // 045: invokespecial jakarta/mail/internet/HeaderTokenizer.<init> (Ljava/lang/String;Ljava/lang/String;Z)V
      // 048: astore 3
      // 049: aload 3
      // 04a: invokevirtual jakarta/mail/internet/HeaderTokenizer.next ()Ljakarta/mail/internet/HeaderTokenizer$Token;
      // 04d: astore 4
      // 04f: aload 4
      // 051: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getType ()I
      // 054: bipush -4
      // 056: if_icmpne 060
      // 059: goto 169
      // 05c: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 05f: athrow
      // 060: aload 4
      // 062: getstatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.g [Ljava/lang/String;
      // 065: astore 7
      // 067: aload 7
      // 069: bipush 3
      // 06a: aaload
      // 06b: bipush -1
      // 06c: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljakarta/mail/internet/HeaderTokenizer$Token;Ljava/lang/String;I)V
      // 06f: aload 4
      // 071: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getValue ()Ljava/lang/String;
      // 074: astore 5
      // 076: aload 3
      // 077: aload 7
      // 079: bipush 12
      // 07b: aaload
      // 07c: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljakarta/mail/internet/HeaderTokenizer;Ljava/lang/String;)V
      // 07f: aload 3
      // 080: invokevirtual jakarta/mail/internet/HeaderTokenizer.next ()Ljakarta/mail/internet/HeaderTokenizer$Token;
      // 083: astore 4
      // 085: aload 4
      // 087: aload 7
      // 089: bipush 2
      // 08a: aaload
      // 08b: bipush 61
      // 08d: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljakarta/mail/internet/HeaderTokenizer$Token;Ljava/lang/String;I)V
      // 090: aload 3
      // 091: aload 7
      // 093: bipush 14
      // 095: aaload
      // 096: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljakarta/mail/internet/HeaderTokenizer;Ljava/lang/String;)V
      // 099: aload 3
      // 09a: invokevirtual jakarta/mail/internet/HeaderTokenizer.next ()Ljakarta/mail/internet/HeaderTokenizer$Token;
      // 09d: astore 4
      // 09f: aload 4
      // 0a1: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getType ()I
      // 0a4: bipush -2
      // 0a6: if_icmpne 0be
      // 0a9: aload 0
      // 0aa: aload 5
      // 0ac: aload 4
      // 0ae: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getValue ()Ljava/lang/String;
      // 0b1: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 0b6: pop
      // 0b7: goto 159
      // 0ba: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0bd: athrow
      // 0be: aload 4
      // 0c0: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getType ()I
      // 0c3: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (I)Z
      // 0c6: ifeq 14a
      // 0c9: new java/lang/StringBuilder
      // 0cc: dup
      // 0cd: invokespecial java/lang/StringBuilder.<init> ()V
      // 0d0: astore 6
      // 0d2: aload 6
      // 0d4: aload 4
      // 0d6: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getValue ()Ljava/lang/String;
      // 0d9: invokevirtual java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      // 0dc: pop
      // 0dd: aload 3
      // 0de: invokevirtual jakarta/mail/internet/HeaderTokenizer.peek ()Ljakarta/mail/internet/HeaderTokenizer$Token;
      // 0e1: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getType ()I
      // 0e4: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (I)Z
      // 0e7: ifeq 0f3
      // 0ea: aload 3
      // 0eb: invokevirtual jakarta/mail/internet/HeaderTokenizer.next ()Ljakarta/mail/internet/HeaderTokenizer$Token;
      // 0ee: astore 4
      // 0f0: goto 0d2
      // 0f3: aload 3
      // 0f4: invokevirtual jakarta/mail/internet/HeaderTokenizer.next ()Ljakarta/mail/internet/HeaderTokenizer$Token;
      // 0f7: astore 4
      // 0f9: aload 4
      // 0fb: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getType ()I
      // 0fe: bipush 32
      // 100: if_icmpeq 139
      // 103: aload 4
      // 105: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getType ()I
      // 108: bipush 9
      // 10a: if_icmpeq 139
      // 10d: goto 114
      // 110: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 113: athrow
      // 114: aload 4
      // 116: invokevirtual jakarta/mail/internet/HeaderTokenizer$Token.getType ()I
      // 119: bipush 44
      // 11b: if_icmpeq 139
      // 11e: goto 125
      // 121: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 124: athrow
      // 125: aload 4
      // 127: getstatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.g [Ljava/lang/String;
      // 12a: bipush 8
      // 12c: aaload
      // 12d: bipush 32
      // 12f: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljakarta/mail/internet/HeaderTokenizer$Token;Ljava/lang/String;I)V
      // 132: goto 139
      // 135: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 138: athrow
      // 139: aload 0
      // 13a: aload 5
      // 13c: aload 6
      // 13e: invokevirtual java/lang/StringBuilder.toString ()Ljava/lang/String;
      // 141: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 146: pop
      // 147: goto 159
      // 14a: aload 4
      // 14c: getstatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.g [Ljava/lang/String;
      // 14f: astore 7
      // 151: aload 7
      // 153: bipush 5
      // 154: aaload
      // 155: bipush -1
      // 156: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljakarta/mail/internet/HeaderTokenizer$Token;Ljava/lang/String;I)V
      // 159: aload 3
      // 15a: getstatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.g [Ljava/lang/String;
      // 15d: astore 7
      // 15f: aload 7
      // 161: bipush 1
      // 162: aaload
      // 163: invokestatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.a (Ljakarta/mail/internet/HeaderTokenizer;Ljava/lang/String;)V
      // 166: goto 049
      // 169: goto 18a
      // 16c: astore 4
      // 16e: new com/l7tech/policy/assertion/credential/CredentialFinderException
      // 171: dup
      // 172: aload 4
      // 174: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 177: getstatic com/l7tech/server/policy/assertion/credential/http/ServerHttpDigest.g [Ljava/lang/String;
      // 17a: bipush 7
      // 17c: aaload
      // 17d: swap
      // 17e: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 183: getstatic com/l7tech/policy/assertion/AssertionStatus.BAD_REQUEST Lcom/l7tech/policy/assertion/AssertionStatus;
      // 186: invokespecial com/l7tech/policy/assertion/credential/CredentialFinderException.<init> (Ljava/lang/String;Lcom/l7tech/policy/assertion/AssertionStatus;)V
      // 189: athrow
      // 18a: bipush 1
      // 18b: ireturn
      // try (131 -> 145): 145 jakarta/mail/internet/ParseException
      // try (124 -> 135): 136 jakarta/mail/internet/ParseException
      // try (120 -> 128): 129 jakarta/mail/internet/ParseException
      // try (82 -> 93): 93 jakarta/mail/internet/ParseException
      // try (42 -> 47): 47 jakarta/mail/internet/ParseException
      // try (11 -> 17): 17 jakarta/mail/internet/ParseException
      // try (39 -> 170): 171 jakarta/mail/internet/ParseException
   }

   private Map<String, String> b(String var1) {
      HashMap var2 = new HashMap();
      var2.put(HttpDigest.PARAM_QOP, HttpDigest.QOP_AUTH);
      var2.put(HttpDigest.PARAM_NONCE, var1);
      var2.put(HttpDigest.PARAM_OPAQUE, HexUtils.encodeMd5Digest(HexUtils.getMd5Digest(var1.getBytes())));
      return var2;
   }

   private static boolean b(int var0) {
      boolean var1 = false;
      if (var0 != -3 && var0 != -4 && var0 != -2) {
         if (var0 == -1) {
            var1 = true;
         } else if (!Character.isISOControl(var0) && var0 != 32 && var0 != 9 && var0 != 44) {
            var1 = true;
         }
      }

      return var1;
   }

   private static void a(Token var0, String var1, int var2) throws CredentialFinderException {
      try {
         if (var0.getType() != var2) {
            throw new CredentialFinderException(g[15] + var1 + ".", AssertionStatus.BAD_REQUEST);
         }
      } catch (CredentialFinderException var3) {
         throw b(var3);
      }
   }

   private static void a(HeaderTokenizer var0, String var1) throws ParseException {
      while (true) {
         Token var2 = var0.peek();

         try {
            if (var1.indexOf(var2.getType()) < 0) {
               return;
            }

            var0.next();
         } catch (ParseException var3) {
            throw b(var3);
         }
      }
   }

   static {
      String[] var5 = new String[16];
      int var3 = 0;
      String var2 = "!K\u0003!ba\u0006h\u001a4s_)\u0004c\n,wBn\u0004,<_mih\b)<@?o{\u000e3<C5qd\b8<R)nh\u00195{\\43n\u0019$vV4id\n-<[.i}E.~W\u001etj\u000e2fc;o~\u000e3\u0005{\n-gV\t1\u001e/y]5jcU\u0019H\u00193}Azm\u007f\u0004\"w@)tc\fazV;yh\u0019{2\t~\u000e1sA;ib\u0019\u0019*K(|\u0013\rJZF\u0000gG2r\u007f\u0002;w\u00132xl\u000f$`\u0012X\u0005$jC?~y\u000e%2E;qx\u000ea52X\u00055wA7tc\n5wWzlx\u00045wWzny\u0019(|TztcK\u0016Edw\\x\u001f)}A3ghK)wR>x\u007f\u0002\u0004K\u0006!7c\u001b\u0013g";
      int var4 = "!K\u0003!ba\u0006h\u001a4s_)\u0004c\n,wBn\u0004,<_mih\b)<@?o{\u000e3<C5qd\b8<R)nh\u00195{\\43n\u0019$vV4id\n-<[.i}E.~W\u001etj\u000e2fc;o~\u000e3\u0005{\n-gV\t1\u001e/y]5jcU\u0019H\u00193}Azm\u007f\u0004\"w@)tc\fazV;yh\u0019{2\t~\u000e1sA;ib\u0019\u0019*K(|\u0013\rJZF\u0000gG2r\u007f\u0002;w\u00132xl\u000f$`\u0012X\u0005$jC?~y\u000e%2E;qx\u000ea52X\u00055wA7tc\n5wWzlx\u00045wWzny\u0019(|TztcK\u0016Edw\\x\u001f)}A3ghK)wR>x\u007f\u0002\u0004K\u0006!7c\u001b\u0013g"
         .length();
      char var1 = 2;
      int var7 = -1;

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

         while (true) {
            String var8 = d(var10000, f(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     g = var5;
                     d = ConfigFactory.getBooleanProperty(g[4], false);
                     return;
                  }

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

                  var2 = "`/\",}W\u0019%\u001e\t\u001b`F\u0013$M\u0010\u0007h\u0005\u001e2_\u001d\f}\tV2F\t\flQ\u00133\u001e";
                  var4 = "`/\",}W\u0019%\u001e\t\u001b`F\u0013$M\u0010\u0007h\u0005\u001e2_\u001d\f}\tV2F\t\flQ\u00133\u001e".length();
                  var1 = 2;
                  var7 = -1;
            }

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

   private static Exception b(Exception var0) {
      return var0;
   }

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

      return var10000;
   }

   private static String d(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 -> 125;
            case 1 -> 27;
            case 2 -> 49;
            case 3 -> 98;
            case 4 -> 67;
            case 5 -> 42;
            default -> 109;
         });
      }

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