final class sun.security.ssl.Finished$T13FinishedProducer implements sun.security.ssl.HandshakeProducer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.Finished$T13FinishedProducer
  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.Finished$T13FinishedProducer this
         0: .line 638
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 640
            return
        end local 0 // sun.security.ssl.Finished$T13FinishedProducer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/Finished$T13FinishedProducer;

  public byte[] produce(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
    descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.security.ssl.Finished$T13FinishedProducer this
        start local 1 // sun.security.ssl.ConnectionContext context
        start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
         0: .line 646
            aload 1 /* context */
            checkcast sun.security.ssl.HandshakeContext
            astore 3 /* hc */
        start local 3 // sun.security.ssl.HandshakeContext hc
         1: .line 647
            aload 3 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
            getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
            ifeq 5
         2: .line 648
            aload 0 /* this */
         3: .line 649
            aload 1 /* context */
            checkcast sun.security.ssl.ClientHandshakeContext
            aload 2 /* message */
         4: .line 648
            invokevirtual sun.security.ssl.Finished$T13FinishedProducer.onProduceFinished:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            areturn
         5: .line 651
      StackMap locals: sun.security.ssl.HandshakeContext
      StackMap stack:
            aload 0 /* this */
         6: .line 652
            aload 1 /* context */
            checkcast sun.security.ssl.ServerHandshakeContext
            aload 2 /* message */
         7: .line 651
            invokevirtual sun.security.ssl.Finished$T13FinishedProducer.onProduceFinished:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            areturn
        end local 3 // sun.security.ssl.HandshakeContext hc
        end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.Finished$T13FinishedProducer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lsun/security/ssl/Finished$T13FinishedProducer;
            0    8     1  context  Lsun/security/ssl/ConnectionContext;
            0    8     2  message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            1    8     3       hc  Lsun/security/ssl/HandshakeContext;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
      message  

  private byte[] onProduceFinished(sun.security.ssl.ClientHandshakeContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
    descriptor: (Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=12, args_size=3
        start local 0 // sun.security.ssl.Finished$T13FinishedProducer this
        start local 1 // sun.security.ssl.ClientHandshakeContext chc
        start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
         0: .line 659
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.update:()V
         1: .line 661
            new sun.security.ssl.Finished$FinishedMessage
            dup
            aload 1 /* chc */
            invokespecial sun.security.ssl.Finished$FinishedMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
            astore 3 /* fm */
        start local 3 // sun.security.ssl.Finished$FinishedMessage fm
         2: .line 662
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 5
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 5
         3: .line 664
            ldc "Produced client Finished handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* fm */
            aastore
         4: .line 663
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 668
      StackMap locals: sun.security.ssl.Finished$FinishedMessage
      StackMap stack:
            aload 3 /* fm */
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.Finished$FinishedMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
         6: .line 669
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
         7: .line 672
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.secureRenegotiation:Z
            ifeq 9
         8: .line 673
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            aload 3 /* fm */
            getfield sun.security.ssl.Finished$FinishedMessage.verifyData:[B
            putfield sun.security.ssl.TransportContext.clientVerifyData:[B
         9: .line 678
      StackMap locals:
      StackMap stack:
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeKeyDerivation:Lsun/security/ssl/SSLKeyDerivation;
            astore 4 /* kd */
        start local 4 // sun.security.ssl.SSLKeyDerivation kd
        10: .line 679
            aload 4 /* kd */
            ifnonnull 14
        11: .line 681
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        12: .line 682
            ldc "no key derivation"
        13: .line 681
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        14: .line 686
      StackMap locals: sun.security.ssl.SSLKeyDerivation
      StackMap stack:
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokestatic sun.security.ssl.SSLTrafficKeyDerivation.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SSLTrafficKeyDerivation;
        15: .line 685
            astore 5 /* kdg */
        start local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
        16: .line 687
            aload 5 /* kdg */
            ifnonnull 22
        17: .line 689
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        18: .line 690
            new java.lang.StringBuilder
            dup
            ldc "Not supported key derivation: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 691
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        20: .line 690
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        21: .line 689
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        22: .line 696
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation
      StackMap stack:
            aload 4 /* kd */
        23: .line 697
            ldc "TlsClientAppTrafficSecret"
            aconst_null
        24: .line 696
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 6 /* writeSecret */
        start local 6 // javax.crypto.SecretKey writeSecret
        25: .line 700
            aload 5 /* kdg */
            aload 1 /* chc */
            aload 6 /* writeSecret */
            invokevirtual sun.security.ssl.SSLTrafficKeyDerivation.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)Lsun/security/ssl/SSLKeyDerivation;
        26: .line 699
            astore 7 /* writeKD */
        start local 7 // sun.security.ssl.SSLKeyDerivation writeKD
        27: .line 701
            aload 7 /* writeKD */
        28: .line 702
            ldc "TlsKey"
            aconst_null
        29: .line 701
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 8 /* writeKey */
        start local 8 // javax.crypto.SecretKey writeKey
        30: .line 703
            aload 7 /* writeKD */
        31: .line 704
            ldc "TlsIv"
            aconst_null
        32: .line 703
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 9 /* writeIvSecret */
        start local 9 // javax.crypto.SecretKey writeIvSecret
        33: .line 706
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 9 /* writeIvSecret */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
        34: .line 705
            astore 10 /* writeIv */
        start local 10 // javax.crypto.spec.IvParameterSpec writeIv
        35: .line 708
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.bulkCipher:Lsun/security/ssl/SSLCipher;
        36: .line 709
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokestatic sun.security.ssl.Authenticator.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/Authenticator;
        37: .line 710
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            aload 8 /* writeKey */
            aload 10 /* writeIv */
        38: .line 711
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        39: .line 708
            invokevirtual sun.security.ssl.SSLCipher.createWriteCipher:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/ProtocolVersion;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;)Lsun/security/ssl/SSLCipher$SSLWriteCipher;
        40: .line 707
            astore 11 /* writeCipher */
        start local 11 // sun.security.ssl.SSLCipher$SSLWriteCipher writeCipher
        41: .line 713
            aload 11 /* writeCipher */
            ifnonnull 48
        42: .line 714
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
        43: .line 715
            new java.lang.StringBuilder
            dup
            ldc "Illegal cipher suite ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        44: .line 716
            ldc ") and protocol version ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        45: .line 717
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        46: .line 715
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        47: .line 714
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        48: .line 720
      StackMap locals: sun.security.ssl.Finished$T13FinishedProducer sun.security.ssl.ClientHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.Finished$FinishedMessage sun.security.ssl.SSLKeyDerivation sun.security.ssl.SSLTrafficKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLWriteCipher
      StackMap stack:
            aload 1 /* chc */
            aload 6 /* writeSecret */
            putfield sun.security.ssl.ClientHandshakeContext.baseWriteSecret:Ljavax/crypto/SecretKey;
        49: .line 721
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.outputRecord:Lsun/security/ssl/OutputRecord;
        50: .line 722
            aload 11 /* writeCipher */
            iconst_0
        51: .line 721
            invokevirtual sun.security.ssl.OutputRecord.changeWriteCiphers:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;Z)V
        end local 11 // sun.security.ssl.SSLCipher$SSLWriteCipher writeCipher
        end local 10 // javax.crypto.spec.IvParameterSpec writeIv
        end local 9 // javax.crypto.SecretKey writeIvSecret
        end local 8 // javax.crypto.SecretKey writeKey
        end local 7 // sun.security.ssl.SSLKeyDerivation writeKD
        end local 6 // javax.crypto.SecretKey writeSecret
        52: .line 724
            goto 57
      StackMap locals: sun.security.ssl.Finished$T13FinishedProducer sun.security.ssl.ClientHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.Finished$FinishedMessage sun.security.ssl.SSLKeyDerivation sun.security.ssl.SSLTrafficKeyDerivation
      StackMap stack: java.security.GeneralSecurityException
        53: astore 6 /* gse */
        start local 6 // java.security.GeneralSecurityException gse
        54: .line 725
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        55: .line 726
            ldc "Failure to derive application secrets"
            aload 6 /* gse */
        56: .line 725
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 6 // java.security.GeneralSecurityException gse
        57: .line 731
      StackMap locals:
      StackMap stack:
            aload 4 /* kd */
            checkcast sun.security.ssl.SSLSecretDerivation
            aload 1 /* chc */
            invokevirtual sun.security.ssl.SSLSecretDerivation.forContext:(Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLSecretDerivation;
            astore 6 /* sd */
        start local 6 // sun.security.ssl.SSLSecretDerivation sd
        58: .line 732
            aload 6 /* sd */
        59: .line 733
            ldc "TlsResumptionMasterSecret"
            aconst_null
        60: .line 732
            invokevirtual sun.security.ssl.SSLSecretDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 7 /* resumptionMasterSecret */
        start local 7 // javax.crypto.SecretKey resumptionMasterSecret
        61: .line 734
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
        62: .line 735
            aload 7 /* resumptionMasterSecret */
        63: .line 734
            invokevirtual sun.security.ssl.SSLSessionImpl.setResumptionMasterSecret:(Ljavax/crypto/SecretKey;)V
        64: .line 737
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            invokevirtual sun.security.ssl.SSLSessionImpl.finish:()Lsun/security/ssl/SSLSessionImpl;
            putfield sun.security.ssl.TransportContext.conSession:Lsun/security/ssl/SSLSessionImpl;
        65: .line 738
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            putfield sun.security.ssl.TransportContext.protocolVersion:Lsun/security/ssl/ProtocolVersion;
        66: .line 741
            aload 1 /* chc */
            iconst_1
            putfield sun.security.ssl.ClientHandshakeContext.handshakeFinished:Z
        67: .line 742
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            invokevirtual sun.security.ssl.TransportContext.finishHandshake:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            pop
        68: .line 743
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.conSession:Lsun/security/ssl/SSLSessionImpl;
            invokestatic sun.security.ssl.Finished.recordEvent:(Lsun/security/ssl/SSLSessionImpl;)V
        69: .line 747
            aconst_null
            areturn
        end local 7 // javax.crypto.SecretKey resumptionMasterSecret
        end local 6 // sun.security.ssl.SSLSecretDerivation sd
        end local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
        end local 4 // sun.security.ssl.SSLKeyDerivation kd
        end local 3 // sun.security.ssl.Finished$FinishedMessage fm
        end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
        end local 1 // sun.security.ssl.ClientHandshakeContext chc
        end local 0 // sun.security.ssl.Finished$T13FinishedProducer this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   70     0                    this  Lsun/security/ssl/Finished$T13FinishedProducer;
            0   70     1                     chc  Lsun/security/ssl/ClientHandshakeContext;
            0   70     2                 message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            2   70     3                      fm  Lsun/security/ssl/Finished$FinishedMessage;
           10   70     4                      kd  Lsun/security/ssl/SSLKeyDerivation;
           16   70     5                     kdg  Lsun/security/ssl/SSLTrafficKeyDerivation;
           25   52     6             writeSecret  Ljavax/crypto/SecretKey;
           27   52     7                 writeKD  Lsun/security/ssl/SSLKeyDerivation;
           30   52     8                writeKey  Ljavax/crypto/SecretKey;
           33   52     9           writeIvSecret  Ljavax/crypto/SecretKey;
           35   52    10                 writeIv  Ljavax/crypto/spec/IvParameterSpec;
           41   52    11             writeCipher  Lsun/security/ssl/SSLCipher$SSLWriteCipher;
           54   57     6                     gse  Ljava/security/GeneralSecurityException;
           58   70     6                      sd  Lsun/security/ssl/SSLSecretDerivation;
           61   70     7  resumptionMasterSecret  Ljavax/crypto/SecretKey;
      Exception table:
        from    to  target  type
          22    52      53  Class java.security.GeneralSecurityException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      chc      
      message  

  private byte[] onProduceFinished(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=19, args_size=3
        start local 0 // sun.security.ssl.Finished$T13FinishedProducer this
        start local 1 // sun.security.ssl.ServerHandshakeContext shc
        start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
         0: .line 753
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.update:()V
         1: .line 755
            new sun.security.ssl.Finished$FinishedMessage
            dup
            aload 1 /* shc */
            invokespecial sun.security.ssl.Finished$FinishedMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
            astore 3 /* fm */
        start local 3 // sun.security.ssl.Finished$FinishedMessage fm
         2: .line 756
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 5
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 5
         3: .line 758
            ldc "Produced server Finished handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* fm */
            aastore
         4: .line 757
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 762
      StackMap locals: sun.security.ssl.Finished$FinishedMessage
      StackMap stack:
            aload 3 /* fm */
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.Finished$FinishedMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
         6: .line 763
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
         7: .line 766
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeKeyDerivation:Lsun/security/ssl/SSLKeyDerivation;
            astore 4 /* kd */
        start local 4 // sun.security.ssl.SSLKeyDerivation kd
         8: .line 767
            aload 4 /* kd */
            ifnonnull 12
         9: .line 769
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        10: .line 770
            ldc "no key derivation"
        11: .line 769
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        12: .line 774
      StackMap locals: sun.security.ssl.SSLKeyDerivation
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokestatic sun.security.ssl.SSLTrafficKeyDerivation.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SSLTrafficKeyDerivation;
        13: .line 773
            astore 5 /* kdg */
        start local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
        14: .line 775
            aload 5 /* kdg */
            ifnonnull 20
        15: .line 777
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        16: .line 778
            new java.lang.StringBuilder
            dup
            ldc "Not supported key derivation: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 779
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        18: .line 778
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 777
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        20: .line 784
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation
      StackMap stack:
            aload 4 /* kd */
            ldc "TlsSaltSecret"
            aconst_null
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 6 /* saltSecret */
        start local 6 // javax.crypto.SecretKey saltSecret
        21: .line 787
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 7 /* hashAlg */
        start local 7 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        22: .line 788
            new sun.security.ssl.HKDF
            dup
            aload 7 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            invokespecial sun.security.ssl.HKDF.<init>:(Ljava/lang/String;)V
            astore 8 /* hkdf */
        start local 8 // sun.security.ssl.HKDF hkdf
        23: .line 789
            aload 7 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            newarray 8
            astore 9 /* zeros */
        start local 9 // byte[] zeros
        24: .line 791
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 9 /* zeros */
            ldc "TlsZeroSecret"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
        25: .line 790
            astore 10 /* sharedSecret */
        start local 10 // javax.crypto.spec.SecretKeySpec sharedSecret
        26: .line 793
            aload 8 /* hkdf */
            aload 6 /* saltSecret */
            aload 10 /* sharedSecret */
            ldc "TlsMasterSecret"
            invokevirtual sun.security.ssl.HKDF.extract:(Ljavax/crypto/SecretKey;Ljavax/crypto/SecretKey;Ljava/lang/String;)Ljavax/crypto/SecretKey;
        27: .line 792
            astore 11 /* masterSecret */
        start local 11 // javax.crypto.SecretKey masterSecret
        28: .line 796
            new sun.security.ssl.SSLSecretDerivation
            dup
            aload 1 /* shc */
            aload 11 /* masterSecret */
            invokespecial sun.security.ssl.SSLSecretDerivation.<init>:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
        29: .line 795
            astore 12 /* secretKD */
        start local 12 // sun.security.ssl.SSLKeyDerivation secretKD
        30: .line 799
            aload 12 /* secretKD */
        31: .line 800
            ldc "TlsServerAppTrafficSecret"
            aconst_null
        32: .line 799
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 13 /* writeSecret */
        start local 13 // javax.crypto.SecretKey writeSecret
        33: .line 802
            aload 5 /* kdg */
            aload 1 /* shc */
            aload 13 /* writeSecret */
            invokevirtual sun.security.ssl.SSLTrafficKeyDerivation.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)Lsun/security/ssl/SSLKeyDerivation;
        34: .line 801
            astore 14 /* writeKD */
        start local 14 // sun.security.ssl.SSLKeyDerivation writeKD
        35: .line 803
            aload 14 /* writeKD */
        36: .line 804
            ldc "TlsKey"
            aconst_null
        37: .line 803
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 15 /* writeKey */
        start local 15 // javax.crypto.SecretKey writeKey
        38: .line 805
            aload 14 /* writeKD */
        39: .line 806
            ldc "TlsIv"
            aconst_null
        40: .line 805
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 16 /* writeIvSecret */
        start local 16 // javax.crypto.SecretKey writeIvSecret
        41: .line 808
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 16 /* writeIvSecret */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
        42: .line 807
            astore 17 /* writeIv */
        start local 17 // javax.crypto.spec.IvParameterSpec writeIv
        43: .line 810
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.bulkCipher:Lsun/security/ssl/SSLCipher;
        44: .line 811
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokestatic sun.security.ssl.Authenticator.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/Authenticator;
        45: .line 812
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            aload 15 /* writeKey */
            aload 17 /* writeIv */
        46: .line 813
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        47: .line 810
            invokevirtual sun.security.ssl.SSLCipher.createWriteCipher:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/ProtocolVersion;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;)Lsun/security/ssl/SSLCipher$SSLWriteCipher;
        48: .line 809
            astore 18 /* writeCipher */
        start local 18 // sun.security.ssl.SSLCipher$SSLWriteCipher writeCipher
        49: .line 815
            aload 18 /* writeCipher */
            ifnonnull 56
        50: .line 816
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
        51: .line 817
            new java.lang.StringBuilder
            dup
            ldc "Illegal cipher suite ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        52: .line 818
            ldc ") and protocol version ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        53: .line 819
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        54: .line 817
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        55: .line 816
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        56: .line 822
      StackMap locals: sun.security.ssl.Finished$T13FinishedProducer sun.security.ssl.ServerHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.Finished$FinishedMessage sun.security.ssl.SSLKeyDerivation sun.security.ssl.SSLTrafficKeyDerivation javax.crypto.SecretKey sun.security.ssl.CipherSuite$HashAlg sun.security.ssl.HKDF byte[] javax.crypto.spec.SecretKeySpec javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLWriteCipher
      StackMap stack:
            aload 1 /* shc */
            aload 13 /* writeSecret */
            putfield sun.security.ssl.ServerHandshakeContext.baseWriteSecret:Ljavax/crypto/SecretKey;
        57: .line 823
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.outputRecord:Lsun/security/ssl/OutputRecord;
        58: .line 824
            aload 18 /* writeCipher */
            iconst_0
        59: .line 823
            invokevirtual sun.security.ssl.OutputRecord.changeWriteCiphers:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;Z)V
        60: .line 827
            aload 1 /* shc */
            aload 12 /* secretKD */
            putfield sun.security.ssl.ServerHandshakeContext.handshakeKeyDerivation:Lsun/security/ssl/SSLKeyDerivation;
        end local 18 // sun.security.ssl.SSLCipher$SSLWriteCipher writeCipher
        end local 17 // javax.crypto.spec.IvParameterSpec writeIv
        end local 16 // javax.crypto.SecretKey writeIvSecret
        end local 15 // javax.crypto.SecretKey writeKey
        end local 14 // sun.security.ssl.SSLKeyDerivation writeKD
        end local 13 // javax.crypto.SecretKey writeSecret
        end local 12 // sun.security.ssl.SSLKeyDerivation secretKD
        end local 11 // javax.crypto.SecretKey masterSecret
        end local 10 // javax.crypto.spec.SecretKeySpec sharedSecret
        end local 9 // byte[] zeros
        end local 8 // sun.security.ssl.HKDF hkdf
        end local 7 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 6 // javax.crypto.SecretKey saltSecret
        61: .line 828
            goto 66
      StackMap locals: sun.security.ssl.Finished$T13FinishedProducer sun.security.ssl.ServerHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.Finished$FinishedMessage sun.security.ssl.SSLKeyDerivation sun.security.ssl.SSLTrafficKeyDerivation
      StackMap stack: java.security.GeneralSecurityException
        62: astore 6 /* gse */
        start local 6 // java.security.GeneralSecurityException gse
        63: .line 829
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        64: .line 830
            ldc "Failure to derive application secrets"
            aload 6 /* gse */
        65: .line 829
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 6 // java.security.GeneralSecurityException gse
        66: .line 836
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.secureRenegotiation:Z
            ifeq 68
        67: .line 837
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            aload 3 /* fm */
            getfield sun.security.ssl.Finished$FinishedMessage.verifyData:[B
            putfield sun.security.ssl.TransportContext.serverVerifyData:[B
        68: .line 841
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
        69: .line 842
            getstatic sun.security.ssl.SSLHandshake.FINISHED:Lsun/security/ssl/SSLHandshake;
            getfield sun.security.ssl.SSLHandshake.id:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            getstatic sun.security.ssl.SSLHandshake.FINISHED:Lsun/security/ssl/SSLHandshake;
        70: .line 841
            invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        71: .line 845
            aconst_null
            areturn
        end local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
        end local 4 // sun.security.ssl.SSLKeyDerivation kd
        end local 3 // sun.security.ssl.Finished$FinishedMessage fm
        end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
        end local 1 // sun.security.ssl.ServerHandshakeContext shc
        end local 0 // sun.security.ssl.Finished$T13FinishedProducer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   72     0           this  Lsun/security/ssl/Finished$T13FinishedProducer;
            0   72     1            shc  Lsun/security/ssl/ServerHandshakeContext;
            0   72     2        message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            2   72     3             fm  Lsun/security/ssl/Finished$FinishedMessage;
            8   72     4             kd  Lsun/security/ssl/SSLKeyDerivation;
           14   72     5            kdg  Lsun/security/ssl/SSLTrafficKeyDerivation;
           21   61     6     saltSecret  Ljavax/crypto/SecretKey;
           22   61     7        hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
           23   61     8           hkdf  Lsun/security/ssl/HKDF;
           24   61     9          zeros  [B
           26   61    10   sharedSecret  Ljavax/crypto/spec/SecretKeySpec;
           28   61    11   masterSecret  Ljavax/crypto/SecretKey;
           30   61    12       secretKD  Lsun/security/ssl/SSLKeyDerivation;
           33   61    13    writeSecret  Ljavax/crypto/SecretKey;
           35   61    14        writeKD  Lsun/security/ssl/SSLKeyDerivation;
           38   61    15       writeKey  Ljavax/crypto/SecretKey;
           41   61    16  writeIvSecret  Ljavax/crypto/SecretKey;
           43   61    17        writeIv  Ljavax/crypto/spec/IvParameterSpec;
           49   61    18    writeCipher  Lsun/security/ssl/SSLCipher$SSLWriteCipher;
           63   66     6            gse  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
          20    61      62  Class java.security.GeneralSecurityException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      shc      
      message  
}
SourceFile: "Finished.java"
NestHost: sun.security.ssl.Finished
InnerClasses:
  public final HandshakeStatus = javax.net.ssl.SSLEngineResult$HandshakeStatus of javax.net.ssl.SSLEngineResult
  final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
  private final FinishedMessage = sun.security.ssl.Finished$FinishedMessage of sun.security.ssl.Finished
  private final T13FinishedProducer = sun.security.ssl.Finished$T13FinishedProducer of sun.security.ssl.Finished
  abstract SSLWriteCipher = sun.security.ssl.SSLCipher$SSLWriteCipher of sun.security.ssl.SSLCipher
  abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake