Ec is a thing (#3453)

* We always have EC

* We always have ECDH

* We always have ECDSA

* We always have EC codes

* This can go as well

* And this

* unused import
diff --git a/src/_cffi_src/openssl/ec.py b/src/_cffi_src/openssl/ec.py
index d174505..206ab6a 100644
--- a/src/_cffi_src/openssl/ec.py
+++ b/src/_cffi_src/openssl/ec.py
@@ -5,10 +5,7 @@
 from __future__ import absolute_import, division, print_function
 
 INCLUDES = """
-#ifndef OPENSSL_NO_EC
 #include <openssl/ec.h>
-#endif
-
 #include <openssl/obj_mac.h>
 """
 
@@ -183,160 +180,9 @@
 """
 
 CUSTOMIZATIONS = """
-#ifdef OPENSSL_NO_EC
-static const long Cryptography_HAS_EC = 0;
-
-typedef void EC_KEY;
-typedef void EC_GROUP;
-typedef void EC_POINT;
-typedef void EC_METHOD;
-typedef struct {
-    int nid;
-    const char *comment;
-} EC_builtin_curve;
-typedef enum {
-    POINT_CONVERSION_COMPRESSED,
-    POINT_CONVERSION_UNCOMPRESSED,
-    POINT_CONVERSION_HYBRID,
-} point_conversion_form_t;
-
-static const int OPENSSL_EC_NAMED_CURVE = 0;
-
-void (*EC_KEY_free)(EC_KEY *) = NULL;
-EC_KEY *(*EC_KEY_new)(void) = NULL;
-size_t (*EC_get_builtin_curves)(EC_builtin_curve *, size_t) = NULL;
-EC_KEY *(*EC_KEY_new_by_curve_name)(int) = NULL;
-EC_KEY *(*EC_KEY_copy)(EC_KEY *, const EC_KEY *) = NULL;
-EC_KEY *(*EC_KEY_dup)(const EC_KEY *) = NULL;
-int (*EC_KEY_up_ref)(EC_KEY *) = NULL;
-const EC_GROUP *(*EC_KEY_get0_group)(const EC_KEY *) = NULL;
-int (*EC_GROUP_get_order)(const EC_GROUP *, BIGNUM *, BN_CTX *) = NULL;
-int (*EC_KEY_set_group)(EC_KEY *, const EC_GROUP *) = NULL;
-void (*EC_GROUP_set_asn1_flag)(EC_GROUP *, int) = NULL;
-void (*EC_GROUP_set_point_conversion_form)(EC_GROUP *,
-                                           point_conversion_form_t) = NULL;
-const BIGNUM *(*EC_KEY_get0_private_key)(const EC_KEY *) = NULL;
-int (*EC_KEY_set_private_key)(EC_KEY *, const BIGNUM *) = NULL;
-const EC_POINT *(*EC_KEY_get0_public_key)(const EC_KEY *) = NULL;
-int (*EC_KEY_set_public_key)(EC_KEY *, const EC_POINT *) = NULL;
-unsigned int (*EC_KEY_get_enc_flags)(const EC_KEY *) = NULL;
-void (*EC_KEY_set_enc_flags)(EC_KEY *eckey, unsigned int) = NULL;
-point_conversion_form_t (*EC_KEY_get_conv_form)(const EC_KEY *) = NULL;
-void (*EC_KEY_set_conv_form)(EC_KEY *, point_conversion_form_t) = NULL;
-void (*EC_KEY_set_asn1_flag)(EC_KEY *, int) = NULL;
-int (*EC_KEY_precompute_mult)(EC_KEY *, BN_CTX *) = NULL;
-int (*EC_KEY_generate_key)(EC_KEY *) = NULL;
-int (*EC_KEY_check_key)(const EC_KEY *) = NULL;
-
-EC_GROUP *(*EC_GROUP_new)(const EC_METHOD *);
-void (*EC_GROUP_free)(EC_GROUP *);
-void (*EC_GROUP_clear_free)(EC_GROUP *);
-
-EC_GROUP *(*EC_GROUP_new_curve_GFp)(
-    const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *);
-
-EC_GROUP *(*EC_GROUP_new_by_curve_name)(int);
-
-int (*EC_GROUP_set_curve_GFp)(
-    EC_GROUP *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *);
-
-int (*EC_GROUP_get_curve_GFp)(
-    const EC_GROUP *, BIGNUM *, BIGNUM *, BIGNUM *, BN_CTX *);
-
-int (*EC_GROUP_get_degree)(const EC_GROUP *) = NULL;
-
-const EC_METHOD *(*EC_GROUP_method_of)(const EC_GROUP *) = NULL;
-const EC_POINT *(*EC_GROUP_get0_generator)(const EC_GROUP *) = NULL;
-int (*EC_GROUP_get_curve_name)(const EC_GROUP *) = NULL;
-
-EC_POINT *(*EC_POINT_new)(const EC_GROUP *) = NULL;
-void (*EC_POINT_free)(EC_POINT *) = NULL;
-void (*EC_POINT_clear_free)(EC_POINT *) = NULL;
-int (*EC_POINT_copy)(EC_POINT *, const EC_POINT *) = NULL;
-EC_POINT *(*EC_POINT_dup)(const EC_POINT *, const EC_GROUP *) = NULL;
-const EC_METHOD *(*EC_POINT_method_of)(const EC_POINT *) = NULL;
-int (*EC_POINT_set_to_infinity)(const EC_GROUP *, EC_POINT *) = NULL;
-int (*EC_POINT_set_Jprojective_coordinates_GFp)(const EC_GROUP *, EC_POINT *,
-    const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *) = NULL;
-
-int (*EC_POINT_get_Jprojective_coordinates_GFp)(const EC_GROUP *,
-    const EC_POINT *, BIGNUM *, BIGNUM *, BIGNUM *, BN_CTX *) = NULL;
-
-int (*EC_POINT_set_affine_coordinates_GFp)(const EC_GROUP *, EC_POINT *,
-    const BIGNUM *, const BIGNUM *, BN_CTX *) = NULL;
-
-int (*EC_POINT_get_affine_coordinates_GFp)(const EC_GROUP *,
-    const EC_POINT *, BIGNUM *, BIGNUM *, BN_CTX *) = NULL;
-
-int (*EC_POINT_set_compressed_coordinates_GFp)(const EC_GROUP *, EC_POINT *,
-    const BIGNUM *, int, BN_CTX *) = NULL;
-
-size_t (*EC_POINT_point2oct)(const EC_GROUP *, const EC_POINT *,
-    point_conversion_form_t,
-    unsigned char *, size_t, BN_CTX *) = NULL;
-
-int (*EC_POINT_oct2point)(const EC_GROUP *, EC_POINT *,
-    const unsigned char *, size_t, BN_CTX *) = NULL;
-
-BIGNUM *(*EC_POINT_point2bn)(const EC_GROUP *, const EC_POINT *,
-    point_conversion_form_t form, BIGNUM *, BN_CTX *) = NULL;
-
-EC_POINT *(*EC_POINT_bn2point)(const EC_GROUP *, const BIGNUM *,
-    EC_POINT *, BN_CTX *) = NULL;
-
-char *(*EC_POINT_point2hex)(const EC_GROUP *, const EC_POINT *,
-    point_conversion_form_t form, BN_CTX *) = NULL;
-
-EC_POINT *(*EC_POINT_hex2point)(const EC_GROUP *, const char *,
-    EC_POINT *, BN_CTX *) = NULL;
-
-int (*EC_POINT_add)(const EC_GROUP *, EC_POINT *, const EC_POINT *,
-    const EC_POINT *, BN_CTX *) = NULL;
-
-int (*EC_POINT_dbl)(const EC_GROUP *, EC_POINT *, const EC_POINT *,
-    BN_CTX *) = NULL;
-
-int (*EC_POINT_invert)(const EC_GROUP *, EC_POINT *, BN_CTX *) = NULL;
-int (*EC_POINT_is_at_infinity)(const EC_GROUP *, const EC_POINT *) = NULL;
-
-int (*EC_POINT_is_on_curve)(const EC_GROUP *, const EC_POINT *,
-    BN_CTX *) = NULL;
-
-int (*EC_POINT_cmp)(
-    const EC_GROUP *, const EC_POINT *, const EC_POINT *, BN_CTX *) = NULL;
-
-int (*EC_POINT_make_affine)(const EC_GROUP *, EC_POINT *, BN_CTX *) = NULL;
-
-int (*EC_POINTs_make_affine)(const EC_GROUP *, size_t, EC_POINT *[],
-    BN_CTX *) = NULL;
-
-int (*EC_POINTs_mul)(
-    const EC_GROUP *, EC_POINT *, const BIGNUM *,
-    size_t, const EC_POINT *[], const BIGNUM *[], BN_CTX *) = NULL;
-
-int (*EC_POINT_mul)(const EC_GROUP *, EC_POINT *, const BIGNUM *,
-    const EC_POINT *, const BIGNUM *, BN_CTX *) = NULL;
-
-int (*EC_GROUP_precompute_mult)(EC_GROUP *, BN_CTX *) = NULL;
-int (*EC_GROUP_have_precompute_mult)(const EC_GROUP *) = NULL;
-
-const EC_METHOD *(*EC_GFp_simple_method)() = NULL;
-const EC_METHOD *(*EC_GFp_mont_method)() = NULL;
-const EC_METHOD *(*EC_GFp_nist_method)() = NULL;
-
-int (*EC_METHOD_get_field_type)(const EC_METHOD *) = NULL;
-
-int (*EC_KEY_get_flags)(const EC_KEY *) = NULL;
-void (*EC_KEY_set_flags)(EC_KEY *, int) = NULL;
-void (*EC_KEY_clear_flags)(EC_KEY *, int) = NULL;
-
-int (*EC_KEY_set_public_key_affine_coordinates)(
-    EC_KEY *, BIGNUM *, BIGNUM *) = NULL;
-#else
 static const long Cryptography_HAS_EC = 1;
-#endif
 
-#if defined(OPENSSL_NO_EC) || defined(OPENSSL_NO_EC2M)
+#if defined(OPENSSL_NO_EC2M)
 static const long Cryptography_HAS_EC2M = 0;
 
 const EC_METHOD *(*EC_GF2m_simple_method)() = NULL;
@@ -362,8 +208,8 @@
 static const long Cryptography_HAS_EC2M = 1;
 #endif
 
-#if defined(OPENSSL_NO_EC) || CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 || \
-    defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20020002L
+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 || defined(LIBRESSL_VERSION_NUMBER) && \
+    LIBRESSL_VERSION_NUMBER < 0x20020002L
 static const long Cryptography_HAS_EC_1_0_2 = 0;
 const char *(*EC_curve_nid2nist)(int) = NULL;
 #else
diff --git a/src/_cffi_src/openssl/ecdh.py b/src/_cffi_src/openssl/ecdh.py
index 2dd5fd7..5ed426a 100644
--- a/src/_cffi_src/openssl/ecdh.py
+++ b/src/_cffi_src/openssl/ecdh.py
@@ -5,9 +5,7 @@
 from __future__ import absolute_import, division, print_function
 
 INCLUDES = """
-#ifndef OPENSSL_NO_ECDH
 #include <openssl/ecdh.h>
-#endif
 """
 
 TYPES = """
@@ -25,16 +23,7 @@
 """
 
 CUSTOMIZATIONS = """
-#ifdef OPENSSL_NO_ECDH
-static const long Cryptography_HAS_ECDH = 0;
-
-int (*ECDH_compute_key)(void *, size_t, const EC_POINT *, EC_KEY *,
-                        void *(*)(const void *, size_t, void *,
-                        size_t *)) = NULL;
-
-#else
 static const long Cryptography_HAS_ECDH = 1;
-#endif
 
 #ifndef SSL_CTX_set_ecdh_auto
 static const long Cryptography_HAS_SET_ECDH_AUTO = 0;
diff --git a/src/_cffi_src/openssl/ecdsa.py b/src/_cffi_src/openssl/ecdsa.py
index f3e9fba..2022b81 100644
--- a/src/_cffi_src/openssl/ecdsa.py
+++ b/src/_cffi_src/openssl/ecdsa.py
@@ -5,9 +5,7 @@
 from __future__ import absolute_import, division, print_function
 
 INCLUDES = """
-#ifndef OPENSSL_NO_ECDSA
 #include <openssl/ecdsa.h>
-#endif
 """
 
 TYPES = """
@@ -44,35 +42,5 @@
 """
 
 CUSTOMIZATIONS = """
-#ifdef OPENSSL_NO_ECDSA
-static const long Cryptography_HAS_ECDSA = 0;
-
-typedef struct {
-    BIGNUM *r;
-    BIGNUM *s;
-} ECDSA_SIG;
-
-ECDSA_SIG* (*ECDSA_SIG_new)() = NULL;
-void (*ECDSA_SIG_free)(ECDSA_SIG *) = NULL;
-int (*i2d_ECDSA_SIG)(const ECDSA_SIG *, unsigned char **) = NULL;
-ECDSA_SIG* (*d2i_ECDSA_SIG)(ECDSA_SIG **s, const unsigned char **,
-                            long) = NULL;
-ECDSA_SIG* (*ECDSA_do_sign)(const unsigned char *, int, EC_KEY *eckey) = NULL;
-ECDSA_SIG* (*ECDSA_do_sign_ex)(const unsigned char *, int, const BIGNUM *,
-                               const BIGNUM *, EC_KEY *) = NULL;
-int (*ECDSA_do_verify)(const unsigned char *, int, const ECDSA_SIG *,
-                       EC_KEY *) = NULL;
-int (*ECDSA_sign_setup)(EC_KEY *, BN_CTX *, BIGNUM **, BIGNUM **) = NULL;
-int (*ECDSA_sign)(int, const unsigned char *, int, unsigned char *,
-                  unsigned int *, EC_KEY *) = NULL;
-int (*ECDSA_sign_ex)(int, const unsigned char *, int dgstlen, unsigned char *,
-                     unsigned int *, const BIGNUM *, const BIGNUM *,
-                     EC_KEY *) = NULL;
-int (*ECDSA_verify)(int, const unsigned char *, int, const unsigned char *,
-                    int, EC_KEY *) = NULL;
-int (*ECDSA_size)(const EC_KEY *) = NULL;
-
-#else
 static const long Cryptography_HAS_ECDSA = 1;
-#endif
 """
diff --git a/src/_cffi_src/openssl/err.py b/src/_cffi_src/openssl/err.py
index 041723c..8554ef4 100644
--- a/src/_cffi_src/openssl/err.py
+++ b/src/_cffi_src/openssl/err.py
@@ -269,14 +269,7 @@
 """
 
 CUSTOMIZATIONS = """
-// OpenSSL without EC. e.g. RHEL
-#ifndef OPENSSL_NO_EC
 static const long Cryptography_HAS_EC_CODES = 1;
-#else
-static const long Cryptography_HAS_EC_CODES = 0;
-static const int EC_R_UNKNOWN_GROUP = 0;
-static const int EC_F_EC_GROUP_NEW_BY_CURVE_NAME = 0;
-#endif
 
 #ifdef RSA_R_PKCS_DECODING_ERROR
 static const long Cryptography_HAS_RSA_R_PKCS_DECODING_ERROR = 1;
diff --git a/src/_cffi_src/openssl/evp.py b/src/_cffi_src/openssl/evp.py
index 18d6d62..526e419 100644
--- a/src/_cffi_src/openssl/evp.py
+++ b/src/_cffi_src/openssl/evp.py
@@ -185,12 +185,6 @@
 const long EVP_PKEY_DHX = -1;
 #endif
 
-#ifdef OPENSSL_NO_EC
-int (*EVP_PKEY_assign_EC_KEY)(EVP_PKEY *, EC_KEY *) = NULL;
-EC_KEY *(*EVP_PKEY_get1_EC_KEY)(EVP_PKEY *) = NULL;
-int (*EVP_PKEY_set1_EC_KEY)(EVP_PKEY *, EC_KEY *) = NULL;
-#endif
-
 int Cryptography_EVP_PKEY_id(const EVP_PKEY *key) {
     return EVP_PKEY_id(key);
 }
diff --git a/src/_cffi_src/openssl/pem.py b/src/_cffi_src/openssl/pem.py
index 99881dd..1d292a2 100644
--- a/src/_cffi_src/openssl/pem.py
+++ b/src/_cffi_src/openssl/pem.py
@@ -85,11 +85,4 @@
 """
 
 CUSTOMIZATIONS = """
-// Cryptography_HAS_EC is provided by ec.py so we don't need to define it here
-#ifdef OPENSSL_NO_EC
-int (*PEM_write_bio_ECPrivateKey)(BIO *, EC_KEY *, const EVP_CIPHER *,
-                                  unsigned char *, int, pem_password_cb *,
-                                  void *) = NULL;
-#endif
-
 """
diff --git a/src/_cffi_src/openssl/ssl.py b/src/_cffi_src/openssl/ssl.py
index c946b4c..4669151 100644
--- a/src/_cffi_src/openssl/ssl.py
+++ b/src/_cffi_src/openssl/ssl.py
@@ -516,13 +516,7 @@
 static const long Cryptography_HAS_TLSv1_1 = 1;
 static const long Cryptography_HAS_TLSv1_2 = 1;
 static const long Cryptography_HAS_SSL_OP_MSIE_SSLV2_RSA_PADDING = 1;
-
-#ifdef OPENSSL_NO_EC
-long (*SSL_CTX_set_tmp_ecdh)(SSL_CTX *, EC_KEY *) = NULL;
-#endif
-
 static const long Cryptography_HAS_SSL_OP_NO_TICKET = 1;
-
 static const long Cryptography_HAS_SSL_SET_SSL_CTX = 1;
 
 /* NetBSD shipped without including d1_meth.c. This workaround checks to see
diff --git a/src/_cffi_src/openssl/x509.py b/src/_cffi_src/openssl/x509.py
index d3a97a2..bb98106 100644
--- a/src/_cffi_src/openssl/x509.py
+++ b/src/_cffi_src/openssl/x509.py
@@ -374,20 +374,6 @@
 }
 #endif
 
-#ifdef OPENSSL_NO_EC
-int (*i2d_EC_PUBKEY)(EC_KEY *, unsigned char **) = NULL;
-EC_KEY *(*d2i_EC_PUBKEY)(EC_KEY **, const unsigned char **, long) = NULL;
-EC_KEY *(*d2i_EC_PUBKEY_bio)(BIO *, EC_KEY **) = NULL;
-int (*i2d_EC_PUBKEY_bio)(BIO *, EC_KEY *) = NULL;
-EC_KEY *(*d2i_ECPrivateKey)(EC_KEY **, const unsigned char **, long) = NULL;
-EC_KEY *(*d2i_ECPrivateKey_bio)(BIO *, EC_KEY **) = NULL;
-int (*i2d_ECPrivateKey)(EC_KEY *, unsigned char **) = NULL;
-int (*i2d_ECPrivateKey_bio)(BIO *, EC_KEY *) = NULL;
-
-EC_KEY *(*o2i_ECPublicKey)(EC_KEY **, const unsigned char **, long) = NULL;
-int (*i2o_ECPublicKey)(EC_KEY *, unsigned char **) = NULL;
-#endif
-
 /* X509_REVOKED_dup only exists on 1.0.2+. It is implemented using
    IMPLEMENT_ASN1_DUP_FUNCTION. The below is the equivalent so we have
    it available on all OpenSSLs. */
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index 00aec37..a08cdb0 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -477,8 +477,7 @@
             self.openssl_assert(dsa_cdata != self._ffi.NULL)
             dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free)
             return _DSAPrivateKey(self, dsa_cdata, evp_pkey)
