bind EVP_PKEY_get1_tls_encodedpoint because X25519 (#3682)
diff --git a/src/_cffi_src/openssl/evp.py b/src/_cffi_src/openssl/evp.py
index 57f0889..1b10863 100644
--- a/src/_cffi_src/openssl/evp.py
+++ b/src/_cffi_src/openssl/evp.py
@@ -31,6 +31,7 @@
static const int Cryptography_HAS_PKEY_CTX;
static const int Cryptography_HAS_SCRYPT;
static const int Cryptography_HAS_EVP_PKEY_DHX;
+static const int Cryptography_HAS_EVP_PKEY_get1_tls_encodedpoint;
"""
FUNCTIONS = """
@@ -147,6 +148,9 @@
"""
MACROS = """
+/* Added in 1.1.0 */
+size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *, unsigned char **);
+
/* PKCS8_PRIV_KEY_INFO * became const in 1.1.0 */
EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *);
@@ -218,6 +222,13 @@
static const long Cryptography_HAS_SCRYPT = 1;
#endif
+#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER
+static const long Cryptography_HAS_EVP_PKEY_get1_tls_encodedpoint = 1;
+#else
+static const long Cryptography_HAS_EVP_PKEY_get1_tls_encodedpoint = 0;
+size_t (*EVP_PKEY_get1_tls_encodedpoint)(EVP_PKEY *, unsigned char **) = NULL;
+#endif
+
/* OpenSSL 1.1.0+ does this define for us, but if not present we'll do it */
#if !defined(EVP_CTRL_AEAD_SET_IVLEN)
# define EVP_CTRL_AEAD_SET_IVLEN EVP_CTRL_GCM_SET_IVLEN
diff --git a/src/cryptography/hazmat/bindings/openssl/_conditional.py b/src/cryptography/hazmat/bindings/openssl/_conditional.py
index 942ac60..8672a59 100644
--- a/src/cryptography/hazmat/bindings/openssl/_conditional.py
+++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py
@@ -176,4 +176,7 @@
"Cryptography_HAS_X25519": [
"NID_X25519",
],
+ "Cryptography_HAS_EVP_PKEY_get1_tls_encodedpoint": [
+ "EVP_PKEY_get1_tls_encodedpoint",
+ ],
}