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

  public void consume(sun.security.ssl.ConnectionContext, java.nio.ByteBuffer);
    descriptor: (Lsun/security/ssl/ConnectionContext;Ljava/nio/ByteBuffer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=12, args_size=3
        start local 0 // sun.security.ssl.KeyUpdate$KeyUpdateConsumer this
        start local 1 // sun.security.ssl.ConnectionContext context
        start local 2 // java.nio.ByteBuffer message
         0: .line 189
            aload 1 /* context */
            checkcast sun.security.ssl.PostHandshakeContext
            astore 3 /* hc */
        start local 3 // sun.security.ssl.PostHandshakeContext hc
         1: .line 190
            new sun.security.ssl.KeyUpdate$KeyUpdateMessage
            dup
            aload 3 /* hc */
            aload 2 /* message */
            invokespecial sun.security.ssl.KeyUpdate$KeyUpdateMessage.<init>:(Lsun/security/ssl/PostHandshakeContext;Ljava/nio/ByteBuffer;)V
            astore 4 /* km */
        start local 4 // sun.security.ssl.KeyUpdate$KeyUpdateMessage km
         2: .line 191
            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 193
            ldc "Consuming KeyUpdate post-handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* km */
            aastore
         4: .line 192
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 198
      StackMap locals: sun.security.ssl.PostHandshakeContext sun.security.ssl.KeyUpdate$KeyUpdateMessage
      StackMap stack:
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokestatic sun.security.ssl.SSLTrafficKeyDerivation.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SSLTrafficKeyDerivation;
         6: .line 197
            astore 5 /* kdg */
        start local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
         7: .line 199
            aload 5 /* kdg */
            ifnonnull 13
         8: .line 201
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
         9: .line 202
            new java.lang.StringBuilder
            dup
            ldc "Not supported key derivation: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 203
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        11: .line 202
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 201
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        13: .line 206
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation
      StackMap stack:
            aload 5 /* kdg */
            aload 3 /* hc */
        14: .line 207
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.inputRecord:Lsun/security/ssl/InputRecord;
            getfield sun.security.ssl.InputRecord.readCipher:Lsun/security/ssl/SSLCipher$SSLReadCipher;
            getfield sun.security.ssl.SSLCipher$SSLReadCipher.baseSecret:Ljavax/crypto/SecretKey;
        15: .line 206
            invokevirtual sun.security.ssl.SSLTrafficKeyDerivation.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)Lsun/security/ssl/SSLKeyDerivation;
            astore 6 /* skd */
        start local 6 // sun.security.ssl.SSLKeyDerivation skd
        16: .line 208
            aload 6 /* skd */
            ifnonnull 20
        17: .line 210
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
        18: .line 211
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
            ldc "no key derivation"
        19: .line 210
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        20: .line 214
      StackMap locals: sun.security.ssl.SSLKeyDerivation
      StackMap stack:
            aload 6 /* skd */
            ldc "TlsUpdateNplus1"
            aconst_null
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 7 /* nplus1 */
        start local 7 // javax.crypto.SecretKey nplus1
        21: .line 215
            aload 5 /* kdg */
            aload 3 /* hc */
            aload 7 /* nplus1 */
            invokevirtual sun.security.ssl.SSLTrafficKeyDerivation.createKeyDerivation:(Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)Lsun/security/ssl/SSLKeyDerivation;
            astore 8 /* kd */
        start local 8 // sun.security.ssl.SSLKeyDerivation kd
        22: .line 216
            aload 8 /* kd */
            ldc "TlsKey"
            aconst_null
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            astore 9 /* key */
        start local 9 // javax.crypto.SecretKey key
        23: .line 217
            new javax.crypto.spec.IvParameterSpec
            dup
        24: .line 218
            aload 8 /* kd */
            ldc "TlsIv"
            aconst_null
            invokeinterface sun.security.ssl.SSLKeyDerivation.deriveKey:(Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
        25: .line 217
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 10 /* ivSpec */
        start local 10 // javax.crypto.spec.IvParameterSpec ivSpec
        26: .line 221
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.bulkCipher:Lsun/security/ssl/SSLCipher;
        27: .line 222
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokestatic sun.security.ssl.Authenticator.valueOf:(Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/Authenticator;
        28: .line 223
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            aload 9 /* key */
            aload 10 /* ivSpec */
        29: .line 224
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
        30: .line 221
            invokevirtual sun.security.ssl.SSLCipher.createReadCipher:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/ProtocolVersion;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;)Lsun/security/ssl/SSLCipher$SSLReadCipher;
        31: .line 220
            astore 11 /* rc */
        start local 11 // sun.security.ssl.SSLCipher$SSLReadCipher rc
        32: .line 226
            aload 11 /* rc */
            ifnonnull 39
        33: .line 227
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
        34: .line 228
            new java.lang.StringBuilder
            dup
            ldc "Illegal cipher suite ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        35: .line 229
            ldc ") and protocol version ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        36: .line 230
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        37: .line 228
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        38: .line 227
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        39: .line 233
      StackMap locals: sun.security.ssl.KeyUpdate$KeyUpdateConsumer sun.security.ssl.ConnectionContext java.nio.ByteBuffer sun.security.ssl.PostHandshakeContext sun.security.ssl.KeyUpdate$KeyUpdateMessage sun.security.ssl.SSLTrafficKeyDerivation sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec sun.security.ssl.SSLCipher$SSLReadCipher
      StackMap stack:
            aload 11 /* rc */
            aload 7 /* nplus1 */
            putfield sun.security.ssl.SSLCipher$SSLReadCipher.baseSecret:Ljavax/crypto/SecretKey;
        40: .line 234
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.inputRecord:Lsun/security/ssl/InputRecord;
            aload 11 /* rc */
            invokevirtual sun.security.ssl.InputRecord.changeReadCiphers:(Lsun/security/ssl/SSLCipher$SSLReadCipher;)V
        41: .line 235
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 48
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 48
        42: .line 236
            ldc "KeyUpdate: read key updated"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        end local 11 // sun.security.ssl.SSLCipher$SSLReadCipher rc
        43: .line 238
            goto 48
      StackMap locals: sun.security.ssl.KeyUpdate$KeyUpdateConsumer sun.security.ssl.ConnectionContext java.nio.ByteBuffer sun.security.ssl.PostHandshakeContext sun.security.ssl.KeyUpdate$KeyUpdateMessage sun.security.ssl.SSLTrafficKeyDerivation sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey sun.security.ssl.SSLKeyDerivation javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec
      StackMap stack: java.security.GeneralSecurityException
        44: astore 11 /* gse */
        start local 11 // java.security.GeneralSecurityException gse
        45: .line 239
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        46: .line 240
            ldc "Failure to derive read secrets"
            aload 11 /* gse */
        47: .line 239
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 11 // java.security.GeneralSecurityException gse
        48: .line 243
      StackMap locals:
      StackMap stack:
            aload 4 /* km */
            getfield sun.security.ssl.KeyUpdate$KeyUpdateMessage.status:Lsun/security/ssl/KeyUpdate$KeyUpdateRequest;
            getstatic sun.security.ssl.KeyUpdate$KeyUpdateRequest.REQUESTED:Lsun/security/ssl/KeyUpdate$KeyUpdateRequest;
            if_acmpne 53
        49: .line 245
            getstatic sun.security.ssl.KeyUpdate.handshakeProducer:Lsun/security/ssl/HandshakeProducer;
            aload 3 /* hc */
        50: .line 246
            new sun.security.ssl.KeyUpdate$KeyUpdateMessage
            dup
            aload 3 /* hc */
            getstatic sun.security.ssl.KeyUpdate$KeyUpdateRequest.NOTREQUESTED:Lsun/security/ssl/KeyUpdate$KeyUpdateRequest;
            invokespecial sun.security.ssl.KeyUpdate$KeyUpdateMessage.<init>:(Lsun/security/ssl/PostHandshakeContext;Lsun/security/ssl/KeyUpdate$KeyUpdateRequest;)V
        51: .line 245
            invokeinterface sun.security.ssl.HandshakeProducer.produce:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            pop
        52: .line 247
            return
        53: .line 251
      StackMap locals:
      StackMap stack:
            aload 3 /* hc */
            getfield sun.security.ssl.PostHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            invokevirtual sun.security.ssl.TransportContext.finishPostHandshake:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
            pop
        54: .line 252
            return
        end local 10 // javax.crypto.spec.IvParameterSpec ivSpec
        end local 9 // javax.crypto.SecretKey key
        end local 8 // sun.security.ssl.SSLKeyDerivation kd
        end local 7 // javax.crypto.SecretKey nplus1
        end local 6 // sun.security.ssl.SSLKeyDerivation skd
        end local 5 // sun.security.ssl.SSLTrafficKeyDerivation kdg
        end local 4 // sun.security.ssl.KeyUpdate$KeyUpdateMessage km
        end local 3 // sun.security.ssl.PostHandshakeContext hc
        end local 2 // java.nio.ByteBuffer message
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.KeyUpdate$KeyUpdateConsumer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   55     0     this  Lsun/security/ssl/KeyUpdate$KeyUpdateConsumer;
            0   55     1  context  Lsun/security/ssl/ConnectionContext;
            0   55     2  message  Ljava/nio/ByteBuffer;
            1   55     3       hc  Lsun/security/ssl/PostHandshakeContext;
            2   55     4       km  Lsun/security/ssl/KeyUpdate$KeyUpdateMessage;
            7   55     5      kdg  Lsun/security/ssl/SSLTrafficKeyDerivation;
           16   55     6      skd  Lsun/security/ssl/SSLKeyDerivation;
           21   55     7   nplus1  Ljavax/crypto/SecretKey;
           22   55     8       kd  Lsun/security/ssl/SSLKeyDerivation;
           23   55     9      key  Ljavax/crypto/SecretKey;
           26   55    10   ivSpec  Ljavax/crypto/spec/IvParameterSpec;
           32   43    11       rc  Lsun/security/ssl/SSLCipher$SSLReadCipher;
           45   48    11      gse  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
          26    43      44  Class java.security.GeneralSecurityException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
      message  
}
SourceFile: "KeyUpdate.java"
NestHost: sun.security.ssl.KeyUpdate
InnerClasses:
  public final HandshakeStatus = javax.net.ssl.SSLEngineResult$HandshakeStatus of javax.net.ssl.SSLEngineResult
  private final KeyUpdateConsumer = sun.security.ssl.KeyUpdate$KeyUpdateConsumer of sun.security.ssl.KeyUpdate
  final KeyUpdateMessage = sun.security.ssl.KeyUpdate$KeyUpdateMessage of sun.security.ssl.KeyUpdate
  final KeyUpdateRequest = sun.security.ssl.KeyUpdate$KeyUpdateRequest of sun.security.ssl.KeyUpdate
  abstract SSLReadCipher = sun.security.ssl.SSLCipher$SSLReadCipher of sun.security.ssl.SSLCipher
  abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake