final class sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange extends sun.security.ssl.HandshakeMessage$ServerKeyExchange
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange
  super_class: sun.security.ssl.HandshakeMessage$ServerKeyExchange
{
  private static final int CURVE_EXPLICIT_PRIME;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int CURVE_EXPLICIT_CHAR2;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int CURVE_NAMED_CURVE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private int groupId;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private byte[] pointBytes;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] signatureBytes;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private java.security.interfaces.ECPublicKey publicKey;
    descriptor: Ljava/security/interfaces/ECPublicKey;
    flags: (0x0002) ACC_PRIVATE

  sun.security.ssl.ProtocolVersion protocolVersion;
    descriptor: Lsun/security/ssl/ProtocolVersion;
    flags: (0x0000) 

  private sun.security.ssl.SignatureAndHashAlgorithm preferableSignatureAlgorithm;
    descriptor: Lsun/security/ssl/SignatureAndHashAlgorithm;
    flags: (0x0002) ACC_PRIVATE

  void <init>(sun.security.ssl.ECDHCrypt, java.security.PrivateKey, byte[], byte[], java.security.SecureRandom, sun.security.ssl.SignatureAndHashAlgorithm, sun.security.ssl.ProtocolVersion);
    descriptor: (Lsun/security/ssl/ECDHCrypt;Ljava/security/PrivateKey;[B[BLjava/security/SecureRandom;Lsun/security/ssl/SignatureAndHashAlgorithm;Lsun/security/ssl/ProtocolVersion;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=12, args_size=8
        start local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
        start local 1 // sun.security.ssl.ECDHCrypt obj
        start local 2 // java.security.PrivateKey privateKey
        start local 3 // byte[] clntNonce
        start local 4 // byte[] svrNonce
        start local 5 // java.security.SecureRandom sr
        start local 6 // sun.security.ssl.SignatureAndHashAlgorithm signAlgorithm
        start local 7 // sun.security.ssl.ProtocolVersion protocolVersion
         0: .line 1394
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
         1: .line 1400
            aload 0 /* this */
            aload 7 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 1402
            aload 0 /* this */
            aload 1 /* obj */
            invokevirtual sun.security.ssl.ECDHCrypt.getPublicKey:()Ljava/security/PublicKey;
            checkcast java.security.interfaces.ECPublicKey
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
         3: .line 1403
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            astore 8 /* params */
        start local 8 // java.security.spec.ECParameterSpec params
         4: .line 1404
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getW:()Ljava/security/spec/ECPoint;
            astore 9 /* point */
        start local 9 // java.security.spec.ECPoint point
         5: .line 1405
            aload 0 /* this */
            aload 9 /* point */
            aload 8 /* params */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokestatic sun.security.ssl.JsseJce.encodePoint:(Ljava/security/spec/ECPoint;Ljava/security/spec/EllipticCurve;)[B
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
         6: .line 1407
            aload 8 /* params */
            invokestatic sun.security.ssl.NamedGroup.valueOf:(Ljava/security/spec/ECParameterSpec;)Lsun/security/ssl/NamedGroup;
            astore 10 /* namedGroup */
        start local 10 // sun.security.ssl.NamedGroup namedGroup
         7: .line 1408
            aload 10 /* namedGroup */
            ifnull 8
            aload 10 /* namedGroup */
            getfield sun.security.ssl.NamedGroup.oid:Ljava/lang/String;
            ifnonnull 11
         8: .line 1410
      StackMap locals: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange sun.security.ssl.ECDHCrypt java.security.PrivateKey byte[] byte[] java.security.SecureRandom sun.security.ssl.SignatureAndHashAlgorithm sun.security.ssl.ProtocolVersion java.security.spec.ECParameterSpec java.security.spec.ECPoint sun.security.ssl.NamedGroup
      StackMap stack:
            new javax.net.ssl.SSLHandshakeException
            dup
         9: .line 1411
            new java.lang.StringBuilder
            dup
            ldc "Unnamed EC parameter spec: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* params */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 1410
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 1413
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 10 /* namedGroup */
            getfield sun.security.ssl.NamedGroup.id:I
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.groupId:I
        12: .line 1415
            aload 2 /* privateKey */
            ifnonnull 14
        13: .line 1417
            return
        14: .line 1421
      StackMap locals:
      StackMap stack:
            aload 7 /* protocolVersion */
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
            ifeq 18
        15: .line 1422
            aload 0 /* this */
            aload 6 /* signAlgorithm */
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
        16: .line 1423
            aload 6 /* signAlgorithm */
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
            invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            astore 11 /* sig */
        start local 11 // java.security.Signature sig
        17: .line 1424
            goto 19
        end local 11 // java.security.Signature sig
        18: .line 1425
      StackMap locals:
      StackMap stack:
            aload 2 /* privateKey */
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
            invokestatic sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            astore 11 /* sig */
        start local 11 // java.security.Signature sig
        19: .line 1427
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 11 /* sig */
            aload 2 /* privateKey */
            aload 5 /* sr */
            invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V
        20: .line 1429
            aload 0 /* this */
            aload 11 /* sig */
            aload 3 /* clntNonce */
            aload 4 /* svrNonce */
            invokevirtual sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.updateSignature:(Ljava/security/Signature;[B[B)V
        21: .line 1430
            aload 0 /* this */
            aload 11 /* sig */
            invokevirtual java.security.Signature.sign:()[B
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
        22: .line 1431
            return
        end local 11 // java.security.Signature sig
        end local 10 // sun.security.ssl.NamedGroup namedGroup
        end local 9 // java.security.spec.ECPoint point
        end local 8 // java.security.spec.ECParameterSpec params
        end local 7 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 6 // sun.security.ssl.SignatureAndHashAlgorithm signAlgorithm
        end local 5 // java.security.SecureRandom sr
        end local 4 // byte[] svrNonce
        end local 3 // byte[] clntNonce
        end local 2 // java.security.PrivateKey privateKey
        end local 1 // sun.security.ssl.ECDHCrypt obj
        end local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   23     0             this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            0   23     1              obj  Lsun/security/ssl/ECDHCrypt;
            0   23     2       privateKey  Ljava/security/PrivateKey;
            0   23     3        clntNonce  [B
            0   23     4         svrNonce  [B
            0   23     5               sr  Ljava/security/SecureRandom;
            0   23     6    signAlgorithm  Lsun/security/ssl/SignatureAndHashAlgorithm;
            0   23     7  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            4   23     8           params  Ljava/security/spec/ECParameterSpec;
            5   23     9            point  Ljava/security/spec/ECPoint;
            7   23    10       namedGroup  Lsun/security/ssl/NamedGroup;
           17   18    11              sig  Ljava/security/Signature;
           19   23    11              sig  Ljava/security/Signature;
    Exceptions:
      throws javax.net.ssl.SSLHandshakeException, java.security.GeneralSecurityException
    MethodParameters:
                 Name  Flags
      obj              
      privateKey       
      clntNonce        
      svrNonce         
      sr               
      signAlgorithm    
      protocolVersion  

  void <init>(sun.security.ssl.HandshakeInStream, java.security.PublicKey, byte[], byte[], java.util.Collection<sun.security.ssl.SignatureAndHashAlgorithm>, sun.security.ssl.ProtocolVersion);
    descriptor: (Lsun/security/ssl/HandshakeInStream;Ljava/security/PublicKey;[B[BLjava/util/Collection;Lsun/security/ssl/ProtocolVersion;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=13, args_size=7
        start local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
        start local 1 // sun.security.ssl.HandshakeInStream input
        start local 2 // java.security.PublicKey signingKey
        start local 3 // byte[] clntNonce
        start local 4 // byte[] svrNonce
        start local 5 // java.util.Collection localSupportedSignAlgs
        start local 6 // sun.security.ssl.ProtocolVersion protocolVersion
         0: .line 1436
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
         1: .line 1442
            aload 0 /* this */
            aload 6 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 1445
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 7 /* curveType */
        start local 7 // int curveType
         3: .line 1449
            iload 7 /* curveType */
            iconst_3
            if_icmpne 23
         4: .line 1450
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt16:()I
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.groupId:I
         5: .line 1451
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.groupId:I
            invokestatic sun.security.ssl.NamedGroup.valueOf:(I)Lsun/security/ssl/NamedGroup;
            astore 9 /* namedGroup */
        start local 9 // sun.security.ssl.NamedGroup namedGroup
         6: .line 1452
            aload 9 /* namedGroup */
            ifnonnull 10
         7: .line 1453
            new javax.net.ssl.SSLHandshakeException
            dup
         8: .line 1454
            new java.lang.StringBuilder
            dup
            ldc "Unknown named group ID: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.groupId:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 1453
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1457
      StackMap locals: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] java.util.Collection sun.security.ssl.ProtocolVersion int top sun.security.ssl.NamedGroup
      StackMap stack:
            aload 9 /* namedGroup */
            invokestatic sun.security.ssl.SupportedGroupsExtension.supports:(Lsun/security/ssl/NamedGroup;)Z
            ifne 14
        11: .line 1458
            new javax.net.ssl.SSLHandshakeException
            dup
        12: .line 1459
            new java.lang.StringBuilder
            dup
            ldc "Unsupported named group: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* namedGroup */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 1458
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 1462
      StackMap locals:
      StackMap stack:
            aload 9 /* namedGroup */
            getfield sun.security.ssl.NamedGroup.oid:Ljava/lang/String;
            ifnonnull 18
        15: .line 1463
            new javax.net.ssl.SSLHandshakeException
            dup
        16: .line 1464
            new java.lang.StringBuilder
            dup
            ldc "Unknown named EC curve: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* namedGroup */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 1463
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 1467
      StackMap locals:
      StackMap stack:
            aload 9 /* namedGroup */
            getfield sun.security.ssl.NamedGroup.oid:Ljava/lang/String;
            invokestatic sun.security.ssl.JsseJce.getECParameterSpec:(Ljava/lang/String;)Ljava/security/spec/ECParameterSpec;
            astore 8 /* parameters */
        start local 8 // java.security.spec.ECParameterSpec parameters
        19: .line 1468
            aload 8 /* parameters */
            ifnonnull 26
        20: .line 1469
            new javax.net.ssl.SSLHandshakeException
            dup
        21: .line 1470
            new java.lang.StringBuilder
            dup
            ldc "No supported EC parameter for named group: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* namedGroup */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        22: .line 1469
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // sun.security.ssl.NamedGroup namedGroup
        end local 8 // java.security.spec.ECParameterSpec parameters
        23: .line 1473
      StackMap locals: sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange sun.security.ssl.HandshakeInStream java.security.PublicKey byte[] byte[] java.util.Collection sun.security.ssl.ProtocolVersion int
      StackMap stack:
            new javax.net.ssl.SSLHandshakeException
            dup
        24: .line 1474
            new java.lang.StringBuilder
            dup
            ldc "Unsupported ECCurveType: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* curveType */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        25: .line 1473
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        start local 8 // java.security.spec.ECParameterSpec parameters
        26: .line 1476
      StackMap locals: java.security.spec.ECParameterSpec
      StackMap stack:
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
        27: .line 1478
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
            aload 8 /* parameters */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokestatic sun.security.ssl.JsseJce.decodePoint:([BLjava/security/spec/EllipticCurve;)Ljava/security/spec/ECPoint;
            astore 9 /* point */
        start local 9 // java.security.spec.ECPoint point
        28: .line 1479
            ldc "EC"
            invokestatic sun.security.ssl.JsseJce.getKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 10 /* factory */
        start local 10 // java.security.KeyFactory factory
        29: .line 1480
            aload 0 /* this */
            aload 10 /* factory */
        30: .line 1481
            new java.security.spec.ECPublicKeySpec
            dup
            aload 9 /* point */
            aload 8 /* parameters */
            invokespecial java.security.spec.ECPublicKeySpec.<init>:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
        31: .line 1480
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            checkcast java.security.interfaces.ECPublicKey
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
        32: .line 1483
            aload 2 /* signingKey */
            ifnonnull 34
        33: .line 1485
            return
        34: .line 1489
      StackMap locals: java.security.spec.ECPoint java.security.KeyFactory
      StackMap stack:
            aload 6 /* protocolVersion */
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
            ifeq 49
        35: .line 1490
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 11 /* hash */
        start local 11 // int hash
        36: .line 1491
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 12 /* signature */
        start local 12 // int signature
        37: .line 1493
            aload 0 /* this */
        38: .line 1494
            iload 11 /* hash */
            iload 12 /* signature */
            iconst_0
            invokestatic sun.security.ssl.SignatureAndHashAlgorithm.valueOf:(III)Lsun/security/ssl/SignatureAndHashAlgorithm;
        39: .line 1493
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
        40: .line 1497
            aload 5 /* localSupportedSignAlgs */
        41: .line 1498
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
        42: .line 1497
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
        43: .line 1498
            ifne 49
        44: .line 1499
            new javax.net.ssl.SSLHandshakeException
            dup
        45: .line 1500
            new java.lang.StringBuilder
            dup
            ldc "Unsupported SignatureAndHashAlgorithm in ServerKeyExchange message: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        46: .line 1502
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        47: .line 1500
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        48: .line 1499
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 12 // int signature
        end local 11 // int hash
        49: .line 1507
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes16:()[B
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
        50: .line 1511
            aload 6 /* protocolVersion */
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
            ifeq 54
        51: .line 1513
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
        52: .line 1512
            invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            astore 11 /* sig */
        start local 11 // java.security.Signature sig
        53: .line 1514
            goto 55
        end local 11 // java.security.Signature sig
        54: .line 1515
      StackMap locals:
      StackMap stack:
            aload 2 /* signingKey */
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            invokestatic sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            astore 11 /* sig */
        start local 11 // java.security.Signature sig
        55: .line 1517
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 11 /* sig */
            aload 2 /* signingKey */
            invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
        56: .line 1519
            aload 0 /* this */
            aload 11 /* sig */
            aload 3 /* clntNonce */
            aload 4 /* svrNonce */
            invokevirtual sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.updateSignature:(Ljava/security/Signature;[B[B)V
        57: .line 1521
            aload 11 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            invokevirtual java.security.Signature.verify:([B)Z
            ifne 61
        58: .line 1522
            new javax.net.ssl.SSLKeyException
            dup
        59: .line 1523
            ldc "Invalid signature on ECDH server key exchange message"
        60: .line 1522
            invokespecial javax.net.ssl.SSLKeyException.<init>:(Ljava/lang/String;)V
            athrow
        61: .line 1525
      StackMap locals:
      StackMap stack:
            return
        end local 11 // java.security.Signature sig
        end local 10 // java.security.KeyFactory factory
        end local 9 // java.security.spec.ECPoint point
        end local 8 // java.security.spec.ECParameterSpec parameters
        end local 7 // int curveType
        end local 6 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 5 // java.util.Collection localSupportedSignAlgs
        end local 4 // byte[] svrNonce
        end local 3 // byte[] clntNonce
        end local 2 // java.security.PublicKey signingKey
        end local 1 // sun.security.ssl.HandshakeInStream input
        end local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   62     0                    this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            0   62     1                   input  Lsun/security/ssl/HandshakeInStream;
            0   62     2              signingKey  Ljava/security/PublicKey;
            0   62     3               clntNonce  [B
            0   62     4                svrNonce  [B
            0   62     5  localSupportedSignAlgs  Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;
            0   62     6         protocolVersion  Lsun/security/ssl/ProtocolVersion;
            3   62     7               curveType  I
           19   23     8              parameters  Ljava/security/spec/ECParameterSpec;
           26   62     8              parameters  Ljava/security/spec/ECParameterSpec;
            6   23     9              namedGroup  Lsun/security/ssl/NamedGroup;
           28   62     9                   point  Ljava/security/spec/ECPoint;
           29   62    10                 factory  Ljava/security/KeyFactory;
           36   49    11                    hash  I
           37   49    12               signature  I
           53   54    11                     sig  Ljava/security/Signature;
           55   62    11                     sig  Ljava/security/Signature;
    Exceptions:
      throws java.io.IOException, java.security.GeneralSecurityException
    Signature: (Lsun/security/ssl/HandshakeInStream;Ljava/security/PublicKey;[B[BLjava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;Lsun/security/ssl/ProtocolVersion;)V
    MethodParameters:
                        Name  Flags
      input                   
      signingKey              
      clntNonce               
      svrNonce                
      localSupportedSignAlgs  
      protocolVersion         

  java.security.interfaces.ECPublicKey getPublicKey();
    descriptor: ()Ljava/security/interfaces/ECPublicKey;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
         0: .line 1531
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
            areturn
        end local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;

  private static java.security.Signature getSignature(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/Signature;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.String keyAlgorithm
         0: .line 1536
            aload 0 /* keyAlgorithm */
            dup
            astore 1
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
                 2206: 1
                81440: 2
              default: 5
          }
      StackMap locals: java.lang.String
      StackMap stack:
         1: aload 1
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 3
            goto 5
      StackMap locals:
      StackMap stack:
         2: aload 1
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            goto 5
         3: .line 1538
      StackMap locals:
      StackMap stack:
            ldc "SHA1withECDSA"
            invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            areturn
         4: .line 1540
      StackMap locals:
      StackMap stack:
            invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
            areturn
         5: .line 1542
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
         6: .line 1543
            new java.lang.StringBuilder
            dup
            ldc "neither an RSA or a EC 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;
         7: .line 1542
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String keyAlgorithm
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0  keyAlgorithm  Ljava/lang/String;
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
              Name  Flags
      keyAlgorithm  

  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.HandshakeMessage$ECDH_ServerKeyExchange this
        start local 1 // java.security.Signature sig
        start local 2 // byte[] clntNonce
        start local 3 // byte[] svrNonce
         0: .line 1549
            aload 1 /* sig */
            aload 2 /* clntNonce */
            invokevirtual java.security.Signature.update:([B)V
         1: .line 1550
            aload 1 /* sig */
            aload 3 /* svrNonce */
            invokevirtual java.security.Signature.update:([B)V
         2: .line 1552
            aload 1 /* sig */
            iconst_3
            invokevirtual java.security.Signature.update:(B)V
         3: .line 1553
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.groupId:I
            bipush 8
            ishr
            i2b
            invokevirtual java.security.Signature.update:(B)V
         4: .line 1554
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.groupId:I
            i2b
            invokevirtual java.security.Signature.update:(B)V
         5: .line 1555
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
            arraylength
            i2b
            invokevirtual java.security.Signature.update:(B)V
         6: .line 1556
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
            invokevirtual java.security.Signature.update:([B)V
         7: .line 1557
            return
        end local 3 // byte[] svrNonce
        end local 2 // byte[] clntNonce
        end local 1 // java.security.Signature sig
        end local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            0    8     1        sig  Ljava/security/Signature;
            0    8     2  clntNonce  [B
            0    8     3   svrNonce  [B
    Exceptions:
      throws java.security.SignatureException
    MethodParameters:
           Name  Flags
      sig        
      clntNonce  
      svrNonce   

  int messageLength();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
         0: .line 1561
            iconst_0
            istore 1 /* sigLen */
        start local 1 // int sigLen
         1: .line 1562
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            ifnull 5
         2: .line 1563
            iconst_2
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            arraylength
            iadd
            istore 1 /* sigLen */
         3: .line 1564
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
            ifeq 5
         4: .line 1565
            iload 1 /* sigLen */
            invokestatic sun.security.ssl.SignatureAndHashAlgorithm.sizeInRecord:()I
            iadd
            istore 1 /* sigLen */
         5: .line 1569
      StackMap locals: int
      StackMap stack:
            iconst_4
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
            arraylength
            iadd
            iload 1 /* sigLen */
            iadd
            ireturn
        end local 1 // int sigLen
        end local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            1    6     1  sigLen  I

  void send(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
        start local 1 // sun.security.ssl.HandshakeOutStream s
         0: .line 1574
            aload 1 /* s */
            iconst_3
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         1: .line 1575
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.groupId:I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
         2: .line 1576
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
         3: .line 1578
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            ifnull 8
         4: .line 1579
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
            ifeq 7
         5: .line 1580
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getHashValue:()I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         6: .line 1581
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getSignatureValue:()I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         7: .line 1584
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes16:([B)V
         8: .line 1586
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.security.ssl.HandshakeOutStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            0    9     1     s  Lsun/security/ssl/HandshakeOutStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  void print(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
        start local 1 // java.io.PrintStream s
         0: .line 1590
            aload 1 /* s */
            ldc "*** ECDH ServerKeyExchange"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 1592
            getstatic sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.debug:Lsun/security/ssl/Debug;
            ifnull 10
            ldc "verbose"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 10
         2: .line 1593
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            ifnonnull 5
         3: .line 1594
            aload 1 /* s */
            ldc "Anonymous"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 1595
            goto 9
         5: .line 1596
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS12PlusSpec:()Z
            ifeq 9
         6: .line 1597
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "Signature Algorithm "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 1598
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 1597
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 1602
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "Server key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 1604
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.PrintStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            0   11     1     s  Ljava/io/PrintStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
  final ECDH_ServerKeyExchange = sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange of sun.security.ssl.HandshakeMessage
  abstract ServerKeyExchange = sun.security.ssl.HandshakeMessage$ServerKeyExchange of sun.security.ssl.HandshakeMessage