-        elif (self._lib.Cryptography_HAS_EC == 1 and
-              key_type == self._lib.EVP_PKEY_EC):
+        elif key_type == self._lib.EVP_PKEY_EC:
             ec_cdata = self._lib.EVP_PKEY_get1_EC_KEY(evp_pkey)
             self.openssl_assert(ec_cdata != self._ffi.NULL)
             ec_cdata = self._ffi.gc(ec_cdata, self._lib.EC_KEY_free)
@@ -509,8 +508,7 @@
             self.openssl_assert(dsa_cdata != self._ffi.NULL)
             dsa_cdata = self._ffi.gc(dsa_cdata, self._lib.DSA_free)
             return _DSAPublicKey(self, dsa_cdata, evp_pkey)
-        elif (self._lib.Cryptography_HAS_EC == 1 and
-              key_type == self._lib.EVP_PKEY_EC):
+        elif key_type == self._lib.EVP_PKEY_EC:
             ec_cdata = self._lib.EVP_PKEY_get1_EC_KEY(evp_pkey)
             self.openssl_assert(ec_cdata != self._ffi.NULL)
             ec_cdata = self._ffi.gc(ec_cdata, self._lib.EC_KEY_free)
@@ -1226,9 +1224,6 @@
             raise ValueError("Could not deserialize key data.")
 
     def elliptic_curve_supported(self, curve):
