class sun.security.krb5.KrbSafe extends sun.security.krb5.KrbAppMessage
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.security.krb5.KrbSafe
  super_class: sun.security.krb5.KrbAppMessage
{
  private byte[] obuf;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

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

  public void <init>(byte[], sun.security.krb5.Credentials, sun.security.krb5.EncryptionKey, sun.security.krb5.internal.KerberosTime, sun.security.krb5.internal.SeqNumber, sun.security.krb5.internal.HostAddress, sun.security.krb5.internal.HostAddress);
    descriptor: ([BLsun/security/krb5/Credentials;Lsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/SeqNumber;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=9, args_size=8
        start local 0 // sun.security.krb5.KrbSafe this
        start local 1 // byte[] userData
        start local 2 // sun.security.krb5.Credentials creds
        start local 3 // sun.security.krb5.EncryptionKey subKey
        start local 4 // sun.security.krb5.internal.KerberosTime timestamp
        start local 5 // sun.security.krb5.internal.SeqNumber seqNumber
        start local 6 // sun.security.krb5.internal.HostAddress saddr
        start local 7 // sun.security.krb5.internal.HostAddress raddr
         0: .line 43
            aload 0 /* this */
            invokespecial sun.security.krb5.KrbAppMessage.<init>:()V
         1: .line 51
            aconst_null
            astore 8 /* reqKey */
        start local 8 // sun.security.krb5.EncryptionKey reqKey
         2: .line 52
            aload 3 /* subKey */
            ifnull 4
         3: .line 53
            aload 3 /* subKey */
            astore 8 /* reqKey */
            goto 5
         4: .line 55
      StackMap locals: sun.security.krb5.KrbSafe byte[] sun.security.krb5.Credentials sun.security.krb5.EncryptionKey sun.security.krb5.internal.KerberosTime sun.security.krb5.internal.SeqNumber sun.security.krb5.internal.HostAddress sun.security.krb5.internal.HostAddress sun.security.krb5.EncryptionKey
      StackMap stack:
            aload 2 /* creds */
            getfield sun.security.krb5.Credentials.key:Lsun/security/krb5/EncryptionKey;
            astore 8 /* reqKey */
         5: .line 57
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* userData */
         6: .line 58
            aload 8 /* reqKey */
         7: .line 59
            aload 4 /* timestamp */
         8: .line 60
            aload 5 /* seqNumber */
         9: .line 61
            aload 6 /* saddr */
        10: .line 62
            aload 7 /* raddr */
        11: .line 57
            invokevirtual sun.security.krb5.KrbSafe.mk_safe:([BLsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/SeqNumber;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;)[B
            putfield sun.security.krb5.KrbSafe.obuf:[B
        12: .line 64
            return
        end local 8 // sun.security.krb5.EncryptionKey reqKey
        end local 7 // sun.security.krb5.internal.HostAddress raddr
        end local 6 // sun.security.krb5.internal.HostAddress saddr
        end local 5 // sun.security.krb5.internal.SeqNumber seqNumber
        end local 4 // sun.security.krb5.internal.KerberosTime timestamp
        end local 3 // sun.security.krb5.EncryptionKey subKey
        end local 2 // sun.security.krb5.Credentials creds
        end local 1 // byte[] userData
        end local 0 // sun.security.krb5.KrbSafe this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Lsun/security/krb5/KrbSafe;
            0   13     1   userData  [B
            0   13     2      creds  Lsun/security/krb5/Credentials;
            0   13     3     subKey  Lsun/security/krb5/EncryptionKey;
            0   13     4  timestamp  Lsun/security/krb5/internal/KerberosTime;
            0   13     5  seqNumber  Lsun/security/krb5/internal/SeqNumber;
            0   13     6      saddr  Lsun/security/krb5/internal/HostAddress;
            0   13     7      raddr  Lsun/security/krb5/internal/HostAddress;
            2   13     8     reqKey  Lsun/security/krb5/EncryptionKey;
    Exceptions:
      throws sun.security.krb5.KrbException, java.io.IOException
    MethodParameters:
           Name  Flags
      userData   
      creds      
      subKey     
      timestamp  
      seqNumber  
      saddr      
      raddr      

  public void <init>(byte[], sun.security.krb5.Credentials, sun.security.krb5.EncryptionKey, sun.security.krb5.internal.SeqNumber, sun.security.krb5.internal.HostAddress, sun.security.krb5.internal.HostAddress, boolean, boolean);
    descriptor: ([BLsun/security/krb5/Credentials;Lsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/SeqNumber;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=11, args_size=9
        start local 0 // sun.security.krb5.KrbSafe this
        start local 1 // byte[] msg
        start local 2 // sun.security.krb5.Credentials creds
        start local 3 // sun.security.krb5.EncryptionKey subKey
        start local 4 // sun.security.krb5.internal.SeqNumber seqNumber
        start local 5 // sun.security.krb5.internal.HostAddress saddr
        start local 6 // sun.security.krb5.internal.HostAddress raddr
        start local 7 // boolean timestampRequired
        start local 8 // boolean seqNumberRequired
         0: .line 66
            aload 0 /* this */
            invokespecial sun.security.krb5.KrbAppMessage.<init>:()V
         1: .line 76
            new sun.security.krb5.internal.KRBSafe
            dup
            aload 1 /* msg */
            invokespecial sun.security.krb5.internal.KRBSafe.<init>:([B)V
            astore 9 /* krb_safe */
        start local 9 // sun.security.krb5.internal.KRBSafe krb_safe
         2: .line 78
            aconst_null
            astore 10 /* reqKey */
        start local 10 // sun.security.krb5.EncryptionKey reqKey
         3: .line 79
            aload 3 /* subKey */
            ifnull 5
         4: .line 80
            aload 3 /* subKey */
            astore 10 /* reqKey */
            goto 6
         5: .line 82
      StackMap locals: sun.security.krb5.KrbSafe byte[] sun.security.krb5.Credentials sun.security.krb5.EncryptionKey sun.security.krb5.internal.SeqNumber sun.security.krb5.internal.HostAddress sun.security.krb5.internal.HostAddress int int sun.security.krb5.internal.KRBSafe sun.security.krb5.EncryptionKey
      StackMap stack:
            aload 2 /* creds */
            getfield sun.security.krb5.Credentials.key:Lsun/security/krb5/EncryptionKey;
            astore 10 /* reqKey */
         6: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
         7: .line 85
            aload 9 /* krb_safe */
         8: .line 86
            aload 10 /* reqKey */
         9: .line 87
            aload 4 /* seqNumber */
        10: .line 88
            aload 5 /* saddr */
        11: .line 89
            aload 6 /* raddr */
        12: .line 90
            iload 7 /* timestampRequired */
        13: .line 91
            iload 8 /* seqNumberRequired */
        14: .line 92
            aload 2 /* creds */
            getfield sun.security.krb5.Credentials.client:Lsun/security/krb5/PrincipalName;
        15: .line 84
            invokevirtual sun.security.krb5.KrbSafe.rd_safe:(Lsun/security/krb5/internal/KRBSafe;Lsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/SeqNumber;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;ZZLsun/security/krb5/PrincipalName;)[B
            putfield sun.security.krb5.KrbSafe.userData:[B
        16: .line 94
            return
        end local 10 // sun.security.krb5.EncryptionKey reqKey
        end local 9 // sun.security.krb5.internal.KRBSafe krb_safe
        end local 8 // boolean seqNumberRequired
        end local 7 // boolean timestampRequired
        end local 6 // sun.security.krb5.internal.HostAddress raddr
        end local 5 // sun.security.krb5.internal.HostAddress saddr
        end local 4 // sun.security.krb5.internal.SeqNumber seqNumber
        end local 3 // sun.security.krb5.EncryptionKey subKey
        end local 2 // sun.security.krb5.Credentials creds
        end local 1 // byte[] msg
        end local 0 // sun.security.krb5.KrbSafe this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   17     0               this  Lsun/security/krb5/KrbSafe;
            0   17     1                msg  [B
            0   17     2              creds  Lsun/security/krb5/Credentials;
            0   17     3             subKey  Lsun/security/krb5/EncryptionKey;
            0   17     4          seqNumber  Lsun/security/krb5/internal/SeqNumber;
            0   17     5              saddr  Lsun/security/krb5/internal/HostAddress;
            0   17     6              raddr  Lsun/security/krb5/internal/HostAddress;
            0   17     7  timestampRequired  Z
            0   17     8  seqNumberRequired  Z
            2   17     9           krb_safe  Lsun/security/krb5/internal/KRBSafe;
            3   17    10             reqKey  Lsun/security/krb5/EncryptionKey;
    Exceptions:
      throws sun.security.krb5.KrbException, java.io.IOException
    MethodParameters:
                   Name  Flags
      msg                
      creds              
      subKey             
      seqNumber          
      saddr              
      raddr              
      timestampRequired  
      seqNumberRequired  

  public byte[] getMessage();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.krb5.KrbSafe this
         0: .line 97
            aload 0 /* this */
            getfield sun.security.krb5.KrbSafe.obuf:[B
            areturn
        end local 0 // sun.security.krb5.KrbSafe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/KrbSafe;

  public byte[] getData();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.krb5.KrbSafe this
         0: .line 101
            aload 0 /* this */
            getfield sun.security.krb5.KrbSafe.userData:[B
            areturn
        end local 0 // sun.security.krb5.KrbSafe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/krb5/KrbSafe;

  private byte[] mk_safe(byte[], sun.security.krb5.EncryptionKey, sun.security.krb5.internal.KerberosTime, sun.security.krb5.internal.SeqNumber, sun.security.krb5.internal.HostAddress, sun.security.krb5.internal.HostAddress);
    descriptor: ([BLsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/KerberosTime;Lsun/security/krb5/internal/SeqNumber;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=13, args_size=7
        start local 0 // sun.security.krb5.KrbSafe this
        start local 1 // byte[] userData
        start local 2 // sun.security.krb5.EncryptionKey key
        start local 3 // sun.security.krb5.internal.KerberosTime timestamp
        start local 4 // sun.security.krb5.internal.SeqNumber seqNumber
        start local 5 // sun.security.krb5.internal.HostAddress sAddress
        start local 6 // sun.security.krb5.internal.HostAddress rAddress
         0: .line 113
            aconst_null
            astore 7 /* usec */
        start local 7 // java.lang.Integer usec
         1: .line 114
            aconst_null
            astore 8 /* seqno */
        start local 8 // java.lang.Integer seqno
         2: .line 116
            aload 3 /* timestamp */
            ifnull 4
         3: .line 117
            new java.lang.Integer
            dup
            aload 3 /* timestamp */
            invokevirtual sun.security.krb5.internal.KerberosTime.getMicroSeconds:()I
            invokespecial java.lang.Integer.<init>:(I)V
            astore 7 /* usec */
         4: .line 119
      StackMap locals: java.lang.Integer java.lang.Integer
      StackMap stack:
            aload 4 /* seqNumber */
            ifnull 7
         5: .line 120
            new java.lang.Integer
            dup
            aload 4 /* seqNumber */
            invokeinterface sun.security.krb5.internal.SeqNumber.current:()I
            invokespecial java.lang.Integer.<init>:(I)V
            astore 8 /* seqno */
         6: .line 121
            aload 4 /* seqNumber */
            invokeinterface sun.security.krb5.internal.SeqNumber.step:()I
            pop
         7: .line 125
      StackMap locals:
      StackMap stack:
            new sun.security.krb5.internal.KRBSafeBody
            dup
            aload 1 /* userData */
         8: .line 126
            aload 3 /* timestamp */
         9: .line 127
            aload 7 /* usec */
        10: .line 128
            aload 8 /* seqno */
        11: .line 129
            aload 5 /* sAddress */
        12: .line 130
            aload 6 /* rAddress */
        13: .line 125
            invokespecial sun.security.krb5.internal.KRBSafeBody.<init>:([BLsun/security/krb5/internal/KerberosTime;Ljava/lang/Integer;Ljava/lang/Integer;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;)V
        14: .line 124
            astore 9 /* krb_safeBody */
        start local 9 // sun.security.krb5.internal.KRBSafeBody krb_safeBody
        15: .line 133
            aload 9 /* krb_safeBody */
            invokevirtual sun.security.krb5.internal.KRBSafeBody.asn1Encode:()[B
            astore 10 /* temp */
        start local 10 // byte[] temp
        16: .line 134
            new sun.security.krb5.Checksum
            dup
        17: .line 135
            getstatic sun.security.krb5.Checksum.SAFECKSUMTYPE_DEFAULT:I
        18: .line 136
            aload 10 /* temp */
        19: .line 137
            aload 2 /* key */
        20: .line 138
            bipush 15
        21: .line 134
            invokespecial sun.security.krb5.Checksum.<init>:(I[BLsun/security/krb5/EncryptionKey;I)V
            astore 11 /* cksum */
        start local 11 // sun.security.krb5.Checksum cksum
        22: .line 141
            new sun.security.krb5.internal.KRBSafe
            dup
            aload 9 /* krb_safeBody */
            aload 11 /* cksum */
            invokespecial sun.security.krb5.internal.KRBSafe.<init>:(Lsun/security/krb5/internal/KRBSafeBody;Lsun/security/krb5/Checksum;)V
            astore 12 /* krb_safe */
        start local 12 // sun.security.krb5.internal.KRBSafe krb_safe
        23: .line 143
            aload 12 /* krb_safe */
            invokevirtual sun.security.krb5.internal.KRBSafe.asn1Encode:()[B
            astore 10 /* temp */
        24: .line 145
            aload 12 /* krb_safe */
            invokevirtual sun.security.krb5.internal.KRBSafe.asn1Encode:()[B
            areturn
        end local 12 // sun.security.krb5.internal.KRBSafe krb_safe
        end local 11 // sun.security.krb5.Checksum cksum
        end local 10 // byte[] temp
        end local 9 // sun.security.krb5.internal.KRBSafeBody krb_safeBody
        end local 8 // java.lang.Integer seqno
        end local 7 // java.lang.Integer usec
        end local 6 // sun.security.krb5.internal.HostAddress rAddress
        end local 5 // sun.security.krb5.internal.HostAddress sAddress
        end local 4 // sun.security.krb5.internal.SeqNumber seqNumber
        end local 3 // sun.security.krb5.internal.KerberosTime timestamp
        end local 2 // sun.security.krb5.EncryptionKey key
        end local 1 // byte[] userData
        end local 0 // sun.security.krb5.KrbSafe this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   25     0          this  Lsun/security/krb5/KrbSafe;
            0   25     1      userData  [B
            0   25     2           key  Lsun/security/krb5/EncryptionKey;
            0   25     3     timestamp  Lsun/security/krb5/internal/KerberosTime;
            0   25     4     seqNumber  Lsun/security/krb5/internal/SeqNumber;
            0   25     5      sAddress  Lsun/security/krb5/internal/HostAddress;
            0   25     6      rAddress  Lsun/security/krb5/internal/HostAddress;
            1   25     7          usec  Ljava/lang/Integer;
            2   25     8         seqno  Ljava/lang/Integer;
           15   25     9  krb_safeBody  Lsun/security/krb5/internal/KRBSafeBody;
           16   25    10          temp  [B
           22   25    11         cksum  Lsun/security/krb5/Checksum;
           23   25    12      krb_safe  Lsun/security/krb5/internal/KRBSafe;
    Exceptions:
      throws sun.security.krb5.Asn1Exception, java.io.IOException, sun.security.krb5.internal.KdcErrException, sun.security.krb5.internal.KrbApErrException, sun.security.krb5.KrbCryptoException
    MethodParameters:
           Name  Flags
      userData   
      key        
      timestamp  
      seqNumber  
      sAddress   
      rAddress   

  private byte[] rd_safe(sun.security.krb5.internal.KRBSafe, sun.security.krb5.EncryptionKey, sun.security.krb5.internal.SeqNumber, sun.security.krb5.internal.HostAddress, sun.security.krb5.internal.HostAddress, boolean, boolean, sun.security.krb5.PrincipalName);
    descriptor: (Lsun/security/krb5/internal/KRBSafe;Lsun/security/krb5/EncryptionKey;Lsun/security/krb5/internal/SeqNumber;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;ZZLsun/security/krb5/PrincipalName;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=12, locals=10, args_size=9
        start local 0 // sun.security.krb5.KrbSafe this
        start local 1 // sun.security.krb5.internal.KRBSafe krb_safe
        start local 2 // sun.security.krb5.EncryptionKey key
        start local 3 // sun.security.krb5.internal.SeqNumber seqNumber
        start local 4 // sun.security.krb5.internal.HostAddress sAddress
        start local 5 // sun.security.krb5.internal.HostAddress rAddress
        start local 6 // boolean timestampRequired
        start local 7 // boolean seqNumberRequired
        start local 8 // sun.security.krb5.PrincipalName cname
         0: .line 159
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.safeBody:Lsun/security/krb5/internal/KRBSafeBody;
            invokevirtual sun.security.krb5.internal.KRBSafeBody.asn1Encode:()[B
            astore 9 /* temp */
        start local 9 // byte[] temp
         1: .line 161
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.cksum:Lsun/security/krb5/Checksum;
            aload 9 /* temp */
            aload 2 /* key */
         2: .line 162
            bipush 15
         3: .line 161
            invokevirtual sun.security.krb5.Checksum.verifyKeyedChecksum:([BLsun/security/krb5/EncryptionKey;I)Z
         4: .line 162
            ifne 8
         5: .line 163
            new sun.security.krb5.internal.KrbApErrException
            dup
         6: .line 164
            bipush 41
         7: .line 163
            invokespecial sun.security.krb5.internal.KrbApErrException.<init>:(I)V
            athrow
         8: .line 167
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.safeBody:Lsun/security/krb5/internal/KRBSafeBody;
            getfield sun.security.krb5.internal.KRBSafeBody.timestamp:Lsun/security/krb5/internal/KerberosTime;
         9: .line 168
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.safeBody:Lsun/security/krb5/internal/KRBSafeBody;
            getfield sun.security.krb5.internal.KRBSafeBody.usec:Ljava/lang/Integer;
        10: .line 169
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.safeBody:Lsun/security/krb5/internal/KRBSafeBody;
            getfield sun.security.krb5.internal.KRBSafeBody.seqNumber:Ljava/lang/Integer;
        11: .line 170
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.safeBody:Lsun/security/krb5/internal/KRBSafeBody;
            getfield sun.security.krb5.internal.KRBSafeBody.sAddress:Lsun/security/krb5/internal/HostAddress;
        12: .line 171
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.safeBody:Lsun/security/krb5/internal/KRBSafeBody;
            getfield sun.security.krb5.internal.KRBSafeBody.rAddress:Lsun/security/krb5/internal/HostAddress;
        13: .line 172
            aload 3 /* seqNumber */
        14: .line 173
            aload 4 /* sAddress */
        15: .line 174
            aload 5 /* rAddress */
        16: .line 175
            iload 6 /* timestampRequired */
        17: .line 176
            iload 7 /* seqNumberRequired */
        18: .line 177
            aload 8 /* cname */
        19: .line 167
            invokevirtual sun.security.krb5.KrbSafe.check:(Lsun/security/krb5/internal/KerberosTime;Ljava/lang/Integer;Ljava/lang/Integer;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/SeqNumber;Lsun/security/krb5/internal/HostAddress;Lsun/security/krb5/internal/HostAddress;ZZLsun/security/krb5/PrincipalName;)V
        20: .line 180
            aload 1 /* krb_safe */
            getfield sun.security.krb5.internal.KRBSafe.safeBody:Lsun/security/krb5/internal/KRBSafeBody;
            getfield sun.security.krb5.internal.KRBSafeBody.userData:[B
            areturn
        end local 9 // byte[] temp
        end local 8 // sun.security.krb5.PrincipalName cname
        end local 7 // boolean seqNumberRequired
        end local 6 // boolean timestampRequired
        end local 5 // sun.security.krb5.internal.HostAddress rAddress
        end local 4 // sun.security.krb5.internal.HostAddress sAddress
        end local 3 // sun.security.krb5.internal.SeqNumber seqNumber
        end local 2 // sun.security.krb5.EncryptionKey key
        end local 1 // sun.security.krb5.internal.KRBSafe krb_safe
        end local 0 // sun.security.krb5.KrbSafe this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   21     0               this  Lsun/security/krb5/KrbSafe;
            0   21     1           krb_safe  Lsun/security/krb5/internal/KRBSafe;
            0   21     2                key  Lsun/security/krb5/EncryptionKey;
            0   21     3          seqNumber  Lsun/security/krb5/internal/SeqNumber;
            0   21     4           sAddress  Lsun/security/krb5/internal/HostAddress;
            0   21     5           rAddress  Lsun/security/krb5/internal/HostAddress;
            0   21     6  timestampRequired  Z
            0   21     7  seqNumberRequired  Z
            0   21     8              cname  Lsun/security/krb5/PrincipalName;
            1   21     9               temp  [B
    Exceptions:
      throws sun.security.krb5.Asn1Exception, sun.security.krb5.internal.KdcErrException, sun.security.krb5.internal.KrbApErrException, java.io.IOException, sun.security.krb5.KrbCryptoException
    MethodParameters:
                   Name  Flags
      krb_safe           
      key                
      seqNumber          
      sAddress           
      rAddress           
      timestampRequired  
      seqNumberRequired  
      cname              
}
SourceFile: "KrbSafe.java"