public class com.sun.security.auth.module.Krb5LoginModule implements javax.security.auth.spi.LoginModule
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.security.auth.module.Krb5LoginModule
  super_class: java.lang.Object
{
  private javax.security.auth.Subject subject;
    descriptor: Ljavax/security/auth/Subject;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.callback.CallbackHandler callbackHandler;
    descriptor: Ljavax/security/auth/callback/CallbackHandler;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map<java.lang.String, java.lang.Object> sharedState;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  private java.util.Map<java.lang.String, ?> options;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;*>;

  private boolean debug;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean storeKey;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean doNotPrompt;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean useTicketCache;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean useKeyTab;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private boolean useFirstPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean tryFirstPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean storePass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean clearPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean refreshKrb5Config;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean renewTGT;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean isInitiator;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean succeeded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean commitSucceeded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  private sun.security.krb5.EncryptionKey[] encKeys;
    descriptor: [Lsun/security/krb5/EncryptionKey;
    flags: (0x0002) ACC_PRIVATE

  javax.security.auth.kerberos.KeyTab ktab;
    descriptor: Ljavax/security/auth/kerberos/KeyTab;
    flags: (0x0000) 

  private sun.security.krb5.Credentials cred;
    descriptor: Lsun/security/krb5/Credentials;
    flags: (0x0002) ACC_PRIVATE

  private sun.security.krb5.PrincipalName principal;
    descriptor: Lsun/security/krb5/PrincipalName;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.kerberos.KerberosPrincipal kerbClientPrinc;
    descriptor: Ljavax/security/auth/kerberos/KerberosPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.kerberos.KerberosTicket kerbTicket;
    descriptor: Ljavax/security/auth/kerberos/KerberosTicket;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.kerberos.KerberosKey[] kerbKeys;
    descriptor: [Ljavax/security/auth/kerberos/KerberosKey;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.StringBuffer krb5PrincName;
    descriptor: Ljava/lang/StringBuffer;
    flags: (0x0002) ACC_PRIVATE

  private boolean unboundServer;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private char[] password;
    descriptor: [C
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.String NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.auth.login.name"

  private static final java.lang.String PWD;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.auth.login.password"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 369
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 378
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
         2: .line 379
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
         3: .line 380
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
         4: .line 381
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.useTicketCache:Z
         5: .line 382
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
         6: .line 383
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.ticketCacheName:Ljava/lang/String;
         7: .line 384
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
         8: .line 385
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.princName:Ljava/lang/String;
         9: .line 387
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.useFirstPass:Z
        10: .line 388
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.tryFirstPass:Z
        11: .line 389
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.storePass:Z
        12: .line 390
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.clearPass:Z
        13: .line 391
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.refreshKrb5Config:Z
        14: .line 392
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.renewTGT:Z
        15: .line 396
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
        16: .line 399
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        17: .line 400
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.commitSucceeded:Z
        18: .line 405
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
        19: .line 407
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
        20: .line 409
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
        21: .line 411
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
        22: .line 412
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
        23: .line 413
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
        24: .line 414
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
        25: .line 415
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
        26: .line 416
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.unboundServer:Z
        27: .line 417
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.password:[C
        28: .line 369
            return
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   29     0  this  Lcom/sun/security/auth/module/Krb5LoginModule;

  public void initialize(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, java.util.Map<java.lang.String, ?>, java.util.Map<java.lang.String, ?>);
    descriptor: (Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;Ljava/util/Map;Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
        start local 1 // javax.security.auth.Subject subject
        start local 2 // javax.security.auth.callback.CallbackHandler callbackHandler
        start local 3 // java.util.Map sharedState
        start local 4 // java.util.Map options
         0: .line 447
            aload 0 /* this */
            aload 1 /* subject */
            putfield com.sun.security.auth.module.Krb5LoginModule.subject:Ljavax/security/auth/Subject;
         1: .line 448
            aload 0 /* this */
            aload 2 /* callbackHandler */
            putfield com.sun.security.auth.module.Krb5LoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
         2: .line 449
            aload 0 /* this */
            aload 3 /* sharedState */
            putfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
         3: .line 450
            aload 0 /* this */
            aload 4 /* options */
            putfield com.sun.security.auth.module.Krb5LoginModule.options:Ljava/util/Map;
         4: .line 454
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
            ldc "debug"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
         5: .line 455
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
            ldc "storeKey"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
         6: .line 456
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
         7: .line 457
            ldc "doNotPrompt"
         8: .line 456
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
         9: .line 458
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
        10: .line 459
            ldc "useTicketCache"
        11: .line 458
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.Krb5LoginModule.useTicketCache:Z
        12: .line 460
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
            ldc "useKeyTab"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
        13: .line 461
            aload 0 /* this */
            aload 4 /* options */
            ldc "ticketCache"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.Krb5LoginModule.ticketCacheName:Ljava/lang/String;
        14: .line 462
            aload 0 /* this */
            aload 4 /* options */
            ldc "keyTab"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
        15: .line 463
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnull 19
        16: .line 464
            aload 0 /* this */
        17: .line 465
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
        18: .line 464
            invokestatic sun.security.krb5.internal.ktab.KeyTab.normalize:(Ljava/lang/String;)Ljava/lang/String;
            putfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
        19: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* options */
            ldc "principal"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.Krb5LoginModule.princName:Ljava/lang/String;
        20: .line 468
            aload 0 /* this */
        21: .line 469
            ldc "true"
            aload 4 /* options */
            ldc "refreshKrb5Config"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        22: .line 468
            putfield com.sun.security.auth.module.Krb5LoginModule.refreshKrb5Config:Z
        23: .line 470
            aload 0 /* this */
        24: .line 471
            ldc "true"
            aload 4 /* options */
            ldc "renewTGT"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        25: .line 470
            putfield com.sun.security.auth.module.Krb5LoginModule.renewTGT:Z
        26: .line 474
            aload 4 /* options */
            ldc "isInitiator"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* isInitiatorValue */
        start local 5 // java.lang.String isInitiatorValue
        27: .line 475
            aload 5 /* isInitiatorValue */
            ifnull 29
        28: .line 478
            aload 0 /* this */
            ldc "true"
            aload 5 /* isInitiatorValue */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
        29: .line 481
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
        30: .line 482
            ldc "true"
        31: .line 483
            aload 4 /* options */
            ldc "tryFirstPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
        32: .line 482
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        33: .line 481
            putfield com.sun.security.auth.module.Krb5LoginModule.tryFirstPass:Z
        34: .line 484
            aload 0 /* this */
        35: .line 485
            ldc "true"
        36: .line 486
            aload 4 /* options */
            ldc "useFirstPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
        37: .line 485
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        38: .line 484
            putfield com.sun.security.auth.module.Krb5LoginModule.useFirstPass:Z
        39: .line 487
            aload 0 /* this */
        40: .line 488
            ldc "true"
            aload 4 /* options */
            ldc "storePass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        41: .line 487
            putfield com.sun.security.auth.module.Krb5LoginModule.storePass:Z
        42: .line 489
            aload 0 /* this */
        43: .line 490
            ldc "true"
            aload 4 /* options */
            ldc "clearPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        44: .line 489
            putfield com.sun.security.auth.module.Krb5LoginModule.clearPass:Z
        45: .line 491
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 61
        46: .line 492
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Debug is  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        47: .line 493
            ldc " storeKey "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        48: .line 494
            ldc " useTicketCache "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useTicketCache:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        49: .line 495
            ldc " useKeyTab "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        50: .line 496
            ldc " doNotPrompt "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        51: .line 497
            ldc " ticketCache is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ticketCacheName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        52: .line 498
            ldc " isInitiator "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        53: .line 499
            ldc " KeyTab is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        54: .line 500
            ldc " refreshKrb5Config is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.refreshKrb5Config:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        55: .line 501
            ldc " principal is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.princName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        56: .line 502
            ldc " tryFirstPass is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.tryFirstPass:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        57: .line 503
            ldc " useFirstPass is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useFirstPass:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        58: .line 504
            ldc " storePass is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storePass:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
        59: .line 505
            ldc " clearPass is "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.clearPass:Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        60: .line 492
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        61: .line 507
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.lang.String isInitiatorValue
        end local 4 // java.util.Map options
        end local 3 // java.util.Map sharedState
        end local 2 // javax.security.auth.callback.CallbackHandler callbackHandler
        end local 1 // javax.security.auth.Subject subject
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   62     0              this  Lcom/sun/security/auth/module/Krb5LoginModule;
            0   62     1           subject  Ljavax/security/auth/Subject;
            0   62     2   callbackHandler  Ljavax/security/auth/callback/CallbackHandler;
            0   62     3       sharedState  Ljava/util/Map<Ljava/lang/String;*>;
            0   62     4           options  Ljava/util/Map<Ljava/lang/String;*>;
           27   62     5  isInitiatorValue  Ljava/lang/String;
    Signature: (Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;Ljava/util/Map<Ljava/lang/String;*>;Ljava/util/Map<Ljava/lang/String;*>;)V
    MethodParameters:
                 Name  Flags
      subject          
      callbackHandler  
      sharedState      
      options          

  public boolean login();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 523
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.refreshKrb5Config:Z
            ifeq 9
         1: .line 525
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 3
         2: .line 526
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Refreshing Kerberos configuration"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 528
      StackMap locals:
      StackMap stack:
            invokestatic sun.security.krb5.Config.refresh:()V
         4: .line 529
            goto 9
      StackMap locals:
      StackMap stack: sun.security.krb5.KrbException
         5: astore 1 /* ke */
        start local 1 // sun.security.krb5.KrbException ke
         6: .line 530
            new javax.security.auth.login.LoginException
            dup
            aload 1 /* ke */
            invokevirtual sun.security.krb5.KrbException.getMessage:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            astore 2 /* le */
        start local 2 // javax.security.auth.login.LoginException le
         7: .line 531
            aload 2 /* le */
            aload 1 /* ke */
            invokevirtual javax.security.auth.login.LoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         8: .line 532
            aload 2 /* le */
            athrow
        end local 2 // javax.security.auth.login.LoginException le
        end local 1 // sun.security.krb5.KrbException ke
         9: .line 536
      StackMap locals:
      StackMap stack:
            ldc "sun.security.krb5.principal"
        10: .line 535
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* principalProperty */
        start local 1 // java.lang.String principalProperty
        11: .line 537
            aload 1 /* principalProperty */
            ifnull 14
        12: .line 538
            aload 0 /* this */
            new java.lang.StringBuffer
            dup
            aload 1 /* principalProperty */
            invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
        13: .line 539
            goto 16
        14: .line 540
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.princName:Ljava/lang/String;
            ifnull 16
        15: .line 541
            aload 0 /* this */
            new java.lang.StringBuffer
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.princName:Ljava/lang/String;
            invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
        16: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.validateConfiguration:()V
        17: .line 547
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            ifnull 19
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            ldc "*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        18: .line 548
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.Krb5LoginModule.unboundServer:Z
        19: .line 551
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.tryFirstPass:Z
            ifeq 33
        20: .line 553
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication:(Z)V
        21: .line 554
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 23
        22: .line 555
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[Krb5LoginModule] authentication succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        23: .line 557
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        24: .line 558
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanState:()V
        25: .line 559
            iconst_1
            ireturn
        26: .line 560
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 2 /* le */
        start local 2 // javax.security.auth.login.LoginException le
        27: .line 562
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanState:()V
        28: .line 563
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 46
        29: .line 564
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[Krb5LoginModule] tryFirstPass failed with:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        30: .line 566
            aload 2 /* le */
            invokevirtual javax.security.auth.login.LoginException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        31: .line 564
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 2 // javax.security.auth.login.LoginException le
        32: .line 569
            goto 46
      StackMap locals:
      StackMap stack:
        33: aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useFirstPass:Z
            ifeq 46
        34: .line 571
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication:(Z)V
        35: .line 572
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        36: .line 573
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanState:()V
        37: .line 574
            iconst_1
            ireturn
        38: .line 575
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 2 /* e */
        start local 2 // javax.security.auth.login.LoginException e
        39: .line 577
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 43
        40: .line 578
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[Krb5LoginModule] authentication failed \n"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        41: .line 580
            aload 2 /* e */
            invokevirtual javax.security.auth.login.LoginException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        42: .line 578
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        43: .line 582
      StackMap locals: javax.security.auth.login.LoginException
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        44: .line 583
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanState:()V
        45: .line 584
            aload 2 /* e */
            athrow
        end local 2 // javax.security.auth.login.LoginException e
        46: .line 592
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication:(Z)V
        47: .line 593
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        48: .line 594
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanState:()V
        49: .line 595
            iconst_1
            ireturn
        50: .line 596
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 2 /* e */
        start local 2 // javax.security.auth.login.LoginException e
        51: .line 598
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 55
        52: .line 599
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[Krb5LoginModule] authentication failed \n"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        53: .line 601
            aload 2 /* e */
            invokevirtual javax.security.auth.login.LoginException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        54: .line 599
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        55: .line 603
      StackMap locals: javax.security.auth.login.LoginException
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        56: .line 604
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanState:()V
        57: .line 605
            aload 2 /* e */
            athrow
        end local 2 // javax.security.auth.login.LoginException e
        end local 1 // java.lang.String principalProperty
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   58     0               this  Lcom/sun/security/auth/module/Krb5LoginModule;
            6    9     1                 ke  Lsun/security/krb5/KrbException;
            7    9     2                 le  Ljavax/security/auth/login/LoginException;
           11   58     1  principalProperty  Ljava/lang/String;
           27   32     2                 le  Ljavax/security/auth/login/LoginException;
           39   46     2                  e  Ljavax/security/auth/login/LoginException;
           51   58     2                  e  Ljavax/security/auth/login/LoginException;
      Exception table:
        from    to  target  type
           1     4       5  Class sun.security.krb5.KrbException
          20    25      26  Class javax.security.auth.login.LoginException
          34    37      38  Class javax.security.auth.login.LoginException
          46    49      50  Class javax.security.auth.login.LoginException
    Exceptions:
      throws javax.security.auth.login.LoginException

  private void attemptAuthentication(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
        start local 1 // boolean getPasswdFromSharedState
         0: .line 622
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            ifnull 10
         1: .line 624
            aload 0 /* this */
            new sun.security.krb5.PrincipalName
            dup
         2: .line 625
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
         3: .line 626
            iconst_1
            invokespecial sun.security.krb5.PrincipalName.<init>:(Ljava/lang/String;I)V
         4: .line 624
            putfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
         5: .line 627
            goto 10
      StackMap locals:
      StackMap stack: sun.security.krb5.KrbException
         6: astore 2 /* e */
        start local 2 // sun.security.krb5.KrbException e
         7: .line 628
            new javax.security.auth.login.LoginException
            dup
            aload 2 /* e */
            invokevirtual sun.security.krb5.KrbException.getMessage:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            astore 3 /* le */
        start local 3 // javax.security.auth.login.LoginException le
         8: .line 629
            aload 3 /* le */
            aload 2 /* e */
            invokevirtual javax.security.auth.login.LoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         9: .line 630
            aload 3 /* le */
            athrow
        end local 3 // javax.security.auth.login.LoginException le
        end local 2 // sun.security.krb5.KrbException e
        10: .line 635
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useTicketCache:Z
            ifeq 35
        11: .line 637
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 13
        12: .line 638
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Acquire TGT from Cache"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 639
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        14: .line 640
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ticketCacheName:Ljava/lang/String;
        15: .line 639
            invokestatic sun.security.krb5.Credentials.acquireTGTFromCache:(Lsun/security/krb5/PrincipalName;Ljava/lang/String;)Lsun/security/krb5/Credentials;
            putfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
        16: .line 642
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnull 26
        17: .line 643
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.renewTGT:Z
            ifeq 22
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokestatic com.sun.security.auth.module.Krb5LoginModule.isOld:(Lsun/security/krb5/Credentials;)Z
            ifeq 22
        18: .line 645
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.renewCredentials:(Lsun/security/krb5/Credentials;)Lsun/security/krb5/Credentials;
            astore 2 /* newCred */
        start local 2 // sun.security.krb5.Credentials newCred
        19: .line 646
            aload 2 /* newCred */
            ifnull 22
        20: .line 647
            aload 2 /* newCred */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokevirtual sun.security.krb5.Credentials.getProxy:()Lsun/security/krb5/Credentials;
            invokevirtual sun.security.krb5.Credentials.setProxy:(Lsun/security/krb5/Credentials;)Lsun/security/krb5/Credentials;
            pop
        21: .line 648
            aload 0 /* this */
            aload 2 /* newCred */
            putfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
        end local 2 // sun.security.krb5.Credentials newCred
        22: .line 651
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokestatic com.sun.security.auth.module.Krb5LoginModule.isCurrent:(Lsun/security/krb5/Credentials;)Z
            ifne 26
        23: .line 653
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
        24: .line 654
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 26
        25: .line 655
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Credentials are no longer valid"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 660
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnull 29
        27: .line 662
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            ifnonnull 29
        28: .line 663
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokevirtual sun.security.krb5.Credentials.getClient:()Lsun/security/krb5/PrincipalName;
            putfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
        29: .line 666
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 35
        30: .line 667
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Principal is "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        31: .line 668
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnonnull 35
        32: .line 669
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        33: .line 670
            ldc "null credentials from Ticket Cache"
        34: .line 669
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 678
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnonnull 109
        36: .line 681
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            ifnonnull 42
        37: .line 682
            aload 0 /* this */
            iload 1 /* getPasswdFromSharedState */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.promptForName:(Z)V
        38: .line 683
            aload 0 /* this */
            new sun.security.krb5.PrincipalName
            dup
        39: .line 684
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
        40: .line 685
            iconst_1
            invokespecial sun.security.krb5.PrincipalName.<init>:(Ljava/lang/String;I)V
        41: .line 683
            putfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
        42: .line 707
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
            ifeq 69
        43: .line 708
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.unboundServer:Z
            ifne 51
        44: .line 710
            new javax.security.auth.kerberos.KerberosPrincipal
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            invokevirtual sun.security.krb5.PrincipalName.getName:()Ljava/lang/String;
            invokespecial javax.security.auth.kerberos.KerberosPrincipal.<init>:(Ljava/lang/String;)V
        45: .line 709
            astore 2 /* kp */
        start local 2 // javax.security.auth.kerberos.KerberosPrincipal kp
        46: .line 711
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnonnull 48
        47: .line 712
            aload 2 /* kp */
            invokestatic javax.security.auth.kerberos.KeyTab.getInstance:(Ljavax/security/auth/kerberos/KerberosPrincipal;)Ljavax/security/auth/kerberos/KeyTab;
            goto 49
        48: .line 713
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int javax.security.auth.kerberos.KerberosPrincipal
      StackMap stack: com.sun.security.auth.module.Krb5LoginModule
            aload 2 /* kp */
            new java.io.File
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokestatic javax.security.auth.kerberos.KeyTab.getInstance:(Ljavax/security/auth/kerberos/KerberosPrincipal;Ljava/io/File;)Ljavax/security/auth/kerberos/KeyTab;
        49: .line 711
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int javax.security.auth.kerberos.KerberosPrincipal
      StackMap stack: com.sun.security.auth.module.Krb5LoginModule javax.security.auth.kerberos.KeyTab
            putfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
        end local 2 // javax.security.auth.kerberos.KerberosPrincipal kp
        50: .line 714
            goto 55
        51: .line 715
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnonnull 53
        52: .line 716
            invokestatic javax.security.auth.kerberos.KeyTab.getUnboundInstance:()Ljavax/security/auth/kerberos/KeyTab;
            goto 54
        53: .line 717
      StackMap locals:
      StackMap stack: com.sun.security.auth.module.Krb5LoginModule
            new java.io.File
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokestatic javax.security.auth.kerberos.KeyTab.getUnboundInstance:(Ljava/io/File;)Ljavax/security/auth/kerberos/KeyTab;
        54: .line 715
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int
      StackMap stack: com.sun.security.auth.module.Krb5LoginModule javax.security.auth.kerberos.KeyTab
            putfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
        55: .line 719
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 69
        56: .line 720
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            invokestatic sun.security.jgss.krb5.Krb5Util.keysFromJavaxKeyTab:(Ljavax/security/auth/kerberos/KeyTab;Lsun/security/krb5/PrincipalName;)[Lsun/security/krb5/EncryptionKey;
            arraylength
            ifne 69
        57: .line 722
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
        58: .line 723
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 69
        59: .line 724
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        60: .line 725
            new java.lang.StringBuilder
            dup
            ldc "Key for the principal "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        61: .line 726
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        62: .line 727
            ldc " not available in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        63: .line 728
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnonnull 65
        64: .line 729
            ldc "default key tab"
            goto 66
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
        65: aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
        66: .line 728
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int
      StackMap stack: java.io.PrintStream java.lang.StringBuilder java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        67: .line 725
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        68: .line 724
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        69: .line 737
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            ifnonnull 77
        70: .line 738
            aload 0 /* this */
            iload 1 /* getPasswdFromSharedState */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.promptForPass:(Z)V
        71: .line 739
            new sun.security.krb5.KrbAsReqBuilder
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.password:[C
            invokespecial sun.security.krb5.KrbAsReqBuilder.<init>:(Lsun/security/krb5/PrincipalName;[C)V
            astore 2 /* builder */
        start local 2 // sun.security.krb5.KrbAsReqBuilder builder
        72: .line 740
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 74
        73: .line 744
            aload 0 /* this */
            aload 2 /* builder */
            invokevirtual sun.security.krb5.KrbAsReqBuilder.action:()Lsun/security/krb5/KrbAsReqBuilder;
            invokevirtual sun.security.krb5.KrbAsReqBuilder.getCreds:()Lsun/security/krb5/Credentials;
            putfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
        74: .line 746
      StackMap locals: sun.security.krb5.KrbAsReqBuilder
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 80
        75: .line 747
            aload 0 /* this */
            aload 2 /* builder */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            invokevirtual sun.security.krb5.KrbAsReqBuilder.getKeys:(Z)[Lsun/security/krb5/EncryptionKey;
            putfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
        76: .line 751
            goto 80
        end local 2 // sun.security.krb5.KrbAsReqBuilder builder
        77: .line 752
      StackMap locals:
      StackMap stack:
            new sun.security.krb5.KrbAsReqBuilder
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            invokespecial sun.security.krb5.KrbAsReqBuilder.<init>:(Lsun/security/krb5/PrincipalName;Ljavax/security/auth/kerberos/KeyTab;)V
            astore 2 /* builder */
        start local 2 // sun.security.krb5.KrbAsReqBuilder builder
        78: .line 753
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 80
        79: .line 754
            aload 0 /* this */
            aload 2 /* builder */
            invokevirtual sun.security.krb5.KrbAsReqBuilder.action:()Lsun/security/krb5/KrbAsReqBuilder;
            invokevirtual sun.security.krb5.KrbAsReqBuilder.getCreds:()Lsun/security/krb5/Credentials;
            putfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
        80: .line 757
      StackMap locals: sun.security.krb5.KrbAsReqBuilder
      StackMap stack:
            aload 2 /* builder */
            invokevirtual sun.security.krb5.KrbAsReqBuilder.destroy:()V
        81: .line 759
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 97
        82: .line 760
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "principal is "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        83: .line 761
            new sun.security.util.HexDumpEncoder
            dup
            invokespecial sun.security.util.HexDumpEncoder.<init>:()V
            astore 3 /* hd */
        start local 3 // sun.security.util.HexDumpEncoder hd
        84: .line 762
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            ifnull 87
        85: .line 763
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Will use keytab"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        86: .line 764
            goto 97
      StackMap locals: sun.security.util.HexDumpEncoder
      StackMap stack:
        87: aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 97
        88: .line 765
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        89: goto 96
        90: .line 766
      StackMap locals: int
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "EncryptionKey: keyType="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        91: .line 767
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 4 /* i */
            aaload
            invokevirtual sun.security.krb5.EncryptionKey.getEType:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        92: .line 768
            ldc " keyBytes (hex dump)="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        93: .line 769
            aload 3 /* hd */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 4 /* i */
            aaload
            invokevirtual sun.security.krb5.EncryptionKey.getBytes:()[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        94: .line 766
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        95: .line 765
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        96: iload 4 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            arraylength
            if_icmplt 90
        end local 4 // int i
        end local 3 // sun.security.util.HexDumpEncoder hd
        97: .line 775
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 109
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnonnull 109
        98: .line 776
            new javax.security.auth.login.LoginException
            dup
        99: .line 777
            ldc "TGT Can not be obtained from the KDC "
       100: .line 776
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // sun.security.krb5.KrbAsReqBuilder builder
       101: .line 781
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int
      StackMap stack: sun.security.krb5.KrbException
            astore 2 /* e */
        start local 2 // sun.security.krb5.KrbException e
       102: .line 782
            new javax.security.auth.login.LoginException
            dup
            aload 2 /* e */
            invokevirtual sun.security.krb5.KrbException.getMessage:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            astore 3 /* le */
        start local 3 // javax.security.auth.login.LoginException le
       103: .line 783
            aload 3 /* le */
            aload 2 /* e */
            invokevirtual javax.security.auth.login.LoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
       104: .line 784
            aload 3 /* le */
            athrow
        end local 3 // javax.security.auth.login.LoginException le
        end local 2 // sun.security.krb5.KrbException e
       105: .line 785
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* ioe */
        start local 2 // java.io.IOException ioe
       106: .line 786
            new javax.security.auth.login.LoginException
            dup
            aload 2 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            astore 3 /* ie */
        start local 3 // javax.security.auth.login.LoginException ie
       107: .line 787
            aload 3 /* ie */
            aload 2 /* ioe */
            invokevirtual javax.security.auth.login.LoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
       108: .line 788
            aload 3 /* ie */
            athrow
        end local 3 // javax.security.auth.login.LoginException ie
        end local 2 // java.io.IOException ioe
       109: .line 790
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean getPasswdFromSharedState
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0  110     0                      this  Lcom/sun/security/auth/module/Krb5LoginModule;
            0  110     1  getPasswdFromSharedState  Z
            7   10     2                         e  Lsun/security/krb5/KrbException;
            8   10     3                        le  Ljavax/security/auth/login/LoginException;
           19   22     2                   newCred  Lsun/security/krb5/Credentials;
           46   50     2                        kp  Ljavax/security/auth/kerberos/KerberosPrincipal;
           72   77     2                   builder  Lsun/security/krb5/KrbAsReqBuilder;
           78  101     2                   builder  Lsun/security/krb5/KrbAsReqBuilder;
           84   97     3                        hd  Lsun/security/util/HexDumpEncoder;
           89   97     4                         i  I
          102  105     2                         e  Lsun/security/krb5/KrbException;
          103  105     3                        le  Ljavax/security/auth/login/LoginException;
          106  109     2                       ioe  Ljava/io/IOException;
          107  109     3                        ie  Ljavax/security/auth/login/LoginException;
      Exception table:
        from    to  target  type
           1     5       6  Class sun.security.krb5.KrbException
          10   101     101  Class sun.security.krb5.KrbException
          10   101     105  Class java.io.IOException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
                          Name  Flags
      getPasswdFromSharedState  

  private void promptForName(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
        start local 1 // boolean getPasswdFromSharedState
         0: .line 794
            aload 0 /* this */
            new java.lang.StringBuffer
            dup
            ldc ""
            invokespecial java.lang.StringBuffer.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
         1: .line 795
            iload 1 /* getPasswdFromSharedState */
            ifeq 21
         2: .line 797
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
         3: .line 798
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 7
         4: .line 799
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         5: .line 800
            new java.lang.StringBuilder
            dup
            ldc "username from shared state is "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 799
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 802
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            ifnonnull 14
         8: .line 803
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         9: .line 804
            ldc "username from shared state is null\n"
        10: .line 803
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 805
            new javax.security.auth.login.LoginException
            dup
        12: .line 806
            ldc "Username can not be obtained from sharedstate "
        13: .line 805
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 808
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 18
        15: .line 809
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        16: .line 810
            new java.lang.StringBuilder
            dup
            ldc "username from shared state is "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 809
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 812
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            ifnull 21
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifle 21
        19: .line 813
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            iconst_0
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.insert:(ILjava/lang/String;)Ljava/lang/StringBuffer;
            pop
        20: .line 814
            return
        21: .line 818
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
            ifeq 25
        22: .line 819
            new javax.security.auth.login.LoginException
            dup
        23: .line 820
            ldc "Unable to obtain Principal Name for authentication "
        24: .line 819
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 822
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            ifnonnull 27
        26: .line 823
            new javax.security.auth.login.LoginException
            dup
            ldc "No CallbackHandler available to garner authentication information from the user"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 828
      StackMap locals:
      StackMap stack:
            ldc "user.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* defUsername */
        start local 2 // java.lang.String defUsername
        28: .line 830
            iconst_1
            anewarray javax.security.auth.callback.Callback
            astore 3 /* callbacks */
        start local 3 // javax.security.auth.callback.Callback[] callbacks
        29: .line 831
            new java.text.MessageFormat
            dup
        30: .line 833
            ldc "Kerberos.username.defUsername."
        31: .line 832
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
        32: .line 831
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* form */
        start local 4 // java.text.MessageFormat form
        33: .line 834
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* defUsername */
            aastore
            astore 5 /* source */
        start local 5 // java.lang.Object[] source
        34: .line 835
            aload 3 /* callbacks */
            iconst_0
            new javax.security.auth.callback.NameCallback
            dup
            aload 4 /* form */
            aload 5 /* source */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial javax.security.auth.callback.NameCallback.<init>:(Ljava/lang/String;)V
            aastore
        35: .line 836
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            aload 3 /* callbacks */
            invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
        36: .line 837
            aload 0 /* this */
            aload 3 /* callbacks */
            iconst_0
            aaload
            checkcast javax.security.auth.callback.NameCallback
            invokevirtual javax.security.auth.callback.NameCallback.getName:()Ljava/lang/String;
            putfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
        37: .line 838
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            ifnull 38
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifne 39
        38: .line 839
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int java.lang.String javax.security.auth.callback.Callback[] java.text.MessageFormat java.lang.Object[]
      StackMap stack:
            aload 0 /* this */
            aload 2 /* defUsername */
            putfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
        39: .line 840
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            iconst_0
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.insert:(ILjava/lang/String;)Ljava/lang/StringBuffer;
            pop
        end local 5 // java.lang.Object[] source
        end local 4 // java.text.MessageFormat form
        end local 3 // javax.security.auth.callback.Callback[] callbacks
        end local 2 // java.lang.String defUsername
        40: .line 842
            goto 51
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int
      StackMap stack: java.io.IOException
        41: astore 2 /* ioe */
        start local 2 // java.io.IOException ioe
        42: .line 843
            new javax.security.auth.login.LoginException
            dup
            aload 2 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.io.IOException ioe
        43: .line 844
      StackMap locals:
      StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
            astore 2 /* uce */
        start local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        44: .line 845
            new javax.security.auth.login.LoginException
            dup
        45: .line 846
            new java.lang.StringBuilder
            dup
            aload 2 /* uce */
            invokevirtual javax.security.auth.callback.UnsupportedCallbackException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        46: .line 847
            ldc " not available to garner "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        47: .line 848
            ldc " authentication information "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        48: .line 849
            ldc " from the user"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        49: .line 846
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        50: .line 845
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        51: .line 852
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean getPasswdFromSharedState
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   52     0                      this  Lcom/sun/security/auth/module/Krb5LoginModule;
            0   52     1  getPasswdFromSharedState  Z
           28   40     2               defUsername  Ljava/lang/String;
           29   40     3                 callbacks  [Ljavax/security/auth/callback/Callback;
           33   40     4                      form  Ljava/text/MessageFormat;
           34   40     5                    source  [Ljava/lang/Object;
           42   43     2                       ioe  Ljava/io/IOException;
           44   51     2                       uce  Ljavax/security/auth/callback/UnsupportedCallbackException;
      Exception table:
        from    to  target  type
          27    40      41  Class java.io.IOException
          27    40      43  Class javax.security.auth.callback.UnsupportedCallbackException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
                          Name  Flags
      getPasswdFromSharedState  

  private void promptForPass(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
        start local 1 // boolean getPasswdFromSharedState
         0: .line 857
            iload 1 /* getPasswdFromSharedState */
            ifeq 15
         1: .line 859
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast char[]
            putfield com.sun.security.auth.module.Krb5LoginModule.password:[C
         2: .line 860
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.password:[C
            ifnonnull 10
         3: .line 861
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 7
         4: .line 862
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         5: .line 863
            ldc "Password from shared state is null"
         6: .line 862
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 865
      StackMap locals:
      StackMap stack:
            new javax.security.auth.login.LoginException
            dup
         8: .line 866
            ldc "Password can not be obtained from sharedstate "
         9: .line 865
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 868
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 14
        11: .line 869
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        12: .line 870
            new java.lang.StringBuilder
            dup
            ldc "password is "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            new java.lang.String
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.password:[C
            invokespecial java.lang.String.<init>:([C)V
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 869
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        14: .line 872
      StackMap locals:
      StackMap stack:
            return
        15: .line 874
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
            ifeq 19
        16: .line 875
            new javax.security.auth.login.LoginException
            dup
        17: .line 876
            ldc "Unable to obtain password from user\n"
        18: .line 875
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 878
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            ifnonnull 21
        20: .line 879
            new javax.security.auth.login.LoginException
            dup
            ldc "No CallbackHandler available to garner authentication information from the user"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 884
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray javax.security.auth.callback.Callback
            astore 2 /* callbacks */
        start local 2 // javax.security.auth.callback.Callback[] callbacks
        22: .line 885
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            astore 3 /* userName */
        start local 3 // java.lang.String userName
        23: .line 886
            new java.text.MessageFormat
            dup
        24: .line 888
            ldc "Kerberos.password.for.username."
        25: .line 887
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
        26: .line 886
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* form */
        start local 4 // java.text.MessageFormat form
        27: .line 889
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* userName */
            aastore
            astore 5 /* source */
        start local 5 // java.lang.Object[] source
        28: .line 890
            aload 2 /* callbacks */
            iconst_0
            new javax.security.auth.callback.PasswordCallback
            dup
        29: .line 891
            aload 4 /* form */
            aload 5 /* source */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
        30: .line 892
            iconst_0
            invokespecial javax.security.auth.callback.PasswordCallback.<init>:(Ljava/lang/String;Z)V
        31: .line 890
            aastore
        32: .line 893
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            aload 2 /* callbacks */
            invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
        33: .line 895
            aload 2 /* callbacks */
            iconst_0
            aaload
        34: .line 894
            checkcast javax.security.auth.callback.PasswordCallback
        35: .line 895
            invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
        36: .line 894
            astore 6 /* tmpPassword */
        start local 6 // char[] tmpPassword
        37: .line 896
            aload 6 /* tmpPassword */
            ifnonnull 39
        38: .line 897
            new javax.security.auth.login.LoginException
            dup
            ldc "No password provided"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        39: .line 899
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int javax.security.auth.callback.Callback[] java.lang.String java.text.MessageFormat java.lang.Object[] char[]
      StackMap stack:
            aload 0 /* this */
            aload 6 /* tmpPassword */
            arraylength
            newarray 5
            putfield com.sun.security.auth.module.Krb5LoginModule.password:[C
        40: .line 900
            aload 6 /* tmpPassword */
            iconst_0
        41: .line 901
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.password:[C
            iconst_0
            aload 6 /* tmpPassword */
            arraylength
        42: .line 900
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        43: .line 902
            aload 2 /* callbacks */
            iconst_0
            aaload
            checkcast javax.security.auth.callback.PasswordCallback
            invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
        44: .line 906
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        45: goto 48
        46: .line 907
      StackMap locals: int
      StackMap stack:
            aload 6 /* tmpPassword */
            iload 7 /* i */
            bipush 32
            castore
        47: .line 906
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        48: iload 7 /* i */
            aload 6 /* tmpPassword */
            arraylength
            if_icmplt 46
        end local 7 // int i
        49: .line 908
            aconst_null
            astore 6 /* tmpPassword */
        50: .line 909
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 64
        51: .line 910
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[Krb5LoginModule] user entered username: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        52: .line 912
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        53: .line 910
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        54: .line 913
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        end local 6 // char[] tmpPassword
        end local 5 // java.lang.Object[] source
        end local 4 // java.text.MessageFormat form
        end local 3 // java.lang.String userName
        end local 2 // javax.security.auth.callback.Callback[] callbacks
        55: .line 915
            goto 64
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int
      StackMap stack: java.io.IOException
        56: astore 2 /* ioe */
        start local 2 // java.io.IOException ioe
        57: .line 916
            new javax.security.auth.login.LoginException
            dup
            aload 2 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.io.IOException ioe
        58: .line 917
      StackMap locals:
      StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
            astore 2 /* uce */
        start local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        59: .line 918
            new javax.security.auth.login.LoginException
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* uce */
            invokevirtual javax.security.auth.callback.UnsupportedCallbackException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        60: .line 919
            ldc " not available to garner "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        61: .line 920
            ldc " authentication information "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        62: .line 921
            ldc "from the user"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 918
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        64: .line 924
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean getPasswdFromSharedState
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   65     0                      this  Lcom/sun/security/auth/module/Krb5LoginModule;
            0   65     1  getPasswdFromSharedState  Z
           22   55     2                 callbacks  [Ljavax/security/auth/callback/Callback;
           23   55     3                  userName  Ljava/lang/String;
           27   55     4                      form  Ljava/text/MessageFormat;
           28   55     5                    source  [Ljava/lang/Object;
           37   55     6               tmpPassword  [C
           45   49     7                         i  I
           57   58     2                       ioe  Ljava/io/IOException;
           59   64     2                       uce  Ljavax/security/auth/callback/UnsupportedCallbackException;
      Exception table:
        from    to  target  type
          21    55      56  Class java.io.IOException
          21    55      58  Class javax.security.auth.callback.UnsupportedCallbackException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
                          Name  Flags
      getPasswdFromSharedState  

  private void validateConfiguration();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 927
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
            ifeq 5
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useTicketCache:Z
            ifne 5
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
            ifne 5
         1: .line 928
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.tryFirstPass:Z
            ifne 5
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useFirstPass:Z
            ifne 5
         2: .line 929
            new javax.security.auth.login.LoginException
            dup
         3: .line 930
            ldc "Configuration Error - either doNotPrompt should be  false or at least one of useTicketCache,  useKeyTab, tryFirstPass and useFirstPass should be true"
         4: .line 929
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 935
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ticketCacheName:Ljava/lang/String;
            ifnull 11
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useTicketCache:Z
            ifne 11
         6: .line 936
            new javax.security.auth.login.LoginException
            dup
         7: .line 937
            new java.lang.StringBuilder
            dup
            ldc "Configuration Error  - useTicketCache should be set to true to use the ticket cache"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 940
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ticketCacheName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         9: .line 937
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 936
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 941
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnull 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
            ifeq 14
            iconst_0
            goto 15
      StackMap locals:
      StackMap stack: int
        14: iconst_1
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule
      StackMap stack: int int
        15: iand
            ifeq 21
        16: .line 942
            new javax.security.auth.login.LoginException
            dup
        17: .line 943
            new java.lang.StringBuilder
            dup
            ldc "Configuration Error - useKeyTab should be set to true to use the keytab"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 944
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 943
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 942
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 945
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 26
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
            ifeq 26
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
            ifne 26
        22: .line 946
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.tryFirstPass:Z
            ifne 26
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useFirstPass:Z
            ifne 26
        23: .line 947
            new javax.security.auth.login.LoginException
            dup
        24: .line 948
            ldc "Configuration Error - either doNotPrompt should be set to  false or at least one of tryFirstPass, useFirstPass or useKeyTab must be set to true for storeKey option"
        25: .line 947
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 951
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.renewTGT:Z
            ifeq 30
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useTicketCache:Z
            ifne 30
        27: .line 952
            new javax.security.auth.login.LoginException
            dup
        28: .line 953
            ldc "Configuration Error - either useTicketCache should be  true or renewTGT should be false"
        29: .line 952
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 956
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            ifnull 35
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            ldc "*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 35
        31: .line 957
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 35
        32: .line 958
            new javax.security.auth.login.LoginException
            dup
        33: .line 959
            ldc "Configuration Error - principal cannot be * when isInitiator is true"
        34: .line 958
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        35: .line 963
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   36     0  this  Lcom/sun/security/auth/module/Krb5LoginModule;
    Exceptions:
      throws javax.security.auth.login.LoginException

  private static boolean isCurrent(sun.security.krb5.Credentials);
    descriptor: (Lsun/security/krb5/Credentials;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.security.krb5.Credentials creds
         0: .line 967
            aload 0 /* creds */
            invokevirtual sun.security.krb5.Credentials.getEndTime:()Ljava/util/Date;
            astore 1 /* endTime */
        start local 1 // java.util.Date endTime
         1: .line 968
            aload 1 /* endTime */
            ifnull 4
         2: .line 969
            invokestatic java.lang.System.currentTimeMillis:()J
            aload 1 /* endTime */
            invokevirtual java.util.Date.getTime:()J
            lcmp
            ifgt 3
            iconst_1
            ireturn
      StackMap locals: java.util.Date
      StackMap stack:
         3: iconst_0
            ireturn
         4: .line 971
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.util.Date endTime
        end local 0 // sun.security.krb5.Credentials creds
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0    creds  Lsun/security/krb5/Credentials;
            1    5     1  endTime  Ljava/util/Date;
    MethodParameters:
       Name  Flags
      creds  

  private static boolean isOld(sun.security.krb5.Credentials);
    descriptor: (Lsun/security/krb5/Credentials;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // sun.security.krb5.Credentials creds
         0: .line 976
            aload 0 /* creds */
            invokevirtual sun.security.krb5.Credentials.getEndTime:()Ljava/util/Date;
            astore 1 /* endTime */
        start local 1 // java.util.Date endTime
         1: .line 977
            aload 1 /* endTime */
            ifnull 9
         2: .line 978
            aload 0 /* creds */
            invokevirtual sun.security.krb5.Credentials.getAuthTime:()Ljava/util/Date;
            astore 2 /* authTime */
        start local 2 // java.util.Date authTime
         3: .line 979
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 3 /* now */
        start local 3 // long now
         4: .line 980
            aload 2 /* authTime */
            ifnull 7
         5: .line 982
            lload 3 /* now */
            aload 2 /* authTime */
            invokevirtual java.util.Date.getTime:()J
            lsub
            aload 1 /* endTime */
            invokevirtual java.util.Date.getTime:()J
            lload 3 /* now */
            lsub
            lcmp
            ifle 6
            iconst_1
            ireturn
      StackMap locals: java.util.Date java.util.Date long
      StackMap stack:
         6: iconst_0
            ireturn
         7: .line 985
      StackMap locals:
      StackMap stack:
            lload 3 /* now */
            aload 1 /* endTime */
            invokevirtual java.util.Date.getTime:()J
            ldc 7200000
            lsub
            lcmp
            ifgt 8
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
        end local 3 // long now
        end local 2 // java.util.Date authTime
         9: .line 988
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.util.Date endTime
        end local 0 // sun.security.krb5.Credentials creds
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0     creds  Lsun/security/krb5/Credentials;
            1   10     1   endTime  Ljava/util/Date;
            3    9     2  authTime  Ljava/util/Date;
            4    9     3       now  J
    MethodParameters:
       Name  Flags
      creds  

  private sun.security.krb5.Credentials renewCredentials(sun.security.krb5.Credentials);
    descriptor: (Lsun/security/krb5/Credentials;)Lsun/security/krb5/Credentials;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
        start local 1 // sun.security.krb5.Credentials creds
         0: .line 995
            aload 1 /* creds */
            invokevirtual sun.security.krb5.Credentials.isRenewable:()Z
            ifne 2
         1: .line 996
            new javax.security.auth.RefreshFailedException
            dup
            ldc "This ticket is not renewable"
            invokespecial javax.security.auth.RefreshFailedException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 998
      StackMap locals:
      StackMap stack:
            aload 1 /* creds */
            invokevirtual sun.security.krb5.Credentials.getRenewTill:()Ljava/util/Date;
            ifnonnull 5
         3: .line 1000
            aload 1 /* creds */
         4: areturn
         5: .line 1002
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokevirtual sun.security.krb5.Credentials.getRenewTill:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            lcmp
            ifle 7
         6: .line 1003
            new javax.security.auth.RefreshFailedException
            dup
            ldc "This ticket is past its last renewal time."
            invokespecial javax.security.auth.RefreshFailedException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 1005
      StackMap locals:
      StackMap stack:
            aload 1 /* creds */
            invokevirtual sun.security.krb5.Credentials.renew:()Lsun/security/krb5/Credentials;
            astore 2 /* lcreds */
        start local 2 // sun.security.krb5.Credentials lcreds
         8: .line 1006
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 17
         9: .line 1007
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Renewed Kerberos Ticket"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 1008
            goto 17
        end local 2 // sun.security.krb5.Credentials lcreds
      StackMap locals:
      StackMap stack: java.lang.Exception
        11: astore 3 /* e */
        start local 3 // java.lang.Exception e
        12: .line 1009
            aconst_null
            astore 2 /* lcreds */
        start local 2 // sun.security.krb5.Credentials lcreds
        13: .line 1010
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 17
        14: .line 1011
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Ticket could not be renewed : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        15: .line 1012
            aload 3 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 1011
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 3 // java.lang.Exception e
        17: .line 1014
      StackMap locals: sun.security.krb5.Credentials
      StackMap stack:
            aload 2 /* lcreds */
            areturn
        end local 2 // sun.security.krb5.Credentials lcreds
        end local 1 // sun.security.krb5.Credentials creds
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0    this  Lcom/sun/security/auth/module/Krb5LoginModule;
            0   18     1   creds  Lsun/security/krb5/Credentials;
            8   11     2  lcreds  Lsun/security/krb5/Credentials;
           13   18     2  lcreds  Lsun/security/krb5/Credentials;
           12   17     3       e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     4      11  Class java.lang.Exception
           5    10      11  Class java.lang.Exception
    MethodParameters:
       Name  Flags
      creds  

  public boolean commit();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 1046
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
            ifne 2
         1: .line 1047
            iconst_0
            ireturn
         2: .line 1050
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 5
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnonnull 5
         3: .line 1051
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
         4: .line 1052
            new javax.security.auth.login.LoginException
            dup
            ldc "Null Client Credential"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 1055
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 8
         6: .line 1056
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
         7: .line 1057
            new javax.security.auth.login.LoginException
            dup
            ldc "Subject is Readonly"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 1067
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrivateCredentials:()Ljava/util/Set;
            astore 1 /* privCredSet */
        start local 1 // java.util.Set privCredSet
         9: .line 1068
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            astore 2 /* princSet */
        start local 2 // java.util.Set princSet
        10: .line 1069
            aload 0 /* this */
            new javax.security.auth.kerberos.KerberosPrincipal
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            invokevirtual sun.security.krb5.PrincipalName.getName:()Ljava/lang/String;
            invokespecial javax.security.auth.kerberos.KerberosPrincipal.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
        11: .line 1072
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 16
        12: .line 1073
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokestatic sun.security.jgss.krb5.Krb5Util.credsToTicket:(Lsun/security/krb5/Credentials;)Ljavax/security/auth/kerberos/KerberosTicket;
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
        13: .line 1074
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokevirtual sun.security.krb5.Credentials.getProxy:()Lsun/security/krb5/Credentials;
            ifnull 16
        14: .line 1075
            invokestatic sun.security.krb5.KerberosSecrets.getJavaxSecurityAuthKerberosAccess:()Lsun/security/krb5/JavaxSecurityAuthKerberosAccess;
        15: .line 1076
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            invokevirtual sun.security.krb5.Credentials.getProxy:()Lsun/security/krb5/Credentials;
            invokestatic sun.security.jgss.krb5.Krb5Util.credsToTicket:(Lsun/security/krb5/Credentials;)Ljavax/security/auth/kerberos/KerberosTicket;
            invokeinterface sun.security.krb5.JavaxSecurityAuthKerberosAccess.kerberosTicketSetProxy:(Ljavax/security/auth/kerberos/KerberosTicket;Ljavax/security/auth/kerberos/KerberosTicket;)V
        16: .line 1080
      StackMap locals: java.util.Set java.util.Set
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 35
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            ifnull 35
        17: .line 1081
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            arraylength
            ifne 20
        18: .line 1082
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        19: .line 1083
            new javax.security.auth.login.LoginException
            dup
            ldc "Null Server Key "
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 1086
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            arraylength
            anewarray javax.security.auth.kerberos.KerberosKey
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
        21: .line 1087
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        22: goto 34
        23: .line 1088
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 3 /* i */
            aaload
            invokevirtual sun.security.krb5.EncryptionKey.getKeyVersionNumber:()Ljava/lang/Integer;
            astore 4 /* temp */
        start local 4 // java.lang.Integer temp
        24: .line 1089
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            iload 3 /* i */
        25: new javax.security.auth.kerberos.KerberosKey
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
        26: .line 1090
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 3 /* i */
            aaload
            invokevirtual sun.security.krb5.EncryptionKey.getBytes:()[B
        27: .line 1091
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 3 /* i */
            aaload
            invokevirtual sun.security.krb5.EncryptionKey.getEType:()I
        28: .line 1092
            aload 4 /* temp */
            ifnonnull 30
        29: .line 1093
            iconst_0
            goto 31
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule java.util.Set java.util.Set int java.lang.Integer
      StackMap stack: javax.security.auth.kerberos.KerberosKey[] int new 25 new 25 javax.security.auth.kerberos.KerberosPrincipal byte[] int
        30: aload 4 /* temp */
            invokevirtual java.lang.Integer.intValue:()I
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule java.util.Set java.util.Set int java.lang.Integer
      StackMap stack: javax.security.auth.kerberos.KerberosKey[] int new 25 new 25 javax.security.auth.kerberos.KerberosPrincipal byte[] int int
        31: invokespecial javax.security.auth.kerberos.KerberosKey.<init>:(Ljavax/security/auth/kerberos/KerberosPrincipal;[BII)V
        32: .line 1089
            aastore
        end local 4 // java.lang.Integer temp
        33: .line 1087
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        34: iload 3 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            arraylength
            if_icmplt 23
        end local 3 // int i
        35: .line 1101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.unboundServer:Z
            ifne 38
        36: .line 1102
            aload 2 /* princSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 38
        37: .line 1103
            aload 2 /* princSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        38: .line 1107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            ifnull 41
        39: .line 1108
            aload 1 /* privCredSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 41
        40: .line 1109
            aload 1 /* privCredSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        41: .line 1112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 65
        42: .line 1113
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            ifnonnull 49
        43: .line 1114
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            ifnull 47
        44: .line 1115
            aload 1 /* privCredSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 65
        45: .line 1116
            aload 1 /* privCredSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        46: .line 1118
            goto 65
        47: .line 1119
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        48: .line 1120
            new javax.security.auth.login.LoginException
            dup
            ldc "No key to store"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        49: .line 1123
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        50: goto 64
        51: .line 1124
      StackMap locals: int
      StackMap stack:
            aload 1 /* privCredSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            iload 3 /* i */
            aaload
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 53
        52: .line 1125
            aload 1 /* privCredSet */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            iload 3 /* i */
            aaload
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        53: .line 1127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 3 /* i */
            aaload
            invokevirtual sun.security.krb5.EncryptionKey.destroy:()V
        54: .line 1128
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 3 /* i */
            aconst_null
            aastore
        55: .line 1129
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 63
        56: .line 1130
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Added server's key"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        57: .line 1131
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            iload 3 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        58: .line 1130
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        59: .line 1132
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[Krb5LoginModule] added Krb5Principal  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        60: .line 1134
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokevirtual javax.security.auth.kerberos.KerberosPrincipal.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        61: .line 1135
            ldc " to Subject"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        62: .line 1132
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        63: .line 1123
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        64: iload 3 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            arraylength
            if_icmplt 51
        end local 3 // int i
        end local 2 // java.util.Set princSet
        end local 1 // java.util.Set privCredSet
        65: .line 1141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.Krb5LoginModule.commitSucceeded:Z
        66: .line 1142
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 68
        67: .line 1143
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Commit Succeeded \n"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        68: .line 1144
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   69     0         this  Lcom/sun/security/auth/module/Krb5LoginModule;
            9   65     1  privCredSet  Ljava/util/Set<Ljava/lang/Object;>;
           10   65     2     princSet  Ljava/util/Set<Ljava/security/Principal;>;
           22   35     3            i  I
           24   33     4         temp  Ljava/lang/Integer;
           50   65     3            i  I
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean abort();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 1165
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
            ifne 2
         1: .line 1166
            iconst_0
            ireturn
         2: .line 1167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
            ifeq 6
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.commitSucceeded:Z
            ifne 6
         3: .line 1169
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
         4: .line 1170
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
         5: .line 1171
            goto 7
         6: .line 1174
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.logout:()Z
            pop
         7: .line 1176
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/sun/security/auth/module/Krb5LoginModule;
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean logout();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 1192
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 2
         1: .line 1193
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[Krb5LoginModule]: Entering logout"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 1197
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 5
         3: .line 1198
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
         4: .line 1199
            new javax.security.auth.login.LoginException
            dup
            ldc "Subject is Readonly"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 1202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         6: .line 1204
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrivateCredentials:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 1 /* it */
        start local 1 // java.util.Iterator it
         7: .line 1205
            goto 13
         8: .line 1206
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 1 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 2 /* o */
        start local 2 // java.lang.Object o
         9: .line 1207
            aload 2 /* o */
            instanceof javax.security.auth.kerberos.KerberosTicket
            ifne 12
        10: .line 1208
            aload 2 /* o */
            instanceof javax.security.auth.kerberos.KerberosKey
            ifne 12
        11: .line 1209
            aload 2 /* o */
            instanceof javax.security.auth.kerberos.KeyTab
            ifeq 13
        12: .line 1210
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* it */
            invokeinterface java.util.Iterator.remove:()V
        end local 2 // java.lang.Object o
        13: .line 1205
      StackMap locals:
      StackMap stack:
            aload 1 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        14: .line 1214
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
        15: .line 1216
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        16: .line 1217
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.commitSucceeded:Z
        17: .line 1218
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 19
        18: .line 1219
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[Krb5LoginModule]: logged out Subject"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        19: .line 1222
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.util.Iterator it
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lcom/sun/security/auth/module/Krb5LoginModule;
            7   20     1    it  Ljava/util/Iterator<Ljava/lang/Object;>;
            9   13     2     o  Ljava/lang/Object;
    Exceptions:
      throws javax.security.auth.login.LoginException

  private void cleanKerberosCred();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 1231
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            ifnull 2
         1: .line 1232
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            invokevirtual javax.security.auth.kerberos.KerberosTicket.destroy:()V
         2: .line 1233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            ifnull 13
         3: .line 1234
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         4: goto 7
         5: .line 1235
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            iload 1 /* i */
            aaload
            invokevirtual javax.security.auth.kerberos.KerberosKey.destroy:()V
         6: .line 1234
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 1 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            arraylength
            if_icmplt 5
        end local 1 // int i
         8: .line 1238
            goto 13
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule
      StackMap stack: javax.security.auth.DestroyFailedException
         9: pop
        10: .line 1239
            new javax.security.auth.login.LoginException
            dup
        11: .line 1240
            ldc "Destroy Failed on Kerberos Private Credentials"
        12: .line 1239
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 1242
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
        14: .line 1243
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
        15: .line 1244
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
        16: .line 1245
            return
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lcom/sun/security/auth/module/Krb5LoginModule;
            4    8     1     i  I
      Exception table:
        from    to  target  type
           0     8       9  Class javax.security.auth.DestroyFailedException
    Exceptions:
      throws javax.security.auth.login.LoginException

  private void cleanState();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.Krb5LoginModule this
         0: .line 1254
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
            ifeq 7
         1: .line 1255
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storePass:Z
            ifeq 10
         2: .line 1256
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 10
         3: .line 1257
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 10
         4: .line 1258
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 1259
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.password:[C
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 1261
            goto 10
         7: .line 1263
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
         8: .line 1264
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
         9: .line 1265
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
        10: .line 1267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
        11: .line 1268
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.password:[C
        12: .line 1269
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            ifnull 14
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.length:()I
            ifeq 14
        13: .line 1270
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            iconst_0
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.length:()I
            invokevirtual java.lang.StringBuffer.delete:(II)Ljava/lang/StringBuffer;
            pop
        14: .line 1271
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
        15: .line 1272
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.clearPass:Z
            ifeq 18
        16: .line 1273
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 1274
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 1276
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Lcom/sun/security/auth/module/Krb5LoginModule;
}
SourceFile: "Krb5LoginModule.java"