final class com.sun.security.sasl.ntlm.NTLMServer implements javax.security.sasl.SaslServer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.security.sasl.ntlm.NTLMServer
  super_class: java.lang.Object
{
  private static final java.lang.String NTLM_VERSION;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.sun.security.sasl.ntlm.version"

  private static final java.lang.String NTLM_DOMAIN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.sun.security.sasl.ntlm.domain"

  private static final java.lang.String NTLM_HOSTNAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.sun.security.sasl.ntlm.hostname"

  private static final java.lang.String NTLM_RANDOM;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.sun.security.sasl.ntlm.random"

  private final java.util.Random random;
    descriptor: Ljava/util/Random;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.security.ntlm.Server server;
    descriptor: Lcom/sun/security/ntlm/Server;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private byte[] nonce;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private int step;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String authzId;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.String mech;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.String hostname;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String target;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  void <init>(java.lang.String, java.lang.String, java.lang.String, java.util.Map<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljavax/security/auth/callback/CallbackHandler;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=10, args_size=6
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
        start local 1 // java.lang.String mech
        start local 2 // java.lang.String protocol
        start local 3 // java.lang.String serverName
        start local 4 // java.util.Map props
        start local 5 // javax.security.auth.callback.CallbackHandler cbh
         0: .line 113
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 98
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.sasl.ntlm.NTLMServer.step:I
         2: .line 117
            aload 0 /* this */
            aload 1 /* mech */
            putfield com.sun.security.sasl.ntlm.NTLMServer.mech:Ljava/lang/String;
         3: .line 118
            aconst_null
            astore 6 /* version */
        start local 6 // java.lang.String version
         4: .line 119
            aconst_null
            astore 7 /* domain */
        start local 7 // java.lang.String domain
         5: .line 120
            aconst_null
            astore 8 /* rtmp */
        start local 8 // java.util.Random rtmp
         6: .line 122
            aload 4 /* props */
            ifnull 10
         7: .line 123
            aload 4 /* props */
            ldc "com.sun.security.sasl.ntlm.domain"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* domain */
         8: .line 124
            aload 4 /* props */
            ldc "com.sun.security.sasl.ntlm.version"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* version */
         9: .line 125
            aload 4 /* props */
            ldc "com.sun.security.sasl.ntlm.random"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Random
            astore 8 /* rtmp */
        10: .line 127
      StackMap locals: com.sun.security.sasl.ntlm.NTLMServer java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String java.util.Random
      StackMap stack:
            aload 0 /* this */
            aload 8 /* rtmp */
            ifnull 11
            aload 8 /* rtmp */
            goto 12
      StackMap locals:
      StackMap stack: com.sun.security.sasl.ntlm.NTLMServer
        11: new java.util.Random
            dup
            invokespecial java.util.Random.<init>:()V
      StackMap locals: com.sun.security.sasl.ntlm.NTLMServer java.lang.String java.lang.String java.lang.String java.util.Map javax.security.auth.callback.CallbackHandler java.lang.String java.lang.String java.util.Random
      StackMap stack: com.sun.security.sasl.ntlm.NTLMServer java.util.Random
        12: putfield com.sun.security.sasl.ntlm.NTLMServer.random:Ljava/util/Random;
        13: .line 129
            aload 6 /* version */
            ifnonnull 15
        14: .line 130
            ldc "ntlm.version"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 6 /* version */
        15: .line 132
      StackMap locals:
      StackMap stack:
            aload 7 /* domain */
            ifnonnull 17
        16: .line 133
            aload 3 /* serverName */
            astore 7 /* domain */
        17: .line 135
      StackMap locals:
      StackMap stack:
            aload 7 /* domain */
            ifnonnull 19
        18: .line 136
            new javax.security.sasl.SaslException
            dup
            ldc "Domain must be provided as the serverName argument or in props"
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.security.sasl.ntlm.NTLMServer$1
            dup
            aload 0 /* this */
            aload 6 /* version */
            aload 7 /* domain */
            aload 5 /* cbh */
            invokespecial com.sun.security.sasl.ntlm.NTLMServer$1.<init>:(Lcom/sun/security/sasl/ntlm/NTLMServer;Ljava/lang/String;Ljava/lang/String;Ljavax/security/auth/callback/CallbackHandler;)V
            putfield com.sun.security.sasl.ntlm.NTLMServer.server:Lcom/sun/security/ntlm/Server;
        20: .line 163
            goto 25
      StackMap locals:
      StackMap stack: com.sun.security.ntlm.NTLMException
        21: astore 9 /* ne */
        start local 9 // com.sun.security.ntlm.NTLMException ne
        22: .line 164
            new javax.security.sasl.SaslException
            dup
        23: .line 165
            ldc "NTLM: server creation failure"
            aload 9 /* ne */
        24: .line 164
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 9 // com.sun.security.ntlm.NTLMException ne
        25: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 8
            newarray 8
            putfield com.sun.security.sasl.ntlm.NTLMServer.nonce:[B
        26: .line 168
            return
        end local 8 // java.util.Random rtmp
        end local 7 // java.lang.String domain
        end local 6 // java.lang.String version
        end local 5 // javax.security.auth.callback.CallbackHandler cbh
        end local 4 // java.util.Map props
        end local 3 // java.lang.String serverName
        end local 2 // java.lang.String protocol
        end local 1 // java.lang.String mech
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Lcom/sun/security/sasl/ntlm/NTLMServer;
            0   27     1        mech  Ljava/lang/String;
            0   27     2    protocol  Ljava/lang/String;
            0   27     3  serverName  Ljava/lang/String;
            0   27     4       props  Ljava/util/Map<Ljava/lang/String;*>;
            0   27     5         cbh  Ljavax/security/auth/callback/CallbackHandler;
            4   27     6     version  Ljava/lang/String;
            5   27     7      domain  Ljava/lang/String;
            6   27     8        rtmp  Ljava/util/Random;
           22   25     9          ne  Lcom/sun/security/ntlm/NTLMException;
      Exception table:
        from    to  target  type
          19    20      21  Class com.sun.security.ntlm.NTLMException
    Exceptions:
      throws javax.security.sasl.SaslException
    Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;*>;Ljavax/security/auth/callback/CallbackHandler;)V
    MethodParameters:
            Name  Flags
      mech        
      protocol    
      serverName  
      props       
      cbh         final

  public java.lang.String getMechanismName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
         0: .line 172
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.mech:Ljava/lang/String;
            areturn
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/security/sasl/ntlm/NTLMServer;

  public byte[] evaluateResponse(byte[]);
    descriptor: ([B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
        start local 1 // byte[] response
         0: .line 178
            aload 0 /* this */
            dup
            getfield com.sun.security.sasl.ntlm.NTLMServer.step:I
            iconst_1
            iadd
            putfield com.sun.security.sasl.ntlm.NTLMServer.step:I
         1: .line 179
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.step:I
            iconst_1
            if_icmpne 5
         2: .line 180
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.random:Ljava/util/Random;
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.nonce:[B
            invokevirtual java.util.Random.nextBytes:([B)V
         3: .line 181
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.server:Lcom/sun/security/ntlm/Server;
            aload 1 /* response */
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.nonce:[B
            invokevirtual com.sun.security.ntlm.Server.type2:([B[B)[B
         4: areturn
         5: .line 183
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.server:Lcom/sun/security/ntlm/Server;
            aload 1 /* response */
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.nonce:[B
            invokevirtual com.sun.security.ntlm.Server.verify:([B[B)[Ljava/lang/String;
            astore 2 /* out */
        start local 2 // java.lang.String[] out
         6: .line 184
            aload 0 /* this */
            aload 2 /* out */
            iconst_0
            aaload
            putfield com.sun.security.sasl.ntlm.NTLMServer.authzId:Ljava/lang/String;
         7: .line 185
            aload 0 /* this */
            aload 2 /* out */
            iconst_1
            aaload
            putfield com.sun.security.sasl.ntlm.NTLMServer.hostname:Ljava/lang/String;
         8: .line 186
            aload 0 /* this */
            aload 2 /* out */
            iconst_2
            aaload
            putfield com.sun.security.sasl.ntlm.NTLMServer.target:Ljava/lang/String;
         9: .line 187
            aconst_null
            areturn
        end local 2 // java.lang.String[] out
        10: .line 189
      StackMap locals:
      StackMap stack: com.sun.security.ntlm.NTLMException
            astore 2 /* ex */
        start local 2 // com.sun.security.ntlm.NTLMException ex
        11: .line 190
            new javax.security.sasl.SaslException
            dup
            ldc "NTLM: generate response failure"
            aload 2 /* ex */
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // com.sun.security.ntlm.NTLMException ex
        end local 1 // byte[] response
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lcom/sun/security/sasl/ntlm/NTLMServer;
            0   12     1  response  [B
            6   10     2       out  [Ljava/lang/String;
           11   12     2        ex  Lcom/sun/security/ntlm/NTLMException;
      Exception table:
        from    to  target  type
           0     4      10  Class com.sun.security.ntlm.NTLMException
           5     9      10  Class com.sun.security.ntlm.NTLMException
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
          Name  Flags
      response  

  public boolean isComplete();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
         0: .line 196
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.step:I
            iconst_2
            if_icmplt 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/security/sasl/ntlm/NTLMServer;

  public java.lang.String getAuthorizationID();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
         0: .line 201
            aload 0 /* this */
            invokevirtual com.sun.security.sasl.ntlm.NTLMServer.isComplete:()Z
            ifne 2
         1: .line 202
            new java.lang.IllegalStateException
            dup
            ldc "authentication not complete"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.authzId:Ljava/lang/String;
            areturn
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/security/sasl/ntlm/NTLMServer;

  public byte[] unwrap(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
        start local 1 // byte[] incoming
        start local 2 // int offset
        start local 3 // int len
         0: .line 210
            new java.lang.IllegalStateException
            dup
            ldc "Not supported yet."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] incoming
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/sun/security/sasl/ntlm/NTLMServer;
            0    1     1  incoming  [B
            0    1     2    offset  I
            0    1     3       len  I
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
          Name  Flags
      incoming  
      offset    
      len       

  public byte[] wrap(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
        start local 1 // byte[] outgoing
        start local 2 // int offset
        start local 3 // int len
         0: .line 216
            new java.lang.IllegalStateException
            dup
            ldc "Not supported yet."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // int len
        end local 2 // int offset
        end local 1 // byte[] outgoing
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/sun/security/sasl/ntlm/NTLMServer;
            0    1     1  outgoing  [B
            0    1     2    offset  I
            0    1     3       len  I
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
          Name  Flags
      outgoing  
      offset    
      len       

  public java.lang.Object getNegotiatedProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
        start local 1 // java.lang.String propName
         0: .line 221
            aload 0 /* this */
            invokevirtual com.sun.security.sasl.ntlm.NTLMServer.isComplete:()Z
            ifne 2
         1: .line 222
            new java.lang.IllegalStateException
            dup
            ldc "authentication not complete"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 224
      StackMap locals:
      StackMap stack:
            aload 1 /* propName */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 3
          -1548608927: 3
            183461877: 4
           1060567122: 5
              default: 9
          }
      StackMap locals: java.lang.String
      StackMap stack:
         3: aload 2
            ldc "javax.security.sasl.qop"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 9
      StackMap locals:
      StackMap stack:
         4: aload 2
            ldc "javax.security.sasl.bound.server.name"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 9
      StackMap locals:
      StackMap stack:
         5: aload 2
            ldc "com.sun.security.sasl.ntlm.hostname"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 9
         6: .line 226
      StackMap locals:
      StackMap stack:
            ldc "auth"
            areturn
         7: .line 228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.target:Ljava/lang/String;
            areturn
         8: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.sasl.ntlm.NTLMServer.hostname:Ljava/lang/String;
            areturn
         9: .line 232
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String propName
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lcom/sun/security/sasl/ntlm/NTLMServer;
            0   10     1  propName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      propName  

  public void dispose();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // com.sun.security.sasl.ntlm.NTLMServer this
         0: .line 238
            return
        end local 0 // com.sun.security.sasl.ntlm.NTLMServer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/security/sasl/ntlm/NTLMServer;
    Exceptions:
      throws javax.security.sasl.SaslException
}
SourceFile: "NTLMServer.java"
NestMembers:
  com.sun.security.sasl.ntlm.NTLMServer$1
InnerClasses:
  com.sun.security.sasl.ntlm.NTLMServer$1