-        if self._lib.Cryptography_HAS_EC != 1:
-            return False
-
         try:
             curve_nid = self._elliptic_curve_to_nid(curve)
         except UnsupportedAlgorithm:
@@ -1255,9 +1250,6 @@
     def elliptic_curve_signature_algorithm_supported(
         self, signature_algorithm, curve
     ):
-        if self._lib.Cryptography_HAS_EC != 1:
-            return False
-
         # We only support ECDSA right now.
         if not isinstance(signature_algorithm, ec.ECDSA):
             return False
@@ -1363,7 +1355,6 @@
     def elliptic_curve_exchange_algorithm_supported(self, algorithm, curve):
         return (
             self.elliptic_curve_supported(curve) and
-            self._lib.Cryptography_HAS_ECDH == 1 and
             isinstance(algorithm, ec.ECDH)
         )
 
@@ -1498,7 +1489,6 @@
                 elif key_type == self._lib.EVP_PKEY_DSA:
                     write_bio = self._lib.PEM_write_bio_DSAPrivateKey
                 else:
-                    assert self._lib.Cryptography_HAS_EC == 1
                     assert key_type == self._lib.EVP_PKEY_EC
                     write_bio = self._lib.PEM_write_bio_ECPrivateKey
 
@@ -1537,8 +1527,7 @@
     def _private_key_bytes_traditional_der(self, key_type, cdata):
         if key_type == self._lib.EVP_PKEY_RSA:
             write_bio = self._lib.i2d_RSAPrivateKey_bio
