diff options
author | Christian Heimes <christian@python.org> | 2021-10-20 15:18:34 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-20 15:18:34 (GMT) |
commit | 81520fe677d15cc7f9af5140bc5f9eca8409ad90 (patch) | |
tree | 18831f518f2c05fd1217dfb4935061b716cea40b /configure.ac | |
parent | d9e1dae35ac20acfeb2509b0dea4c3943693e79d (diff) | |
download | cpython-81520fe677d15cc7f9af5140bc5f9eca8409ad90.zip cpython-81520fe677d15cc7f9af5140bc5f9eca8409ad90.tar.gz cpython-81520fe677d15cc7f9af5140bc5f9eca8409ad90.tar.bz2 |
bpo-45536: Check OpenSSL APIs in configure (GH-29088)
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index ab3fc28..c025952 100644 --- a/configure.ac +++ b/configure.ac @@ -5888,6 +5888,48 @@ AS_CASE($with_openssl_rpath, AC_MSG_RESULT($OPENSSL_RPATH) AC_SUBST([OPENSSL_RPATH]) +# check if OpenSSL libraries work as expected +AC_MSG_CHECKING(whether OpenSSL provides required APIs) +save_LIBS="$LIBS" +save_CFLAGS="$CFLAGS" +save_LDFLAGS="$LDFLAGS" +LIBS="$LIBS $OPENSSL_LIBS" +CFLAGS="$CFLAGS_NODIST $OPENSSL_INCLUDES" +LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" + +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include <openssl/opensslv.h> +#include <openssl/evp.h> +#include <openssl/ssl.h> + +#if OPENSSL_VERSION_NUMBER < 0x10101000L +#error "OpenSSL >= 1.1.1 is required" +#endif + +static void keylog_cb(const SSL *ssl, const char *line) {} +]], [[ +/* SSL APIs */ +SSL_CTX *ctx = SSL_CTX_new(TLS_client_method()); +SSL_CTX_set_keylog_callback(ctx, keylog_cb); +SSL *ssl = SSL_new(ctx); +X509_VERIFY_PARAM *param = SSL_get0_param(ssl); +X509_VERIFY_PARAM_set1_host(param, "python.org", 0); +SSL_free(ssl); +SSL_CTX_free(ctx); + +/* hashlib APIs */ +OBJ_nid2sn(NID_md5); +OBJ_nid2sn(NID_sha1); +OBJ_nid2sn(NID_sha3_512); +OBJ_nid2sn(NID_blake2b512); +EVP_PBE_scrypt(NULL, 0, NULL, 0, 2, 8, 1, 0, NULL, 0); +]])], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) +LIBS="$save_LIBS" +CFLAGS="$save_CFLAGS" +LDFLAGS="$save_LDFLAGS" + # ssl module default cipher suite string AH_TEMPLATE(PY_SSL_DEFAULT_CIPHERS, [Default cipher suites list for ssl module. |