diff --git a/src/microhttpd/Makefile.am b/src/microhttpd/Makefile.am
index 8e6e623a..796631db 100644
--- a/src/microhttpd/Makefile.am
+++ b/src/microhttpd/Makefile.am
@@ -116,7 +116,7 @@ libmicrohttpd_la_LDFLAGS = \
-export-dynamic -no-undefined \
-version-info @LIB_VERSION_CURRENT@:@LIB_VERSION_REVISION@:@LIB_VERSION_AGE@
libmicrohttpd_la_LIBADD = \
- $(MHD_LIBDEPS) $(MHD_TLS_LIBDEPS)
+ $(MHD_LIBDEPS) $(MHD_TLS_LIBDEPS) -lcrypto
if HAVE_W32
diff --git a/src/microhttpd/md5_ext_openssl.c b/src/microhttpd/md5_ext_openssl.c
new file mode 100644
index 00000000..1ef202c0
--- /dev/null
+++ b/src/microhttpd/md5_ext_openssl.c
@@ -0,0 +1,99 @@
+/*
+ This file is part of GNU libmicrohttpd
+ Copyright (C) 2022 Evgeny Grin (Karlson2k)
+
+ GNU libmicrohttpd is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with GNU libmicrohttpd.
+ If not, see .
+*/
+
+/**
+ * @file microhttpd/md5_ext.h
+ * @brief Wrapper for MD5 calculation performed by TLS library
+ * @author Karlson2k (Evgeny Grin)
+ * @author Edouard LEFIZELIER
+ */
+
+#include
+#include "md5_ext.h"
+#include "mhd_assert.h"
+
+/**
+ * Initialise structure for MD5 calculation.
+ *
+ * @param ctx the calculation context
+ */
+void
+MHD_MD5_init (struct Md5Ctx *ctx)
+{
+ MD5_CTX c;
+ /*Initial Hash value, see OpenSSL manual*/
+ if (1 = MD5_INIT (&c))
+ {
+ ctx->H[0] = c->A;
+ ctx->H[1] = c->B;
+ ctx->H[2] = c->C;
+ ctx->H[3] = c->D;
+ /* Initialise the number of bytes. */
+ ctx->count = 0;
+ }
+ OPENSSL_cleanse (c, sizeof(*c));
+}
+
+
+/* à terminer */
+/**
+ * Process portion of bytes.
+ *
+ * @param ctx the calculation context
+ * @param data bytes to add to hash
+ * @param length number of bytes in @a data
+ */
+void
+MHD_MD5_update (struct Md5CtxExt *ctx,
+ const uint8_t *data,
+ size_t length)
+{
+ MD5_CTX c;
+ if (0 == ctx->ext_error)
+ /* MD5_Update() return 1 for success, 0 otherwise.*/
+ ctx->ext_error = ! MD5_Update (c, data, length);
+
+}
+
+
+/* à terminer */
+/**
+ * Finalise MD5 calculation, return digest, reset hash calculation.
+ *
+ * @param ctx the calculation context
+ * @param[out] digest set to the hash, must be #MD5_DIGEST_SIZE bytes
+ */
+void
+MHD_MD5_finish_reset (struct Md5CtxExt *ctx,
+ uint8_t digest[MD5_DIGEST_SIZE])
+{
+ if (0 == ctx->ext_error)
+ gnutls_hash_output (ctx->handle, digest);
+}
+
+
+/*
+typedef struct MD5state_st
+ 101 {
+ 102 MD5_LONG A,B,C,D;
+ 103 MD5_LONG Nl,Nh;
+ 104 MD5_LONG data[MD5_LBLOCK];
+ 105 unsigned int num;
+ 106 } MD5_CTX;
+*/
\ No newline at end of file
diff --git a/src/microhttpd/md5_ext_openssl_bis.c b/src/microhttpd/md5_ext_openssl_bis.c
new file mode 100644
index 00000000..ffe33b99
--- /dev/null
+++ b/src/microhttpd/md5_ext_openssl_bis.c
@@ -0,0 +1,47 @@
+/*
+ This file is part of GNU libmicrohttpd
+ Copyright (C) 2022 Evgeny Grin (Karlson2k)
+
+ GNU libmicrohttpd is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with GNU libmicrohttpd.
+ If not, see .
+*/
+
+/**
+ * @file microhttpd/md5_ext.h
+ * @brief Wrapper for MD5 calculation performed by TLS library
+ * @author Karlson2k (Evgeny Grin)
+ * @author Edouard LEFIZELIER
+ */
+
+#include
+#include "md5_ext_openssl_bis.h"
+#include "mhd_assert.h"
+
+void
+MHD_MD5 (struct Md5CtxExt *ctx,
+ const unsigned char *d,
+ size_t n)
+{
+ unsigned char *md;
+ if (NULL == MD5 (d, n, md))
+ {
+ ctx->ext_error = 1;
+ }
+ else
+ {
+ ctx->ext_error = 0;
+ memcpy (ctx->handle, md, sizeof(ctx->digest));
+ }
+
+}
diff --git a/src/openssl/features.txt b/src/openssl/features.txt
index 7c9face9..a4897939 100644
--- a/src/openssl/features.txt
+++ b/src/openssl/features.txt
@@ -58,12 +58,61 @@ microhttpd/sha256_ext.c:
microhttpd/test_upgrade_large.c:
51: #include
+ -> gnutlscli_connect(...)
+ -> command gnutls-cli
+ -> type gnutls_certificate_credentials_t
+ -> type gnutls_session_t
+ -> GNUTLS_E_SUCCESS
+ -> GNUTLS_CLIENT
+ -> gnutls_set_default_priority(...)
+ -> gnutls_certificate_allocate_credentials(...)
+ -> gnutls_credentials_set(...)
+ -> GNUTLS_CRD_CERTIFICATE
+ -> GNUTLS_VERSION_NUMBER
+ -> gnutls_transport_set_int(...)
+ -> gnutls_transport_set_ptr(...)
+ -> type gnutls_transport_ptr_t
+ -> gnutls_certificate_free_credentials(...)
+ -> gnutls_deinit(...)
+ -> gnutls_handshake(...)
+ -> GNUTLS_E_AGAIN
+ -> gnutls_record_send(...)
+ -> gnutls_record_recv(...)
+ -> gnutlscli_connect(...)
+ -> parameter "--use-gnutls-cli"
+ -> parameter "--use-gnutls-lib"
+ -> gnutls_global_init(...)
+ -> gnutls_global_deinit(...)
+
microhttpd/test_upgrade.c:
54: #include
+ -> same as test_upgrade_large.c
testcurl/https/test_https_sni.c:
37: #include
+ -> type gnutls_pcert_st
+ -> type gnutls_privkey_t
+ -> type gnutls_datum_t
+ -> gnutls_load_file(...)
+ -> gnutls_pcert_import_x509_raw
+ -> gnutls_strerror(...)
+ -> gnutls_free(...)
+ -> gnutls_load_file(...)
+ -> gnutls_privkey_init(...)
+ -> gnutls_privkey_import_x509_raw(...)
+ -> GNUTLS_X509_FMT_PEM
+ -> gnutls_strerror(...)
+ -> gnutls_free(...)
+ -> type gnutls_session_t
+ -> type gnutls_datum_t
+ -> type gnutls_pk_algorithm_t
+ -> type gnutls_pcert_st
+ -> type gnutls_privkey_t
+ -> GNUTLS_E_SUCCESS
+ -> gnutls_server_name_get(...)
+ -> curl_tls_is_gnutls(...)
+
42: #include
testcurl/https/tls_test_common.h: