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 664
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 666
            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 672
            aload 1 /* context */
            checkcast sun.security.ssl.HandshakeContext
            astore 3 /* hc */
        start local 3 // sun.security.ssl.HandshakeContext hc
         1: .line 673
            aload 3 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
            getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
            ifeq 5
         2: .line 674
            aload 0 /* this */
         3: .line 675
            aload 1 /* context */
            checkcast sun.security.ssl.ClientHandshakeContext
            aload 2 /* message */
         4: .line 674
            invokevirtual sun.security.ssl.Finished$T13FinishedProducer.onProduceFinished:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            areturn
         5: .line 677
      StackMap locals: sun.security.ssl.HandshakeContext
      StackMap stack:
            aload 0 /* this */
         6: .line 678
            aload 1 /* context */
            checkcast sun.security.ssl.ServerHandshakeContext
            aload 2 /* message */
         7: .line 677
            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 685
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.update:()V
         1: .line 687
            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 688
            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 690
            ldc "Produced client Finished handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* fm */
            aastore
         4: .line 689
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 694
      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 695
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
         7: .line 698
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.secureRenegotiation:Z
            ifeq 9
         8: .line 699
            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 704
      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 705
            aload 4 /* kd */
            ifnonnull 14
        11: .line 707
            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 708
            ldc "no key derivation"
        13: .line 707
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        14: .line 712
      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 711
            astore 5 /* kdg */
        start local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
        16: .line 713
            aload 5 /* kdg */
            ifnonnull 22
        17: .line 715
            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 716
            new java.lang.StringBuilder
            dup
            ldc "Not supported key derivation: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 717
            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 716
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        21: .line 715
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        22: .line 722
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation
      StackMap stack:
            aload 4 /* kd */
        23: .line 723
            ldc "TlsClientAppTrafficSecret"
            aconst_null
        24: .line 722
            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 726
            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 725
            astore 7 /* writeKD */
        start local 7 // sun.security.ssl.SSLKeyDerivation writeKD
        27: .line 727
            aload 7 /* writeKD */
        28: .line 728
            ldc "TlsKey"
            aconst_null
        29: .line 727
            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 729
            aload 7 /* writeKD */
        31: .line 730
            ldc "TlsIv"
            aconst_null
        32: .line 729
            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 732
            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 731
            astore 10 /* writeIv */
        start local 10 // javax.crypto.spec.IvParameterSpec writeIv
        35: .line 734
            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 735
            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 736
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            aload 8 /* writeKey */
            aload 10 /* writeIv */
        38: .line 737
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        39: .line 734
            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 733
            astore 11 /* writeCipher */
        start local 11 // sun.security.ssl.SSLCipher$SSLWriteCipher writeCipher
        41: .line 739
            aload 11 /* writeCipher */
            ifnonnull 48
        42: .line 740
            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 741
            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 742
            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 743
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        46: .line 741
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        47: .line 740
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        48: .line 746
      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 747
            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 748
            aload 11 /* writeCipher */
            iconst_0
        51: .line 747
            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 750
            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 751
            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 752
            ldc "Failure to derive application secrets"
            aload 6 /* gse */
        56: .line 751
            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 757
      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 758
            aload 6 /* sd */
        59: .line 759
            ldc "TlsResumptionMasterSecret"
            aconst_null
        60: .line 758
            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 760
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
        62: .line 761
            aload 7 /* resumptionMasterSecret */
        63: .line 760
            invokevirtual sun.security.ssl.SSLSessionImpl.setResumptionMasterSecret:(Ljavax/crypto/SecretKey;)V
        64: .line 763
            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 764
            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 767
            aload 1 /* chc */
            iconst_1
            putfield sun.security.ssl.ClientHandshakeContext.handshakeFinished:Z
        67: .line 768
            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 769
            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 773
            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 779
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.update:()V
         1: .line 781
            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 782
            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 784
            ldc "Produced server Finished handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* fm */
            aastore
         4: .line 783
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 788
      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 789
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
         7: .line 792
            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 793
            aload 4 /* kd */
            ifnonnull 12
         9: .line 795
            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 796
            ldc "no key derivation"
        11: .line 795
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        12: .line 800
      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 799
            astore 5 /* kdg */
        start local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
        14: .line 801
            aload 5 /* kdg */
            ifnonnull 20
        15: .line 803
            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 804
            new java.lang.StringBuilder
            dup
            ldc "Not supported key derivation: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 805
            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 804
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 803
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        20: .line 810
      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 813
            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 814
            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 815
            aload 7 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            newarray 8
            astore 9 /* zeros */
        start local 9 // byte[] zeros
        24: .line 817
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 9 /* zeros */
            ldc "TlsZeroSecret"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
        25: .line 816
            astore 10 /* sharedSecret */
        start local 10 // javax.crypto.spec.SecretKeySpec sharedSecret
        26: .line 819
            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 818
            astore 11 /* masterSecret */
        start local 11 // javax.crypto.SecretKey masterSecret
        28: .line 822
            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 821
            astore 12 /* secretKD */
        start local 12 // sun.security.ssl.SSLKeyDerivation secretKD
        30: .line 825
            aload 12 /* secretKD */
        31: .line 826
            ldc "TlsServerAppTrafficSecret"
            aconst_null
        32: .line 825
            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 828
            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 827
            astore 14 /* writeKD */
        start local 14 // sun.security.ssl.SSLKeyDerivation writeKD
        35: .line 829
            aload 14 /* writeKD */
        36: .line 830
            ldc "TlsKey"
            aconst_null
        37: .line 829
            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 831
            aload 14 /* writeKD */
        39: .line 832
            ldc "TlsIv"
            aconst_null
        40: .line 831
            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 834
            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 833
            astore 17 /* writeIv */
        start local 17 // javax.crypto.spec.IvParameterSpec writeIv
        43: .line 836
            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 837
            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 838
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            aload 15 /* writeKey */
            aload 17 /* writeIv */
        46: .line 839
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        47: .line 836
            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 835
            astore 18 /* writeCipher */
        start local 18 // sun.security.ssl.SSLCipher$SSLWriteCipher writeCipher
        49: .line 841
            aload 18 /* writeCipher */
            ifnonnull 56
        50: .line 842
            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 843
            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 844
            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 845
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        54: .line 843
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        55: .line 842
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        56: .line 848
      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 849
            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 850
            aload 18 /* writeCipher */
            iconst_0
        59: .line 849
            invokevirtual sun.security.ssl.OutputRecord.changeWriteCiphers:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;Z)V
        60: .line 853
            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 854
            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 855
            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 856
            ldc "Failure to derive application secrets"
            aload 6 /* gse */
        65: .line 855
            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 862
      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 863
            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 867
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
        69: .line 868
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.engineGetServerSessionContext:()Ljavax/net/ssl/SSLSessionContext;
        70: .line 867
            checkcast sun.security.ssl.SSLSessionContextImpl
            invokevirtual sun.security.ssl.SSLSessionImpl.setContext:(Lsun/security/ssl/SSLSessionContextImpl;)V
        71: .line 869
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.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;
        72: .line 872
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
        73: .line 873
            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;
        74: .line 872
            invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        75: .line 876
            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   76     0           this  Lsun/security/ssl/Finished$T13FinishedProducer;
            0   76     1            shc  Lsun/security/ssl/ServerHandshakeContext;
            0   76     2        message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            2   76     3             fm  Lsun/security/ssl/Finished$FinishedMessage;
            8   76     4             kd  Lsun/security/ssl/SSLKeyDerivation;
           14   76     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