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

  final javax.crypto.SecretKey preMasterSecret;
    descriptor: Ljavax/crypto/SecretKey;
    flags: (0x0010) ACC_FINAL

  void <init>(sun.security.ssl.HandshakeContext, javax.crypto.SecretKey);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljavax/crypto/SecretKey;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
        start local 1 // sun.security.ssl.HandshakeContext context
        start local 2 // javax.crypto.SecretKey preMasterSecret
         0: .line 79
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 81
            aload 0 /* this */
            aload 1 /* context */
            putfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
         2: .line 82
            aload 0 /* this */
            aload 2 /* preMasterSecret */
            putfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.preMasterSecret:Ljavax/crypto/SecretKey;
         3: .line 83
            return
        end local 2 // javax.crypto.SecretKey preMasterSecret
        end local 1 // sun.security.ssl.HandshakeContext context
        end local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lsun/security/ssl/SSLMasterKeyDerivation$LegacyMasterKeyDerivation;
            0    4     1          context  Lsun/security/ssl/HandshakeContext;
            0    4     2  preMasterSecret  Ljavax/crypto/SecretKey;
    MethodParameters:
                 Name  Flags
      context          
      preMasterSecret  

  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=10, locals=11, args_size=3
        start local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
        start local 1 // java.lang.String algorithm
        start local 2 // java.security.spec.AlgorithmParameterSpec params
         0: .line 90
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
            getfield sun.security.ssl.HandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
            astore 3 /* cipherSuite */
        start local 3 // sun.security.ssl.CipherSuite cipherSuite
         1: .line 91
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
            getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            astore 4 /* protocolVersion */
        start local 4 // sun.security.ssl.ProtocolVersion protocolVersion
         2: .line 97
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.major:B
            istore 7 /* majorVersion */
        start local 7 // byte majorVersion
         3: .line 98
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.minor:B
            istore 8 /* minorVersion */
        start local 8 // byte minorVersion
         4: .line 99
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.isDTLS:Z
            ifeq 16
         5: .line 101
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.id:I
            getstatic sun.security.ssl.ProtocolVersion.DTLS10:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.id:I
            if_icmpne 11
         6: .line 102
            getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.major:B
            istore 7 /* majorVersion */
         7: .line 103
            getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.minor:B
            istore 8 /* minorVersion */
         8: .line 105
            ldc "SunTlsMasterSecret"
            astore 5 /* masterAlg */
        start local 5 // java.lang.String masterAlg
         9: .line 106
            getstatic sun.security.ssl.CipherSuite$HashAlg.H_NONE:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 6 /* hashAlg */
        start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        10: .line 107
            goto 22
        end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 5 // java.lang.String masterAlg
        11: .line 108
      StackMap locals: sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation java.lang.String java.security.spec.AlgorithmParameterSpec sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion top top int int
      StackMap stack:
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.major:B
            istore 7 /* majorVersion */
        12: .line 109
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.minor:B
            istore 8 /* minorVersion */
        13: .line 111
            ldc "SunTls12MasterSecret"
            astore 5 /* masterAlg */
        start local 5 // java.lang.String masterAlg
        14: .line 112
            aload 3 /* cipherSuite */
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 6 /* hashAlg */
        start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        15: .line 114
            goto 22
        end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 5 // java.lang.String masterAlg
        16: .line 115
      StackMap locals:
      StackMap stack:
            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 20
        17: .line 116
            ldc "SunTls12MasterSecret"
            astore 5 /* masterAlg */
        start local 5 // java.lang.String masterAlg
        18: .line 117
            aload 3 /* cipherSuite */
            getfield sun.security.ssl.CipherSuite.hashAlg:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 6 /* hashAlg */
        start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        19: .line 118
            goto 22
        end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 5 // java.lang.String masterAlg
        20: .line 119
      StackMap locals:
      StackMap stack:
            ldc "SunTlsMasterSecret"
            astore 5 /* masterAlg */
        start local 5 // java.lang.String masterAlg
        21: .line 120
            getstatic sun.security.ssl.CipherSuite$HashAlg.H_NONE:Lsun/security/ssl/CipherSuite$HashAlg;
            astore 6 /* hashAlg */
        start local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        22: .line 125
      StackMap locals: sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation java.lang.String java.security.spec.AlgorithmParameterSpec sun.security.ssl.CipherSuite sun.security.ssl.ProtocolVersion java.lang.String sun.security.ssl.CipherSuite$HashAlg int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
            getfield sun.security.ssl.HandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            getfield sun.security.ssl.SSLSessionImpl.useExtendedMasterSecret:Z
            ifeq 33
        23: .line 127
            ldc "SunTlsExtendedMasterSecret"
            astore 5 /* masterAlg */
        24: .line 131
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
            getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.utilize:()V
        25: .line 132
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
            getfield sun.security.ssl.HandshakeContext.handshakeHash:Lsun/security/ssl/HandshakeHash;
            invokevirtual sun.security.ssl.HandshakeHash.digest:()[B
            astore 10 /* sessionHash */
        start local 10 // byte[] sessionHash
        26: .line 133
            new sun.security.internal.spec.TlsMasterSecretParameterSpec
            dup
        27: .line 134
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.preMasterSecret:Ljavax/crypto/SecretKey;
        28: .line 135
            iload 7 /* majorVersion */
            sipush 255
            iand
            iload 8 /* minorVersion */
            sipush 255
            iand
        29: .line 136
            aload 10 /* sessionHash */
        30: .line 137
            aload 6 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            aload 6 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            aload 6 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.blockSize:I
        31: .line 133
            invokespecial sun.security.internal.spec.TlsMasterSecretParameterSpec.<init>:(Ljavax/crypto/SecretKey;II[BLjava/lang/String;II)V
            astore 9 /* spec */
        end local 10 // byte[] sessionHash
        start local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
        32: .line 138
            goto 40
        end local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
        33: .line 139
      StackMap locals:
      StackMap stack:
            new sun.security.internal.spec.TlsMasterSecretParameterSpec
            dup
        34: .line 140
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.preMasterSecret:Ljavax/crypto/SecretKey;
        35: .line 141
            iload 7 /* majorVersion */
            sipush 255
            iand
            iload 8 /* minorVersion */
            sipush 255
            iand
        36: .line 142
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
            getfield sun.security.ssl.HandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        37: .line 143
            aload 0 /* this */
            getfield sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation.context:Lsun/security/ssl/HandshakeContext;
            getfield sun.security.ssl.HandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        38: .line 144
            aload 6 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.name:Ljava/lang/String;
            aload 6 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.hashLength:I
            aload 6 /* hashAlg */
            getfield sun.security.ssl.CipherSuite$HashAlg.blockSize:I
        39: .line 139
            invokespecial sun.security.internal.spec.TlsMasterSecretParameterSpec.<init>:(Ljavax/crypto/SecretKey;II[B[BLjava/lang/String;II)V
            astore 9 /* spec */
        start local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
        40: .line 148
      StackMap locals: sun.security.internal.spec.TlsMasterSecretParameterSpec
      StackMap stack:
            aload 5 /* masterAlg */
            invokestatic javax.crypto.KeyGenerator.getInstance:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
            astore 10 /* kg */
        start local 10 // javax.crypto.KeyGenerator kg
        41: .line 149
            aload 10 /* kg */
            aload 9 /* spec */
            invokevirtual javax.crypto.KeyGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
        42: .line 150
            aload 10 /* kg */
            invokevirtual javax.crypto.KeyGenerator.generateKey:()Ljavax/crypto/SecretKey;
        43: areturn
        end local 10 // javax.crypto.KeyGenerator kg
        44: .line 152
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 10 /* iae */
        start local 10 // java.security.GeneralSecurityException iae
        45: .line 157
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 47
            ldc "handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 47
        46: .line 158
            ldc "RSA master secret generation error."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 10 /* iae */
            aastore
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        47: .line 160
      StackMap locals: java.security.GeneralSecurityException
      StackMap stack:
            new java.security.ProviderException
            dup
            aload 10 /* iae */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 10 // java.security.GeneralSecurityException iae
        end local 9 // sun.security.internal.spec.TlsMasterSecretParameterSpec spec
        end local 8 // byte minorVersion
        end local 7 // byte majorVersion
        end local 6 // sun.security.ssl.CipherSuite$HashAlg hashAlg
        end local 5 // java.lang.String masterAlg
        end local 4 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 3 // sun.security.ssl.CipherSuite cipherSuite
        end local 2 // java.security.spec.AlgorithmParameterSpec params
        end local 1 // java.lang.String algorithm
        end local 0 // sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   48     0             this  Lsun/security/ssl/SSLMasterKeyDerivation$LegacyMasterKeyDerivation;
            0   48     1        algorithm  Ljava/lang/String;
            0   48     2           params  Ljava/security/spec/AlgorithmParameterSpec;
            1   48     3      cipherSuite  Lsun/security/ssl/CipherSuite;
            2   48     4  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            9   11     5        masterAlg  Ljava/lang/String;
           14   16     5        masterAlg  Ljava/lang/String;
           18   20     5        masterAlg  Ljava/lang/String;
           21   48     5        masterAlg  Ljava/lang/String;
           10   11     6          hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
           15   16     6          hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
           19   20     6          hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
           22   48     6          hashAlg  Lsun/security/ssl/CipherSuite$HashAlg;
            3   48     7     majorVersion  B
            4   48     8     minorVersion  B
           32   33     9             spec  Lsun/security/internal/spec/TlsMasterSecretParameterSpec;
           40   48     9             spec  Lsun/security/internal/spec/TlsMasterSecretParameterSpec;
           26   32    10      sessionHash  [B
           41   44    10               kg  Ljavax/crypto/KeyGenerator;
           45   48    10              iae  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
          40    43      44  Class java.security.InvalidAlgorithmParameterException
          40    43      44  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      algorithm  
      params     
}
SourceFile: "SSLMasterKeyDerivation.java"
NestHost: sun.security.ssl.SSLMasterKeyDerivation
InnerClasses:
  final HashAlg = sun.security.ssl.CipherSuite$HashAlg of sun.security.ssl.CipherSuite
  private final LegacyMasterKeyDerivation = sun.security.ssl.SSLMasterKeyDerivation$LegacyMasterKeyDerivation of sun.security.ssl.SSLMasterKeyDerivation