final class sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation implements sun.security.ssl.SSLKeyDerivation
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation
  super_class: java.lang.Object
{
  private final sun.security.ssl.HandshakeContext context;
    descriptor: Lsun/security/ssl/HandshakeContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.crypto.SecretKey masterSecret;
    descriptor: Ljavax/crypto/SecretKey;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final sun.security.internal.spec.TlsKeyMaterialSpec keyMaterialSpec;
    descriptor: Lsun/security/internal/spec/TlsKeyMaterialSpec;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
    flags: (0x0000) 
    Code:
      stack=15, locals=16, args_size=3
        start local 0 // sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation this
        start local 1 // sun.security.ssl.HandshakeContext context
        start local 2 // javax.crypto.SecretKey masterSecret
         0: .line 208
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 210
            aload 0 /* this */
            aload 1 /* context */
            putfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
         2: .line 211
            aload 0 /* this */
            aload 2 /* masterSecret */
            putfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.masterSecret:Ljavax/crypto/SecretKey;
         3: .line 213
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            astore 3 /* cipherSuite */
        start local 3 // sun.security.ssl.CipherSuite cipherSuite
         4: .line 214
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            astore 4 /* protocolVersion */
        start local 4 // sun.security.ssl.ProtocolVersion protocolVersion
         5: .line 223
            aload 3 /* cipherSuite */
            getfield sun.security.ssl.CipherSuite.macAlg:Lsun/security/ssl/CipherSuite$MacAlg;
            getfield sun.security.ssl.CipherSuite$MacAlg.size:I
            istore 5 /* hashSize */
        start local 5 // int hashSize
         6: .line 224
            aload 3 /* cipherSuite */
            getfield sun.security.ssl.CipherSuite.exportable:Z
            istore 6 /* is_exportable */
        start local 6 // boolean is_exportable
         7: .line 225
            aload 3 /* cipherSuite */
            getfield sun.security.ssl.CipherSuite.bulkCipher:Lsun/security/ssl/SSLCipher;
            astore 7 /* cipher */
        start local 7 // sun.security.ssl.SSLCipher cipher
         8: .line 226
            iload 6 /* is_exportable */
            ifeq 9
            aload 7 /* cipher */
            getfield sun.security.ssl.SSLCipher.expandedKeySize:I
            goto 10
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation sun.security.ssl.HandshakeContext javax.crypto.SecretKey sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion int int sun.security.ssl.SSLCipher
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 8 /* expandedKeySize */
        start local 8 // int expandedKeySize
        11: .line 232
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.major:B
            istore 11 /* majorVersion */
        start local 11 // byte majorVersion
        12: .line 233
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.minor:B
            istore 12 /* minorVersion */
        start local 12 // byte minorVersion
        13: .line 234
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.id:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.id:I
            if_icmplt 17
        14: .line 235
            ldc "SunTls12KeyMaterial"
            astore 9 /* keyMaterialAlg */
        start local 9 // java.lang.String keyMaterialAlg
        15: .line 236
            aload 3 /* cipherSuite */
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 10 /* hashAlg */
        start local 10 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        16: .line 237
            goto 19
        end local 10 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 9 // java.lang.String keyMaterialAlg
        17: .line 238
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation sun.security.ssl.HandshakeContext javax.crypto.SecretKey sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion int int sun.security.ssl.SSLCipher int top top int int
      StackMap stack:
            ldc "SunTlsKeyMaterial"
            astore 9 /* keyMaterialAlg */
        start local 9 // java.lang.String keyMaterialAlg
        18: .line 239
            getstatic sun.security.ssl.CipherSuite$HashAlg.H_NONE:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 10 /* hashAlg */
        start local 10 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        19: .line 246
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation sun.security.ssl.HandshakeContext javax.crypto.SecretKey sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion int int sun.security.ssl.SSLCipher int java.lang.String sun.security.ssl.CipherSuite$HashAlg int int
      StackMap stack:
            aload 7 /* cipher */
            getfield sun.security.ssl.SSLCipher.ivSize:I
            istore 13 /* ivSize */
        start local 13 // int ivSize
        20: .line 247
            aload 7 /* cipher */
            getfield sun.security.ssl.SSLCipher.cipherType:Lsun/security/ssl/CipherType;
            getstatic sun.security.ssl.CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherType;
            if_acmpne 23
        21: .line 248
            aload 7 /* cipher */
            getfield sun.security.ssl.SSLCipher.fixedIvSize:I
            istore 13 /* ivSize */
        22: .line 249
            goto 26
        23: .line 250
      StackMap locals: int
      StackMap stack:
            aload 7 /* cipher */
            getfield sun.security.ssl.SSLCipher.cipherType:Lsun/security/ssl/CipherType;
            getstatic sun.security.ssl.CipherType.BLOCK_CIPHER:Lsun/security/ssl/CipherType;
            if_acmpne 26
        24: .line 251
            aload 4 /* protocolVersion */
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
            ifeq 26
        25: .line 252
            iconst_0
            istore 13 /* ivSize */
        26: .line 255
      StackMap locals:
      StackMap stack:
            new sun.security.internal.spec.TlsKeyMaterialParameterSpec
            dup
        27: .line 256
            aload 2 /* masterSecret */
            iload 11 /* majorVersion */
            sipush 255
            iand
            iload 12 /* minorVersion */
            sipush 255
            iand
        28: .line 257
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        29: .line 258
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        30: .line 259
            aload 7 /* cipher */
            getfield sun.security.ssl.SSLCipher.algorithm:Ljava/lang/String;
            aload 7 /* cipher */
            getfield sun.security.ssl.SSLCipher.keySize:I
            iload 8 /* expandedKeySize */
        31: .line 260
            iload 13 /* ivSize */
            iload 5 /* hashSize */
        32: .line 261
            aload 10 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            aload 10 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            aload 10 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.blockSize:I
        33: .line 255
            invokespecial sun.security.internal.spec.TlsKeyMaterialParameterSpec.<init>:(Ljavax/crypto/SecretKey;II[B[BLjava/lang/String;IIIILjava/lang/String;II)V
            astore 14 /* spec */
        start local 14 // sun.security.internal.spec.TlsKeyMaterialParameterSpec spec
        34: .line 264
            aload 9 /* keyMaterialAlg */
            invokestatic sun.security.ssl.JsseJce.getKeyGenerator:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
            astore 15 /* kg */
        start local 15 // javax.crypto.KeyGenerator kg
        35: .line 265
            aload 15 /* kg */
            aload 14 /* spec */
            invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
        36: .line 267
            aload 0 /* this */
            aload 15 /* kg */
            invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
            checkcast sun.security.internal.spec.TlsKeyMaterialSpec
            putfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.keyMaterialSpec:Lsun/security/internal/spec/TlsKeyMaterialSpec;
        end local 15 // javax.crypto.KeyGenerator kg
        37: .line 268
            goto 40
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation sun.security.ssl.HandshakeContext javax.crypto.SecretKey sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion int int sun.security.ssl.SSLCipher int java.lang.String sun.security.ssl.CipherSuite$HashAlg int int int sun.security.internal.spec.TlsKeyMaterialParameterSpec
      StackMap stack: java.security.GeneralSecurityException
        38: astore 15 /* e */
        start local 15 // java.security.GeneralSecurityException e
        39: .line 269
            new java.security.ProviderException
            dup
            aload 15 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 15 // java.security.GeneralSecurityException e
        40: .line 271
      StackMap locals:
      StackMap stack:
            return
        end local 14 // sun.security.internal.spec.TlsKeyMaterialParameterSpec spec
        end local 13 // int ivSize
        end local 12 // byte minorVersion
        end local 11 // byte majorVersion
        end local 10 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 9 // java.lang.String keyMaterialAlg
        end local 8 // int expandedKeySize
        end local 7 // sun.security.ssl.SSLCipher cipher
        end local 6 // boolean is_exportable
        end local 5 // int hashSize
        end local 4 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 3 // sun.security.ssl.CipherSuite cipherSuite
        end local 2 // javax.crypto.SecretKey masterSecret
        end local 1 // sun.security.ssl.HandshakeContext context
        end local 0 // sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   41     0             this  Lsun/security/ssl/SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation;
            0   41     1          context  Lsun/security/ssl/HandshakeContext;
            0   41     2     masterSecret  Ljavax/crypto/SecretKey;
            4   41     3      cipherSuite  Lsun/security/ssl/CipherSuite;
            5   41     4  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            6   41     5         hashSize  I
            7   41     6    is_exportable  Z
            8   41     7           cipher  Lsun/security/ssl/SSLCipher;
           11   41     8  expandedKeySize  I
           15   17     9   keyMaterialAlg  Ljava/lang/String;
           18   41     9   keyMaterialAlg  Ljava/lang/String;
           16   17    10          hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
           19   41    10          hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
           12   41    11     majorVersion  B
           13   41    12     minorVersion  B
           20   41    13           ivSize  I
           34   41    14             spec  Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
           35   37    15               kg  Ljavax/crypto/KeyGenerator;
           39   40    15                e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
          34    37      38  Class java.security.GeneralSecurityException
    MethodParameters:
              Name  Flags
      context       
      masterSecret  

  javax.crypto.SecretKey getTrafficKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljavax/crypto/SecretKey;
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation this
        start local 1 // java.lang.String algorithm
         0: .line 274
            aload 1 /* algorithm */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 6
          -1716638551: 1
          -1702941973: 2
          -1676186013: 3
          -1622415813: 4
           1720625075: 5
           2023276321: 6
              default: 19
          }
      StackMap locals: java.lang.String
      StackMap stack:
         1: aload 2
            ldc "serverWriteIv"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
            goto 19
      StackMap locals:
      StackMap stack:
         2: aload 2
            ldc "clientWriteKey"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
            goto 19
      StackMap locals:
      StackMap stack:
         3: aload 2
            ldc "serverWriteKey"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 19
      StackMap locals:
      StackMap stack:
         4: aload 2
            ldc "clientMacKey"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 19
      StackMap locals:
      StackMap stack:
         5: aload 2
            ldc "serverMacKey"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 19
      StackMap locals:
      StackMap stack:
         6: aload 2
            ldc "clientWriteIv"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            goto 19
         7: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.keyMaterialSpec:Lsun/security/internal/spec/TlsKeyMaterialSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialSpec.getClientMacKey:()Ljavax/crypto/SecretKey;
            areturn
         8: .line 278
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.keyMaterialSpec:Lsun/security/internal/spec/TlsKeyMaterialSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialSpec.getServerMacKey:()Ljavax/crypto/SecretKey;
            areturn
         9: .line 280
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.keyMaterialSpec:Lsun/security/internal/spec/TlsKeyMaterialSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialSpec.getClientCipherKey:()Ljavax/crypto/SecretKey;
            areturn
        10: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.keyMaterialSpec:Lsun/security/internal/spec/TlsKeyMaterialSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialSpec.getServerCipherKey:()Ljavax/crypto/SecretKey;
            areturn
        11: .line 284
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.keyMaterialSpec:Lsun/security/internal/spec/TlsKeyMaterialSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialSpec.getClientIv:()Ljavax/crypto/spec/IvParameterSpec;
            astore 3 /* cliIvSpec */
        start local 3 // javax.crypto.spec.IvParameterSpec cliIvSpec
        12: .line 285
            aload 3 /* cliIvSpec */
            ifnonnull 13
            aconst_null
            goto 14
        13: .line 286
      StackMap locals: javax.crypto.spec.IvParameterSpec
      StackMap stack:
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 3 /* cliIvSpec */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
            ldc "TlsIv"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
        14: .line 285
      StackMap locals:
      StackMap stack: javax.crypto.spec.SecretKeySpec
            areturn
        end local 3 // javax.crypto.spec.IvParameterSpec cliIvSpec
        15: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.keyMaterialSpec:Lsun/security/internal/spec/TlsKeyMaterialSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialSpec.getServerIv:()Ljavax/crypto/spec/IvParameterSpec;
            astore 4 /* srvIvSpec */
        start local 4 // javax.crypto.spec.IvParameterSpec srvIvSpec
        16: .line 289
            aload 4 /* srvIvSpec */
            ifnonnull 17
            aconst_null
            goto 18
        17: .line 290
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation java.lang.String java.lang.String top javax.crypto.spec.IvParameterSpec
      StackMap stack:
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 4 /* srvIvSpec */
            invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
            ldc "TlsIv"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
        18: .line 289
      StackMap locals:
      StackMap stack: javax.crypto.spec.SecretKeySpec
            areturn
        end local 4 // javax.crypto.spec.IvParameterSpec srvIvSpec
        19: .line 293
      StackMap locals: sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation java.lang.String
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String algorithm
        end local 0 // sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       this  Lsun/security/ssl/SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation;
            0   20     1  algorithm  Ljava/lang/String;
           12   15     3  cliIvSpec  Ljavax/crypto/spec/IvParameterSpec;
           16   19     4  srvIvSpec  Ljavax/crypto/spec/IvParameterSpec;
    MethodParameters:
           Name  Flags
      algorithm  

  public javax.crypto.SecretKey deriveKey(java.lang.String, java.security.spec.AlgorithmParameterSpec);
    descriptor: (Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;)Ljavax/crypto/SecretKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation this
        start local 1 // java.lang.String algorithm
        start local 2 // java.security.spec.AlgorithmParameterSpec params
         0: .line 299
            aload 0 /* this */
            aload 1 /* algorithm */
            invokevirtual sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation.getTrafficKey:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
            areturn
        end local 2 // java.security.spec.AlgorithmParameterSpec params
        end local 1 // java.lang.String algorithm
        end local 0 // sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lsun/security/ssl/SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation;
            0    1     1  algorithm  Ljava/lang/String;
            0    1     2     params  Ljava/security/spec/AlgorithmParameterSpec;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      algorithm  
      params     
}
SourceFile: "SSLTrafficKeyDerivation.java"
NestHost: sun.security.ssl.SSLTrafficKeyDerivation
InnerClasses:
  final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
  final MacAlg = sun.security.ssl.CipherSuite$MacAlg of sun.security.ssl.CipherSuite
  final LegacyTrafficKeyDerivation = sun.security.ssl.SSLTrafficKeyDerivation$LegacyTrafficKeyDerivation of sun.security.ssl.SSLTrafficKeyDerivation