final class sun.security.ssl.SessionTicketExtension$KeyState
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.SessionTicketExtension$KeyState
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.SessionTicketExtension$KeyState this
         0: .line 146
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.ssl.SessionTicketExtension$KeyState this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/SessionTicketExtension$KeyState;

  static sun.security.ssl.SessionTicketExtension$StatelessKey getKey(sun.security.ssl.HandshakeContext, int);
    descriptor: (Lsun/security/ssl/HandshakeContext;I)Lsun/security/ssl/SessionTicketExtension$StatelessKey;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.ssl.HandshakeContext hc
        start local 1 // int num
         0: .line 150
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            getfield sun.security.ssl.SSLContextImpl.keyHashMap:Ljava/util/HashMap;
            iload 1 /* num */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.SessionTicketExtension$StatelessKey
            astore 2 /* ssk */
        start local 2 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
         1: .line 152
            aload 2 /* ssk */
            ifnull 2
            aload 2 /* ssk */
            aload 0 /* hc */
            invokestatic sun.security.ssl.SessionTicketExtension$KeyState.getSessionTimeout:(Lsun/security/ssl/HandshakeContext;)I
            i2l
            invokevirtual sun.security.ssl.SessionTicketExtension$StatelessKey.isInvalid:(J)Z
            ifeq 3
         2: .line 153
      StackMap locals: sun.security.ssl.SessionTicketExtension$StatelessKey
      StackMap stack:
            aconst_null
            areturn
         3: .line 155
      StackMap locals:
      StackMap stack:
            aload 2 /* ssk */
            areturn
        end local 2 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
        end local 1 // int num
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0    hc  Lsun/security/ssl/HandshakeContext;
            0    4     1   num  I
            1    4     2   ssk  Lsun/security/ssl/SessionTicketExtension$StatelessKey;
    MethodParameters:
      Name  Flags
      hc    
      num   

  static sun.security.ssl.SessionTicketExtension$StatelessKey getCurrentKey(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SessionTicketExtension$StatelessKey;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.security.ssl.HandshakeContext hc
         0: .line 160
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            getfield sun.security.ssl.SSLContextImpl.keyHashMap:Ljava/util/HashMap;
            getstatic sun.security.ssl.SessionTicketExtension.currentKeyID:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.SessionTicketExtension$StatelessKey
            astore 1 /* ssk */
        start local 1 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
         1: .line 162
            aload 1 /* ssk */
            ifnull 3
            aload 1 /* ssk */
            invokevirtual sun.security.ssl.SessionTicketExtension$StatelessKey.isExpired:()Z
            ifne 3
         2: .line 163
            aload 1 /* ssk */
            areturn
         3: .line 165
      StackMap locals: sun.security.ssl.SessionTicketExtension$StatelessKey
      StackMap stack:
            aload 0 /* hc */
            invokestatic sun.security.ssl.SessionTicketExtension$KeyState.nextKey:(Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SessionTicketExtension$StatelessKey;
            areturn
        end local 1 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0    hc  Lsun/security/ssl/HandshakeContext;
            1    4     1   ssk  Lsun/security/ssl/SessionTicketExtension$StatelessKey;
    MethodParameters:
      Name  Flags
      hc    

  private static sun.security.ssl.SessionTicketExtension$StatelessKey nextKey(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SessionTicketExtension$StatelessKey;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // sun.security.ssl.HandshakeContext hc
         0: .line 177
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            getfield sun.security.ssl.SSLContextImpl.keyHashMap:Ljava/util/HashMap;
            dup
            astore 2
            monitorenter
         1: .line 180
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            getfield sun.security.ssl.SSLContextImpl.keyHashMap:Ljava/util/HashMap;
            getstatic sun.security.ssl.SessionTicketExtension.currentKeyID:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.SessionTicketExtension$StatelessKey
            astore 1 /* ssk */
        start local 1 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
         2: .line 181
            aload 1 /* ssk */
            ifnull 5
            aload 1 /* ssk */
            invokevirtual sun.security.ssl.SessionTicketExtension$StatelessKey.isExpired:()Z
            ifne 5
         3: .line 182
            aload 1 /* ssk */
            aload 2
            monitorexit
         4: areturn
         5: .line 185
      StackMap locals: sun.security.ssl.SessionTicketExtension$StatelessKey java.util.HashMap
      StackMap stack:
            getstatic sun.security.ssl.SessionTicketExtension.currentKeyID:I
            ldc 2147483647
            if_icmpne 8
         6: .line 186
            iconst_0
            istore 3 /* newNum */
        start local 3 // int newNum
         7: .line 187
            goto 9
        end local 3 // int newNum
         8: .line 188
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.SessionTicketExtension.currentKeyID:I
            iconst_1
            iadd
            istore 3 /* newNum */
        start local 3 // int newNum
         9: .line 191
      StackMap locals: int
      StackMap stack:
            new sun.security.ssl.SessionTicketExtension$StatelessKey
            dup
            aload 0 /* hc */
            iload 3 /* newNum */
            invokespecial sun.security.ssl.SessionTicketExtension$StatelessKey.<init>:(Lsun/security/ssl/HandshakeContext;I)V
            astore 1 /* ssk */
        10: .line 192
            iload 3 /* newNum */
            putstatic sun.security.ssl.SessionTicketExtension.currentKeyID:I
        end local 3 // int newNum
        11: .line 177
            aload 2
            monitorexit
        12: goto 15
        end local 1 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
      StackMap locals: sun.security.ssl.HandshakeContext top java.util.HashMap
      StackMap stack: java.lang.Throwable
        13: aload 2
            monitorexit
        14: athrow
        start local 1 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
        15: .line 197
      StackMap locals: sun.security.ssl.HandshakeContext sun.security.ssl.SessionTicketExtension$StatelessKey
      StackMap stack:
            aload 0 /* hc */
            invokestatic sun.security.ssl.SessionTicketExtension$KeyState.cleanup:(Lsun/security/ssl/HandshakeContext;)V
        16: .line 198
            aload 1 /* ssk */
            areturn
        end local 1 // sun.security.ssl.SessionTicketExtension$StatelessKey ssk
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0      hc  Lsun/security/ssl/HandshakeContext;
            2   13     1     ssk  Lsun/security/ssl/SessionTicketExtension$StatelessKey;
           15   17     1     ssk  Lsun/security/ssl/SessionTicketExtension$StatelessKey;
            7    8     3  newNum  I
            9   11     3  newNum  I
      Exception table:
        from    to  target  type
           1     4      13  any
           5    12      13  any
          13    14      13  any
    MethodParameters:
      Name  Flags
      hc    

  static void cleanup(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // sun.security.ssl.HandshakeContext hc
         0: .line 203
            aload 0 /* hc */
            invokestatic sun.security.ssl.SessionTicketExtension$KeyState.getSessionTimeout:(Lsun/security/ssl/HandshakeContext;)I
            istore 1 /* sessionTimeout */
        start local 1 // int sessionTimeout
         1: .line 206
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            getfield sun.security.ssl.SSLContextImpl.keyHashMap:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.toArray:()[Ljava/lang/Object;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 11
      StackMap locals: sun.security.ssl.HandshakeContext int top top int int java.lang.Object[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* o */
        start local 3 // java.lang.Object o
         3: .line 207
            aload 3 /* o */
            checkcast java.lang.Integer
            astore 7 /* i */
        start local 7 // java.lang.Integer i
         4: .line 208
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            getfield sun.security.ssl.SSLContextImpl.keyHashMap:Ljava/util/HashMap;
            aload 7 /* i */
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.SessionTicketExtension$StatelessKey
            astore 2 /* ks */
        start local 2 // sun.security.ssl.SessionTicketExtension$StatelessKey ks
         5: .line 209
            aload 2 /* ks */
            iload 1 /* sessionTimeout */
            i2l
            invokevirtual sun.security.ssl.SessionTicketExtension$StatelessKey.isInvalid:(J)Z
            ifeq 10
         6: .line 211
            aload 2 /* ks */
            getfield sun.security.ssl.SessionTicketExtension$StatelessKey.key:Ljavax/crypto/SecretKey;
            invokeinterface javax.crypto.SecretKey.destroy:()V
         7: .line 212
            goto 9
      StackMap locals: sun.security.ssl.HandshakeContext int sun.security.ssl.SessionTicketExtension$StatelessKey java.lang.Object int int java.lang.Object[] java.lang.Integer
      StackMap stack: java.lang.Exception
         8: pop
         9: .line 215
      StackMap locals:
      StackMap stack:
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            getfield sun.security.ssl.SSLContextImpl.keyHashMap:Ljava/util/HashMap;
            aload 7 /* i */
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // java.lang.Integer i
        end local 3 // java.lang.Object o
        end local 2 // sun.security.ssl.SessionTicketExtension$StatelessKey ks
        10: .line 206
      StackMap locals: sun.security.ssl.HandshakeContext int top top int int java.lang.Object[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        11: iload 4
            iload 5
            if_icmplt 2
        12: .line 218
            return
        end local 1 // int sessionTimeout
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0              hc  Lsun/security/ssl/HandshakeContext;
            1   13     1  sessionTimeout  I
            5   10     2              ks  Lsun/security/ssl/SessionTicketExtension$StatelessKey;
            3   10     3               o  Ljava/lang/Object;
            4   10     7               i  Ljava/lang/Integer;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      hc    

  static int getSessionTimeout(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeContext hc
         0: .line 221
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.engineGetServerSessionContext:()Ljavax/net/ssl/SSLSessionContext;
         1: .line 222
            invokeinterface javax.net.ssl.SSLSessionContext.getSessionTimeout:()I
            sipush 1000
         2: .line 221
            imul
            ireturn
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    hc  Lsun/security/ssl/HandshakeContext;
    MethodParameters:
      Name  Flags
      hc    
}
SourceFile: "SessionTicketExtension.java"
NestHost: sun.security.ssl.SessionTicketExtension
InnerClasses:
  private final KeyState = sun.security.ssl.SessionTicketExtension$KeyState of sun.security.ssl.SessionTicketExtension
  final StatelessKey = sun.security.ssl.SessionTicketExtension$StatelessKey of sun.security.ssl.SessionTicketExtension