final class sun.security.ssl.HelloCookieManager$T13HelloCookieManager extends sun.security.ssl.HelloCookieManager
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HelloCookieManager$T13HelloCookieManager
  super_class: sun.security.ssl.HelloCookieManager
{
  final java.security.SecureRandom secureRandom;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0010) ACC_FINAL

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

  private final byte[] cookieSecret;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final byte[] legacySecret;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(java.security.SecureRandom);
    descriptor: (Ljava/security/SecureRandom;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // sun.security.ssl.HelloCookieManager$T13HelloCookieManager this
        start local 1 // java.security.SecureRandom secureRandom
         0: .line 208
            aload 0 /* this */
            invokespecial sun.security.ssl.HelloCookieManager.<init>:()V
         1: .line 209
            aload 0 /* this */
            aload 1 /* secureRandom */
            putfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.secureRandom:Ljava/security/SecureRandom;
         2: .line 210
            aload 0 /* this */
            aload 1 /* secureRandom */
            invokevirtual java.security.SecureRandom.nextInt:()I
            putfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieVersion:I
         3: .line 211
            aload 0 /* this */
            bipush 64
            newarray 8
            putfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieSecret:[B
         4: .line 212
            aload 0 /* this */
            bipush 64
            newarray 8
            putfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.legacySecret:[B
         5: .line 214
            aload 1 /* secureRandom */
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieSecret:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         6: .line 215
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieSecret:[B
            iconst_0
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.legacySecret:[B
            iconst_0
            bipush 64
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 216
            return
        end local 1 // java.security.SecureRandom secureRandom
        end local 0 // sun.security.ssl.HelloCookieManager$T13HelloCookieManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lsun/security/ssl/HelloCookieManager$T13HelloCookieManager;
            0    8     1  secureRandom  Ljava/security/SecureRandom;
    MethodParameters:
              Name  Flags
      secureRandom  

  byte[] createCookie(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.ClientHello$ClientHelloMessage);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)[B
    flags: (0x0000) 
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // sun.security.ssl.HelloCookieManager$T13HelloCookieManager this
        start local 1 // sun.security.ssl.ServerHandshakeContext context
        start local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         0: .line 224
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         1: .line 225
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieVersion:I
            istore 3 /* version */
        start local 3 // int version
         2: .line 226
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieSecret:[B
            astore 4 /* secret */
        start local 4 // byte[] secret
         3: .line 229
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieVersion:I
            ldc 16777215
            iand
            ifne 6
         4: .line 230
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieSecret:[B
            iconst_0
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.legacySecret:[B
            iconst_0
            bipush 64
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 231
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.secureRandom:Ljava/security/SecureRandom;
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieSecret:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         6: .line 234
      StackMap locals: int byte[] sun.security.ssl.HelloCookieManager$T13HelloCookieManager
      StackMap stack:
            aload 0 /* this */
            dup
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieVersion:I
            iconst_1
            iadd
            putfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieVersion:I
         7: .line 224
            aload 5
            monitorexit
         8: goto 11
        end local 4 // byte[] secret
        end local 3 // int version
      StackMap locals: sun.security.ssl.HelloCookieManager$T13HelloCookieManager sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage top top sun.security.ssl.HelloCookieManager$T13HelloCookieManager
      StackMap stack: java.lang.Throwable
         9: aload 5
            monitorexit
        10: athrow
        start local 3 // int version
        start local 4 // byte[] secret
        11: .line 238
      StackMap locals: sun.security.ssl.HelloCookieManager$T13HelloCookieManager sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage int byte[]
      StackMap stack:
            aload 1 /* context */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
        12: .line 237
            invokestatic sun.security.ssl.JsseJce.getMessageDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 5 /* md */
        start local 5 // java.security.MessageDigest md
        13: .line 239
            aload 2 /* clientHello */
            invokevirtual sun.security.ssl.ClientHello$ClientHelloMessage.getHeaderBytes:()[B
            astore 6 /* headerBytes */
        start local 6 // byte[] headerBytes
        14: .line 240
            aload 5 /* md */
            aload 6 /* headerBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        15: .line 241
            aload 5 /* md */
            aload 4 /* secret */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 7 /* headerCookie */
        start local 7 // byte[] headerCookie
        16: .line 244
            aload 1 /* context */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.update:()V
        17: .line 245
            aload 1 /* context */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
            astore 8 /* clientHelloHash */
        start local 8 // byte[] clientHelloHash
        18: .line 254
            iconst_3
            newarray 8
            dup
            iconst_0
        19: .line 255
            aload 1 /* context */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.id:I
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
            dup
            iconst_1
        20: .line 256
            aload 1 /* context */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.id:I
            sipush 255
            iand
            i2b
            bastore
            dup
            iconst_2
        21: .line 257
            iload 3 /* version */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
        22: .line 254
            astore 9 /* prefix */
        start local 9 // byte[] prefix
        23: .line 260
            aload 9 /* prefix */
        24: .line 261
            aload 9 /* prefix */
            arraylength
            aload 7 /* headerCookie */
            arraylength
            iadd
            aload 8 /* clientHelloHash */
            arraylength
            iadd
        25: .line 260
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 10 /* cookie */
        start local 10 // byte[] cookie
        26: .line 262
            aload 7 /* headerCookie */
            iconst_0
            aload 10 /* cookie */
        27: .line 263
            aload 9 /* prefix */
            arraylength
            aload 7 /* headerCookie */
            arraylength
        28: .line 262
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        29: .line 264
            aload 8 /* clientHelloHash */
            iconst_0
            aload 10 /* cookie */
        30: .line 265
            aload 9 /* prefix */
            arraylength
            aload 7 /* headerCookie */
            arraylength
            iadd
            aload 8 /* clientHelloHash */
            arraylength
        31: .line 264
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        32: .line 267
            aload 10 /* cookie */
            areturn
        end local 10 // byte[] cookie
        end local 9 // byte[] prefix
        end local 8 // byte[] clientHelloHash
        end local 7 // byte[] headerCookie
        end local 6 // byte[] headerBytes
        end local 5 // java.security.MessageDigest md
        end local 4 // byte[] secret
        end local 3 // int version
        end local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 1 // sun.security.ssl.ServerHandshakeContext context
        end local 0 // sun.security.ssl.HelloCookieManager$T13HelloCookieManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   33     0             this  Lsun/security/ssl/HelloCookieManager$T13HelloCookieManager;
            0   33     1          context  Lsun/security/ssl/ServerHandshakeContext;
            0   33     2      clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            2    9     3          version  I
           11   33     3          version  I
            3    9     4           secret  [B
           11   33     4           secret  [B
           13   33     5               md  Ljava/security/MessageDigest;
           14   33     6      headerBytes  [B
           16   33     7     headerCookie  [B
           18   33     8  clientHelloHash  [B
           23   33     9           prefix  [B
           26   33    10           cookie  [B
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      context      
      clientHello  

  boolean isCookieValid(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.ClientHello$ClientHelloMessage, byte[]);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;[B)Z
    flags: (0x0000) 
    Code:
      stack=5, locals=15, args_size=4
        start local 0 // sun.security.ssl.HelloCookieManager$T13HelloCookieManager this
        start local 1 // sun.security.ssl.ServerHandshakeContext context
        start local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        start local 3 // byte[] cookie
         0: .line 274
            aload 3 /* cookie */
            ifnull 1
            aload 3 /* cookie */
            arraylength
            bipush 32
            if_icmpgt 2
         1: .line 275
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 278
      StackMap locals:
      StackMap stack:
            aload 3 /* cookie */
            iconst_0
            baload
            sipush 255
            iand
            bipush 8
            ishl
            aload 3 /* cookie */
            iconst_1
            baload
            sipush 255
            iand
            ior
            istore 4 /* csId */
        start local 4 // int csId
         3: .line 279
            iload 4 /* csId */
            invokestatic sun.security.ssl.CipherSuite.valueOf:(I)Lsun/security/ssl/CipherSuite;
            astore 5 /* cs */
        start local 5 // sun.security.ssl.CipherSuite cs
         4: .line 280
            aload 5 /* cs */
            ifnull 5
            aload 5 /* cs */
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            ifnull 5
            aload 5 /* cs */
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            ifne 6
         5: .line 281
      StackMap locals: int sun.security.ssl.CipherSuite
      StackMap stack:
            iconst_0
            ireturn
         6: .line 284
      StackMap locals:
      StackMap stack:
            aload 5 /* cs */
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            istore 6 /* hashLen */
        start local 6 // int hashLen
         7: .line 285
            aload 3 /* cookie */
            arraylength
            iconst_3
            iload 6 /* hashLen */
            iconst_2
            imul
            iadd
            if_icmpeq 9
         8: .line 286
            iconst_0
            ireturn
         9: .line 290
      StackMap locals: int
      StackMap stack:
            aload 3 /* cookie */
            iconst_3
            iconst_3
            iload 6 /* hashLen */
            iadd
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
        10: .line 289
            astore 7 /* prevHeadCookie */
        start local 7 // byte[] prevHeadCookie
        11: .line 292
            aload 3 /* cookie */
            iconst_3
            iload 6 /* hashLen */
            iadd
            aload 3 /* cookie */
            arraylength
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
        12: .line 291
            astore 8 /* prevClientHelloHash */
        start local 8 // byte[] prevClientHelloHash
        13: .line 295
            aload 0 /* this */
            dup
            astore 10
            monitorenter
        14: .line 296
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieVersion:I
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            aload 3 /* cookie */
            iconst_2
            baload
            if_icmpne 17
        15: .line 297
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.cookieSecret:[B
            astore 9 /* secret */
        start local 9 // byte[] secret
        16: .line 298
            goto 18
        end local 9 // byte[] secret
        17: .line 299
      StackMap locals: sun.security.ssl.HelloCookieManager$T13HelloCookieManager sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage byte[] int sun.security.ssl.CipherSuite int byte[] byte[] top sun.security.ssl.HelloCookieManager$T13HelloCookieManager
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$T13HelloCookieManager.legacySecret:[B
            astore 9 /* secret */
        start local 9 // byte[] secret
        18: .line 295
      StackMap locals: sun.security.ssl.HelloCookieManager$T13HelloCookieManager sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage byte[] int sun.security.ssl.CipherSuite int byte[] byte[] byte[] sun.security.ssl.HelloCookieManager$T13HelloCookieManager
      StackMap stack:
            aload 10
            monitorexit
        19: goto 22
        end local 9 // byte[] secret
      StackMap locals: sun.security.ssl.HelloCookieManager$T13HelloCookieManager sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage byte[] int sun.security.ssl.CipherSuite int byte[] byte[] top sun.security.ssl.HelloCookieManager$T13HelloCookieManager
      StackMap stack: java.lang.Throwable
        20: aload 10
            monitorexit
        21: athrow
        start local 9 // byte[] secret
        22: .line 303
      StackMap locals: sun.security.ssl.HelloCookieManager$T13HelloCookieManager sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage byte[] int sun.security.ssl.CipherSuite int byte[] byte[] byte[]
      StackMap stack:
            aload 5 /* cs */
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            invokestatic sun.security.ssl.JsseJce.getMessageDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 10 /* md */
        start local 10 // java.security.MessageDigest md
        23: .line 304
            aload 2 /* clientHello */
            invokevirtual sun.security.ssl.ClientHello$ClientHelloMessage.getHeaderBytes:()[B
            astore 11 /* headerBytes */
        start local 11 // byte[] headerBytes
        24: .line 305
            aload 10 /* md */
            aload 11 /* headerBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        25: .line 306
            aload 10 /* md */
            aload 9 /* secret */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 12 /* headerCookie */
        start local 12 // byte[] headerCookie
        26: .line 308
            aload 12 /* headerCookie */
            aload 7 /* prevHeadCookie */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 28
        27: .line 309
            iconst_0
            ireturn
        28: .line 323
      StackMap locals: java.security.MessageDigest byte[] byte[]
      StackMap stack:
            getstatic sun.security.ssl.ServerHello.hrrReproducer:Lsun/security/ssl/HandshakeProducer;
            aload 1 /* context */
            aload 2 /* clientHello */
            invokeinterface sun.security.ssl.HandshakeProducer.produce:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
        29: .line 322
            astore 13 /* hrrMessage */
        start local 13 // byte[] hrrMessage
        30: .line 324
            aload 1 /* context */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            aload 13 /* hrrMessage */
            invokevirtual sun.security.ssl.HandshakeHash.push:([B)V
        31: .line 327
            iconst_4
            iload 6 /* hashLen */
            iadd
            newarray 8
            astore 14 /* hashedClientHello */
        start local 14 // byte[] hashedClientHello
        32: .line 328
            aload 14 /* hashedClientHello */
            iconst_0
            getstatic sun.security.ssl.SSLHandshake.MESSAGE_HASH:Lsun/security/ssl/SSLHandshake;
            getfield sun.security.ssl.SSLHandshake.id:B
            bastore
        33: .line 329
            aload 14 /* hashedClientHello */
            iconst_1
            iconst_0
            bastore
        34: .line 330
            aload 14 /* hashedClientHello */
            iconst_2
            iconst_0
            bastore
        35: .line 331
            aload 14 /* hashedClientHello */
            iconst_3
            iload 6 /* hashLen */
            sipush 255
            iand
            i2b
            bastore
        36: .line 332
            aload 8 /* prevClientHelloHash */
            iconst_0
        37: .line 333
            aload 14 /* hashedClientHello */
            iconst_4
            iload 6 /* hashLen */
        38: .line 332
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        39: .line 335
            aload 1 /* context */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            aload 14 /* hashedClientHello */
            invokevirtual sun.security.ssl.HandshakeHash.push:([B)V
        40: .line 337
            iconst_1
            ireturn
        end local 14 // byte[] hashedClientHello
        end local 13 // byte[] hrrMessage
        end local 12 // byte[] headerCookie
        end local 11 // byte[] headerBytes
        end local 10 // java.security.MessageDigest md
        end local 9 // byte[] secret
        end local 8 // byte[] prevClientHelloHash
        end local 7 // byte[] prevHeadCookie
        end local 6 // int hashLen
        end local 5 // sun.security.ssl.CipherSuite cs
        end local 4 // int csId
        end local 3 // byte[] cookie
        end local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 1 // sun.security.ssl.ServerHandshakeContext context
        end local 0 // sun.security.ssl.HelloCookieManager$T13HelloCookieManager this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   41     0                 this  Lsun/security/ssl/HelloCookieManager$T13HelloCookieManager;
            0   41     1              context  Lsun/security/ssl/ServerHandshakeContext;
            0   41     2          clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            0   41     3               cookie  [B
            3   41     4                 csId  I
            4   41     5                   cs  Lsun/security/ssl/CipherSuite;
            7   41     6              hashLen  I
           11   41     7       prevHeadCookie  [B
           13   41     8  prevClientHelloHash  [B
           16   17     9               secret  [B
           18   20     9               secret  [B
           22   41     9               secret  [B
           23   41    10                   md  Ljava/security/MessageDigest;
           24   41    11          headerBytes  [B
           26   41    12         headerCookie  [B
           30   41    13           hrrMessage  [B
           32   41    14    hashedClientHello  [B
      Exception table:
        from    to  target  type
          14    19      20  any
          20    21      20  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      context      
      clientHello  
      cookie       
}
SourceFile: "HelloCookieManager.java"
NestHost: sun.security.ssl.HelloCookieManager
InnerClasses:
  final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
  final ClientHelloMessage = sun.security.ssl.ClientHello$ClientHelloMessage of sun.security.ssl.ClientHello
  private final T13HelloCookieManager = sun.security.ssl.HelloCookieManager$T13HelloCookieManager of sun.security.ssl.HelloCookieManager
  abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake