final class sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage extends sun.security.ssl.SSLHandshake$HandshakeMessage
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage
  super_class: sun.security.ssl.SSLHandshake$HandshakeMessage
{
  private final byte[] p;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final byte[] g;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final byte[] y;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean useExplicitSigAlgorithm;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final sun.security.ssl.SignatureScheme signatureScheme;
    descriptor: Lsun/security/ssl/SignatureScheme;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final byte[] paramsSignature;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
        start local 1 // sun.security.ssl.HandshakeContext handshakeContext
         0: .line 85
            aload 0 /* this */
            aload 1 /* handshakeContext */
            invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
         1: .line 89
            aload 1 /* handshakeContext */
            checkcast sun.security.ssl.ServerHandshakeContext
         2: .line 88
            astore 2 /* shc */
        start local 2 // sun.security.ssl.ServerHandshakeContext shc
         3: .line 91
            aconst_null
            astore 3 /* dhePossession */
        start local 3 // sun.security.ssl.DHKeyExchange$DHEPossession dhePossession
         4: .line 92
            aconst_null
            astore 4 /* x509Possession */
        start local 4 // sun.security.ssl.X509Authentication$X509Possession x509Possession
         5: .line 93
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakePossessions:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 15
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext sun.security.ssl.ServerHandshakeContext sun.security.ssl.DHKeyExchange$DHEPossession sun.security.ssl.X509Authentication$X509Possession top java.util.Iterator
      StackMap stack:
         6: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SSLPossession
            astore 5 /* possession */
        start local 5 // sun.security.ssl.SSLPossession possession
         7: .line 94
            aload 5 /* possession */
            instanceof sun.security.ssl.DHKeyExchange$DHEPossession
            ifeq 11
         8: .line 95
            aload 5 /* possession */
            checkcast sun.security.ssl.DHKeyExchange$DHEPossession
            astore 3 /* dhePossession */
         9: .line 96
            aload 4 /* x509Possession */
            ifnull 15
        10: .line 97
            goto 16
        11: .line 99
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext sun.security.ssl.ServerHandshakeContext sun.security.ssl.DHKeyExchange$DHEPossession sun.security.ssl.X509Authentication$X509Possession sun.security.ssl.SSLPossession java.util.Iterator
      StackMap stack:
            aload 5 /* possession */
            instanceof sun.security.ssl.X509Authentication$X509Possession
            ifeq 15
        12: .line 100
            aload 5 /* possession */
            checkcast sun.security.ssl.X509Authentication$X509Possession
            astore 4 /* x509Possession */
        13: .line 101
            aload 3 /* dhePossession */
            ifnull 15
        14: .line 102
            goto 16
        end local 5 // sun.security.ssl.SSLPossession possession
        15: .line 93
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext sun.security.ssl.ServerHandshakeContext sun.security.ssl.DHKeyExchange$DHEPossession sun.security.ssl.X509Authentication$X509Possession top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        16: .line 107
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext sun.security.ssl.ServerHandshakeContext sun.security.ssl.DHKeyExchange$DHEPossession sun.security.ssl.X509Authentication$X509Possession
      StackMap stack:
            aload 3 /* dhePossession */
            ifnonnull 20
        17: .line 109
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
        18: .line 110
            ldc "No DHE credentials negotiated for server key exchange"
        19: .line 109
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        20: .line 112
      StackMap locals:
      StackMap stack:
            aload 3 /* dhePossession */
            getfield sun.security.ssl.DHKeyExchange$DHEPossession.publicKey:Ljavax/crypto/interfaces/DHPublicKey;
            astore 5 /* publicKey */
        start local 5 // javax.crypto.interfaces.DHPublicKey publicKey
        21: .line 113
            aload 5 /* publicKey */
            invokeinterface javax.crypto.interfaces.DHPublicKey.getParams:()Ljavax/crypto/spec/DHParameterSpec;
            astore 6 /* params */
        start local 6 // javax.crypto.spec.DHParameterSpec params
        22: .line 114
            aload 0 /* this */
            aload 6 /* params */
            invokevirtual javax.crypto.spec.DHParameterSpec.getP:()Ljava/math/BigInteger;
            invokestatic sun.security.ssl.Utilities.toByteArray:(Ljava/math/BigInteger;)[B
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
        23: .line 115
            aload 0 /* this */
            aload 6 /* params */
            invokevirtual javax.crypto.spec.DHParameterSpec.getG:()Ljava/math/BigInteger;
            invokestatic sun.security.ssl.Utilities.toByteArray:(Ljava/math/BigInteger;)[B
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
        24: .line 116
            aload 0 /* this */
            aload 5 /* publicKey */
            invokeinterface javax.crypto.interfaces.DHPublicKey.getY:()Ljava/math/BigInteger;
            invokestatic sun.security.ssl.Utilities.toByteArray:(Ljava/math/BigInteger;)[B
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
        25: .line 118
            aload 4 /* x509Possession */
            ifnonnull 30
        26: .line 120
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
        27: .line 121
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        28: .line 122
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        29: .line 123
            goto 77
        30: .line 124
      StackMap locals: javax.crypto.interfaces.DHPublicKey javax.crypto.spec.DHParameterSpec
      StackMap stack:
            aload 0 /* this */
        31: .line 125
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
        32: .line 124
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        33: .line 126
            aconst_null
            astore 7 /* signer */
        start local 7 // java.security.Signature signer
        34: .line 127
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 51
        35: .line 130
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
        36: .line 131
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.peerRequestedSignatureSchemes:Ljava/util/List;
        37: .line 132
            aload 4 /* x509Possession */
        38: .line 133
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
        39: .line 129
            invokestatic sun.security.ssl.SignatureScheme.getSignerOfPreferableAlgorithm:(Ljava/security/AlgorithmConstraints;Ljava/util/List;Lsun/security/ssl/X509Authentication$X509Possession;Lsun/security/ssl/ProtocolVersion;)Ljava/util/Map$Entry;
        40: .line 128
            astore 8 /* schemeAndSigner */
        start local 8 // java.util.Map$Entry schemeAndSigner
        41: .line 134
            aload 8 /* schemeAndSigner */
            ifnonnull 48
        42: .line 137
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        43: .line 138
            new java.lang.StringBuilder
            dup
            ldc "No supported signature algorithm for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        44: .line 139
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        45: .line 140
            ldc "  key"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        46: .line 138
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        47: .line 137
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        48: .line 142
      StackMap locals: java.security.Signature java.util.Map$Entry
      StackMap stack:
            aload 0 /* this */
            aload 8 /* schemeAndSigner */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast sun.security.ssl.SignatureScheme
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        49: .line 143
            aload 8 /* schemeAndSigner */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.security.Signature
            astore 7 /* signer */
        end local 8 // java.util.Map$Entry schemeAndSigner
        50: .line 145
            goto 63
        51: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        52: .line 149
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
        53: .line 150
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        54: .line 148
            invokestatic sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.getSignature:(Ljava/lang/String;Ljava/security/Key;)Ljava/security/Signature;
            astore 7 /* signer */
        55: .line 151
            goto 63
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
        56: astore 8 /* e */
        start local 8 // java.security.GeneralSecurityException e
        57: .line 152
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        58: .line 153
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        59: .line 154
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        60: .line 153
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        61: .line 154
            aload 8 /* e */
        62: .line 152
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 8 // java.security.GeneralSecurityException e
        63: .line 158
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* signature */
        start local 8 // byte[] signature
        64: .line 160
            aload 0 /* this */
            aload 7 /* signer */
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        65: .line 161
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        66: .line 160
            invokevirtual sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
        67: .line 162
            aload 7 /* signer */
            invokevirtual java.security.Signature.sign:()[B
            astore 8 /* signature */
        68: .line 163
            goto 76
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext sun.security.ssl.ServerHandshakeContext sun.security.ssl.DHKeyExchange$DHEPossession sun.security.ssl.X509Authentication$X509Possession javax.crypto.interfaces.DHPublicKey javax.crypto.spec.DHParameterSpec java.security.Signature byte[]
      StackMap stack: java.security.SignatureException
        69: astore 9 /* ex */
        start local 9 // java.security.SignatureException ex
        70: .line 164
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        71: .line 165
            new java.lang.StringBuilder
            dup
            ldc "Failed to sign dhe parameters: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        72: .line 166
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        73: .line 165
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        74: .line 166
            aload 9 /* ex */
        75: .line 164
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 9 // java.security.SignatureException ex
        76: .line 168
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* signature */
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
        end local 8 // byte[] signature
        end local 7 // java.security.Signature signer
        77: .line 170
      StackMap locals:
      StackMap stack:
            return
        end local 6 // javax.crypto.spec.DHParameterSpec params
        end local 5 // javax.crypto.interfaces.DHPublicKey publicKey
        end local 4 // sun.security.ssl.X509Authentication$X509Possession x509Possession
        end local 3 // sun.security.ssl.DHKeyExchange$DHEPossession dhePossession
        end local 2 // sun.security.ssl.ServerHandshakeContext shc
        end local 1 // sun.security.ssl.HandshakeContext handshakeContext
        end local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   78     0              this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;
            0   78     1  handshakeContext  Lsun/security/ssl/HandshakeContext;
            3   78     2               shc  Lsun/security/ssl/ServerHandshakeContext;
            4   78     3     dhePossession  Lsun/security/ssl/DHKeyExchange$DHEPossession;
            5   78     4    x509Possession  Lsun/security/ssl/X509Authentication$X509Possession;
            7   15     5        possession  Lsun/security/ssl/SSLPossession;
           21   78     5         publicKey  Ljavax/crypto/interfaces/DHPublicKey;
           22   78     6            params  Ljavax/crypto/spec/DHParameterSpec;
           34   77     7            signer  Ljava/security/Signature;
           41   50     8   schemeAndSigner  Ljava/util/Map$Entry<Lsun/security/ssl/SignatureScheme;Ljava/security/Signature;>;
           57   63     8                 e  Ljava/security/GeneralSecurityException;
           64   77     8         signature  [B
           70   76     9                ex  Ljava/security/SignatureException;
      Exception table:
        from    to  target  type
          52    55      56  Class java.security.NoSuchAlgorithmException
          52    55      56  Class java.security.InvalidKeyException
          64    68      69  Class java.security.SignatureException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      handshakeContext  

  void <init>(sun.security.ssl.HandshakeContext, java.nio.ByteBuffer);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=7, args_size=3
        start local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
        start local 1 // sun.security.ssl.HandshakeContext handshakeContext
        start local 2 // java.nio.ByteBuffer m
         0: .line 174
            aload 0 /* this */
            aload 1 /* handshakeContext */
            invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
         1: .line 178
            aload 1 /* handshakeContext */
            checkcast sun.security.ssl.ClientHandshakeContext
         2: .line 177
            astore 3 /* chc */
        start local 3 // sun.security.ssl.ClientHandshakeContext chc
         3: .line 180
            aload 0 /* this */
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
         4: .line 181
            aload 0 /* this */
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
         5: .line 182
            aload 0 /* this */
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
         6: .line 185
            new javax.crypto.spec.DHPublicKeySpec
            dup
         7: .line 186
            new java.math.BigInteger
            dup
            iconst_1
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokespecial java.math.BigInteger.<init>:(I[B)V
         8: .line 187
            new java.math.BigInteger
            dup
            iconst_1
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokespecial java.math.BigInteger.<init>:(I[B)V
         9: .line 188
            new java.math.BigInteger
            dup
            iconst_1
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokespecial java.math.BigInteger.<init>:(I[B)V
        10: .line 185
            invokespecial javax.crypto.spec.DHPublicKeySpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            invokestatic sun.security.util.KeyUtil.validate:(Ljava/security/spec/KeySpec;)V
        11: .line 189
            goto 16
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext
      StackMap stack: java.security.InvalidKeyException
        12: astore 4 /* ike */
        start local 4 // java.security.InvalidKeyException ike
        13: .line 190
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        14: .line 191
            ldc "Invalid DH ServerKeyExchange: invalid parameters"
            aload 4 /* ike */
        15: .line 190
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 4 // java.security.InvalidKeyException ike
        16: .line 194
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* x509Credentials */
        start local 4 // sun.security.ssl.X509Authentication$X509Credentials x509Credentials
        17: .line 195
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeCredentials:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 22
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.X509Authentication$X509Credentials top java.util.Iterator
      StackMap stack:
        18: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SSLCredentials
            astore 5 /* cd */
        start local 5 // sun.security.ssl.SSLCredentials cd
        19: .line 196
            aload 5 /* cd */
            instanceof sun.security.ssl.X509Authentication$X509Credentials
            ifeq 22
        20: .line 197
            aload 5 /* cd */
            checkcast sun.security.ssl.X509Authentication$X509Credentials
            astore 4 /* x509Credentials */
        21: .line 198
            goto 23
        end local 5 // sun.security.ssl.SSLCredentials cd
        22: .line 195
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        23: .line 202
      StackMap locals: sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage sun.security.ssl.HandshakeContext java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.X509Authentication$X509Credentials
      StackMap stack:
            aload 4 /* x509Credentials */
            ifnonnull 32
        24: .line 204
            aload 2 /* m */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 28
        25: .line 205
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        26: .line 206
            ldc "Invalid DH ServerKeyExchange: unknown extra data"
        27: .line 205
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        28: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        29: .line 210
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
        30: .line 211
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        31: .line 213
            return
        32: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        33: .line 217
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
        34: .line 216
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        35: .line 218
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 51
        36: .line 219
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
            istore 5 /* ssid */
        start local 5 // int ssid
        37: .line 220
            aload 0 /* this */
            iload 5 /* ssid */
            invokestatic sun.security.ssl.SignatureScheme.valueOf:(I)Lsun/security/ssl/SignatureScheme;
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        38: .line 221
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            ifnonnull 44
        39: .line 222
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        40: .line 223
            new java.lang.StringBuilder
            dup
            ldc "Invalid signature algorithm ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* ssid */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        41: .line 224
            ldc ") used in DH ServerKeyExchange handshake message"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        42: .line 223
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        43: .line 222
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        44: .line 227
      StackMap locals: int
      StackMap stack:
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.localSupportedSignAlgs:Ljava/util/List;
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 52
        45: .line 228
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        46: .line 229
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        47: .line 230
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        48: .line 231
            ldc ") used in DH ServerKeyExchange handshake message"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        49: .line 229
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        50: .line 228
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        end local 5 // int ssid
        51: .line 234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        52: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
        53: .line 240
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 65
        54: .line 242
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        55: .line 243
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
        56: .line 242
            invokevirtual sun.security.ssl.SignatureScheme.getVerifier:(Ljava/security/PublicKey;)Ljava/security/Signature;
            astore 5 /* signer */
        start local 5 // java.security.Signature signer
        57: .line 244
            goto 76
        end local 5 // java.security.Signature signer
        58: .line 245
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 6 /* nsae */
        start local 6 // java.security.GeneralSecurityException nsae
        59: .line 246
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        60: .line 247
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        61: .line 248
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        62: .line 247
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 248
            aload 6 /* nsae */
        64: .line 246
            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 nsae
        65: .line 253
      StackMap locals:
      StackMap stack:
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
        66: .line 254
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
        67: .line 252
            invokestatic sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.getSignature:(Ljava/lang/String;Ljava/security/Key;)Ljava/security/Signature;
            astore 5 /* signer */
        start local 5 // java.security.Signature signer
        68: .line 255
            goto 76
        end local 5 // java.security.Signature signer
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
        69: astore 6 /* e */
        start local 6 // java.security.GeneralSecurityException e
        70: .line 256
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        71: .line 257
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        72: .line 258
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        73: .line 257
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        74: .line 258
            aload 6 /* e */
        75: .line 256
            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 e
        start local 5 // java.security.Signature signer
        76: .line 263
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 0 /* this */
            aload 5 /* signer */
        77: .line 264
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        78: .line 265
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        79: .line 263
            invokevirtual sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
        80: .line 267
            aload 5 /* signer */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            invokevirtual java.security.Signature.verify:([B)Z
            ifne 88
        81: .line 268
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        82: .line 269
            ldc "Invalid signature on DH ServerKeyExchange message"
        83: .line 268
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        84: .line 271
      StackMap locals:
      StackMap stack: java.security.SignatureException
            astore 6 /* ex */
        start local 6 // java.security.SignatureException ex
        85: .line 272
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        86: .line 273
            ldc "Cannot verify DH ServerKeyExchange signature"
            aload 6 /* ex */
        87: .line 272
            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.SignatureException ex
        88: .line 275
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.security.Signature signer
        end local 4 // sun.security.ssl.X509Authentication$X509Credentials x509Credentials
        end local 3 // sun.security.ssl.ClientHandshakeContext chc
        end local 2 // java.nio.ByteBuffer m
        end local 1 // sun.security.ssl.HandshakeContext handshakeContext
        end local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   89     0              this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;
            0   89     1  handshakeContext  Lsun/security/ssl/HandshakeContext;
            0   89     2                 m  Ljava/nio/ByteBuffer;
            3   89     3               chc  Lsun/security/ssl/ClientHandshakeContext;
           13   16     4               ike  Ljava/security/InvalidKeyException;
           17   89     4   x509Credentials  Lsun/security/ssl/X509Authentication$X509Credentials;
           19   22     5                cd  Lsun/security/ssl/SSLCredentials;
           37   51     5              ssid  I
           57   58     5            signer  Ljava/security/Signature;
           68   69     5            signer  Ljava/security/Signature;
           76   89     5            signer  Ljava/security/Signature;
           59   65     6              nsae  Ljava/security/GeneralSecurityException;
           70   76     6                 e  Ljava/security/GeneralSecurityException;
           85   88     6                ex  Ljava/security/SignatureException;
      Exception table:
        from    to  target  type
           6    11      12  Class java.security.InvalidKeyException
          54    57      58  Class java.security.NoSuchAlgorithmException
          54    57      58  Class java.security.InvalidKeyException
          54    57      58  Class java.security.InvalidAlgorithmParameterException
          65    68      69  Class java.security.NoSuchAlgorithmException
          65    68      69  Class java.security.InvalidKeyException
          76    84      84  Class java.security.SignatureException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      handshakeContext  
      m                 

  public sun.security.ssl.SSLHandshake handshakeType();
    descriptor: ()Lsun/security/ssl/SSLHandshake;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
         0: .line 279
            getstatic sun.security.ssl.SSLHandshake.SERVER_KEY_EXCHANGE:Lsun/security/ssl/SSLHandshake;
            areturn
        end local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;

  public int messageLength();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
         0: .line 284
            iconst_0
            istore 1 /* sigLen */
        start local 1 // int sigLen
         1: .line 285
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnull 5
         2: .line 286
            iconst_2
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            arraylength
            iadd
            istore 1 /* sigLen */
         3: .line 287
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 5
         4: .line 288
            iload 1 /* sigLen */
            invokestatic sun.security.ssl.SignatureScheme.sizeInRecord:()I
            iadd
            istore 1 /* sigLen */
         5: .line 292
      StackMap locals: int
      StackMap stack:
            bipush 6
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            arraylength
            iadd
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            arraylength
            iadd
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            arraylength
            iadd
            iload 1 /* sigLen */
            iadd
            ireturn
        end local 1 // int sigLen
        end local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;
            1    6     1  sigLen  I

  public void send(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
        start local 1 // sun.security.ssl.HandshakeOutStream hos
         0: .line 298
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         1: .line 299
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         2: .line 300
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         3: .line 302
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnull 7
         4: .line 303
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 6
         5: .line 304
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            getfield sun.security.ssl.SignatureScheme.id:I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
         6: .line 307
      StackMap locals:
      StackMap stack:
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         7: .line 309
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.security.ssl.HandshakeOutStream hos
        end local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;
            0    8     1   hos  Lsun/security/ssl/HandshakeOutStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      hos   

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
         0: .line 313
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnonnull 15
         1: .line 314
            new java.text.MessageFormat
            dup
         2: .line 315
            ldc "\"DH ServerKeyExchange\": '{'\n  \"parameters\": '{'\n    \"dh_p\": '{'\n{0}\n    '}',\n    \"dh_g\": '{'\n{1}\n    '}',\n    \"dh_Ys\": '{'\n{2}\n    '}',\n  '}'\n'}'"
         3: .line 328
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
         4: .line 314
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
         5: .line 330
            new sun.security.util.HexDumpEncoder
            dup
            invokespecial sun.security.util.HexDumpEncoder.<init>:()V
            astore 2 /* hexEncoder */
        start local 2 // sun.security.util.HexDumpEncoder hexEncoder
         6: .line 331
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 333
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
         8: .line 332
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
         9: .line 335
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        10: .line 334
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        11: .line 337
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        12: .line 336
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        13: .line 331
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        14: .line 340
            aload 1 /* messageFormat */
            aload 3 /* messageFields */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 3 // java.lang.Object[] messageFields
        end local 2 // sun.security.util.HexDumpEncoder hexEncoder
        end local 1 // java.text.MessageFormat messageFormat
        15: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 33
        16: .line 344
            new java.text.MessageFormat
            dup
        17: .line 345
            ldc "\"DH ServerKeyExchange\": '{'\n  \"parameters\": '{'\n    \"dh_p\": '{'\n{0}\n    '}',\n    \"dh_g\": '{'\n{1}\n    '}',\n    \"dh_Ys\": '{'\n{2}\n    '}',\n  '}',\n  \"digital signature\":  '{'\n    \"signature algorithm\": \"{3}\"\n    \"signature\": '{'\n{4}\n    '}',\n  '}'\n'}'"
        18: .line 364
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
        19: .line 344
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
        20: .line 366
            new sun.security.util.HexDumpEncoder
            dup
            invokespecial sun.security.util.HexDumpEncoder.<init>:()V
            astore 2 /* hexEncoder */
        start local 2 // sun.security.util.HexDumpEncoder hexEncoder
        21: .line 367
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
        22: .line 369
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        23: .line 368
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        24: .line 371
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        25: .line 370
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        26: .line 373
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        27: .line 372
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_3
        28: .line 374
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            aastore
            dup
            iconst_4
        29: .line 376
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        30: .line 375
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        31: .line 367
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        32: .line 379
            aload 1 /* messageFormat */
            aload 3 /* messageFields */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 3 // java.lang.Object[] messageFields
        end local 2 // sun.security.util.HexDumpEncoder hexEncoder
        end local 1 // java.text.MessageFormat messageFormat
        33: .line 381
      StackMap locals:
      StackMap stack:
            new java.text.MessageFormat
            dup
        34: .line 382
            ldc "\"DH ServerKeyExchange\": '{'\n  \"parameters\": '{'\n    \"dh_p\": '{'\n{0}\n    '}',\n    \"dh_g\": '{'\n{1}\n    '}',\n    \"dh_Ys\": '{'\n{2}\n    '}',\n  '}',\n  \"signature\": '{'\n{3}\n  '}'\n'}'"
        35: .line 398
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
        36: .line 381
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
        37: .line 400
            new sun.security.util.HexDumpEncoder
            dup
            invokespecial sun.security.util.HexDumpEncoder.<init>:()V
            astore 2 /* hexEncoder */
        start local 2 // sun.security.util.HexDumpEncoder hexEncoder
        38: .line 401
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        39: .line 403
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        40: .line 402
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        41: .line 405
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        42: .line 404
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        43: .line 407
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "      "
        44: .line 406
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_3
        45: .line 409
            aload 2 /* hexEncoder */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:([B)Ljava/lang/String;
            ldc "    "
        46: .line 408
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        47: .line 401
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        48: .line 412
            aload 1 /* messageFormat */
            aload 3 /* messageFields */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 3 // java.lang.Object[] messageFields
        end local 2 // sun.security.util.HexDumpEncoder hexEncoder
        end local 1 // java.text.MessageFormat messageFormat
        end local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   49     0           this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;
            5   15     1  messageFormat  Ljava/text/MessageFormat;
            6   15     2     hexEncoder  Lsun/security/util/HexDumpEncoder;
           14   15     3  messageFields  [Ljava/lang/Object;
           20   33     1  messageFormat  Ljava/text/MessageFormat;
           21   33     2     hexEncoder  Lsun/security/util/HexDumpEncoder;
           32   33     3  messageFields  [Ljava/lang/Object;
           37   49     1  messageFormat  Ljava/text/MessageFormat;
           38   49     2     hexEncoder  Lsun/security/util/HexDumpEncoder;
           48   49     3  messageFields  [Ljava/lang/Object;

  private static java.security.Signature getSignature(java.lang.String, java.security.Key);
    descriptor: (Ljava/lang/String;Ljava/security/Key;)Ljava/security/Signature;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.String keyAlgorithm
        start local 1 // java.security.Key key
         0: .line 418
            aconst_null
            astore 2 /* signer */
        start local 2 // java.security.Signature signer
         1: .line 419
            aload 0 /* keyAlgorithm */
            dup
            astore 3
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
                67986: 2
                81440: 3
              default: 8
          }
      StackMap locals: java.security.Signature java.lang.String
      StackMap stack:
         2: aload 3
            ldc "DSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            goto 8
      StackMap locals:
      StackMap stack:
         3: aload 3
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 8
         4: .line 421
      StackMap locals:
      StackMap stack:
            ldc "DSA"
            invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
            astore 2 /* signer */
         5: .line 422
            goto 11
         6: .line 424
      StackMap locals:
      StackMap stack:
            invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
            astore 2 /* signer */
         7: .line 425
            goto 11
         8: .line 427
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
         9: .line 428
            new java.lang.StringBuilder
            dup
            ldc "neither an RSA or a DSA key : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* keyAlgorithm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 427
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 431
      StackMap locals:
      StackMap stack:
            aload 2 /* signer */
            ifnull 16
        12: .line 432
            aload 1 /* key */
            instanceof java.security.PublicKey
            ifeq 15
        13: .line 433
            aload 2 /* signer */
            aload 1 /* key */
            checkcast java.security.PublicKey
            invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
        14: .line 434
            goto 16
        15: .line 435
      StackMap locals:
      StackMap stack:
            aload 2 /* signer */
            aload 1 /* key */
            checkcast java.security.PrivateKey
            invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;)V
        16: .line 439
      StackMap locals:
      StackMap stack:
            aload 2 /* signer */
            areturn
        end local 2 // java.security.Signature signer
        end local 1 // java.security.Key key
        end local 0 // java.lang.String keyAlgorithm
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   17     0  keyAlgorithm  Ljava/lang/String;
            0   17     1           key  Ljava/security/Key;
            1   17     2        signer  Ljava/security/Signature;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException
    MethodParameters:
              Name  Flags
      keyAlgorithm  
      key           

  private void updateSignature(java.security.Signature, byte[], byte[]);
    descriptor: (Ljava/security/Signature;[B[B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
        start local 1 // java.security.Signature sig
        start local 2 // byte[] clntNonce
        start local 3 // byte[] svrNonce
         0: .line 449
            aload 1 /* sig */
            aload 2 /* clntNonce */
            invokevirtual java.security.Signature.update:([B)V
         1: .line 450
            aload 1 /* sig */
            aload 3 /* svrNonce */
            invokevirtual java.security.Signature.update:([B)V
         2: .line 452
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            arraylength
            bipush 8
            ishr
            i2b
            invokevirtual java.security.Signature.update:(B)V
         3: .line 453
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            arraylength
            sipush 255
            iand
            i2b
            invokevirtual java.security.Signature.update:(B)V
         4: .line 454
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual java.security.Signature.update:([B)V
         5: .line 456
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            arraylength
            bipush 8
            ishr
            i2b
            invokevirtual java.security.Signature.update:(B)V
         6: .line 457
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            arraylength
            sipush 255
            iand
            i2b
            invokevirtual java.security.Signature.update:(B)V
         7: .line 458
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual java.security.Signature.update:([B)V
         8: .line 460
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            arraylength
            bipush 8
            ishr
            i2b
            invokevirtual java.security.Signature.update:(B)V
         9: .line 461
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            arraylength
            sipush 255
            iand
            i2b
            invokevirtual java.security.Signature.update:(B)V
        10: .line 462
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual java.security.Signature.update:([B)V
        11: .line 463
            return
        end local 3 // byte[] svrNonce
        end local 2 // byte[] clntNonce
        end local 1 // java.security.Signature sig
        end local 0 // sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;
            0   12     1        sig  Ljava/security/Signature;
            0   12     2  clntNonce  [B
            0   12     3   svrNonce  [B
    Exceptions:
      throws java.security.SignatureException
    MethodParameters:
           Name  Flags
      sig        
      clntNonce  
      svrNonce   
}
SourceFile: "DHServerKeyExchange.java"
NestHost: sun.security.ssl.DHServerKeyExchange
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  final DHEPossession = sun.security.ssl.DHKeyExchange$DHEPossession of sun.security.ssl.DHKeyExchange
  private final DHServerKeyExchangeMessage = sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage of sun.security.ssl.DHServerKeyExchange
  abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
  final X509Credentials = sun.security.ssl.X509Authentication$X509Credentials of sun.security.ssl.X509Authentication
  final X509Possession = sun.security.ssl.X509Authentication$X509Possession of sun.security.ssl.X509Authentication