--- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -74,7 +74,10 @@ # error "OPENSSL_THREADS is not defined, Python requires thread-safe OpenSSL" #endif - +#ifdef LIBRESSL_VERSION_NUMBER +/* LibreSSL does not define this for some reason, but it does implement it */ +unsigned int X509_VERIFY_PARAM_get_hostflags(X509_VERIFY_PARAM *param); +#endif struct py_ssl_error_code { const char *mnemonic; @@ -4896,7 +4899,11 @@ _ssl__SSLContext_cert_store_stats_impl(P int x509 = 0, crl = 0, ca = 0, i; store = SSL_CTX_get_cert_store(self->ctx); +#if !defined(LIBRESSL_VERSION_NUMBER) objs = X509_STORE_get1_objects(store); +#else + objs = X509_STORE_get0_objects(store); +#endif if (objs == NULL) { PyErr_SetString(PyExc_MemoryError, "failed to query cert store"); return NULL; @@ -4952,7 +4959,11 @@ _ssl__SSLContext_get_ca_certs_impl(PySSL } store = SSL_CTX_get_cert_store(self->ctx); +#if !defined(LIBRESSL_VERSION_NUMBER) objs = X509_STORE_get1_objects(store); +#else + objs = X509_STORE_get0_objects(store); +#endif if (objs == NULL) { PyErr_SetString(PyExc_MemoryError, "failed to query cert store"); goto error;