-        elif (self._lib.Cryptography_HAS_EC == 1 and
-              key_type == self._lib.EVP_PKEY_EC):
+        elif key_type == self._lib.EVP_PKEY_EC:
             write_bio = self._lib.i2d_ECPrivateKey_bio
         else:
             self.openssl_assert(key_type == self._lib.EVP_PKEY_DSA)
diff --git a/src/cryptography/hazmat/bindings/openssl/_conditional.py b/src/cryptography/hazmat/bindings/openssl/_conditional.py
index 7241a35..8c420c8 100644
--- a/src/cryptography/hazmat/bindings/openssl/_conditional.py
+++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py
@@ -40,96 +40,6 @@
         "CMS_USE_KEYID",
         "CMS_DEBUG_DECRYPT",
     ],
-    "Cryptography_HAS_EC": [
-        "OPENSSL_EC_NAMED_CURVE",
-        "EC_GROUP_new",
-        "EC_GROUP_free",
-        "EC_GROUP_clear_free",
-        "EC_GROUP_new_curve_GFp",
-        "EC_GROUP_new_by_curve_name",
-        "EC_GROUP_set_curve_GFp",
-        "EC_GROUP_get_curve_GFp",
-        "EC_GROUP_method_of",
-        "EC_GROUP_get0_generator",
-        "EC_GROUP_get_curve_name",
-        "EC_GROUP_get_degree",
-        "EC_GROUP_set_asn1_flag",
-        "EC_GROUP_set_point_conversion_form",
-        "EC_KEY_new",
-        "EC_KEY_free",
-        "EC_get_builtin_curves",
-        "EC_KEY_new_by_curve_name",
-        "EC_KEY_copy",
-        "EC_KEY_dup",
-        "EC_KEY_up_ref",
-        "EC_KEY_set_group",
-        "EC_KEY_get0_private_key",
-        "EC_KEY_set_private_key",
-        "EC_KEY_set_public_key",
-        "EC_KEY_get_enc_flags",
-        "EC_KEY_set_enc_flags",
-        "EC_KEY_set_conv_form",
-        "EC_KEY_set_asn1_flag",
-        "EC_KEY_precompute_mult",
-        "EC_KEY_generate_key",
-        "EC_KEY_check_key",
-        "EC_POINT_new",
-        "EC_POINT_free",
-        "EC_POINT_clear_free",
-        "EC_POINT_copy",
-        "EC_POINT_dup",
-        "EC_POINT_method_of",
-        "EC_POINT_set_to_infinity",
-        "EC_POINT_set_Jprojective_coordinates_GFp",
-        "EC_POINT_get_Jprojective_coordinates_GFp",
-        "EC_POINT_set_affine_coordinates_GFp",
-        "EC_POINT_get_affine_coordinates_GFp",
-        "EC_POINT_set_compressed_coordinates_GFp",
-        "EC_POINT_point2oct",
-        "EC_POINT_oct2point",
-        "EC_POINT_point2bn",
-        "EC_POINT_bn2point",
-        "EC_POINT_point2hex",
-        "EC_POINT_hex2point",
-        "EC_POINT_add",
-        "EC_POINT_dbl",
-        "EC_POINT_invert",
-        "EC_POINT_is_at_infinity",
-        "EC_POINT_is_on_curve",
-        "EC_POINT_cmp",
-        "EC_POINT_make_affine",
-        "EC_POINTs_make_affine",
-        "EC_POINTs_mul",
-        "EC_POINT_mul",
-        "EC_GROUP_precompute_mult",
-        "EC_GROUP_have_precompute_mult",
-        "EC_GFp_simple_method",
-        "EC_GFp_mont_method",
-        "EC_GFp_nist_method",
-        "EC_METHOD_get_field_type",
-        "EVP_PKEY_assign_EC_KEY",
-        "EVP_PKEY_get1_EC_KEY",
-        "EVP_PKEY_set1_EC_KEY",
-        "PEM_write_bio_ECPrivateKey",
-        "i2d_EC_PUBKEY",
-        "d2i_EC_PUBKEY",
-        "d2i_EC_PUBKEY_bio",
-        "i2d_EC_PUBKEY_bio",
-        "d2i_ECPrivateKey",
-        "d2i_ECPrivateKey_bio",
-        "i2d_ECPrivateKey",
-        "i2d_ECPrivateKey_bio",
-        "i2o_ECPublicKey",
-        "o2i_ECPublicKey",
-        "SSL_CTX_set_tmp_ecdh",
-        "POINT_CONVERSION_COMPRESSED",
-        "POINT_CONVERSION_UNCOMPRESSED",
-        "POINT_CONVERSION_HYBRID",
-        "EC_KEY_get_flags",
-        "EC_KEY_set_flags",
-        "EC_KEY_clear_flags",
-        "EC_KEY_set_public_key_affine_coordinates",
-    ],
 
     "Cryptography_HAS_EC2M": [
         "EC_GF2m_simple_method",
@@ -144,33 +54,12 @@
     "Cryptography_HAS_EC_1_0_2": [
         "EC_curve_nid2nist",
     ],
-    "Cryptography_HAS_ECDH": [
-        "ECDH_compute_key",
-    ],
     "Cryptography_HAS_SET_ECDH_AUTO": [
         "SSL_CTX_set_ecdh_auto",
     ],
-    "Cryptography_HAS_ECDSA": [
-        "ECDSA_SIG_new",
-        "ECDSA_SIG_free",
-        "i2d_ECDSA_SIG",
-        "d2i_ECDSA_SIG",
-        "ECDSA_do_sign",
-        "ECDSA_do_sign_ex",
-        "ECDSA_do_verify",
-        "ECDSA_sign_setup",
-        "ECDSA_sign",
-        "ECDSA_sign_ex",
-        "ECDSA_verify",
-        "ECDSA_size",
-    ],
     "Cryptography_HAS_ENGINE_CRYPTODEV": [
         "ENGINE_load_cryptodev"
     ],
-    "Cryptography_HAS_EC_CODES": [
-        "EC_R_UNKNOWN_GROUP",
-        "EC_F_EC_GROUP_NEW_BY_CURVE_NAME"
-    ],
     "Cryptography_HAS_RSA_R_PKCS_DECODING_ERROR": [
         "RSA_R_PKCS_DECODING_ERROR"
     ],
diff --git a/tests/hazmat/backends/test_openssl.py b/tests/hazmat/backends/test_openssl.py
index 4feab1e..f6b5796 100644
--- a/tests/hazmat/backends/test_openssl.py
+++ b/tests/hazmat/backends/test_openssl.py
@@ -22,7 +22,7 @@
 )
 from cryptography.hazmat.backends.openssl.ec import _sn_to_elliptic_curve
 from cryptography.hazmat.primitives import hashes, serialization
