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 81
        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 55
        35: .line 128
            aload 0 /* this */
        36: .line 129
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.peerRequestedSignatureSchemes:Ljava/util/List;
        37: .line 130
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        38: .line 131
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
        39: .line 128
            invokestatic sun.security.ssl.SignatureScheme.getPreferableAlgorithm:(Ljava/util/List;Ljava/security/PrivateKey;Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SignatureScheme;
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        40: .line 132
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            ifnonnull 44
        41: .line 135
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        42: .line 136
            ldc "No preferred signature algorithm"
        43: .line 135
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        44: .line 139
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        45: .line 140
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        46: .line 139
            invokevirtual sun.security.ssl.SignatureScheme.getSignature:(Ljava/security/Key;)Ljava/security/Signature;
            astore 7 /* signer */
        47: .line 141
            goto 67
        48: .line 142
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 8 /* nsae */
        start local 8 // java.security.GeneralSecurityException nsae
        49: .line 143
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        50: .line 144
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        51: .line 145
            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;
        52: .line 144
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        53: .line 145
            aload 8 /* nsae */
        54: .line 143
            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 nsae
        55: .line 148
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        56: .line 151
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
        57: .line 152
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        58: .line 150
            invokestatic sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.getSignature:(Ljava/lang/String;Ljava/security/Key;)Ljava/security/Signature;
            astore 7 /* signer */
        59: .line 153
            goto 67
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
        60: astore 8 /* e */
        start local 8 // java.security.GeneralSecurityException e
        61: .line 154
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        62: .line 155
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        63: .line 156
            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;
        64: .line 155
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        65: .line 156
            aload 8 /* e */
        66: .line 154
            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
        67: .line 160
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* signature */
        start local 8 // byte[] signature
        68: .line 162
            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
        69: .line 163
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        70: .line 162
            invokevirtual sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
        71: .line 164
            aload 7 /* signer */
            invokevirtual java.security.Signature.sign:()[B
            astore 8 /* signature */
        72: .line 165
            goto 80
      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
        73: astore 9 /* ex */
        start local 9 // java.security.SignatureException ex
        74: .line 166
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
        75: .line 167
            new java.lang.StringBuilder
            dup
            ldc "Failed to sign dhe parameters: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        76: .line 168
            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;
        77: .line 167
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        78: .line 168
            aload 9 /* ex */
        79: .line 166
            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
        80: .line 170
      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
        81: .line 172
      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   82     0              this  Lsun/security/ssl/DHServerKeyExchange$DHServerKeyExchangeMessage;
            0   82     1  handshakeContext  Lsun/security/ssl/HandshakeContext;
            3   82     2               shc  Lsun/security/ssl/ServerHandshakeContext;
            4   82     3     dhePossession  Lsun/security/ssl/DHKeyExchange$DHEPossession;
            5   82     4    x509Possession  Lsun/security/ssl/X509Authentication$X509Possession;
            7   15     5        possession  Lsun/security/ssl/SSLPossession;
           21   82     5         publicKey  Ljavax/crypto/interfaces/DHPublicKey;
           22   82     6            params  Ljavax/crypto/spec/DHParameterSpec;
           34   81     7            signer  Ljava/security/Signature;
           49   55     8              nsae  Ljava/security/GeneralSecurityException;
           61   67     8                 e  Ljava/security/GeneralSecurityException;
           68   81     8         signature  [B
           74   80     9                ex  Ljava/security/SignatureException;
      Exception table:
        from    to  target  type
          44    47      48  Class java.security.NoSuchAlgorithmException
          44    47      48  Class java.security.InvalidKeyException
          44    47      48  Class java.security.InvalidAlgorithmParameterException
          56    59      60  Class java.security.NoSuchAlgorithmException
          56    59      60  Class java.security.InvalidKeyException
          68    72      73  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 176
            aload 0 /* this */
            aload 1 /* handshakeContext */
            invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
         1: .line 180
            aload 1 /* handshakeContext */
            checkcast sun.security.ssl.ClientHandshakeContext
         2: .line 179
            astore 3 /* chc */
        start local 3 // sun.security.ssl.ClientHandshakeContext chc
         3: .line 182
            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 183
            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 184
            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 187
            new javax.crypto.spec.DHPublicKeySpec
            dup
         7: .line 188
            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 189
            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 190
            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 187
            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 191
            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 192
            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 193
            ldc "Invalid DH ServerKeyExchange: invalid parameters"
            aload 4 /* ike */
        15: .line 192
            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 196
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* x509Credentials */
        start local 4 // sun.security.ssl.X509Authentication$X509Credentials x509Credentials
        17: .line 197
            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 198
            aload 5 /* cd */
            instanceof sun.security.ssl.X509Authentication$X509Credentials
            ifeq 22
        20: .line 199
            aload 5 /* cd */
            checkcast sun.security.ssl.X509Authentication$X509Credentials
            astore 4 /* x509Credentials */
        21: .line 200
            goto 23
        end local 5 // sun.security.ssl.SSLCredentials cd
        22: .line 197
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        23: .line 204
      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 206
            aload 2 /* m */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 28
        25: .line 207
            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 208
            ldc "Invalid DH ServerKeyExchange: unknown extra data"
        27: .line 207
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        28: .line 211
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        29: .line 212
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
        30: .line 213
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        31: .line 215
            return
        32: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        33: .line 219
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
        34: .line 218
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        35: .line 220
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 51
        36: .line 221
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
            istore 5 /* ssid */
        start local 5 // int ssid
        37: .line 222
            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 223
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            ifnonnull 44
        39: .line 224
            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 225
            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 226
            ldc ") used in DH ServerKeyExchange handshake message"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        42: .line 225
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        43: .line 224
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        44: .line 229
      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 230
            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 231
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        47: .line 232
            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 233
            ldc ") used in DH ServerKeyExchange handshake message"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        49: .line 231
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        50: .line 230
            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 236
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        52: .line 240
      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 242
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 65
        54: .line 244
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        55: .line 245
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
        56: .line 244
            invokevirtual sun.security.ssl.SignatureScheme.getSignature:(Ljava/security/Key;)Ljava/security/Signature;
            astore 5 /* signer */
        start local 5 // java.security.Signature signer
        57: .line 246
            goto 76
        end local 5 // java.security.Signature signer
        58: .line 247
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 6 /* nsae */
        start local 6 // java.security.GeneralSecurityException nsae
        59: .line 248
            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 249
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        61: .line 250
            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 249
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 250
            aload 6 /* nsae */
        64: .line 248
            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 255
      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 256
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
        67: .line 254
            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 257
            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 258
            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 259
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        72: .line 260
            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 259
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        74: .line 260
            aload 6 /* e */
        75: .line 258
            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 265
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 0 /* this */
            aload 5 /* signer */
        77: .line 266
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        78: .line 267
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        79: .line 265
            invokevirtual sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
        80: .line 269
            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 270
            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 271
            ldc "Invalid signature on DH ServerKeyExchange message"
        83: .line 270
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        84: .line 273
      StackMap locals:
      StackMap stack: java.security.SignatureException
            astore 6 /* ex */
        start local 6 // java.security.SignatureException ex
        85: .line 274
            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 275
            ldc "Cannot verify DH ServerKeyExchange signature"
            aload 6 /* ex */
        87: .line 274
            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 277
      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 281
            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 286
            iconst_0
            istore 1 /* sigLen */
        start local 1 // int sigLen
         1: .line 287
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnull 5
         2: .line 288
            iconst_2
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            arraylength
            iadd
            istore 1 /* sigLen */
         3: .line 289
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 5
         4: .line 290
            iload 1 /* sigLen */
            invokestatic sun.security.ssl.SignatureScheme.sizeInRecord:()I
            iadd
            istore 1 /* sigLen */
         5: .line 294
      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 300
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         1: .line 301
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         2: .line 302
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         3: .line 304
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnull 7
         4: .line 305
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 6
         5: .line 306
            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 309
      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 311
      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 315
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnonnull 15
         1: .line 316
            new java.text.MessageFormat
            dup
         2: .line 317
            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 330
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
         4: .line 316
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
         5: .line 332
            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 333
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 335
            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 334
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
         9: .line 337
            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 336
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        11: .line 339
            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 338
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        13: .line 333
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        14: .line 342
            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 345
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 33
        16: .line 346
            new java.text.MessageFormat
            dup
        17: .line 347
            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 366
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
        19: .line 346
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
        20: .line 368
            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 369
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
        22: .line 371
            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 370
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        24: .line 373
            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 372
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        26: .line 375
            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 374
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_3
        28: .line 376
            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 378
            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 377
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        31: .line 369
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        32: .line 381
            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 383
      StackMap locals:
      StackMap stack:
            new java.text.MessageFormat
            dup
        34: .line 384
            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 400
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
        36: .line 383
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
        37: .line 402
            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 403
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        39: .line 405
            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 404
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        41: .line 407
            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 406
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        43: .line 409
            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 408
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_3
        45: .line 411
            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 410
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        47: .line 403
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        48: .line 414
            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 420
            aconst_null
            astore 2 /* signer */
        start local 2 // java.security.Signature signer
         1: .line 421
            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 423
      StackMap locals:
      StackMap stack:
            ldc "DSA"
            invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            astore 2 /* signer */
         5: .line 424
            goto 11
         6: .line 426
      StackMap locals:
      StackMap stack:
            invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
            astore 2 /* signer */
         7: .line 427
            goto 11
         8: .line 429
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
         9: .line 430
            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 429
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 433
      StackMap locals:
      StackMap stack:
            aload 2 /* signer */
            ifnull 16
        12: .line 434
            aload 1 /* key */
            instanceof java.security.PublicKey
            ifeq 15
        13: .line 435
            aload 2 /* signer */
            aload 1 /* key */
            checkcast java.security.PublicKey
            invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
        14: .line 436
            goto 16
        15: .line 437
      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 441
      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 451
            aload 1 /* sig */
            aload 2 /* clntNonce */
            invokevirtual java.security.Signature.update:([B)V
         1: .line 452
            aload 1 /* sig */
            aload 3 /* svrNonce */
            invokevirtual java.security.Signature.update:([B)V
         2: .line 454
            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 455
            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 456
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual java.security.Signature.update:([B)V
         5: .line 458
            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 459
            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 460
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual java.security.Signature.update:([B)V
         8: .line 462
            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 463
            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 464
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual java.security.Signature.update:([B)V
        11: .line 465
            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:
  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