public class org.apache.catalina.realm.JAASCallbackHandler implements javax.security.auth.callback.CallbackHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.realm.JAASCallbackHandler
  super_class: java.lang.Object
{
  protected static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected final java.lang.String password;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.apache.catalina.realm.JAASRealm realm;
    descriptor: Lorg/apache/catalina/realm/JAASRealm;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String username;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String nonce;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String nc;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String cnonce;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String qop;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String realmName;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String md5a2;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.lang.String authMethod;
    descriptor: Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 112
            ldc Lorg/apache/catalina/realm/JAASCallbackHandler;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.catalina.realm.JAASCallbackHandler.sm:Lorg/apache/tomcat/util/res/StringManager;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.catalina.realm.JAASRealm, java.lang.String, java.lang.String);
    descriptor: (Lorg/apache/catalina/realm/JAASRealm;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=4, args_size=4
        start local 0 // org.apache.catalina.realm.JAASCallbackHandler this
        start local 1 // org.apache.catalina.realm.JAASRealm realm
        start local 2 // java.lang.String username
        start local 3 // java.lang.String password
         0: .line 66
            aload 0 /* this */
            aload 1 /* realm */
            aload 2 /* username */
            aload 3 /* password */
            aconst_null
            aconst_null
            aconst_null
            aconst_null
            aconst_null
            aconst_null
         1: .line 67
            aconst_null
            invokespecial org.apache.catalina.realm.JAASCallbackHandler.<init>:(Lorg/apache/catalina/realm/JAASRealm;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         2: .line 68
            return
        end local 3 // java.lang.String password
        end local 2 // java.lang.String username
        end local 1 // org.apache.catalina.realm.JAASRealm realm
        end local 0 // org.apache.catalina.realm.JAASCallbackHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/catalina/realm/JAASCallbackHandler;
            0    3     1     realm  Lorg/apache/catalina/realm/JAASRealm;
            0    3     2  username  Ljava/lang/String;
            0    3     3  password  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      realm     
      username  
      password  

  public void <init>(org.apache.catalina.realm.JAASRealm, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Lorg/apache/catalina/realm/JAASRealm;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=11, args_size=11
        start local 0 // org.apache.catalina.realm.JAASCallbackHandler this
        start local 1 // org.apache.catalina.realm.JAASRealm realm
        start local 2 // java.lang.String username
        start local 3 // java.lang.String password
        start local 4 // java.lang.String nonce
        start local 5 // java.lang.String nc
        start local 6 // java.lang.String cnonce
        start local 7 // java.lang.String qop
        start local 8 // java.lang.String realmName
        start local 9 // java.lang.String md5a2
        start local 10 // java.lang.String authMethod
         0: .line 86
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 90
            aload 0 /* this */
            aload 1 /* realm */
            putfield org.apache.catalina.realm.JAASCallbackHandler.realm:Lorg/apache/catalina/realm/JAASRealm;
         2: .line 91
            aload 0 /* this */
            aload 2 /* username */
            putfield org.apache.catalina.realm.JAASCallbackHandler.username:Ljava/lang/String;
         3: .line 93
            aload 3 /* password */
            ifnull 6
            aload 1 /* realm */
            invokevirtual org.apache.catalina.realm.JAASRealm.hasMessageDigest:()Z
            ifeq 6
         4: .line 94
            aload 0 /* this */
            aload 1 /* realm */
            invokevirtual org.apache.catalina.realm.JAASRealm.getCredentialHandler:()Lorg/apache/catalina/CredentialHandler;
            aload 3 /* password */
            invokeinterface org.apache.catalina.CredentialHandler.mutate:(Ljava/lang/String;)Ljava/lang/String;
            putfield org.apache.catalina.realm.JAASCallbackHandler.password:Ljava/lang/String;
         5: .line 95
            goto 7
         6: .line 96
      StackMap locals: org.apache.catalina.realm.JAASCallbackHandler org.apache.catalina.realm.JAASRealm java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 3 /* password */
            putfield org.apache.catalina.realm.JAASCallbackHandler.password:Ljava/lang/String;
         7: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* nonce */
            putfield org.apache.catalina.realm.JAASCallbackHandler.nonce:Ljava/lang/String;
         8: .line 99
            aload 0 /* this */
            aload 5 /* nc */
            putfield org.apache.catalina.realm.JAASCallbackHandler.nc:Ljava/lang/String;
         9: .line 100
            aload 0 /* this */
            aload 6 /* cnonce */
            putfield org.apache.catalina.realm.JAASCallbackHandler.cnonce:Ljava/lang/String;
        10: .line 101
            aload 0 /* this */
            aload 7 /* qop */
            putfield org.apache.catalina.realm.JAASCallbackHandler.qop:Ljava/lang/String;
        11: .line 102
            aload 0 /* this */
            aload 8 /* realmName */
            putfield org.apache.catalina.realm.JAASCallbackHandler.realmName:Ljava/lang/String;
        12: .line 103
            aload 0 /* this */
            aload 9 /* md5a2 */
            putfield org.apache.catalina.realm.JAASCallbackHandler.md5a2:Ljava/lang/String;
        13: .line 104
            aload 0 /* this */
            aload 10 /* authMethod */
            putfield org.apache.catalina.realm.JAASCallbackHandler.authMethod:Ljava/lang/String;
        14: .line 105
            return
        end local 10 // java.lang.String authMethod
        end local 9 // java.lang.String md5a2
        end local 8 // java.lang.String realmName
        end local 7 // java.lang.String qop
        end local 6 // java.lang.String cnonce
        end local 5 // java.lang.String nc
        end local 4 // java.lang.String nonce
        end local 3 // java.lang.String password
        end local 2 // java.lang.String username
        end local 1 // org.apache.catalina.realm.JAASRealm realm
        end local 0 // org.apache.catalina.realm.JAASCallbackHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/apache/catalina/realm/JAASCallbackHandler;
            0   15     1       realm  Lorg/apache/catalina/realm/JAASRealm;
            0   15     2    username  Ljava/lang/String;
            0   15     3    password  Ljava/lang/String;
            0   15     4       nonce  Ljava/lang/String;
            0   15     5          nc  Ljava/lang/String;
            0   15     6      cnonce  Ljava/lang/String;
            0   15     7         qop  Ljava/lang/String;
            0   15     8   realmName  Ljava/lang/String;
            0   15     9       md5a2  Ljava/lang/String;
            0   15    10  authMethod  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      realm       
      username    
      password    
      nonce       
      nc          
      cnonce      
      qop         
      realmName   
      md5a2       
      authMethod  

  public void handle(javax.security.auth.callback.Callback[]);
    descriptor: ([Ljavax/security/auth/callback/Callback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=2
        start local 0 // org.apache.catalina.realm.JAASCallbackHandler this
        start local 1 // javax.security.auth.callback.Callback[] callbacks
         0: .line 185
            aload 1 /* callbacks */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 45
      StackMap locals: org.apache.catalina.realm.JAASCallbackHandler javax.security.auth.callback.Callback[] top int int javax.security.auth.callback.Callback[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* callback */
        start local 2 // javax.security.auth.callback.Callback callback
         2: .line 187
            aload 2 /* callback */
            instanceof javax.security.auth.callback.NameCallback
            ifeq 7
         3: .line 188
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.realm:Lorg/apache/catalina/realm/JAASRealm;
            invokevirtual org.apache.catalina.realm.JAASRealm.getContainer:()Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isTraceEnabled:()Z
            ifeq 5
         4: .line 189
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.realm:Lorg/apache/catalina/realm/JAASRealm;
            invokevirtual org.apache.catalina.realm.JAASRealm.getContainer:()Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.JAASCallbackHandler.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jaasCallback.username"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.username:Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.trace:(Ljava/lang/Object;)V
         5: .line 190
      StackMap locals: org.apache.catalina.realm.JAASCallbackHandler javax.security.auth.callback.Callback[] javax.security.auth.callback.Callback int int javax.security.auth.callback.Callback[]
      StackMap stack:
            aload 2 /* callback */
            checkcast javax.security.auth.callback.NameCallback
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.username:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.NameCallback.setName:(Ljava/lang/String;)V
         6: .line 191
            goto 44
         7: .line 192
      StackMap locals:
      StackMap stack:
            aload 2 /* callback */
            instanceof javax.security.auth.callback.PasswordCallback
            ifeq 16
         8: .line 194
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.password:Ljava/lang/String;
            ifnull 11
         9: .line 195
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.password:Ljava/lang/String;
            invokevirtual java.lang.String.toCharArray:()[C
            astore 6 /* passwordcontents */
        start local 6 // char[] passwordcontents
        10: .line 196
            goto 12
        end local 6 // char[] passwordcontents
        11: .line 197
      StackMap locals:
      StackMap stack:
            iconst_0
            newarray 5
            astore 6 /* passwordcontents */
        start local 6 // char[] passwordcontents
        12: .line 199
      StackMap locals: char[]
      StackMap stack:
            aload 2 /* callback */
            checkcast javax.security.auth.callback.PasswordCallback
        13: .line 200
            aload 6 /* passwordcontents */
        14: .line 199
            invokevirtual javax.security.auth.callback.PasswordCallback.setPassword:([C)V
        end local 6 // char[] passwordcontents
        15: .line 201
            goto 44
        16: .line 202
      StackMap locals:
      StackMap stack:
            aload 2 /* callback */
            instanceof javax.security.auth.callback.TextInputCallback
            ifeq 43
        17: .line 203
            aload 2 /* callback */
            checkcast javax.security.auth.callback.TextInputCallback
            astore 6 /* cb */
        start local 6 // javax.security.auth.callback.TextInputCallback cb
        18: .line 204
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "nonce"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 21
        19: .line 205
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.nonce:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        20: .line 206
            goto 44
        21: .line 207
      StackMap locals: javax.security.auth.callback.TextInputCallback
      StackMap stack:
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "nc"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 24
        22: .line 208
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.nc:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        23: .line 209
            goto 44
        24: .line 210
      StackMap locals:
      StackMap stack:
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "cnonce"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 27
        25: .line 211
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.cnonce:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        26: .line 212
            goto 44
        27: .line 213
      StackMap locals:
      StackMap stack:
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "qop"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 30
        28: .line 214
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.qop:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        29: .line 215
            goto 44
        30: .line 216
      StackMap locals:
      StackMap stack:
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "realmName"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 33
        31: .line 217
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.realmName:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        32: .line 218
            goto 44
        33: .line 219
      StackMap locals:
      StackMap stack:
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "md5a2"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 36
        34: .line 220
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.md5a2:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        35: .line 221
            goto 44
        36: .line 222
      StackMap locals:
      StackMap stack:
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "authMethod"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 39
        37: .line 223
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.authMethod:Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        38: .line 224
            goto 44
        39: .line 225
      StackMap locals:
      StackMap stack:
            aload 6 /* cb */
            invokevirtual javax.security.auth.callback.TextInputCallback.getPrompt:()Ljava/lang/String;
            ldc "catalinaBase"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 42
        40: .line 226
            aload 6 /* cb */
            aload 0 /* this */
            getfield org.apache.catalina.realm.JAASCallbackHandler.realm:Lorg/apache/catalina/realm/JAASRealm;
            invokevirtual org.apache.catalina.realm.JAASRealm.getContainer:()Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getCatalinaBase:()Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokevirtual javax.security.auth.callback.TextInputCallback.setText:(Ljava/lang/String;)V
        41: .line 227
            goto 44
        42: .line 228
      StackMap locals:
      StackMap stack:
            new javax.security.auth.callback.UnsupportedCallbackException
            dup
            aload 2 /* callback */
            invokespecial javax.security.auth.callback.UnsupportedCallbackException.<init>:(Ljavax/security/auth/callback/Callback;)V
            athrow
        end local 6 // javax.security.auth.callback.TextInputCallback cb
        43: .line 231
      StackMap locals:
      StackMap stack:
            new javax.security.auth.callback.UnsupportedCallbackException
            dup
            aload 2 /* callback */
            invokespecial javax.security.auth.callback.UnsupportedCallbackException.<init>:(Ljavax/security/auth/callback/Callback;)V
            athrow
        end local 2 // javax.security.auth.callback.Callback callback
        44: .line 185
      StackMap locals: org.apache.catalina.realm.JAASCallbackHandler javax.security.auth.callback.Callback[] top int int javax.security.auth.callback.Callback[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
        45: iload 3
            iload 4
            if_icmplt 1
        46: .line 234
            return
        end local 1 // javax.security.auth.callback.Callback[] callbacks
        end local 0 // org.apache.catalina.realm.JAASCallbackHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   47     0              this  Lorg/apache/catalina/realm/JAASCallbackHandler;
            0   47     1         callbacks  [Ljavax/security/auth/callback/Callback;
            2   44     2          callback  Ljavax/security/auth/callback/Callback;
           10   11     6  passwordcontents  [C
           12   15     6  passwordcontents  [C
           18   43     6                cb  Ljavax/security/auth/callback/TextInputCallback;
    Exceptions:
      throws java.io.IOException, javax.security.auth.callback.UnsupportedCallbackException
    MethodParameters:
           Name  Flags
      callbacks  
}
SourceFile: "JAASCallbackHandler.java"