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 34
        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 25
        17: .line 643
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.renewTGT:Z
            ifeq 21
            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 21
        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 21
        20: .line 647
            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
        21: .line 650
      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 25
        22: .line 652
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
        23: .line 653
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 25
        24: .line 654
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Credentials are no longer valid"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        25: .line 659
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnull 28
        26: .line 661
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            ifnonnull 28
        27: .line 662
            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;
        28: .line 665
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 34
        29: .line 666
            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
        30: .line 667
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnonnull 34
        31: .line 668
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        32: .line 669
            ldc "null credentials from Ticket Cache"
        33: .line 668
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        34: .line 677
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnonnull 108
        35: .line 680
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
            ifnonnull 41
        36: .line 681
            aload 0 /* this */
            iload 1 /* getPasswdFromSharedState */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.promptForName:(Z)V
        37: .line 682
            aload 0 /* this */
            new sun.security.krb5.PrincipalName
            dup
        38: .line 683
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
        39: .line 684
            iconst_1
            invokespecial sun.security.krb5.PrincipalName.<init>:(Ljava/lang/String;I)V
        40: .line 682
            putfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
        41: .line 706
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.useKeyTab:Z
            ifeq 68
        42: .line 707
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.unboundServer:Z
            ifne 50
        43: .line 709
            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
        44: .line 708
            astore 2 /* kp */
        start local 2 // javax.security.auth.kerberos.KerberosPrincipal kp
        45: .line 710
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnonnull 47
        46: .line 711
            aload 2 /* kp */
            invokestatic javax.security.auth.kerberos.KeyTab.getInstance:(Ljavax/security/auth/kerberos/KerberosPrincipal;)Ljavax/security/auth/kerberos/KeyTab;
            goto 48
        47: .line 712
      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;
        48: .line 710
      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
        49: .line 713
            goto 54
        50: .line 714
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnonnull 52
        51: .line 715
            invokestatic javax.security.auth.kerberos.KeyTab.getUnboundInstance:()Ljavax/security/auth/kerberos/KeyTab;
            goto 53
        52: .line 716
      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;
        53: .line 714
      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;
        54: .line 718
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 68
        55: .line 719
            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 68
        56: .line 721
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
        57: .line 722
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 68
        58: .line 723
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        59: .line 724
            new java.lang.StringBuilder
            dup
            ldc "Key for the principal "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        60: .line 725
            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;
        61: .line 726
            ldc " not available in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        62: .line 727
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
            ifnonnull 64
        63: .line 728
            ldc "default key tab"
            goto 65
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule int
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
        64: aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.keyTabName:Ljava/lang/String;
        65: .line 727
      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;
        66: .line 724
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        67: .line 723
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        68: .line 736
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            ifnonnull 76
        69: .line 737
            aload 0 /* this */
            iload 1 /* getPasswdFromSharedState */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.promptForPass:(Z)V
        70: .line 738
            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
        71: .line 739
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 73
        72: .line 743
            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;
        73: .line 745
      StackMap locals: sun.security.krb5.KrbAsReqBuilder
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 79
        74: .line 746
            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;
        75: .line 750
            goto 79
        end local 2 // sun.security.krb5.KrbAsReqBuilder builder
        76: .line 751
      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
        77: .line 752
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 79
        78: .line 753
            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;
        79: .line 756
      StackMap locals: sun.security.krb5.KrbAsReqBuilder
      StackMap stack:
            aload 2 /* builder */
            invokevirtual sun.security.krb5.KrbAsReqBuilder.destroy:()V
        80: .line 758
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 96
        81: .line 759
            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
        82: .line 760
            new sun.security.util.HexDumpEncoder
            dup
            invokespecial sun.security.util.HexDumpEncoder.<init>:()V
            astore 3 /* hd */
        start local 3 // sun.security.util.HexDumpEncoder hd
        83: .line 761
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            ifnull 86
        84: .line 762
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Will use keytab"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        85: .line 763
            goto 96
      StackMap locals: sun.security.util.HexDumpEncoder
      StackMap stack:
        86: aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 96
        87: .line 764
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        88: goto 95
        89: .line 765
      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
        90: .line 766
            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;
        91: .line 767
            ldc " keyBytes (hex dump)="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        92: .line 768
            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;
        93: .line 765
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        94: .line 764
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        95: iload 4 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            arraylength
            if_icmplt 89
        end local 4 // int i
        end local 3 // sun.security.util.HexDumpEncoder hd
        96: .line 774
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 108
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.cred:Lsun/security/krb5/Credentials;
            ifnonnull 108
        97: .line 775
            new javax.security.auth.login.LoginException
            dup
        98: .line 776
            ldc "TGT Can not be obtained from the KDC "
        99: .line 775
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // sun.security.krb5.KrbAsReqBuilder builder
       100: .line 780
      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
       101: .line 781
            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
       102: .line 782
            aload 3 /* le */
            aload 2 /* e */
            invokevirtual javax.security.auth.login.LoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
       103: .line 783
            aload 3 /* le */
            athrow
        end local 3 // javax.security.auth.login.LoginException le
        end local 2 // sun.security.krb5.KrbException e
       104: .line 784
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* ioe */
        start local 2 // java.io.IOException ioe
       105: .line 785
            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
       106: .line 786
            aload 3 /* ie */
            aload 2 /* ioe */
            invokevirtual javax.security.auth.login.LoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
       107: .line 787
            aload 3 /* ie */
            athrow
        end local 3 // javax.security.auth.login.LoginException ie
        end local 2 // java.io.IOException ioe
       108: .line 789
      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  109     0                      this  Lcom/sun/security/auth/module/Krb5LoginModule;
            0  109     1  getPasswdFromSharedState  Z
            7   10     2                         e  Lsun/security/krb5/KrbException;
            8   10     3                        le  Ljavax/security/auth/login/LoginException;
           19   21     2                   newCred  Lsun/security/krb5/Credentials;
           45   49     2                        kp  Ljavax/security/auth/kerberos/KerberosPrincipal;
           71   76     2                   builder  Lsun/security/krb5/KrbAsReqBuilder;
           77  100     2                   builder  Lsun/security/krb5/KrbAsReqBuilder;
           83   96     3                        hd  Lsun/security/util/HexDumpEncoder;
           88   96     4                         i  I
          101  104     2                         e  Lsun/security/krb5/KrbException;
          102  104     3                        le  Ljavax/security/auth/login/LoginException;
          105  108     2                       ioe  Ljava/io/IOException;
          106  108     3                        ie  Ljavax/security/auth/login/LoginException;
      Exception table:
        from    to  target  type
           1     5       6  Class sun.security.krb5.KrbException
          10   100     100  Class sun.security.krb5.KrbException
          10   100     104  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 793
            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 794
            iload 1 /* getPasswdFromSharedState */
            ifeq 21
         2: .line 796
            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 797
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 7
         4: .line 798
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         5: .line 799
            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 798
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 801
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
            ifnonnull 14
         8: .line 802
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         9: .line 803
            ldc "username from shared state is null\n"
        10: .line 802
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 804
            new javax.security.auth.login.LoginException
            dup
        12: .line 805
            ldc "Username can not be obtained from sharedstate "
        13: .line 804
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 807
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 18
        15: .line 808
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        16: .line 809
            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 808
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 811
      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 812
            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 813
            return
        21: .line 817
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
            ifeq 25
        22: .line 818
            new javax.security.auth.login.LoginException
            dup
        23: .line 819
            ldc "Unable to obtain Principal Name for authentication "
        24: .line 818
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 821
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            ifnonnull 27
        26: .line 822
            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 827
      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 829
            iconst_1
            anewarray javax.security.auth.callback.Callback
            astore 3 /* callbacks */
        start local 3 // javax.security.auth.callback.Callback[] callbacks
        29: .line 830
            new java.text.MessageFormat
            dup
        30: .line 832
            ldc "Kerberos.username.defUsername."
        31: .line 831
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
        32: .line 830
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* form */
        start local 4 // java.text.MessageFormat form
        33: .line 833
            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 834
            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 835
            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 836
            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 837
            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 838
      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 839
      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 841
            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 842
            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 843
      StackMap locals:
      StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
            astore 2 /* uce */
        start local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        44: .line 844
            new javax.security.auth.login.LoginException
            dup
        45: .line 845
            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 846
            ldc " not available to garner "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        47: .line 847
            ldc " authentication information "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        48: .line 848
            ldc " from the user"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        49: .line 845
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        50: .line 844
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        51: .line 851
      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 856
            iload 1 /* getPasswdFromSharedState */
            ifeq 15
         1: .line 858
            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 859
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.password:[C
            ifnonnull 10
         3: .line 860
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 7
         4: .line 861
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         5: .line 862
            ldc "Password from shared state is null"
         6: .line 861
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 864
      StackMap locals:
      StackMap stack:
            new javax.security.auth.login.LoginException
            dup
         8: .line 865
            ldc "Password can not be obtained from sharedstate "
         9: .line 864
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 867
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 14
        11: .line 868
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        12: .line 869
            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 868
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        14: .line 871
      StackMap locals:
      StackMap stack:
            return
        15: .line 873
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.doNotPrompt:Z
            ifeq 19
        16: .line 874
            new javax.security.auth.login.LoginException
            dup
        17: .line 875
            ldc "Unable to obtain password from user\n"
        18: .line 874
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 877
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            ifnonnull 21
        20: .line 878
            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 883
      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 884
            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 885
            new java.text.MessageFormat
            dup
        24: .line 887
            ldc "Kerberos.password.for.username."
        25: .line 886
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
        26: .line 885
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* form */
        start local 4 // java.text.MessageFormat form
        27: .line 888
            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 889
            aload 2 /* callbacks */
            iconst_0
            new javax.security.auth.callback.PasswordCallback
            dup
        29: .line 890
            aload 4 /* form */
            aload 5 /* source */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
        30: .line 891
            iconst_0
            invokespecial javax.security.auth.callback.PasswordCallback.<init>:(Ljava/lang/String;Z)V
        31: .line 889
            aastore
        32: .line 892
            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 894
            aload 2 /* callbacks */
            iconst_0
            aaload
        34: .line 893
            checkcast javax.security.auth.callback.PasswordCallback
        35: .line 894
            invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
        36: .line 893
            astore 6 /* tmpPassword */
        start local 6 // char[] tmpPassword
        37: .line 895
            aload 6 /* tmpPassword */
            ifnonnull 39
        38: .line 896
            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 898
      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 899
            aload 6 /* tmpPassword */
            iconst_0
        41: .line 900
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.password:[C
            iconst_0
            aload 6 /* tmpPassword */
            arraylength
        42: .line 899
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        43: .line 901
            aload 2 /* callbacks */
            iconst_0
            aaload
            checkcast javax.security.auth.callback.PasswordCallback
            invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
        44: .line 905
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        45: goto 48
        46: .line 906
      StackMap locals: int
      StackMap stack:
            aload 6 /* tmpPassword */
            iload 7 /* i */
            bipush 32
            castore
        47: .line 905
            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 907
            aconst_null
            astore 6 /* tmpPassword */
        50: .line 908
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 64
        51: .line 909
            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 911
            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 909
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        54: .line 912
            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 914
            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 915
            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 916
      StackMap locals:
      StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
            astore 2 /* uce */
        start local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        59: .line 917
            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 918
            ldc " not available to garner "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        61: .line 919
            ldc " authentication information "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        62: .line 920
            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 917
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // javax.security.auth.callback.UnsupportedCallbackException uce
        64: .line 923
      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 926
            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 927
            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 928
            new javax.security.auth.login.LoginException
            dup
         3: .line 929
            ldc "Configuration Error - either doNotPrompt should be  false or at least one of useTicketCache,  useKeyTab, tryFirstPass and useFirstPass should be true"
         4: .line 928
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 934
      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 935
            new javax.security.auth.login.LoginException
            dup
         7: .line 936
            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 939
            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 936
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 935
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 940
      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 941
            new javax.security.auth.login.LoginException
            dup
        17: .line 942
            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 943
            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 942
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 941
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 944
      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 945
            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 946
            new javax.security.auth.login.LoginException
            dup
        24: .line 947
            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 946
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 950
      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 951
            new javax.security.auth.login.LoginException
            dup
        28: .line 952
            ldc "Configuration Error - either useTicketCache should be  true or renewTGT should be false"
        29: .line 951
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 955
      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 956
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 35
        32: .line 957
            new javax.security.auth.login.LoginException
            dup
        33: .line 958
            ldc "Configuration Error - principal cannot be * when isInitiator is true"
        34: .line 957
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        35: .line 962
      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 966
            aload 0 /* creds */
            invokevirtual sun.security.krb5.Credentials.getEndTime:()Ljava/util/Date;
            astore 1 /* endTime */
        start local 1 // java.util.Date endTime
         1: .line 967
            aload 1 /* endTime */
            ifnull 4
         2: .line 968
            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 970
      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 975
            aload 0 /* creds */
            invokevirtual sun.security.krb5.Credentials.getEndTime:()Ljava/util/Date;
            astore 1 /* endTime */
        start local 1 // java.util.Date endTime
         1: .line 976
            aload 1 /* endTime */
            ifnull 9
         2: .line 977
            aload 0 /* creds */
            invokevirtual sun.security.krb5.Credentials.getAuthTime:()Ljava/util/Date;
            astore 2 /* authTime */
        start local 2 // java.util.Date authTime
         3: .line 978
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 3 /* now */
        start local 3 // long now
         4: .line 979
            aload 2 /* authTime */
            ifnull 7
         5: .line 981
            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 984
      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 987
      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 994
            aload 1 /* creds */
            invokevirtual sun.security.krb5.Credentials.isRenewable:()Z
            ifne 2
         1: .line 995
            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 997
      StackMap locals:
      StackMap stack:
            aload 1 /* creds */
            invokevirtual sun.security.krb5.Credentials.getRenewTill:()Ljava/util/Date;
            ifnonnull 5
         3: .line 999
            aload 1 /* creds */
         4: areturn
         5: .line 1001
      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 1002
            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 1004
      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 1005
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 17
         9: .line 1006
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Renewed Kerberos Ticket"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 1007
            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 1008
            aconst_null
            astore 2 /* lcreds */
        start local 2 // sun.security.krb5.Credentials lcreds
        13: .line 1009
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 17
        14: .line 1010
            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 1011
            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 1010
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 3 // java.lang.Exception e
        17: .line 1013
      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 1045
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
            ifne 2
         1: .line 1046
            iconst_0
            ireturn
         2: .line 1049
      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 1050
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
         4: .line 1051
            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 1054
      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 1055
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
         7: .line 1056
            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 1066
      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 1067
            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 1068
            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 1071
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.isInitiator:Z
            ifeq 13
        12: .line 1072
            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 1075
      StackMap locals: java.util.Set java.util.Set
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 32
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            ifnull 32
        14: .line 1076
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            arraylength
            ifne 17
        15: .line 1077
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        16: .line 1078
            new javax.security.auth.login.LoginException
            dup
            ldc "Null Server Key "
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 1081
      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;
        18: .line 1082
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        19: goto 31
        20: .line 1083
      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
        21: .line 1084
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            iload 3 /* i */
        22: new javax.security.auth.kerberos.KerberosKey
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
        23: .line 1085
            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
        24: .line 1086
            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
        25: .line 1087
            aload 4 /* temp */
            ifnonnull 27
        26: .line 1088
            iconst_0
            goto 28
      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 22 new 22 javax.security.auth.kerberos.KerberosPrincipal byte[] int
        27: 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 22 new 22 javax.security.auth.kerberos.KerberosPrincipal byte[] int int
        28: invokespecial javax.security.auth.kerberos.KerberosKey.<init>:(Ljavax/security/auth/kerberos/KerberosPrincipal;[BII)V
        29: .line 1084
            aastore
        end local 4 // java.lang.Integer temp
        30: .line 1082
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        31: iload 3 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            arraylength
            if_icmplt 20
        end local 3 // int i
        32: .line 1096
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.unboundServer:Z
            ifne 35
        33: .line 1097
            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 35
        34: .line 1098
            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
        35: .line 1102
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            ifnull 38
        36: .line 1103
            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 38
        37: .line 1104
            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
        38: .line 1107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storeKey:Z
            ifeq 62
        39: .line 1108
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            ifnonnull 46
        40: .line 1109
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
            ifnull 44
        41: .line 1110
            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 62
        42: .line 1111
            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
        43: .line 1113
            goto 62
        44: .line 1114
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        45: .line 1115
            new javax.security.auth.login.LoginException
            dup
            ldc "No key to store"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        46: .line 1118
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        47: goto 61
        48: .line 1119
      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 50
        49: .line 1120
            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
        50: .line 1122
      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
        51: .line 1123
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
            iload 3 /* i */
            aconst_null
            aastore
        52: .line 1124
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 60
        53: .line 1125
            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
        54: .line 1126
            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;
        55: .line 1125
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        56: .line 1127
            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
        57: .line 1129
            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;
        58: .line 1130
            ldc " to Subject"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        59: .line 1127
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        60: .line 1118
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        61: iload 3 /* i */
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            arraylength
            if_icmplt 48
        end local 3 // int i
        end local 2 // java.util.Set princSet
        end local 1 // java.util.Set privCredSet
        62: .line 1136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.Krb5LoginModule.commitSucceeded:Z
        63: .line 1137
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 65
        64: .line 1138
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Commit Succeeded \n"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        65: .line 1139
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.Krb5LoginModule this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   66     0         this  Lcom/sun/security/auth/module/Krb5LoginModule;
            9   62     1  privCredSet  Ljava/util/Set<Ljava/lang/Object;>;
           10   62     2     princSet  Ljava/util/Set<Ljava/security/Principal;>;
           19   32     3            i  I
           21   30     4         temp  Ljava/lang/Integer;
           47   62     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 1160
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
            ifne 2
         1: .line 1161
            iconst_0
            ireturn
         2: .line 1162
      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 1164
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
         4: .line 1165
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
         5: .line 1166
            goto 7
         6: .line 1169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.logout:()Z
            pop
         7: .line 1171
      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 1187
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 2
         1: .line 1188
            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 1192
      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 1193
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
         4: .line 1194
            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 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.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 1199
            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 1200
            goto 13
         8: .line 1201
      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 1202
            aload 2 /* o */
            instanceof javax.security.auth.kerberos.KerberosTicket
            ifne 12
        10: .line 1203
            aload 2 /* o */
            instanceof javax.security.auth.kerberos.KerberosKey
            ifne 12
        11: .line 1204
            aload 2 /* o */
            instanceof javax.security.auth.kerberos.KeyTab
            ifeq 13
        12: .line 1205
      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 1200
      StackMap locals:
      StackMap stack:
            aload 1 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        14: .line 1209
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.Krb5LoginModule.cleanKerberosCred:()V
        15: .line 1211
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
        16: .line 1212
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.Krb5LoginModule.commitSucceeded:Z
        17: .line 1213
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.debug:Z
            ifeq 19
        18: .line 1214
            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 1217
      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 1226
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
            ifnull 2
         1: .line 1227
            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 1228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
            ifnull 13
         3: .line 1229
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         4: goto 7
         5: .line 1230
      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 1229
            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 1233
            goto 13
      StackMap locals: com.sun.security.auth.module.Krb5LoginModule
      StackMap stack: javax.security.auth.DestroyFailedException
         9: pop
        10: .line 1234
            new javax.security.auth.login.LoginException
            dup
        11: .line 1235
            ldc "Destroy Failed on Kerberos Private Credentials"
        12: .line 1234
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 1237
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbTicket:Ljavax/security/auth/kerberos/KerberosTicket;
        14: .line 1238
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbKeys:[Ljavax/security/auth/kerberos/KerberosKey;
        15: .line 1239
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.kerbClientPrinc:Ljavax/security/auth/kerberos/KerberosPrincipal;
        16: .line 1240
            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 1249
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.succeeded:Z
            ifeq 7
         1: .line 1250
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.storePass:Z
            ifeq 10
         2: .line 1251
            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 1252
            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 1253
            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 1254
            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 1256
            goto 10
         7: .line 1258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.encKeys:[Lsun/security/krb5/EncryptionKey;
         8: .line 1259
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.ktab:Ljavax/security/auth/kerberos/KeyTab;
         9: .line 1260
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.principal:Lsun/security/krb5/PrincipalName;
        10: .line 1262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.username:Ljava/lang/String;
        11: .line 1263
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.password:[C
        12: .line 1264
            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 1265
            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 1266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.Krb5LoginModule.krb5PrincName:Ljava/lang/StringBuffer;
        15: .line 1267
            aload 0 /* this */
            getfield com.sun.security.auth.module.Krb5LoginModule.clearPass:Z
            ifeq 18
        16: .line 1268
            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 1269
            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 1271
      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"