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 curveId;
    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=4, locals=11, 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 990
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
         1: .line 995
            aload 0 /* this */
            aload 7 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 997
            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 998
            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 999
            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 1000
            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 1001
            aload 0 /* this */
            aload 8 /* params */
            invokestatic sun.security.ssl.EllipticCurvesExtension.getCurveIndex:(Ljava/security/spec/ECParameterSpec;)I
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
         7: .line 1003
            aload 2 /* privateKey */
            ifnonnull 9
         8: .line 1005
            return
         9: .line 1009
      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
      StackMap stack:
            aload 7 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 13
        10: .line 1010
            aload 0 /* this */
            aload 6 /* signAlgorithm */
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
        11: .line 1011
            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 10 /* sig */
        start local 10 // java.security.Signature sig
        12: .line 1012
            goto 14
        end local 10 // java.security.Signature sig
        13: .line 1013
      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 10 /* sig */
        start local 10 // java.security.Signature sig
        14: .line 1015
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 10 /* sig */
            aload 2 /* privateKey */
            aload 5 /* sr */
            invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V
        15: .line 1017
            aload 0 /* this */
            aload 10 /* sig */
            aload 3 /* clntNonce */
            aload 4 /* svrNonce */
            invokevirtual sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.updateSignature:(Ljava/security/Signature;[B[B)V
        16: .line 1018
            aload 0 /* this */
            aload 10 /* sig */
            invokevirtual java.security.Signature.sign:()[B
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
        17: .line 1019
            return
        end local 10 // java.security.Signature sig
        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   18     0             this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            0   18     1              obj  Lsun/security/ssl/ECDHCrypt;
            0   18     2       privateKey  Ljava/security/PrivateKey;
            0   18     3        clntNonce  [B
            0   18     4         svrNonce  [B
            0   18     5               sr  Ljava/security/SecureRandom;
            0   18     6    signAlgorithm  Lsun/security/ssl/SignatureAndHashAlgorithm;
            0   18     7  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            4   18     8           params  Ljava/security/spec/ECParameterSpec;
            5   18     9            point  Ljava/security/spec/ECPoint;
           12   13    10              sig  Ljava/security/Signature;
           14   18    10              sig  Ljava/security/Signature;
    Exceptions:
      throws 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 1024
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage$ServerKeyExchange.<init>:()V
         1: .line 1030
            aload 0 /* this */
            aload 6 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 1033
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 7 /* curveType */
        start local 7 // int curveType
         3: .line 1037
            iload 7 /* curveType */
            iconst_3
            if_icmpne 19
         4: .line 1038
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt16:()I
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
         5: .line 1039
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
            invokestatic sun.security.ssl.EllipticCurvesExtension.isSupported:(I)Z
            ifne 9
         6: .line 1040
            new javax.net.ssl.SSLHandshakeException
            dup
         7: .line 1041
            new java.lang.StringBuilder
            dup
            ldc "Unsupported curveId: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 1040
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 1043
      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:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
            invokestatic sun.security.ssl.EllipticCurvesExtension.getCurveOid:(I)Ljava/lang/String;
            astore 9 /* curveOid */
        start local 9 // java.lang.String curveOid
        10: .line 1044
            aload 9 /* curveOid */
            ifnonnull 14
        11: .line 1045
            new javax.net.ssl.SSLHandshakeException
            dup
        12: .line 1046
            new java.lang.StringBuilder
            dup
            ldc "Unknown named curve: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 1045
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 1048
      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 java.lang.String
      StackMap stack:
            aload 9 /* curveOid */
            invokestatic sun.security.ssl.JsseJce.getECParameterSpec:(Ljava/lang/String;)Ljava/security/spec/ECParameterSpec;
            astore 8 /* parameters */
        start local 8 // java.security.spec.ECParameterSpec parameters
        15: .line 1049
            aload 8 /* parameters */
            ifnonnull 22
        16: .line 1050
            new javax.net.ssl.SSLHandshakeException
            dup
        17: .line 1051
            new java.lang.StringBuilder
            dup
            ldc "Unsupported curve: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* curveOid */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 1050
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // java.lang.String curveOid
        end local 8 // java.security.spec.ECParameterSpec parameters
        19: .line 1054
      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
        20: .line 1055
            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;
        21: .line 1054
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        start local 8 // java.security.spec.ECParameterSpec parameters
        22: .line 1057
      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
        23: .line 1059
            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
        24: .line 1060
            ldc "EC"
            invokestatic sun.security.ssl.JsseJce.getKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 10 /* factory */
        start local 10 // java.security.KeyFactory factory
        25: .line 1061
            aload 0 /* this */
            aload 10 /* factory */
        26: .line 1062
            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
        27: .line 1061
            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;
        28: .line 1064
            aload 2 /* signingKey */
            ifnonnull 30
        29: .line 1066
            return
        30: .line 1070
      StackMap locals: java.security.spec.ECPoint java.security.KeyFactory
      StackMap stack:
            aload 6 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 43
        31: .line 1071
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 11 /* hash */
        start local 11 // int hash
        32: .line 1072
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 12 /* signature */
        start local 12 // int signature
        33: .line 1074
            aload 0 /* this */
        34: .line 1075
            iload 11 /* hash */
            iload 12 /* signature */
            iconst_0
            invokestatic sun.security.ssl.SignatureAndHashAlgorithm.valueOf:(III)Lsun/security/ssl/SignatureAndHashAlgorithm;
        35: .line 1074
            putfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
        36: .line 1078
            aload 5 /* localSupportedSignAlgs */
        37: .line 1079
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
        38: .line 1078
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
        39: .line 1079
            ifne 43
        40: .line 1080
            new javax.net.ssl.SSLHandshakeException
            dup
        41: .line 1081
            ldc "Unsupported SignatureAndHashAlgorithm in ServerKeyExchange message"
        42: .line 1080
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 12 // int signature
        end local 11 // int hash
        43: .line 1087
      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
        44: .line 1091
            aload 6 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 48
        45: .line 1093
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.preferableSignatureAlgorithm:Lsun/security/ssl/SignatureAndHashAlgorithm;
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
        46: .line 1092
            invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            astore 11 /* sig */
        start local 11 // java.security.Signature sig
        47: .line 1094
            goto 49
        end local 11 // java.security.Signature sig
        48: .line 1095
      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
        49: .line 1097
      StackMap locals: java.security.Signature
      StackMap stack:
            aload 11 /* sig */
            aload 2 /* signingKey */
            invokevirtual java.security.Signature.initVerify:(Ljava/security/PublicKey;)V
        50: .line 1099
            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
        51: .line 1101
            aload 11 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            invokevirtual java.security.Signature.verify:([B)Z
            ifne 55
        52: .line 1102
            new javax.net.ssl.SSLKeyException
            dup
        53: .line 1103
            ldc "Invalid signature on ECDH server key exchange message"
        54: .line 1102
            invokespecial javax.net.ssl.SSLKeyException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 1105
      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   56     0                    this  Lsun/security/ssl/HandshakeMessage$ECDH_ServerKeyExchange;
            0   56     1                   input  Lsun/security/ssl/HandshakeInStream;
            0   56     2              signingKey  Ljava/security/PublicKey;
            0   56     3               clntNonce  [B
            0   56     4                svrNonce  [B
            0   56     5  localSupportedSignAlgs  Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;
            0   56     6         protocolVersion  Lsun/security/ssl/ProtocolVersion;
            3   56     7               curveType  I
           15   19     8              parameters  Ljava/security/spec/ECParameterSpec;
           22   56     8              parameters  Ljava/security/spec/ECParameterSpec;
           10   19     9                curveOid  Ljava/lang/String;
           24   56     9                   point  Ljava/security/spec/ECPoint;
           25   56    10                 factory  Ljava/security/KeyFactory;
           32   43    11                    hash  I
           33   43    12               signature  I
           47   48    11                     sig  Ljava/security/Signature;
           49   56    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 1111
            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=3, locals=2, args_size=1
        start local 0 // java.lang.String keyAlgorithm
         0: .line 1116
            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 1118
      StackMap locals:
      StackMap stack:
            ldc "SHA1withECDSA"
            invokestatic sun.security.ssl.JsseJce.getSignature:(Ljava/lang/String;)Ljava/security/Signature;
            areturn
         4: .line 1120
      StackMap locals:
      StackMap stack:
            invokestatic sun.security.ssl.RSASignature.getInstance:()Ljava/security/Signature;
            areturn
         5: .line 1122
      StackMap locals:
      StackMap stack:
            new java.security.NoSuchAlgorithmException
            dup
            ldc "neither an RSA or a EC key"
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String keyAlgorithm
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     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 1128
            aload 1 /* sig */
            aload 2 /* clntNonce */
            invokevirtual java.security.Signature.update:([B)V
         1: .line 1129
            aload 1 /* sig */
            aload 3 /* svrNonce */
            invokevirtual java.security.Signature.update:([B)V
         2: .line 1131
            aload 1 /* sig */
            iconst_3
            invokevirtual java.security.Signature.update:(B)V
         3: .line 1132
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
            bipush 8
            ishr
            i2b
            invokevirtual java.security.Signature.update:(B)V
         4: .line 1133
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
            i2b
            invokevirtual java.security.Signature.update:(B)V
         5: .line 1134
            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 1135
            aload 1 /* sig */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.pointBytes:[B
            invokevirtual java.security.Signature.update:([B)V
         7: .line 1136
            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 1139
            iconst_0
            istore 1 /* sigLen */
        start local 1 // int sigLen
         1: .line 1140
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            ifnull 5
         2: .line 1141
            iconst_2
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            arraylength
            iadd
            istore 1 /* sigLen */
         3: .line 1142
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 5
         4: .line 1143
            iload 1 /* sigLen */
            invokestatic sun.security.ssl.SignatureAndHashAlgorithm.sizeInRecord:()I
            iadd
            istore 1 /* sigLen */
         5: .line 1147
      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 1151
            aload 1 /* s */
            iconst_3
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         1: .line 1152
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.curveId:I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
         2: .line 1153
            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 1155
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            ifnull 8
         4: .line 1156
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 7
         5: .line 1157
            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 1158
            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 1161
      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 1163
      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 1166
            aload 1 /* s */
            ldc "*** ECDH ServerKeyExchange"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 1168
            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 1169
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.signatureBytes:[B
            ifnonnull 5
         3: .line 1170
            aload 1 /* s */
            ldc "Anonymous"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 1171
            goto 9
         5: .line 1172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 9
         6: .line 1173
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "Signature Algorithm "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 1174
            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 1173
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 1178
      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 1180
      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