diff --git a/src/_cffi_src/openssl/cryptography.py b/src/_cffi_src/openssl/cryptography.py index ada4a883b66d..faa223b557bd 100644 --- a/src/_cffi_src/openssl/cryptography.py +++ b/src/_cffi_src/openssl/cryptography.py @@ -48,6 +48,11 @@ #define CRYPTOGRAPHY_IS_AWSLC 0 #endif +#if OPENSSL_VERSION_NUMBER >= 0x30200000L +#define CRYPTOGRAPHY_OPENSSL_320_OR_GREATER 1 +#else +#define CRYPTOGRAPHY_OPENSSL_320_OR_GREATER 0 +#endif #if OPENSSL_VERSION_NUMBER < 0x10101050 #error "pyca/cryptography MUST be linked with Openssl 1.1.1e or later" diff --git a/src/_cffi_src/openssl/ssl.py b/src/_cffi_src/openssl/ssl.py index 2f0f6899d6bb..128d2ba66144 100644 --- a/src/_cffi_src/openssl/ssl.py +++ b/src/_cffi_src/openssl/ssl.py @@ -30,6 +30,7 @@ static const long Cryptography_HAS_CUSTOM_EXT; static const long Cryptography_HAS_SRTP; static const long Cryptography_HAS_DTLS_GET_DATA_MTU; +static const long Cryptography_HAS_SSL_GET0_GROUP_NAME; static const long SSL_FILETYPE_PEM; static const long SSL_FILETYPE_ASN1; @@ -344,6 +345,8 @@ const char *SSL_get_version(const SSL *); int SSL_version(const SSL *); +const char *SSL_get0_group_name(SSL *); + void SSL_set_tlsext_host_name(SSL *, char *); void SSL_CTX_set_tlsext_servername_callback( SSL_CTX *, @@ -675,4 +678,11 @@ return SSL_SESSION_new(); } #endif + +#if CRYPTOGRAPHY_OPENSSL_320_OR_GREATER +static const long Cryptography_HAS_SSL_GET0_GROUP_NAME = 1; +#else +static const long Cryptography_HAS_SSL_GET0_GROUP_NAME = 0; +const char *(*SSL_get0_group_name)(SSL *) = NULL; +#endif """ diff --git a/src/cryptography/hazmat/bindings/openssl/_conditional.py b/src/cryptography/hazmat/bindings/openssl/_conditional.py index b10e59cee2b3..063bcf5bfcc9 100644 --- a/src/cryptography/hazmat/bindings/openssl/_conditional.py +++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py @@ -161,6 +161,10 @@ def cryptography_has_get_extms_support() -> list[str]: return ["SSL_get_extms_support"] +def cryptography_has_ssl_get0_group_name() -> list[str]: + return ["SSL_get0_group_name"] + + # This is a mapping of # {condition: function-returning-names-dependent-on-that-condition} so we can # loop over them and delete unsupported names at runtime. It will be removed @@ -197,4 +201,7 @@ def cryptography_has_get_extms_support() -> list[str]: cryptography_has_ssl_op_ignore_unexpected_eof ), "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support, + "Cryptography_HAS_SSL_GET0_GROUP_NAME": ( + cryptography_has_ssl_get0_group_name + ), }