final class sun.security.ssl.HelloCookieManager$D10HelloCookieManager extends sun.security.ssl.HelloCookieManager
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HelloCookieManager$D10HelloCookieManager
  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 byte[] cookieSecret;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

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

  private final java.util.concurrent.locks.ReentrantLock d10ManagerLock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    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$D10HelloCookieManager this
        start local 1 // java.security.SecureRandom secureRandom
         0: .line 131
            aload 0 /* this */
            invokespecial sun.security.ssl.HelloCookieManager.<init>:()V
         1: .line 129
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.d10ManagerLock:Ljava/util/concurrent/locks/ReentrantLock;
         2: .line 132
            aload 0 /* this */
            aload 1 /* secureRandom */
            putfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.secureRandom:Ljava/security/SecureRandom;
         3: .line 134
            aload 0 /* this */
            aload 1 /* secureRandom */
            invokevirtual java.security.SecureRandom.nextInt:()I
            putfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieVersion:I
         4: .line 135
            aload 0 /* this */
            bipush 32
            newarray 8
            putfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieSecret:[B
         5: .line 136
            aload 0 /* this */
            bipush 32
            newarray 8
            putfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.legacySecret:[B
         6: .line 138
            aload 1 /* secureRandom */
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieSecret:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         7: .line 139
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieSecret:[B
            iconst_0
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.legacySecret:[B
            iconst_0
            bipush 32
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 140
            return
        end local 1 // java.security.SecureRandom secureRandom
        end local 0 // sun.security.ssl.HelloCookieManager$D10HelloCookieManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lsun/security/ssl/HelloCookieManager$D10HelloCookieManager;
            0    9     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=8, args_size=3
        start local 0 // sun.security.ssl.HelloCookieManager$D10HelloCookieManager this
        start local 1 // sun.security.ssl.ServerHandshakeContext context
        start local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         0: .line 148
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.d10ManagerLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 150
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieVersion:I
            istore 3 /* version */
        start local 3 // int version
         2: .line 151
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieSecret:[B
            astore 4 /* secret */
        start local 4 // byte[] secret
         3: .line 154
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieVersion:I
            ldc 16777215
            iand
            ifne 6
         4: .line 155
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieSecret:[B
            iconst_0
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.legacySecret:[B
            iconst_0
            bipush 32
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 156
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.secureRandom:Ljava/security/SecureRandom;
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieSecret:[B
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         6: .line 159
      StackMap locals: int byte[]
      StackMap stack:
            aload 0 /* this */
            dup
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieVersion:I
            iconst_1
            iadd
            putfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieVersion:I
         7: .line 160
            goto 11
        end local 4 // byte[] secret
        end local 3 // int version
      StackMap locals: sun.security.ssl.HelloCookieManager$D10HelloCookieManager sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage
      StackMap stack: java.lang.Throwable
         8: astore 5
         9: .line 161
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.d10ManagerLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        10: .line 162
            aload 5
            athrow
        start local 3 // int version
        start local 4 // byte[] secret
        11: .line 161
      StackMap locals: int byte[]
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.d10ManagerLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        12: .line 166
            ldc "SHA-256"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 5 /* md */
        start local 5 // java.security.MessageDigest md
        13: .line 167
            goto 18
        end local 5 // java.security.MessageDigest md
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
        14: astore 6 /* nsae */
        start local 6 // java.security.NoSuchAlgorithmException nsae
        15: .line 168
            new java.lang.RuntimeException
            dup
        16: .line 169
            ldc "MessageDigest algorithm SHA-256 is not available"
            aload 6 /* nsae */
        17: .line 168
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.security.NoSuchAlgorithmException nsae
        start local 5 // java.security.MessageDigest md
        18: .line 171
      StackMap locals: java.security.MessageDigest
      StackMap stack:
            aload 2 /* clientHello */
            invokevirtual sun.security.ssl.ClientHello$ClientHelloMessage.getHelloCookieBytes:()[B
            astore 6 /* helloBytes */
        start local 6 // byte[] helloBytes
        19: .line 172
            aload 5 /* md */
            aload 6 /* helloBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        20: .line 173
            aload 5 /* md */
            aload 4 /* secret */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 7 /* cookie */
        start local 7 // byte[] cookie
        21: .line 174
            aload 7 /* cookie */
            iconst_0
            iload 3 /* version */
            bipush 24
            ishr
            sipush 255
            iand
            i2b
            bastore
        22: .line 176
            aload 7 /* cookie */
            areturn
        end local 7 // byte[] cookie
        end local 6 // byte[] helloBytes
        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$D10HelloCookieManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lsun/security/ssl/HelloCookieManager$D10HelloCookieManager;
            0   23     1      context  Lsun/security/ssl/ServerHandshakeContext;
            0   23     2  clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            2    8     3      version  I
           11   23     3      version  I
            3    8     4       secret  [B
           11   23     4       secret  [B
           13   14     5           md  Ljava/security/MessageDigest;
           18   23     5           md  Ljava/security/MessageDigest;
           15   18     6         nsae  Ljava/security/NoSuchAlgorithmException;
           19   23     6   helloBytes  [B
           21   23     7       cookie  [B
      Exception table:
        from    to  target  type
           1     8       8  any
          12    13      14  Class java.security.NoSuchAlgorithmException
    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=4, locals=8, args_size=4
        start local 0 // sun.security.ssl.HelloCookieManager$D10HelloCookieManager 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 183
            aload 3 /* cookie */
            ifnull 1
            aload 3 /* cookie */
            arraylength
            bipush 32
            if_icmpeq 2
         1: .line 184
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.d10ManagerLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         3: .line 190
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieVersion:I
            bipush 24
            ishr
            sipush 255
            iand
            aload 3 /* cookie */
            iconst_0
            baload
            if_icmpne 6
         4: .line 191
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.cookieSecret:[B
            astore 4 /* secret */
        start local 4 // byte[] secret
         5: .line 192
            goto 11
        end local 4 // byte[] secret
         6: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.legacySecret:[B
            astore 4 /* secret */
        start local 4 // byte[] secret
         7: .line 195
            goto 11
        end local 4 // byte[] secret
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 5
         9: .line 196
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.d10ManagerLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        10: .line 197
            aload 5
            athrow
        start local 4 // byte[] secret
        11: .line 196
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HelloCookieManager$D10HelloCookieManager.d10ManagerLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        12: .line 201
            ldc "SHA-256"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 5 /* md */
        start local 5 // java.security.MessageDigest md
        13: .line 202
            goto 18
        end local 5 // java.security.MessageDigest md
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
        14: astore 6 /* nsae */
        start local 6 // java.security.NoSuchAlgorithmException nsae
        15: .line 203
            new java.lang.RuntimeException
            dup
        16: .line 204
            ldc "MessageDigest algorithm SHA-256 is not available"
            aload 6 /* nsae */
        17: .line 203
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.security.NoSuchAlgorithmException nsae
        start local 5 // java.security.MessageDigest md
        18: .line 206
      StackMap locals: java.security.MessageDigest
      StackMap stack:
            aload 2 /* clientHello */
            invokevirtual sun.security.ssl.ClientHello$ClientHelloMessage.getHelloCookieBytes:()[B
            astore 6 /* helloBytes */
        start local 6 // byte[] helloBytes
        19: .line 207
            aload 5 /* md */
            aload 6 /* helloBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
        20: .line 208
            aload 5 /* md */
            aload 4 /* secret */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 7 /* target */
        start local 7 // byte[] target
        21: .line 209
            aload 7 /* target */
            iconst_0
            aload 3 /* cookie */
            iconst_0
            baload
            bastore
        22: .line 211
            aload 7 /* target */
            aload 3 /* cookie */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ireturn
        end local 7 // byte[] target
        end local 6 // byte[] helloBytes
        end local 5 // java.security.MessageDigest md
        end local 4 // byte[] secret
        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$D10HelloCookieManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lsun/security/ssl/HelloCookieManager$D10HelloCookieManager;
            0   23     1      context  Lsun/security/ssl/ServerHandshakeContext;
            0   23     2  clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            0   23     3       cookie  [B
            5    6     4       secret  [B
            7    8     4       secret  [B
           11   23     4       secret  [B
           13   14     5           md  Ljava/security/MessageDigest;
           18   23     5           md  Ljava/security/MessageDigest;
           15   18     6         nsae  Ljava/security/NoSuchAlgorithmException;
           19   23     6   helloBytes  [B
           21   23     7       target  [B
      Exception table:
        from    to  target  type
           3     8       8  any
          12    13      14  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      context      
      clientHello  
      cookie       
}
SourceFile: "HelloCookieManager.java"
NestHost: sun.security.ssl.HelloCookieManager
InnerClasses:
  final ClientHelloMessage = sun.security.ssl.ClientHello$ClientHelloMessage of sun.security.ssl.ClientHello
  private final D10HelloCookieManager = sun.security.ssl.HelloCookieManager$D10HelloCookieManager of sun.security.ssl.HelloCookieManager