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 84
            aload 0 /* this */
            aload 1 /* handshakeContext */
            invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
         1: .line 88
            aload 1 /* handshakeContext */
            checkcast sun.security.ssl.ServerHandshakeContext
         2: .line 87
            astore 2 /* shc */
        start local 2 // sun.security.ssl.ServerHandshakeContext shc
         3: .line 90
            aconst_null
            astore 3 /* dhePossession */
        start local 3 // sun.security.ssl.DHKeyExchange$DHEPossession dhePossession
         4: .line 91
            aconst_null
            astore 4 /* x509Possession */
        start local 4 // sun.security.ssl.X509Authentication$X509Possession x509Possession
         5: .line 92
            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 93
            aload 5 /* possession */
            instanceof sun.security.ssl.DHKeyExchange$DHEPossession
            ifeq 11
         8: .line 94
            aload 5 /* possession */
            checkcast sun.security.ssl.DHKeyExchange$DHEPossession
            astore 3 /* dhePossession */
         9: .line 95
            aload 4 /* x509Possession */
            ifnull 15
        10: .line 96
            goto 16
        11: .line 98
      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 99
            aload 5 /* possession */
            checkcast sun.security.ssl.X509Authentication$X509Possession
            astore 4 /* x509Possession */
        13: .line 100
            aload 3 /* dhePossession */
            ifnull 15
        14: .line 101
            goto 16
        end local 5 // sun.security.ssl.SSLPossession possession
        15: .line 92
      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 106
      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 108
            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 109
            ldc "No DHE credentials negotiated for server key exchange"
        19: .line 108
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        20: .line 111
      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 112
            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 113
            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 114
            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 115
            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 117
            aload 4 /* x509Possession */
            ifnonnull 30
        26: .line 119
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
        27: .line 120
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        28: .line 121
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        29: .line 122
            goto 81
        30: .line 123
      StackMap locals: javax.crypto.interfaces.DHPublicKey javax.crypto.spec.DHParameterSpec
      StackMap stack:
            aload 0 /* this */
        31: .line 124
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
        32: .line 123
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        33: .line 125
            aconst_null
            astore 7 /* signer */
        start local 7 // java.security.Signature signer
        34: .line 126
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 55
        35: .line 127
            aload 0 /* this */
        36: .line 128
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.peerRequestedSignatureSchemes:Ljava/util/List;
        37: .line 129
            aload 4 /* x509Possession */
        38: .line 130
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
        39: .line 127
            invokestatic sun.security.ssl.SignatureScheme.getPreferableAlgorithm:(Ljava/util/List;Lsun/security/ssl/X509Authentication$X509Possession;Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SignatureScheme;
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        40: .line 131
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            ifnonnull 44
        41: .line 134
            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 135
            ldc "No preferred signature algorithm"
        43: .line 134
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        44: .line 138
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        45: .line 139
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        46: .line 138
            invokevirtual sun.security.ssl.SignatureScheme.getSignature:(Ljava/security/Key;)Ljava/security/Signature;
            astore 7 /* signer */
        47: .line 140
            goto 67
        48: .line 141
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 8 /* nsae */
        start local 8 // java.security.GeneralSecurityException nsae
        49: .line 142
            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 143
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        51: .line 144
            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 143
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        53: .line 144
            aload 8 /* nsae */
        54: .line 142
            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 147
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        56: .line 150
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
        57: .line 151
            aload 4 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        58: .line 149
            invokestatic sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.getSignature:(Ljava/lang/String;Ljava/security/Key;)Ljava/security/Signature;
            astore 7 /* signer */
        59: .line 152
            goto 67
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
        60: astore 8 /* e */
        start local 8 // java.security.GeneralSecurityException e
        61: .line 153
            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 154
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        63: .line 155
            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 154
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        65: .line 155
            aload 8 /* e */
        66: .line 153
            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 159
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* signature */
        start local 8 // byte[] signature
        68: .line 161
            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 162
            aload 2 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        70: .line 161
            invokevirtual sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
        71: .line 163
            aload 7 /* signer */
            invokevirtual java.security.Signature.sign:()[B
            astore 8 /* signature */
        72: .line 164
            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 165
            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 166
            new java.lang.StringBuilder
            dup
            ldc "Failed to sign dhe parameters: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        76: .line 167
            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 166
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        78: .line 167
            aload 9 /* ex */
        79: .line 165
            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 169
      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 171
      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 175
            aload 0 /* this */
            aload 1 /* handshakeContext */
            invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
         1: .line 179
            aload 1 /* handshakeContext */
            checkcast sun.security.ssl.ClientHandshakeContext
         2: .line 178
            astore 3 /* chc */
        start local 3 // sun.security.ssl.ClientHandshakeContext chc
         3: .line 181
            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 182
            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 183
            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 186
            new javax.crypto.spec.DHPublicKeySpec
            dup
         7: .line 187
            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 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
         9: .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
        10: .line 186
            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 190
            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 191
            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 192
            ldc "Invalid DH ServerKeyExchange: invalid parameters"
            aload 4 /* ike */
        15: .line 191
            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 195
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* x509Credentials */
        start local 4 // sun.security.ssl.X509Authentication$X509Credentials x509Credentials
        17: .line 196
            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 197
            aload 5 /* cd */
            instanceof sun.security.ssl.X509Authentication$X509Credentials
            ifeq 22
        20: .line 198
            aload 5 /* cd */
            checkcast sun.security.ssl.X509Authentication$X509Credentials
            astore 4 /* x509Credentials */
        21: .line 199
            goto 23
        end local 5 // sun.security.ssl.SSLCredentials cd
        22: .line 196
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        23: .line 203
      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 205
            aload 2 /* m */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 28
        25: .line 206
            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 207
            ldc "Invalid DH ServerKeyExchange: unknown extra data"
        27: .line 206
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        28: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        29: .line 211
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
        30: .line 212
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        31: .line 214
            return
        32: .line 217
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        33: .line 218
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
        34: .line 217
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
        35: .line 219
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 51
        36: .line 220
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
            istore 5 /* ssid */
        start local 5 // int ssid
        37: .line 221
            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 222
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
            ifnonnull 44
        39: .line 223
            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 224
            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 225
            ldc ") used in DH ServerKeyExchange handshake message"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        42: .line 224
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        43: .line 223
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        44: .line 228
      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 229
            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 230
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        47: .line 231
            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 232
            ldc ") used in DH ServerKeyExchange handshake message"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        49: .line 230
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        50: .line 229
            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 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        52: .line 239
      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 241
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 65
        54: .line 243
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.signatureScheme:Lsun/security/ssl/SignatureScheme;
        55: .line 244
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
        56: .line 243
            invokevirtual sun.security.ssl.SignatureScheme.getSignature:(Ljava/security/Key;)Ljava/security/Signature;
            astore 5 /* signer */
        start local 5 // java.security.Signature signer
        57: .line 245
            goto 76
        end local 5 // java.security.Signature signer
        58: .line 246
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 6 /* nsae */
        start local 6 // java.security.GeneralSecurityException nsae
        59: .line 247
            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 248
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        61: .line 249
            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 248
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 249
            aload 6 /* nsae */
        64: .line 247
            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 254
      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 255
            aload 4 /* x509Credentials */
            getfield sun.security.ssl.X509Authentication$X509Credentials.popPublicKey:Ljava/security/PublicKey;
        67: .line 253
            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 256
            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 257
            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 258
            new java.lang.StringBuilder
            dup
            ldc "Unsupported signature algorithm: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        72: .line 259
            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 258
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        74: .line 259
            aload 6 /* e */
        75: .line 257
            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 264
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 0 /* this */
            aload 5 /* signer */
        77: .line 265
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        78: .line 266
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.serverHelloRandom:Lsun/security/ssl/RandomCookie;
            getfield sun.security.ssl.RandomCookie.randomBytes:[B
        79: .line 264
            invokevirtual sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.updateSignature:(Ljava/security/Signature;[B[B)V
        80: .line 268
            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 269
            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 270
            ldc "Invalid signature on DH ServerKeyExchange message"
        83: .line 269
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        84: .line 272
      StackMap locals:
      StackMap stack: java.security.SignatureException
            astore 6 /* ex */
        start local 6 // java.security.SignatureException ex
        85: .line 273
            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 274
            ldc "Cannot verify DH ServerKeyExchange signature"
            aload 6 /* ex */
        87: .line 273
            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 276
      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 280
            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 285
            iconst_0
            istore 1 /* sigLen */
        start local 1 // int sigLen
         1: .line 286
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnull 5
         2: .line 287
            iconst_2
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            arraylength
            iadd
            istore 1 /* sigLen */
         3: .line 288
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 5
         4: .line 289
            iload 1 /* sigLen */
            invokestatic sun.security.ssl.SignatureScheme.sizeInRecord:()I
            iadd
            istore 1 /* sigLen */
         5: .line 293
      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 299
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         1: .line 300
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         2: .line 301
            aload 1 /* hos */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         3: .line 303
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnull 7
         4: .line 304
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 6
         5: .line 305
            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 308
      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 310
      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 314
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.paramsSignature:[B
            ifnonnull 15
         1: .line 315
            new java.text.MessageFormat
            dup
         2: .line 316
            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 329
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
         4: .line 315
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
         5: .line 331
            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 332
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 334
            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 333
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
         9: .line 336
            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 335
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        11: .line 338
            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 337
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        13: .line 332
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        14: .line 341
            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 344
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.useExplicitSigAlgorithm:Z
            ifeq 33
        16: .line 345
            new java.text.MessageFormat
            dup
        17: .line 346
            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 365
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
        19: .line 345
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
        20: .line 367
            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 368
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
        22: .line 370
            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 369
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        24: .line 372
            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 371
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        26: .line 374
            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 373
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_3
        28: .line 375
            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 377
            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 376
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        31: .line 368
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        32: .line 380
            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 382
      StackMap locals:
      StackMap stack:
            new java.text.MessageFormat
            dup
        34: .line 383
            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 399
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
        36: .line 382
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
        37: .line 401
            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 402
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        39: .line 404
            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 403
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        41: .line 406
            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 405
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        43: .line 408
            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 407
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_3
        45: .line 410
            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 409
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            aastore
        47: .line 402
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        48: .line 413
            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 419
            aconst_null
            astore 2 /* signer */
        start local 2 // java.security.Signature signer
         1: .line 420
            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 422
      StackMap locals:
      StackMap stack:
            ldc "DSA"
            invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
            astore 2 /* signer */
         5: .line 423
            goto 11
         6: .line 425
      StackMap locals:
      StackMap stack:
            invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
            astore 2 /* signer */
         7: .line 426
            goto 11
         8: .line 428
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
         9: .line 429
            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 428
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 432
      StackMap locals:
      StackMap stack:
            aload 2 /* signer */
            ifnull 16
        12: .line 433
            aload 1 /* key */
            instanceof java.security.PublicKey
            ifeq 15
        13: .line 434
            aload 2 /* signer */
            aload 1 /* key */
            checkcast java.security.PublicKey
            invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
        14: .line 435
            goto 16
        15: .line 436
      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 440
      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 450
            aload 1 /* sig */
            aload 2 /* clntNonce */
            invokevirtual java.security.Signature.update:([B)V
         1: .line 451
            aload 1 /* sig */
            aload 3 /* svrNonce */
            invokevirtual java.security.Signature.update:([B)V
         2: .line 453
            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 454
            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 455
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.p:[B
            invokevirtual java.security.Signature.update:([B)V
         5: .line 457
            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 458
            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 459
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.g:[B
            invokevirtual java.security.Signature.update:([B)V
         8: .line 461
            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 462
            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 463
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeMessage.y:[B
            invokevirtual java.security.Signature.update:([B)V
        11: .line 464
            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