final class sun.security.ssl.ECDHKeyExchange$ECDHEPossession implements sun.security.ssl.SSLPossession
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.ECDHKeyExchange$ECDHEPossession
  super_class: java.lang.Object
{
  final java.security.PrivateKey privateKey;
    descriptor: Ljava/security/PrivateKey;
    flags: (0x0010) ACC_FINAL

  final java.security.interfaces.ECPublicKey publicKey;
    descriptor: Ljava/security/interfaces/ECPublicKey;
    flags: (0x0010) ACC_FINAL

  final sun.security.ssl.SupportedGroupsExtension$NamedGroup namedGroup;
    descriptor: Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;
    flags: (0x0010) ACC_FINAL

  void <init>(sun.security.ssl.SupportedGroupsExtension$NamedGroup, java.security.SecureRandom);
    descriptor: (Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;Ljava/security/SecureRandom;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
        start local 1 // sun.security.ssl.SupportedGroupsExtension$NamedGroup namedGroup
        start local 2 // java.security.SecureRandom random
         0: .line 106
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 108
            ldc "EC"
            invokestatic sun.security.ssl.JsseJce.getKeyPairGenerator:(Ljava/lang/String;)Ljava/security/KeyPairGenerator;
            astore 3 /* kpg */
        start local 3 // java.security.KeyPairGenerator kpg
         2: .line 110
            aload 1 /* namedGroup */
            invokevirtual sun.security.ssl.SupportedGroupsExtension$NamedGroup.getParameterSpec:()Ljava/security/spec/AlgorithmParameterSpec;
            checkcast java.security.spec.ECGenParameterSpec
         3: .line 109
            astore 4 /* params */
        start local 4 // java.security.spec.ECGenParameterSpec params
         4: .line 111
            aload 3 /* kpg */
            aload 4 /* params */
            aload 2 /* random */
            invokevirtual java.security.KeyPairGenerator.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         5: .line 112
            aload 3 /* kpg */
            invokevirtual java.security.KeyPairGenerator.generateKeyPair:()Ljava/security/KeyPair;
            astore 5 /* kp */
        start local 5 // java.security.KeyPair kp
         6: .line 113
            aload 0 /* this */
            aload 5 /* kp */
            invokevirtual java.security.KeyPair.getPrivate:()Ljava/security/PrivateKey;
            putfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.privateKey:Ljava/security/PrivateKey;
         7: .line 114
            aload 0 /* this */
            aload 5 /* kp */
            invokevirtual java.security.KeyPair.getPublic:()Ljava/security/PublicKey;
            checkcast java.security.interfaces.ECPublicKey
            putfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.publicKey:Ljava/security/interfaces/ECPublicKey;
        end local 5 // java.security.KeyPair kp
        end local 4 // java.security.spec.ECGenParameterSpec params
        end local 3 // java.security.KeyPairGenerator kpg
         8: .line 115
            goto 13
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEPossession sun.security.ssl.SupportedGroupsExtension$NamedGroup java.security.SecureRandom
      StackMap stack: java.security.GeneralSecurityException
         9: astore 3 /* e */
        start local 3 // java.security.GeneralSecurityException e
        10: .line 116
            new java.lang.RuntimeException
            dup
        11: .line 117
            ldc "Could not generate ECDH keypair"
            aload 3 /* e */
        12: .line 116
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.GeneralSecurityException e
        13: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* namedGroup */
            putfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.namedGroup:Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;
        14: .line 121
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // sun.security.ssl.SupportedGroupsExtension$NamedGroup namedGroup
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lsun/security/ssl/ECDHKeyExchange$ECDHEPossession;
            0   15     1  namedGroup  Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;
            0   15     2      random  Ljava/security/SecureRandom;
            2    8     3         kpg  Ljava/security/KeyPairGenerator;
            4    8     4      params  Ljava/security/spec/ECGenParameterSpec;
            6    8     5          kp  Ljava/security/KeyPair;
           10   13     3           e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           1     8       9  Class java.security.GeneralSecurityException
    MethodParameters:
            Name  Flags
      namedGroup  
      random      

  void <init>(sun.security.ssl.ECDHKeyExchange$ECDHECredentials, java.security.SecureRandom);
    descriptor: (Lsun/security/ssl/ECDHKeyExchange$ECDHECredentials;Ljava/security/SecureRandom;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
        start local 1 // sun.security.ssl.ECDHKeyExchange$ECDHECredentials credentials
        start local 2 // java.security.SecureRandom random
         0: .line 123
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 124
            aload 1 /* credentials */
            getfield sun.security.ssl.ECDHKeyExchange$ECDHECredentials.popPublicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            astore 3 /* params */
        start local 3 // java.security.spec.ECParameterSpec params
         2: .line 126
            ldc "EC"
            invokestatic sun.security.ssl.JsseJce.getKeyPairGenerator:(Ljava/lang/String;)Ljava/security/KeyPairGenerator;
            astore 4 /* kpg */
        start local 4 // java.security.KeyPairGenerator kpg
         3: .line 127
            aload 4 /* kpg */
            aload 3 /* params */
            aload 2 /* random */
            invokevirtual java.security.KeyPairGenerator.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         4: .line 128
            aload 4 /* kpg */
            invokevirtual java.security.KeyPairGenerator.generateKeyPair:()Ljava/security/KeyPair;
            astore 5 /* kp */
        start local 5 // java.security.KeyPair kp
         5: .line 129
            aload 0 /* this */
            aload 5 /* kp */
            invokevirtual java.security.KeyPair.getPrivate:()Ljava/security/PrivateKey;
            putfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.privateKey:Ljava/security/PrivateKey;
         6: .line 130
            aload 0 /* this */
            aload 5 /* kp */
            invokevirtual java.security.KeyPair.getPublic:()Ljava/security/PublicKey;
            checkcast java.security.interfaces.ECPublicKey
            putfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.publicKey:Ljava/security/interfaces/ECPublicKey;
        end local 5 // java.security.KeyPair kp
        end local 4 // java.security.KeyPairGenerator kpg
         7: .line 131
            goto 12
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEPossession sun.security.ssl.ECDHKeyExchange$ECDHECredentials java.security.SecureRandom java.security.spec.ECParameterSpec
      StackMap stack: java.security.GeneralSecurityException
         8: astore 4 /* e */
        start local 4 // java.security.GeneralSecurityException e
         9: .line 132
            new java.lang.RuntimeException
            dup
        10: .line 133
            ldc "Could not generate ECDH keypair"
            aload 4 /* e */
        11: .line 132
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.GeneralSecurityException e
        12: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* credentials */
            getfield sun.security.ssl.ECDHKeyExchange$ECDHECredentials.namedGroup:Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;
            putfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.namedGroup:Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;
        13: .line 137
            return
        end local 3 // java.security.spec.ECParameterSpec params
        end local 2 // java.security.SecureRandom random
        end local 1 // sun.security.ssl.ECDHKeyExchange$ECDHECredentials credentials
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lsun/security/ssl/ECDHKeyExchange$ECDHEPossession;
            0   14     1  credentials  Lsun/security/ssl/ECDHKeyExchange$ECDHECredentials;
            0   14     2       random  Ljava/security/SecureRandom;
            2   14     3       params  Ljava/security/spec/ECParameterSpec;
            3    7     4          kpg  Ljava/security/KeyPairGenerator;
            5    7     5           kp  Ljava/security/KeyPair;
            9   12     4            e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2     7       8  Class java.security.GeneralSecurityException
    MethodParameters:
             Name  Flags
      credentials  
      random       

  public byte[] encode();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
         0: .line 142
            aload 0 /* this */
            getfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getW:()Ljava/security/spec/ECPoint;
            aload 0 /* this */
            getfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
         1: .line 141
            invokestatic sun.security.util.ECUtil.encodePoint:(Ljava/security/spec/ECPoint;Ljava/security/spec/EllipticCurve;)[B
            areturn
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/ECDHKeyExchange$ECDHEPossession;

  javax.crypto.SecretKey getAgreedSecret(java.security.PublicKey);
    descriptor: (Ljava/security/PublicKey;)Ljavax/crypto/SecretKey;
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
        start local 1 // java.security.PublicKey peerPublicKey
         0: .line 151
            ldc "ECDH"
            invokestatic sun.security.ssl.JsseJce.getKeyAgreement:(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;
            astore 2 /* ka */
        start local 2 // javax.crypto.KeyAgreement ka
         1: .line 152
            aload 2 /* ka */
            aload 0 /* this */
            getfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.privateKey:Ljava/security/PrivateKey;
            invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;)V
         2: .line 153
            aload 2 /* ka */
            aload 1 /* peerPublicKey */
            iconst_1
            invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
            pop
         3: .line 154
            aload 2 /* ka */
            ldc "TlsPremasterSecret"
            invokevirtual javax.crypto.KeyAgreement.generateSecret:(Ljava/lang/String;)Ljavax/crypto/SecretKey;
         4: areturn
        end local 2 // javax.crypto.KeyAgreement ka
         5: .line 155
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         6: .line 156
            new javax.net.ssl.SSLHandshakeException
            dup
         7: .line 157
            ldc "Could not generate secret"
         8: .line 156
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
         9: .line 157
            aload 2 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        10: .line 156
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // java.security.PublicKey peerPublicKey
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lsun/security/ssl/ECDHKeyExchange$ECDHEPossession;
            0   11     1  peerPublicKey  Ljava/security/PublicKey;
            1    5     2             ka  Ljavax/crypto/KeyAgreement;
            6   11     2              e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           0     4       5  Class java.security.GeneralSecurityException
    Exceptions:
      throws javax.net.ssl.SSLHandshakeException
    MethodParameters:
               Name  Flags
      peerPublicKey  

  javax.crypto.SecretKey getAgreedSecret(byte[]);
    descriptor: ([B)Ljavax/crypto/SecretKey;
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
        start local 1 // byte[] encodedPoint
         0: .line 165
            aload 0 /* this */
            getfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            astore 2 /* params */
        start local 2 // java.security.spec.ECParameterSpec params
         1: .line 167
            aload 1 /* encodedPoint */
            aload 2 /* params */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokestatic sun.security.ssl.JsseJce.decodePoint:([BLjava/security/spec/EllipticCurve;)Ljava/security/spec/ECPoint;
         2: .line 166
            astore 3 /* point */
        start local 3 // java.security.spec.ECPoint point
         3: .line 168
            ldc "EC"
            invokestatic sun.security.ssl.JsseJce.getKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 4 /* kf */
        start local 4 // java.security.KeyFactory kf
         4: .line 169
            new java.security.spec.ECPublicKeySpec
            dup
            aload 3 /* point */
            aload 2 /* params */
            invokespecial java.security.spec.ECPublicKeySpec.<init>:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
            astore 5 /* spec */
        start local 5 // java.security.spec.ECPublicKeySpec spec
         5: .line 170
            aload 4 /* kf */
            aload 5 /* spec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            astore 6 /* peerPublicKey */
        start local 6 // java.security.PublicKey peerPublicKey
         6: .line 171
            aload 0 /* this */
            aload 6 /* peerPublicKey */
            invokevirtual sun.security.ssl.ECDHKeyExchange$ECDHEPossession.getAgreedSecret:(Ljava/security/PublicKey;)Ljavax/crypto/SecretKey;
         7: areturn
        end local 6 // java.security.PublicKey peerPublicKey
        end local 5 // java.security.spec.ECPublicKeySpec spec
        end local 4 // java.security.KeyFactory kf
        end local 3 // java.security.spec.ECPoint point
        end local 2 // java.security.spec.ECParameterSpec params
         8: .line 172
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         9: .line 173
            new javax.net.ssl.SSLHandshakeException
            dup
        10: .line 174
            ldc "Could not generate secret"
        11: .line 173
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
        12: .line 174
            aload 2 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        13: .line 173
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // byte[] encodedPoint
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lsun/security/ssl/ECDHKeyExchange$ECDHEPossession;
            0   14     1   encodedPoint  [B
            1    8     2         params  Ljava/security/spec/ECParameterSpec;
            3    8     3          point  Ljava/security/spec/ECPoint;
            4    8     4             kf  Ljava/security/KeyFactory;
            5    8     5           spec  Ljava/security/spec/ECPublicKeySpec;
            6    8     6  peerPublicKey  Ljava/security/PublicKey;
            9   14     2              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     7       8  Class java.security.GeneralSecurityException
           0     7       8  Class java.io.IOException
    Exceptions:
      throws javax.net.ssl.SSLHandshakeException
    MethodParameters:
              Name  Flags
      encodedPoint  

  void checkConstraints(java.security.AlgorithmConstraints, byte[]);
    descriptor: (Ljava/security/AlgorithmConstraints;[B)V
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
        start local 1 // java.security.AlgorithmConstraints constraints
        start local 2 // byte[] encodedPoint
         0: .line 183
            aload 0 /* this */
            getfield sun.security.ssl.ECDHKeyExchange$ECDHEPossession.publicKey:Ljava/security/interfaces/ECPublicKey;
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
            astore 3 /* params */
        start local 3 // java.security.spec.ECParameterSpec params
         1: .line 185
            aload 2 /* encodedPoint */
            aload 3 /* params */
            invokevirtual java.security.spec.ECParameterSpec.getCurve:()Ljava/security/spec/EllipticCurve;
            invokestatic sun.security.ssl.JsseJce.decodePoint:([BLjava/security/spec/EllipticCurve;)Ljava/security/spec/ECPoint;
         2: .line 184
            astore 4 /* point */
        start local 4 // java.security.spec.ECPoint point
         3: .line 186
            new java.security.spec.ECPublicKeySpec
            dup
            aload 4 /* point */
            aload 3 /* params */
            invokespecial java.security.spec.ECPublicKeySpec.<init>:(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
            astore 5 /* spec */
        start local 5 // java.security.spec.ECPublicKeySpec spec
         4: .line 188
            ldc "EC"
            invokestatic sun.security.ssl.JsseJce.getKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 6 /* kf */
        start local 6 // java.security.KeyFactory kf
         5: .line 189
            aload 6 /* kf */
            aload 5 /* spec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
            checkcast java.security.interfaces.ECPublicKey
            astore 7 /* pubKey */
        start local 7 // java.security.interfaces.ECPublicKey pubKey
         6: .line 192
            aload 1 /* constraints */
         7: .line 193
            getstatic java.security.CryptoPrimitive.KEY_AGREEMENT:Ljava/security/CryptoPrimitive;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
            aload 7 /* pubKey */
         8: .line 192
            invokeinterface java.security.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/security/Key;)Z
         9: .line 193
            ifne 19
        10: .line 194
            new javax.net.ssl.SSLHandshakeException
            dup
        11: .line 195
            ldc "ECPublicKey does not comply to algorithm constraints"
        12: .line 194
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // java.security.interfaces.ECPublicKey pubKey
        end local 6 // java.security.KeyFactory kf
        end local 5 // java.security.spec.ECPublicKeySpec spec
        end local 4 // java.security.spec.ECPoint point
        end local 3 // java.security.spec.ECParameterSpec params
        13: .line 197
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        14: .line 198
            new javax.net.ssl.SSLHandshakeException
            dup
        15: .line 199
            ldc "Could not generate ECPublicKey"
        16: .line 198
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
        17: .line 199
            aload 3 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        18: .line 198
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 3 // java.lang.Exception e
        19: .line 201
      StackMap locals:
      StackMap stack:
            return
        end local 2 // byte[] encodedPoint
        end local 1 // java.security.AlgorithmConstraints constraints
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEPossession this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   20     0          this  Lsun/security/ssl/ECDHKeyExchange$ECDHEPossession;
            0   20     1   constraints  Ljava/security/AlgorithmConstraints;
            0   20     2  encodedPoint  [B
            1   13     3        params  Ljava/security/spec/ECParameterSpec;
            3   13     4         point  Ljava/security/spec/ECPoint;
            4   13     5          spec  Ljava/security/spec/ECPublicKeySpec;
            5   13     6            kf  Ljava/security/KeyFactory;
            6   13     7        pubKey  Ljava/security/interfaces/ECPublicKey;
           14   19     3             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    13      13  Class java.security.GeneralSecurityException
           0    13      13  Class java.io.IOException
    Exceptions:
      throws javax.net.ssl.SSLHandshakeException
    MethodParameters:
              Name  Flags
      constraints   
      encodedPoint  
}
SourceFile: "ECDHKeyExchange.java"
NestHost: sun.security.ssl.ECDHKeyExchange
InnerClasses:
  final ECDHECredentials = sun.security.ssl.ECDHKeyExchange$ECDHECredentials of sun.security.ssl.ECDHKeyExchange
  final ECDHEPossession = sun.security.ssl.ECDHKeyExchange$ECDHEPossession of sun.security.ssl.ECDHKeyExchange
  final NamedGroup = sun.security.ssl.SupportedGroupsExtension$NamedGroup of sun.security.ssl.SupportedGroupsExtension