final class sun.security.ssl.ECDHCrypt
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.ECDHCrypt
  super_class: java.lang.Object
{
  private java.security.PrivateKey privateKey;
    descriptor: Ljava/security/PrivateKey;
    flags: (0x0002) ACC_PRIVATE

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

  void <init>(java.security.PrivateKey, java.security.PublicKey);
    descriptor: (Ljava/security/PrivateKey;Ljava/security/PublicKey;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.security.ssl.ECDHCrypt this
        start local 1 // java.security.PrivateKey privateKey
        start local 2 // java.security.PublicKey publicKey
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 58
            aload 0 /* this */
            aload 1 /* privateKey */
            putfield sun.security.ssl.ECDHCrypt.privateKey:Ljava/security/PrivateKey;
         2: .line 59
            aload 0 /* this */
            aload 2 /* publicKey */
            checkcast java.security.interfaces.ECPublicKey
            putfield sun.security.ssl.ECDHCrypt.publicKey:Ljava/security/interfaces/ECPublicKey;
         3: .line 60
            return
        end local 2 // java.security.PublicKey publicKey
        end local 1 // java.security.PrivateKey privateKey
        end local 0 // sun.security.ssl.ECDHCrypt this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lsun/security/ssl/ECDHCrypt;
            0    4     1  privateKey  Ljava/security/PrivateKey;
            0    4     2   publicKey  Ljava/security/PublicKey;
    MethodParameters:
            Name  Flags
      privateKey  
      publicKey   

  void <init>(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // sun.security.ssl.ECDHCrypt this
        start local 1 // int curveId
        start local 2 // java.security.SecureRandom random
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 65
            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 67
            iload 1 /* curveId */
            invokestatic sun.security.ssl.SupportedEllipticCurvesExtension.getECGenParamSpec:(I)Ljava/security/spec/ECGenParameterSpec;
         3: .line 66
            astore 4 /* params */
        start local 4 // java.security.spec.ECGenParameterSpec params
         4: .line 68
            aload 3 /* kpg */
            aload 4 /* params */
            aload 2 /* random */
            invokevirtual java.security.KeyPairGenerator.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         5: .line 69
            aload 3 /* kpg */
            invokevirtual java.security.KeyPairGenerator.generateKeyPair:()Ljava/security/KeyPair;
            astore 5 /* kp */
        start local 5 // java.security.KeyPair kp
         6: .line 70
            aload 0 /* this */
            aload 5 /* kp */
            invokevirtual java.security.KeyPair.getPrivate:()Ljava/security/PrivateKey;
            putfield sun.security.ssl.ECDHCrypt.privateKey:Ljava/security/PrivateKey;
         7: .line 71
            aload 0 /* this */
            aload 5 /* kp */
            invokevirtual java.security.KeyPair.getPublic:()Ljava/security/PublicKey;
            checkcast java.security.interfaces.ECPublicKey
            putfield sun.security.ssl.ECDHCrypt.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 72
            goto 11
      StackMap locals: sun.security.ssl.ECDHCrypt int java.security.SecureRandom
      StackMap stack: java.security.GeneralSecurityException
         9: astore 3 /* e */
        start local 3 // java.security.GeneralSecurityException e
        10: .line 73
            new java.lang.RuntimeException
            dup
            ldc "Could not generate DH keypair"
            aload 3 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.GeneralSecurityException e
        11: .line 75
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // int curveId
        end local 0 // sun.security.ssl.ECDHCrypt this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lsun/security/ssl/ECDHCrypt;
            0   12     1  curveId  I
            0   12     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   11     3        e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           1     8       9  Class java.security.GeneralSecurityException
    MethodParameters:
         Name  Flags
      curveId  
      random   

  void <init>(java.security.spec.ECParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/spec/ECParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // sun.security.ssl.ECDHCrypt this
        start local 1 // java.security.spec.ECParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 78
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 80
            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 81
            aload 3 /* kpg */
            aload 1 /* params */
            aload 2 /* random */
            invokevirtual java.security.KeyPairGenerator.initialize:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         3: .line 82
            aload 3 /* kpg */
            invokevirtual java.security.KeyPairGenerator.generateKeyPair:()Ljava/security/KeyPair;
            astore 4 /* kp */
        start local 4 // java.security.KeyPair kp
         4: .line 83
            aload 0 /* this */
            aload 4 /* kp */
            invokevirtual java.security.KeyPair.getPrivate:()Ljava/security/PrivateKey;
            putfield sun.security.ssl.ECDHCrypt.privateKey:Ljava/security/PrivateKey;
         5: .line 84
            aload 0 /* this */
            aload 4 /* kp */
            invokevirtual java.security.KeyPair.getPublic:()Ljava/security/PublicKey;
            checkcast java.security.interfaces.ECPublicKey
            putfield sun.security.ssl.ECDHCrypt.publicKey:Ljava/security/interfaces/ECPublicKey;
        end local 4 // java.security.KeyPair kp
        end local 3 // java.security.KeyPairGenerator kpg
         6: .line 85
            goto 9
      StackMap locals: sun.security.ssl.ECDHCrypt java.security.spec.ECParameterSpec java.security.SecureRandom
      StackMap stack: java.security.GeneralSecurityException
         7: astore 3 /* e */
        start local 3 // java.security.GeneralSecurityException e
         8: .line 86
            new java.lang.RuntimeException
            dup
            ldc "Could not generate DH keypair"
            aload 3 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.GeneralSecurityException e
         9: .line 88
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.ECParameterSpec params
        end local 0 // sun.security.ssl.ECDHCrypt this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lsun/security/ssl/ECDHCrypt;
            0   10     1  params  Ljava/security/spec/ECParameterSpec;
            0   10     2  random  Ljava/security/SecureRandom;
            2    6     3     kpg  Ljava/security/KeyPairGenerator;
            4    6     4      kp  Ljava/security/KeyPair;
            8    9     3       e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           1     6       7  Class java.security.GeneralSecurityException
    MethodParameters:
        Name  Flags
      params  
      random  

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

  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.ECDHCrypt this
        start local 1 // java.security.PublicKey peerPublicKey
         0: .line 103
            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 104
            aload 2 /* ka */
            aload 0 /* this */
            getfield sun.security.ssl.ECDHCrypt.privateKey:Ljava/security/PrivateKey;
            invokevirtual javax.crypto.KeyAgreement.init:(Ljava/security/Key;)V
         2: .line 105
            aload 2 /* ka */
            aload 1 /* peerPublicKey */
            iconst_1
            invokevirtual javax.crypto.KeyAgreement.doPhase:(Ljava/security/Key;Z)Ljava/security/Key;
            pop
         3: .line 106
            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 107
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         6: .line 108
            new javax.net.ssl.SSLHandshakeException
            dup
         7: .line 109
            ldc "Could not generate secret"
         8: .line 108
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
         9: .line 109
            aload 2 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        10: .line 108
            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.ECDHCrypt this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lsun/security/ssl/ECDHCrypt;
            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.ECDHCrypt this
        start local 1 // byte[] encodedPoint
         0: .line 118
            aload 0 /* this */
            getfield sun.security.ssl.ECDHCrypt.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 120
            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 119
            astore 3 /* point */
        start local 3 // java.security.spec.ECPoint point
         3: .line 121
            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 122
            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 123
            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 124
            aload 0 /* this */
            aload 6 /* peerPublicKey */
            invokevirtual sun.security.ssl.ECDHCrypt.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 125
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         9: .line 126
            new javax.net.ssl.SSLHandshakeException
            dup
        10: .line 127
            ldc "Could not generate secret"
        11: .line 126
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
        12: .line 127
            aload 2 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        13: .line 126
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 2 // java.security.GeneralSecurityException e
        14: .line 128
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* e */
        start local 2 // java.io.IOException e
        15: .line 129
            new javax.net.ssl.SSLHandshakeException
            dup
        16: .line 130
            ldc "Could not generate secret"
        17: .line 129
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
        18: .line 130
            aload 2 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        19: .line 129
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 2 // java.io.IOException e
        end local 1 // byte[] encodedPoint
        end local 0 // sun.security.ssl.ECDHCrypt this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   20     0           this  Lsun/security/ssl/ECDHCrypt;
            0   20     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/security/GeneralSecurityException;
           15   20     2              e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     7       8  Class java.security.GeneralSecurityException
           0     7      14  Class java.io.IOException
    Exceptions:
      throws javax.net.ssl.SSLHandshakeException
    MethodParameters:
              Name  Flags
      encodedPoint  

  void checkConstraints(sun.security.util.AlgorithmConstraints, byte[]);
    descriptor: (Lsun/security/util/AlgorithmConstraints;[B)V
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // sun.security.ssl.ECDHCrypt this
        start local 1 // sun.security.util.AlgorithmConstraints constraints
        start local 2 // byte[] encodedPoint
         0: .line 140
            aload 0 /* this */
            getfield sun.security.ssl.ECDHCrypt.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 142
            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 141
            astore 4 /* point */
        start local 4 // java.security.spec.ECPoint point
         3: .line 143
            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 145
            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 146
            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 /* publicKey */
        start local 7 // java.security.interfaces.ECPublicKey publicKey
         6: .line 149
            aload 1 /* constraints */
         7: .line 150
            getstatic sun.security.util.CryptoPrimitive.KEY_AGREEMENT:Lsun/security/util/CryptoPrimitive;
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
            aload 7 /* publicKey */
         8: .line 149
            invokeinterface sun.security.util.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/security/Key;)Z
         9: .line 150
            ifne 25
        10: .line 151
            new javax.net.ssl.SSLHandshakeException
            dup
        11: .line 152
            ldc "ECPublicKey does not comply to algorithm constraints"
        12: .line 151
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // java.security.interfaces.ECPublicKey publicKey
        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 154
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 3 /* e */
        start local 3 // java.security.GeneralSecurityException e
        14: .line 155
            new javax.net.ssl.SSLHandshakeException
            dup
        15: .line 156
            ldc "Could not generate ECPublicKey"
        16: .line 155
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
        17: .line 156
            aload 3 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        18: .line 155
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 3 // java.security.GeneralSecurityException e
        19: .line 157
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
        20: .line 158
            new javax.net.ssl.SSLHandshakeException
            dup
        21: .line 159
            ldc "Could not generate ECPublicKey"
        22: .line 158
            invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
        23: .line 159
            aload 3 /* e */
            invokevirtual javax.net.ssl.SSLHandshakeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        24: .line 158
            checkcast javax.net.ssl.SSLHandshakeException
            athrow
        end local 3 // java.io.IOException e
        25: .line 161
      StackMap locals:
      StackMap stack:
            return
        end local 2 // byte[] encodedPoint
        end local 1 // sun.security.util.AlgorithmConstraints constraints
        end local 0 // sun.security.ssl.ECDHCrypt this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   26     0          this  Lsun/security/ssl/ECDHCrypt;
            0   26     1   constraints  Lsun/security/util/AlgorithmConstraints;
            0   26     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     publicKey  Ljava/security/interfaces/ECPublicKey;
           14   19     3             e  Ljava/security/GeneralSecurityException;
           20   25     3             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0    13      13  Class java.security.GeneralSecurityException
           0    13      19  Class java.io.IOException
    Exceptions:
      throws javax.net.ssl.SSLHandshakeException
    MethodParameters:
              Name  Flags
      constraints   
      encodedPoint  
}
SourceFile: "ECDHCrypt.java"