final class sun.security.ssl.PreSharedKeyExtension
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.PreSharedKeyExtension
  super_class: java.lang.Object
{
  static final sun.security.ssl.HandshakeProducer chNetworkProducer;
    descriptor: Lsun/security/ssl/HandshakeProducer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.SSLExtension$ExtensionConsumer chOnLoadConsumer;
    descriptor: Lsun/security/ssl/SSLExtension$ExtensionConsumer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.HandshakeAbsence chOnLoadAbsence;
    descriptor: Lsun/security/ssl/HandshakeAbsence;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.HandshakeConsumer chOnTradeConsumer;
    descriptor: Lsun/security/ssl/HandshakeConsumer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.SSLStringizer chStringizer;
    descriptor: Lsun/security/ssl/SSLStringizer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.HandshakeProducer shNetworkProducer;
    descriptor: Lsun/security/ssl/HandshakeProducer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.SSLExtension$ExtensionConsumer shOnLoadConsumer;
    descriptor: Lsun/security/ssl/SSLExtension$ExtensionConsumer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.HandshakeAbsence shOnLoadAbsence;
    descriptor: Lsun/security/ssl/HandshakeAbsence;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final sun.security.ssl.SSLStringizer shStringizer;
    descriptor: Lsun/security/ssl/SSLStringizer;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 53
            new sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyProducer
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyProducer.<init>:()V
         1: .line 52
            putstatic sun.security.ssl.PreSharedKeyExtension.chNetworkProducer:Lsun/security/ssl/HandshakeProducer;
         2: .line 55
            new sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyConsumer
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyConsumer.<init>:()V
         3: .line 54
            putstatic sun.security.ssl.PreSharedKeyExtension.chOnLoadConsumer:Lsun/security/ssl/SSLExtension$ExtensionConsumer;
         4: .line 57
            new sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyAbsence
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyAbsence.<init>:()V
         5: .line 56
            putstatic sun.security.ssl.PreSharedKeyExtension.chOnLoadAbsence:Lsun/security/ssl/HandshakeAbsence;
         6: .line 59
            new sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyUpdate
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyUpdate.<init>:()V
         7: .line 58
            putstatic sun.security.ssl.PreSharedKeyExtension.chOnTradeConsumer:Lsun/security/ssl/HandshakeConsumer;
         8: .line 61
            new sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyStringizer
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyStringizer.<init>:()V
         9: .line 60
            putstatic sun.security.ssl.PreSharedKeyExtension.chStringizer:Lsun/security/ssl/SSLStringizer;
        10: .line 64
            new sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyProducer
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyProducer.<init>:()V
        11: .line 63
            putstatic sun.security.ssl.PreSharedKeyExtension.shNetworkProducer:Lsun/security/ssl/HandshakeProducer;
        12: .line 66
            new sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyConsumer
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyConsumer.<init>:()V
        13: .line 65
            putstatic sun.security.ssl.PreSharedKeyExtension.shOnLoadConsumer:Lsun/security/ssl/SSLExtension$ExtensionConsumer;
        14: .line 68
            new sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyAbsence
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyAbsence.<init>:()V
        15: .line 67
            putstatic sun.security.ssl.PreSharedKeyExtension.shOnLoadAbsence:Lsun/security/ssl/HandshakeAbsence;
        16: .line 70
            new sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyStringizer
            dup
            invokespecial sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyStringizer.<init>:()V
        17: .line 69
            putstatic sun.security.ssl.PreSharedKeyExtension.shStringizer:Lsun/security/ssl/SSLStringizer;
        18: .line 70
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.PreSharedKeyExtension this
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.security.ssl.PreSharedKeyExtension this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/PreSharedKeyExtension;

  private static boolean canRejoin(sun.security.ssl.ClientHello$ClientHelloMessage, sun.security.ssl.ServerHandshakeContext, sun.security.ssl.SSLSessionImpl);
    descriptor: (Lsun/security/ssl/ClientHello$ClientHelloMessage;Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLSessionImpl;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        start local 1 // sun.security.ssl.ServerHandshakeContext shc
        start local 2 // sun.security.ssl.SSLSessionImpl s
         0: .line 405
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.isRejoinable:()Z
            ifeq 1
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.getPreSharedKey:()Ljava/util/Optional;
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 3 /* result */
        start local 3 // boolean result
         3: .line 408
            iload 3 /* result */
            ifeq 8
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.getProtocolVersion:()Lsun/security/ssl/ProtocolVersion;
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            if_acmpeq 8
         4: .line 409
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 7
         5: .line 410
            ldc "ssl,handshake,verbose"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 7
         6: .line 412
            ldc "Can't resume, incorrect protocol version"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
         7: .line 414
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 3 /* result */
         8: .line 421
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.localSupportedSignAlgs:Ljava/util/List;
            ifnonnull 13
         9: .line 422
            aload 1 /* shc */
        10: .line 424
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.activeProtocols:Ljava/util/List;
        11: .line 423
            invokestatic sun.security.ssl.SignatureScheme.getSupportedAlgorithms:(Ljava/security/AlgorithmConstraints;Ljava/util/List;)Ljava/util/List;
        12: .line 422
            putfield sun.security.ssl.ServerHandshakeContext.localSupportedSignAlgs:Ljava/util/List;
        13: .line 428
      StackMap locals:
      StackMap stack:
            iload 3 /* result */
            ifeq 30
        14: .line 429
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
            getfield sun.security.ssl.SSLConfiguration.clientAuthType:Lsun/security/ssl/ClientAuthType;
            getstatic sun.security.ssl.ClientAuthType.CLIENT_AUTH_REQUIRED:Lsun/security/ssl/ClientAuthType;
            if_acmpne 30
        15: .line 431
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.getPeerPrincipal:()Ljava/security/Principal;
            pop
        16: .line 432
            goto 23
      StackMap locals:
      StackMap stack: javax.net.ssl.SSLPeerUnverifiedException
        17: pop
        18: .line 433
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 22
        19: .line 434
            ldc "ssl,handshake,verbose"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 22
        20: .line 436
            ldc "Can't resume, client authentication is required"
            iconst_0
            anewarray java.lang.Object
        21: .line 435
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        22: .line 439
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* result */
        23: .line 444
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.getLocalSupportedSignatureSchemes:()Ljava/util/Collection;
        24: .line 443
            astore 4 /* sessionSigAlgs */
        start local 4 // java.util.Collection sessionSigAlgs
        25: .line 445
            iload 3 /* result */
            ifeq 30
        26: .line 446
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.localSupportedSignAlgs:Ljava/util/List;
            aload 4 /* sessionSigAlgs */
            invokeinterface java.util.List.containsAll:(Ljava/util/Collection;)Z
            ifne 30
        27: .line 448
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 29
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 29
        28: .line 449
            ldc "Can't resume. Session uses different signature algorithms"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        29: .line 452
      StackMap locals: java.util.Collection
      StackMap stack:
            iconst_0
            istore 3 /* result */
        end local 4 // java.util.Collection sessionSigAlgs
        30: .line 458
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
            getfield sun.security.ssl.SSLConfiguration.identificationProtocol:Ljava/lang/String;
            astore 4 /* identityAlg */
        start local 4 // java.lang.String identityAlg
        31: .line 459
            iload 3 /* result */
            ifeq 40
            aload 4 /* identityAlg */
            ifnull 40
        32: .line 460
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.getIdentificationProtocol:()Ljava/lang/String;
            astore 5 /* sessionIdentityAlg */
        start local 5 // java.lang.String sessionIdentityAlg
        33: .line 461
            aload 4 /* identityAlg */
            aload 5 /* sessionIdentityAlg */
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifne 40
        34: .line 462
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 39
        35: .line 463
            ldc "ssl,handshake,verbose"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 39
        36: .line 465
            new java.lang.StringBuilder
            dup
            ldc "Can't resume, endpoint id algorithm does not match, requested: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        37: .line 467
            aload 4 /* identityAlg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", cached: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* sessionIdentityAlg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        38: .line 465
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        39: .line 469
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            iconst_0
            istore 3 /* result */
        end local 5 // java.lang.String sessionIdentityAlg
        40: .line 474
      StackMap locals:
      StackMap stack:
            iload 3 /* result */
            ifeq 47
            aload 1 /* shc */
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.getSuite:()Lsun/security/ssl/CipherSuite;
            invokevirtual sun.security.ssl.ServerHandshakeContext.isNegotiable:(Lsun/security/ssl/CipherSuite;)Z
            ifeq 42
        41: .line 475
            aload 0 /* clientHello */
            getfield sun.security.ssl.ClientHello$ClientHelloMessage.cipherSuites:Ljava/util/List;
            aload 2 /* s */
            invokevirtual sun.security.ssl.SSLSessionImpl.getSuite:()Lsun/security/ssl/CipherSuite;
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 47
        42: .line 476
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 46
        43: .line 477
            ldc "ssl,handshake,verbose"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 46
        44: .line 479
            ldc "Can't resume, unavailable session cipher suite"
            iconst_0
            anewarray java.lang.Object
        45: .line 478
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        46: .line 481
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* result */
        47: .line 484
      StackMap locals:
      StackMap stack:
            iload 3 /* result */
            ireturn
        end local 4 // java.lang.String identityAlg
        end local 3 // boolean result
        end local 2 // sun.security.ssl.SSLSessionImpl s
        end local 1 // sun.security.ssl.ServerHandshakeContext shc
        end local 0 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   48     0         clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            0   48     1                 shc  Lsun/security/ssl/ServerHandshakeContext;
            0   48     2                   s  Lsun/security/ssl/SSLSessionImpl;
            3   48     3              result  Z
           25   30     4      sessionSigAlgs  Ljava/util/Collection<Lsun/security/ssl/SignatureScheme;>;
           31   48     4         identityAlg  Ljava/lang/String;
           33   40     5  sessionIdentityAlg  Ljava/lang/String;
      Exception table:
        from    to  target  type
          15    16      17  Class javax.net.ssl.SSLPeerUnverifiedException
    MethodParameters:
             Name  Flags
      clientHello  
      shc          
      s            

  private static void checkBinder(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.SSLSessionImpl, sun.security.ssl.HandshakeHash, byte[]);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLSessionImpl;Lsun/security/ssl/HandshakeHash;[B)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // sun.security.ssl.ServerHandshakeContext shc
        start local 1 // sun.security.ssl.SSLSessionImpl session
        start local 2 // sun.security.ssl.HandshakeHash pskBinderHash
        start local 3 // byte[] binder
         0: .line 533
            aload 1 /* session */
            invokevirtual sun.security.ssl.SSLSessionImpl.getPreSharedKey:()Ljava/util/Optional;
            astore 4 /* pskOpt */
        start local 4 // java.util.Optional pskOpt
         1: .line 534
            aload 4 /* pskOpt */
            invokevirtual java.util.Optional.isPresent:()Z
            ifne 5
         2: .line 535
            aload 0 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
         3: .line 536
            ldc "Session has no PSK"
         4: .line 535
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
         5: .line 538
      StackMap locals: java.util.Optional
      StackMap stack:
            aload 4 /* pskOpt */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast javax.crypto.SecretKey
            astore 5 /* psk */
        start local 5 // javax.crypto.SecretKey psk
         6: .line 540
            aload 0 /* shc */
            aload 5 /* psk */
            aload 1 /* session */
            invokestatic sun.security.ssl.PreSharedKeyExtension.deriveBinderKey:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/SSLSessionImpl;)Ljavax/crypto/SecretKey;
            astore 6 /* binderKey */
        start local 6 // javax.crypto.SecretKey binderKey
         7: .line 542
            aload 0 /* shc */
            aload 6 /* binderKey */
            aload 1 /* session */
            aload 2 /* pskBinderHash */
            invokestatic sun.security.ssl.PreSharedKeyExtension.computeBinder:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/SSLSessionImpl;Lsun/security/ssl/HandshakeHash;)[B
         8: .line 541
            astore 7 /* computedBinder */
        start local 7 // byte[] computedBinder
         9: .line 543
            aload 3 /* binder */
            aload 7 /* computedBinder */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 13
        10: .line 544
            aload 0 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
        11: .line 545
            ldc "Incorect PSK binder value"
        12: .line 544
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        13: .line 547
      StackMap locals: javax.crypto.SecretKey javax.crypto.SecretKey byte[]
      StackMap stack:
            return
        end local 7 // byte[] computedBinder
        end local 6 // javax.crypto.SecretKey binderKey
        end local 5 // javax.crypto.SecretKey psk
        end local 4 // java.util.Optional pskOpt
        end local 3 // byte[] binder
        end local 2 // sun.security.ssl.HandshakeHash pskBinderHash
        end local 1 // sun.security.ssl.SSLSessionImpl session
        end local 0 // sun.security.ssl.ServerHandshakeContext shc
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   14     0             shc  Lsun/security/ssl/ServerHandshakeContext;
            0   14     1         session  Lsun/security/ssl/SSLSessionImpl;
            0   14     2   pskBinderHash  Lsun/security/ssl/HandshakeHash;
            0   14     3          binder  [B
            1   14     4          pskOpt  Ljava/util/Optional<Ljavax/crypto/SecretKey;>;
            6   14     5             psk  Ljavax/crypto/SecretKey;
            7   14     6       binderKey  Ljavax/crypto/SecretKey;
            9   14     7  computedBinder  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      shc            
      session        
      pskBinderHash  
      binder         

  private static byte[] computeBinder(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey, sun.security.ssl.SSLSessionImpl, sun.security.ssl.HandshakeHash);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/SSLSessionImpl;Lsun/security/ssl/HandshakeHash;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // sun.security.ssl.HandshakeContext context
        start local 1 // javax.crypto.SecretKey binderKey
        start local 2 // sun.security.ssl.SSLSessionImpl session
        start local 3 // sun.security.ssl.HandshakeHash pskBinderHash
         0: .line 725
            aload 3 /* pskBinderHash */
         1: .line 726
            aload 2 /* session */
            invokevirtual sun.security.ssl.SSLSessionImpl.getProtocolVersion:()Lsun/security/ssl/ProtocolVersion;
            aload 2 /* session */
            invokevirtual sun.security.ssl.SSLSessionImpl.getSuite:()Lsun/security/ssl/CipherSuite;
         2: .line 725
            invokevirtual sun.security.ssl.HandshakeHash.determine:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;)V
         3: .line 727
            aload 3 /* pskBinderHash */
            invokevirtual sun.security.ssl.HandshakeHash.update:()V
         4: .line 728
            aload 3 /* pskBinderHash */
            invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
            astore 4 /* digest */
        start local 4 // byte[] digest
         5: .line 730
            aload 0 /* context */
            aload 1 /* binderKey */
            aload 2 /* session */
            aload 4 /* digest */
            invokestatic sun.security.ssl.PreSharedKeyExtension.computeBinder:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/SSLSessionImpl;[B)[B
            areturn
        end local 4 // byte[] digest
        end local 3 // sun.security.ssl.HandshakeHash pskBinderHash
        end local 2 // sun.security.ssl.SSLSessionImpl session
        end local 1 // javax.crypto.SecretKey binderKey
        end local 0 // sun.security.ssl.HandshakeContext context
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        context  Lsun/security/ssl/HandshakeContext;
            0    6     1      binderKey  Ljavax/crypto/SecretKey;
            0    6     2        session  Lsun/security/ssl/SSLSessionImpl;
            0    6     3  pskBinderHash  Lsun/security/ssl/HandshakeHash;
            5    6     4         digest  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      context        
      binderKey      
      session        
      pskBinderHash  

  private static byte[] computeBinder(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey, sun.security.ssl.HandshakeHash, sun.security.ssl.SSLSessionImpl, sun.security.ssl.HandshakeContext, sun.security.ssl.ClientHello$ClientHelloMessage, sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeySpec);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/HandshakeHash;Lsun/security/ssl/SSLSessionImpl;Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;Lsun/security/ssl/PreSharedKeyExtension$CHPreSharedKeySpec;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=7
        start local 0 // sun.security.ssl.HandshakeContext context
        start local 1 // javax.crypto.SecretKey binderKey
        start local 2 // sun.security.ssl.HandshakeHash hash
        start local 3 // sun.security.ssl.SSLSessionImpl session
        start local 4 // sun.security.ssl.HandshakeContext ctx
        start local 5 // sun.security.ssl.ClientHello$ClientHelloMessage hello
        start local 6 // sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeySpec pskPrototype
         0: .line 740
            new sun.security.ssl.PreSharedKeyExtension$PartialClientHelloMessage
            dup
            aload 4 /* ctx */
            aload 5 /* hello */
            aload 6 /* pskPrototype */
            invokespecial sun.security.ssl.PreSharedKeyExtension$PartialClientHelloMessage.<init>:(Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;Lsun/security/ssl/PreSharedKeyExtension$CHPreSharedKeySpec;)V
         1: .line 739
            astore 7 /* partialMsg */
        start local 7 // sun.security.ssl.PreSharedKeyExtension$PartialClientHelloMessage partialMsg
         2: .line 742
            new sun.security.ssl.SSLEngineOutputRecord
            dup
            aload 2 /* hash */
            invokespecial sun.security.ssl.SSLEngineOutputRecord.<init>:(Lsun/security/ssl/HandshakeHash;)V
            astore 8 /* record */
        start local 8 // sun.security.ssl.SSLEngineOutputRecord record
         3: .line 743
            new sun.security.ssl.HandshakeOutStream
            dup
            aload 8 /* record */
            invokespecial sun.security.ssl.HandshakeOutStream.<init>:(Lsun/security/ssl/OutputRecord;)V
            astore 9 /* hos */
        start local 9 // sun.security.ssl.HandshakeOutStream hos
         4: .line 744
            aload 7 /* partialMsg */
            aload 9 /* hos */
            invokevirtual sun.security.ssl.PreSharedKeyExtension$PartialClientHelloMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
         5: .line 746
            aload 2 /* hash */
            aload 3 /* session */
            invokevirtual sun.security.ssl.SSLSessionImpl.getProtocolVersion:()Lsun/security/ssl/ProtocolVersion;
            aload 3 /* session */
            invokevirtual sun.security.ssl.SSLSessionImpl.getSuite:()Lsun/security/ssl/CipherSuite;
            invokevirtual sun.security.ssl.HandshakeHash.determine:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;)V
         6: .line 747
            aload 2 /* hash */
            invokevirtual sun.security.ssl.HandshakeHash.update:()V
         7: .line 748
            aload 2 /* hash */
            invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
            astore 10 /* digest */
        start local 10 // byte[] digest
         8: .line 750
            aload 0 /* context */
            aload 1 /* binderKey */
            aload 3 /* session */
            aload 10 /* digest */
            invokestatic sun.security.ssl.PreSharedKeyExtension.computeBinder:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/SSLSessionImpl;[B)[B
            areturn
        end local 10 // byte[] digest
        end local 9 // sun.security.ssl.HandshakeOutStream hos
        end local 8 // sun.security.ssl.SSLEngineOutputRecord record
        end local 7 // sun.security.ssl.PreSharedKeyExtension$PartialClientHelloMessage partialMsg
        end local 6 // sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeySpec pskPrototype
        end local 5 // sun.security.ssl.ClientHello$ClientHelloMessage hello
        end local 4 // sun.security.ssl.HandshakeContext ctx
        end local 3 // sun.security.ssl.SSLSessionImpl session
        end local 2 // sun.security.ssl.HandshakeHash hash
        end local 1 // javax.crypto.SecretKey binderKey
        end local 0 // sun.security.ssl.HandshakeContext context
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0       context  Lsun/security/ssl/HandshakeContext;
            0    9     1     binderKey  Ljavax/crypto/SecretKey;
            0    9     2          hash  Lsun/security/ssl/HandshakeHash;
            0    9     3       session  Lsun/security/ssl/SSLSessionImpl;
            0    9     4           ctx  Lsun/security/ssl/HandshakeContext;
            0    9     5         hello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            0    9     6  pskPrototype  Lsun/security/ssl/PreSharedKeyExtension$CHPreSharedKeySpec;
            2    9     7    partialMsg  Lsun/security/ssl/PreSharedKeyExtension$PartialClientHelloMessage;
            3    9     8        record  Lsun/security/ssl/SSLEngineOutputRecord;
            4    9     9           hos  Lsun/security/ssl/HandshakeOutStream;
            8    9    10        digest  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      context       
      binderKey     
      hash          
      session       
      ctx           
      hello         
      pskPrototype  

  private static byte[] computeBinder(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey, sun.security.ssl.SSLSessionImpl, byte[]);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/SSLSessionImpl;[B)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // sun.security.ssl.HandshakeContext context
        start local 1 // javax.crypto.SecretKey binderKey
        start local 2 // sun.security.ssl.SSLSessionImpl session
        start local 3 // byte[] digest
         0: .line 757
            aload 2 /* session */
            invokevirtual sun.security.ssl.SSLSessionImpl.getSuite:()Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 4 /* hashAlg */
        start local 4 // sun.security.ssl.CipherSuite$HashAlg hashAlg
         1: .line 758
            new sun.security.ssl.HKDF
            dup
            aload 4 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            invokespecial sun.security.ssl.HKDF.<init>:(Ljava/lang/String;)V
            astore 5 /* hkdf */
        start local 5 // sun.security.ssl.HKDF hkdf
         2: .line 759
            ldc "tls13 finished"
            invokevirtual java.lang.String.getBytes:()[B
            astore 6 /* label */
        start local 6 // byte[] label
         3: .line 761
            aload 6 /* label */
            iconst_0
            newarray 8
            aload 4 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
         4: .line 760
            invokestatic sun.security.ssl.SSLSecretDerivation.createHkdfInfo:([B[BI)[B
            astore 7 /* hkdfInfo */
        start local 7 // byte[] hkdfInfo
         5: .line 762
            aload 5 /* hkdf */
         6: .line 763
            aload 1 /* binderKey */
            aload 7 /* hkdfInfo */
            aload 4 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            ldc "TlsBinderKey"
         7: .line 762
            invokevirtual sun.security.ssl.HKDF.expand:(Ljavax/crypto/SecretKey;[BILjava/lang/String;)Ljavax/crypto/SecretKey;
            astore 8 /* finishedKey */
        start local 8 // javax.crypto.SecretKey finishedKey
         8: .line 766
            new java.lang.StringBuilder
            dup
            ldc "Hmac"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            ldc "-"
            ldc ""
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 765
            astore 9 /* hmacAlg */
        start local 9 // java.lang.String hmacAlg
        10: .line 768
            aload 9 /* hmacAlg */
            invokestatic sun.security.ssl.JsseJce.getMac:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 10 /* hmac */
        start local 10 // javax.crypto.Mac hmac
        11: .line 769
            aload 10 /* hmac */
            aload 8 /* finishedKey */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
        12: .line 770
            aload 10 /* hmac */
            aload 3 /* digest */
            invokevirtual javax.crypto.Mac.doFinal:([B)[B
        13: areturn
        end local 10 // javax.crypto.Mac hmac
        14: .line 771
      StackMap locals: sun.security.ssl.HandshakeContext javax.crypto.SecretKey sun.security.ssl.SSLSessionImpl byte[] sun.security.ssl.CipherSuite$HashAlg sun.security.ssl.HKDF byte[] byte[] javax.crypto.SecretKey java.lang.String
      StackMap stack: java.security.GeneralSecurityException
            astore 10 /* ex */
        start local 10 // java.security.GeneralSecurityException ex
        15: .line 772
            aload 0 /* context */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
            aload 10 /* ex */
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 10 // java.security.GeneralSecurityException ex
        end local 9 // java.lang.String hmacAlg
        end local 8 // javax.crypto.SecretKey finishedKey
        end local 7 // byte[] hkdfInfo
        end local 6 // byte[] label
        end local 5 // sun.security.ssl.HKDF hkdf
        end local 4 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        16: .line 774
      StackMap locals: sun.security.ssl.HandshakeContext javax.crypto.SecretKey sun.security.ssl.SSLSessionImpl byte[]
      StackMap stack: java.security.GeneralSecurityException
            astore 4 /* ex */
        start local 4 // java.security.GeneralSecurityException ex
        17: .line 775
            aload 0 /* context */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
            aload 4 /* ex */
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 4 // java.security.GeneralSecurityException ex
        end local 3 // byte[] digest
        end local 2 // sun.security.ssl.SSLSessionImpl session
        end local 1 // javax.crypto.SecretKey binderKey
        end local 0 // sun.security.ssl.HandshakeContext context
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0      context  Lsun/security/ssl/HandshakeContext;
            0   18     1    binderKey  Ljavax/crypto/SecretKey;
            0   18     2      session  Lsun/security/ssl/SSLSessionImpl;
            0   18     3       digest  [B
            1   16     4      hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
            2   16     5         hkdf  Lsun/security/ssl/HKDF;
            3   16     6        label  [B
            5   16     7     hkdfInfo  [B
            8   16     8  finishedKey  Ljavax/crypto/SecretKey;
           10   16     9      hmacAlg  Ljava/lang/String;
           11   14    10         hmac  Ljavax/crypto/Mac;
           15   16    10           ex  Ljava/security/GeneralSecurityException;
           17   18     4           ex  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
          10    13      14  Class java.security.NoSuchAlgorithmException
          10    13      14  Class java.security.InvalidKeyException
           0    13      16  Class java.security.GeneralSecurityException
          14    16      16  Class java.security.GeneralSecurityException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      context    
      binderKey  
      session    
      digest     

  private static javax.crypto.SecretKey deriveBinderKey(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey, sun.security.ssl.SSLSessionImpl);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;Lsun/security/ssl/SSLSessionImpl;)Ljavax/crypto/SecretKey;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // sun.security.ssl.HandshakeContext context
        start local 1 // javax.crypto.SecretKey psk
        start local 2 // sun.security.ssl.SSLSessionImpl session
         0: .line 782
            aload 2 /* session */
            invokevirtual sun.security.ssl.SSLSessionImpl.getSuite:()Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 3 /* hashAlg */
        start local 3 // sun.security.ssl.CipherSuite$HashAlg hashAlg
         1: .line 783
            new sun.security.ssl.HKDF
            dup
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            invokespecial sun.security.ssl.HKDF.<init>:(Ljava/lang/String;)V
            astore 4 /* hkdf */
        start local 4 // sun.security.ssl.HKDF hkdf
         2: .line 784
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            newarray 8
            astore 5 /* zeros */
        start local 5 // byte[] zeros
         3: .line 785
            aload 4 /* hkdf */
            aload 5 /* zeros */
            aload 1 /* psk */
            ldc "TlsEarlySecret"
            invokevirtual sun.security.ssl.HKDF.extract:([BLjavax/crypto/SecretKey;Ljava/lang/String;)Ljavax/crypto/SecretKey;
            astore 6 /* earlySecret */
        start local 6 // javax.crypto.SecretKey earlySecret
         4: .line 787
            ldc "tls13 res binder"
            invokevirtual java.lang.String.getBytes:()[B
            astore 7 /* label */
        start local 7 // byte[] label
         5: .line 788
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 8 /* md */
        start local 8 // java.security.MessageDigest md
         6: .line 790
            aload 7 /* label */
            aload 8 /* md */
            iconst_0
            newarray 8
            invokevirtual java.security.MessageDigest.digest:([B)[B
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
         7: .line 789
            invokestatic sun.security.ssl.SSLSecretDerivation.createHkdfInfo:([B[BI)[B
            astore 9 /* hkdfInfo */
        start local 9 // byte[] hkdfInfo
         8: .line 791
            aload 4 /* hkdf */
            aload 6 /* earlySecret */
         9: .line 792
            aload 9 /* hkdfInfo */
            aload 3 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            ldc "TlsBinderKey"
        10: .line 791
            invokevirtual sun.security.ssl.HKDF.expand:(Ljavax/crypto/SecretKey;[BILjava/lang/String;)Ljavax/crypto/SecretKey;
        11: areturn
        end local 9 // byte[] hkdfInfo
        end local 8 // java.security.MessageDigest md
        end local 7 // byte[] label
        end local 6 // javax.crypto.SecretKey earlySecret
        end local 5 // byte[] zeros
        end local 4 // sun.security.ssl.HKDF hkdf
        end local 3 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        12: .line 793
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 3 /* ex */
        start local 3 // java.security.GeneralSecurityException ex
        13: .line 794
            aload 0 /* context */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
            aload 3 /* ex */
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 3 // java.security.GeneralSecurityException ex
        end local 2 // sun.security.ssl.SSLSessionImpl session
        end local 1 // javax.crypto.SecretKey psk
        end local 0 // sun.security.ssl.HandshakeContext context
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0      context  Lsun/security/ssl/HandshakeContext;
            0   14     1          psk  Ljavax/crypto/SecretKey;
            0   14     2      session  Lsun/security/ssl/SSLSessionImpl;
            1   12     3      hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
            2   12     4         hkdf  Lsun/security/ssl/HKDF;
            3   12     5        zeros  [B
            4   12     6  earlySecret  Ljavax/crypto/SecretKey;
            5   12     7        label  [B
            6   12     8           md  Ljava/security/MessageDigest;
            8   12     9     hkdfInfo  [B
           13   14     3           ex  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           0    11      12  Class java.security.GeneralSecurityException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
      psk      
      session  
}
SourceFile: "PreSharedKeyExtension.java"
NestMembers:
  sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyAbsence  sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyConsumer  sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyProducer  sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeySpec  sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyStringizer  sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyUpdate  sun.security.ssl.PreSharedKeyExtension$PartialClientHelloMessage  sun.security.ssl.PreSharedKeyExtension$PskIdentity  sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyAbsence  sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyConsumer  sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyProducer  sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeySpec  sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyStringizer
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 CHPreSharedKeyAbsence = sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyAbsence of sun.security.ssl.PreSharedKeyExtension
  private final CHPreSharedKeyConsumer = sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyConsumer of sun.security.ssl.PreSharedKeyExtension
  private final CHPreSharedKeyProducer = sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyProducer of sun.security.ssl.PreSharedKeyExtension
  private final CHPreSharedKeySpec = sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeySpec of sun.security.ssl.PreSharedKeyExtension
  private final CHPreSharedKeyStringizer = sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyStringizer of sun.security.ssl.PreSharedKeyExtension
  private final CHPreSharedKeyUpdate = sun.security.ssl.PreSharedKeyExtension$CHPreSharedKeyUpdate of sun.security.ssl.PreSharedKeyExtension
  final PartialClientHelloMessage = sun.security.ssl.PreSharedKeyExtension$PartialClientHelloMessage of sun.security.ssl.PreSharedKeyExtension
  private final PskIdentity = sun.security.ssl.PreSharedKeyExtension$PskIdentity of sun.security.ssl.PreSharedKeyExtension
  private final SHPreSharedKeyAbsence = sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyAbsence of sun.security.ssl.PreSharedKeyExtension
  private final SHPreSharedKeyConsumer = sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyConsumer of sun.security.ssl.PreSharedKeyExtension
  private final SHPreSharedKeyProducer = sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyProducer of sun.security.ssl.PreSharedKeyExtension
  private final SHPreSharedKeySpec = sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeySpec of sun.security.ssl.PreSharedKeyExtension
  private final SHPreSharedKeyStringizer = sun.security.ssl.PreSharedKeyExtension$SHPreSharedKeyStringizer of sun.security.ssl.PreSharedKeyExtension
  abstract ExtensionConsumer = sun.security.ssl.SSLExtension$ExtensionConsumer of sun.security.ssl.SSLExtension