-from cryptography.hazmat.primitives.asymmetric import dh, dsa, ec, padding
+from cryptography.hazmat.primitives.asymmetric import dh, dsa, padding
 from cryptography.hazmat.primitives.ciphers import Cipher
 from cryptography.hazmat.primitives.ciphers.algorithms import AES
 from cryptography.hazmat.primitives.ciphers.modes import CBC
@@ -550,33 +550,11 @@
             )
 
 
-class DummyLibrary(object):
-    Cryptography_HAS_EC = 0
-
-
 class TestOpenSSLEllipticCurve(object):
-    def test_elliptic_curve_supported(self, monkeypatch):
-        monkeypatch.setattr(backend, "_lib", DummyLibrary())
-
-        assert backend.elliptic_curve_supported(None) is False
-
-    def test_elliptic_curve_signature_algorithm_supported(self, monkeypatch):
-        monkeypatch.setattr(backend, "_lib", DummyLibrary())
-
-        assert backend.elliptic_curve_signature_algorithm_supported(
-            None, None
-        ) is False
-
     def test_sn_to_elliptic_curve_not_supported(self):
         with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_ELLIPTIC_CURVE):
             _sn_to_elliptic_curve(backend, b"fake")
 
-    def test_elliptic_curve_exchange_algorithm_supported(self, monkeypatch):
-        monkeypatch.setattr(backend, "_lib", DummyLibrary())
-        assert not backend.elliptic_curve_exchange_algorithm_supported(
-            ec.ECDH(), ec.SECP256R1()
-        )
-
 
 @pytest.mark.requires_backend_interface(interface=RSABackend)
 class TestRSAPEMSerialization(object):