From 072d2aa01a902b6c756b9cfbfe0b5de0be9171d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Tue, 5 Dec 2023 20:52:33 +0100
Subject: [PATCH] Extend openssl configure tests to check for relevant headers
 and functions.

---
 ChangeLog                    |  4 ++++
 configure.ac                 | 14 +++++++++-----
 examples/hogweed-benchmark.c |  2 +-
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8e79d487..eb9e7006 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2023-12-05  Niels Möller  <nisse@lysator.liu.se>
 
+	* configure.ac: In openssl tests, check for the headers actually
+	used by the benchmarking code, and for a subset of the relevant
+	functions.
+
 	* examples/nettle-openssl.c: Trim openssl includes and defines,
 	and use Nettle's definition of sha1 and md5 constants.
 	(nettle_openssl_init): Deleted.
diff --git a/configure.ac b/configure.ac
index c0709498..a7d4cfa4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -197,7 +197,7 @@ AC_TYPE_SIZE_T
 AC_CHECK_SIZEOF(long)
 AC_CHECK_SIZEOF(size_t)
 
-AC_CHECK_HEADERS([openssl/evp.h openssl/ecdsa.h],,
+AC_CHECK_HEADERS([openssl/evp.h openssl/ec.h openssl/rsa.h],,
 [enable_openssl=no
  break])
 
@@ -1170,11 +1170,15 @@ AC_SUBST(IF_MINI_GMP)
 
 OPENSSL_LIBFLAGS=''
 
-# Check for openssl's libcrypto (used only for benchmarking)
+# Check for openssl's libcrypto (used only for benchmarking), test for
+# a few of the functions used.
 if test x$enable_openssl = xyes ; then
-  AC_CHECK_LIB(crypto, EVP_CIPHER_CTX_new,
-    [OPENSSL_LIBFLAGS='-lcrypto'],
-    [enable_openssl=no])
+  for fun in EVP_CIPHER_CTX_new EVP_MD_CTX_new EVP_DigestVerifyFinal ; do
+    AC_CHECK_LIB(crypto, $fun,
+		 [OPENSSL_LIBFLAGS='-lcrypto'],
+		 [enable_openssl=no
+		  break])
+  done
 fi
 
 AH_TEMPLATE([WITH_OPENSSL],
diff --git a/examples/hogweed-benchmark.c b/examples/hogweed-benchmark.c
index 20698a88..3f858833 100644
--- a/examples/hogweed-benchmark.c
+++ b/examples/hogweed-benchmark.c
@@ -711,7 +711,7 @@ bench_openssl_init (EVP_PKEY *key, const EVP_MD *md)
     die ("OpenSSL key eneration failed.\n");
   ctx->key = key;
   ctx->md = md;
-  ctx->md_ctx = EVP_MD_CTX_create();
+  ctx->md_ctx = EVP_MD_CTX_new();
   if (!ctx->md_ctx)
     die ("OpenSSL EVP_MD_CTX_create failed.");
 
-- 
GitLab