Blame SOURCES/0001-Backport-OpenSSL-for-hashes.patch

b7f621
From 9839a88e4fda23b46015170b201c98da7bcdd55e Mon Sep 17 00:00:00 2001
6e36fb
From: Jaroslav Rohel <jrohel@redhat.com>
Brian Stinson d0f450
Date: Fri, 25 Oct 2019 14:33:22 +0200
Brian Stinson d0f450
Subject: [PATCH 1/2] Add support for computing hashes using OpenSSL
6e36fb
Brian Stinson d0f450
It adds WITH_OPENSSL build option.
Brian Stinson d0f450
If it is ON, OpenSSL will be used instead of internal implementation
Brian Stinson d0f450
of computing hashes (MD5, SHA1, SHA224, SHA256, SHA384, SHA512).
6e36fb
---
6e36fb
 CMakeLists.txt       | 11 ++++++++++-
Brian Stinson d0f450
 src/CMakeLists.txt   | 16 +++++++++++-----
6e36fb
 src/chksum.c         | 32 ++++++++++++++++++++++++++++++++
6e36fb
 tools/CMakeLists.txt |  2 +-
Brian Stinson d0f450
 4 files changed, 54 insertions(+), 7 deletions(-)
6e36fb
6e36fb
diff --git a/CMakeLists.txt b/CMakeLists.txt
b7f621
index c1ada004..83727358 100644
6e36fb
--- a/CMakeLists.txt
6e36fb
+++ b/CMakeLists.txt
b7f621
@@ -40,6 +40,7 @@ OPTION (ENABLE_ZCHUNK_COMPRESSION "Build with zchunk compression support?" OFF)
6e36fb
 OPTION (WITH_SYSTEM_ZCHUNK "Use system zchunk library?" OFF)
6e36fb
 OPTION (WITH_LIBXML2  "Build with libxml2 instead of libexpat?" OFF)
Brian Stinson d0f450
 OPTION (WITHOUT_COOKIEOPEN "Disable the use of stdio cookie opens?" OFF)
6e36fb
+OPTION (WITH_OPENSSL "Use OpenSSL instead of internal implementation of hashes?" OFF)
6e36fb
 
Brian Stinson d0f450
 include (GNUInstallDirs)
Brian Stinson d0f450
 message (STATUS "Libraries will be installed in ${CMAKE_INSTALL_FULL_LIBDIR}")
b7f621
@@ -161,6 +162,11 @@ INCLUDE_DIRECTORIES (${EXPAT_INCLUDE_DIRS})
6e36fb
 ENDIF (WITH_LIBXML2 )
6e36fb
 ENDIF (ENABLE_RPMMD OR ENABLE_SUSEREPO OR ENABLE_APPDATA OR ENABLE_COMPS OR ENABLE_HELIXREPO OR ENABLE_MDKREPO)
6e36fb
 
6e36fb
+IF (WITH_OPENSSL)
6e36fb
+FIND_PACKAGE (OpenSSL REQUIRED)
6e36fb
+INCLUDE_DIRECTORIES (${OPENSSL_INCLUDE_DIR})
6e36fb
+ENDIF(WITH_OPENSSL)
6e36fb
+
6e36fb
 IF (ENABLE_ZLIB_COMPRESSION)
6e36fb
 FIND_PACKAGE (ZLIB REQUIRED)
6e36fb
 INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIRS})
b7f621
@@ -281,7 +287,7 @@ ENDIF (${CMAKE_MAJOR_VERSION} GREATER 2)
6e36fb
 # should create config.h with #cmakedefine instead...
6e36fb
 FOREACH (VAR HAVE_STRCHRNUL HAVE_FOPENCOOKIE HAVE_FUNOPEN WORDS_BIGENDIAN
b7f621
   HAVE_RPM_DB_H HAVE_PGPDIGGETPARAMS HAVE_RPMDBNEXTITERATORHEADERBLOB HAVE_RPMDBFSTAT
b7f621
-  WITH_LIBXML2 WITHOUT_COOKIEOPEN)
b7f621
+  WITH_LIBXML2 WITHOUT_COOKIEOPEN WITH_OPENSSL)
6e36fb
   IF(${VAR})
6e36fb
     ADD_DEFINITIONS (-D${VAR}=1)
6e36fb
     SET (SWIG_FLAGS ${SWIG_FLAGS} -D${VAR})
b7f621
@@ -418,6 +424,9 @@ ENDIF (ENABLE_ZSTD_COMPRESSION)
6e36fb
 IF (WITH_SYSTEM_ZCHUNK)
6e36fb
 SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${ZCHUNK_LIBRARIES})
6e36fb
 ENDIF (WITH_SYSTEM_ZCHUNK)
6e36fb
+IF (WITH_OPENSSL)
6e36fb
+SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARY})
6e36fb
+ENDIF (WITH_OPENSSL)
6e36fb
 IF (ENABLE_RPMDB)
6e36fb
 SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES})
6e36fb
 ENDIF (ENABLE_RPMDB)
6e36fb
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
Brian Stinson d0f450
index 6abb3adb..d356c7d6 100644
6e36fb
--- a/src/CMakeLists.txt
6e36fb
+++ b/src/CMakeLists.txt
6e36fb
@@ -18,9 +18,8 @@ SET (libsolv_SRCS
6e36fb
     solver.c solverdebug.c repo_solv.c repo_write.c evr.c pool.c
6e36fb
     queue.c repo.c repodata.c repopage.c util.c policy.c solvable.c
6e36fb
     transaction.c order.c rules.c problems.c linkedpkg.c cplxdeps.c
6e36fb
-    chksum.c md5.c sha1.c sha2.c solvversion.c selection.c
6e36fb
-    fileprovides.c diskusage.c suse.c solver_util.c cleandeps.c
6e36fb
-    userinstalled.c filelistfilter.c)
6e36fb
+    chksum.c solvversion.c selection.c fileprovides.c diskusage.c
6e36fb
+    suse.c solver_util.c cleandeps.c userinstalled.c filelistfilter.c)
6e36fb
 
6e36fb
 SET (libsolv_HEADERS
6e36fb
     bitmap.h evr.h hash.h policy.h poolarch.h poolvendor.h pool.h
Brian Stinson d0f450
@@ -43,14 +42,21 @@ IF (WIN32)
Brian Stinson d0f450
     LIST (APPEND libsolv_SRCS ${WIN32_COMPAT_SOURCES})
Brian Stinson d0f450
 ENDIF (WIN32)
6e36fb
 
6e36fb
+IF (NOT WITH_OPENSSL)
6e36fb
+  SET (libsolv_SRCS ${libsolv_SRCS} md5.c sha1.c sha2.c)
6e36fb
+ENDIF (NOT WITH_OPENSSL)
Brian Stinson d0f450
+
6e36fb
 IF (HAVE_LINKER_VERSION_SCRIPT)
6e36fb
 SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/src/libsolv.ver")
6e36fb
 ENDIF (HAVE_LINKER_VERSION_SCRIPT)
6e36fb
 
6e36fb
 IF (DISABLE_SHARED)
6e36fb
-ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS})
6e36fb
+  ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS})
6e36fb
 ELSE (DISABLE_SHARED)
6e36fb
-ADD_LIBRARY (libsolv SHARED ${libsolv_SRCS})
6e36fb
+  ADD_LIBRARY (libsolv SHARED ${libsolv_SRCS})
6e36fb
+  IF (WITH_OPENSSL)
6e36fb
+    TARGET_LINK_LIBRARIES (libsolv ${OPENSSL_CRYPTO_LIBRARY})
6e36fb
+  ENDIF (WITH_OPENSSL)
6e36fb
 ENDIF (DISABLE_SHARED)
6e36fb
 
6e36fb
 SET_TARGET_PROPERTIES(libsolv PROPERTIES OUTPUT_NAME "solv")
6e36fb
diff --git a/src/chksum.c b/src/chksum.c
Brian Stinson d0f450
index 1f8ab471..9189b744 100644
6e36fb
--- a/src/chksum.c
6e36fb
+++ b/src/chksum.c
6e36fb
@@ -15,10 +15,42 @@
6e36fb
 #include "util.h"
6e36fb
 #include "chksum.h"
6e36fb
 
6e36fb
+#ifdef WITH_OPENSSL
6e36fb
+
6e36fb
+#include <openssl/md5.h>
6e36fb
+#include <openssl/sha.h>
6e36fb
+
6e36fb
+typedef SHA_CTX SHA1_CTX;
6e36fb
+typedef SHA256_CTX SHA224_CTX;
6e36fb
+typedef SHA512_CTX SHA384_CTX;
6e36fb
+
6e36fb
+#define solv_MD5_Init(ctx) MD5_Init(ctx)
6e36fb
+#define solv_MD5_Update(ctx, data, len) MD5_Update(ctx, data, len)
6e36fb
+#define solv_MD5_Final(md, ctx) MD5_Final(md, ctx)
6e36fb
+#define solv_SHA1_Init(ctx) SHA1_Init(ctx)
6e36fb
+#define solv_SHA1_Update(ctx, data, len) SHA1_Update(ctx, data, len)
6e36fb
+#define solv_SHA1_Final(ctx, md) SHA1_Final(md, ctx)
6e36fb
+#define solv_SHA224_Init(ctx) SHA224_Init(ctx)
6e36fb
+#define solv_SHA224_Update(ctx, data, len) SHA224_Update(ctx, data, len)
6e36fb
+#define solv_SHA224_Final(md, ctx) SHA224_Final(md, ctx)
6e36fb
+#define solv_SHA256_Init(ctx) SHA256_Init(ctx)
6e36fb
+#define solv_SHA256_Update(ctx, data, len) SHA256_Update(ctx, data, len)
6e36fb
+#define solv_SHA256_Final(md, ctx) SHA256_Final(md, ctx)
6e36fb
+#define solv_SHA384_Init(ctx) SHA384_Init(ctx)
6e36fb
+#define solv_SHA384_Update(ctx, data, len) SHA384_Update(ctx, data, len)
6e36fb
+#define solv_SHA384_Final(md, ctx) SHA384_Final(md, ctx)
6e36fb
+#define solv_SHA512_Init(ctx) SHA512_Init(ctx)
6e36fb
+#define solv_SHA512_Update(ctx, data, len) SHA512_Update(ctx, data, len)
6e36fb
+#define solv_SHA512_Final(md, ctx) SHA512_Final(md, ctx)
6e36fb
+
6e36fb
+#else
6e36fb
+
6e36fb
 #include "md5.h"
6e36fb
 #include "sha1.h"
6e36fb
 #include "sha2.h"
6e36fb
 
6e36fb
+#endif
6e36fb
+
Brian Stinson d0f450
 #ifdef _WIN32
Brian Stinson d0f450
   #include "strfncs.h"
Brian Stinson d0f450
 #endif
6e36fb
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
Brian Stinson d0f450
index f19030eb..d477e195 100644
6e36fb
--- a/tools/CMakeLists.txt
6e36fb
+++ b/tools/CMakeLists.txt
Brian Stinson d0f450
@@ -116,7 +116,7 @@ SET(tools_list ${tools_list} repo2solv)
Brian Stinson d0f450
 ENDIF (NOT WIN32)
6e36fb
 
6e36fb
 ADD_EXECUTABLE (dumpsolv dumpsolv.c )
6e36fb
-TARGET_LINK_LIBRARIES (dumpsolv libsolv)
6e36fb
+TARGET_LINK_LIBRARIES (dumpsolv libsolv ${SYSTEM_LIBRARIES})
6e36fb
 
6e36fb
 ADD_EXECUTABLE (mergesolv mergesolv.c )
6e36fb
 TARGET_LINK_LIBRARIES (mergesolv toolstuff libsolvext libsolv ${SYSTEM_LIBRARIES})
b7f621
-- 
b7f621
2.26.0
b7f621
6e36fb
b7f621
From 2c2f43ccefae0892698b313afa870cce5e2a38c8 Mon Sep 17 00:00:00 2001
Brian Stinson d0f450
From: Jaroslav Rohel <jrohel@redhat.com>
Brian Stinson d0f450
Date: Tue, 9 Apr 2019 10:20:16 +0200
Brian Stinson d0f450
Subject: [PATCH 2/2] Use OpenSSL for computing hashes by default
Brian Stinson d0f450
Brian Stinson d0f450
It simplifies backporting to downstream, because
Brian Stinson d0f450
it does not need to change the .spec file for using OpenSSL.
Brian Stinson d0f450
---
Brian Stinson d0f450
 CMakeLists.txt | 2 +-
Brian Stinson d0f450
 1 file changed, 1 insertion(+), 1 deletion(-)
Brian Stinson d0f450
Brian Stinson d0f450
diff --git a/CMakeLists.txt b/CMakeLists.txt
b7f621
index 83727358..a2c313f7 100644
Brian Stinson d0f450
--- a/CMakeLists.txt
Brian Stinson d0f450
+++ b/CMakeLists.txt
b7f621
@@ -40,7 +40,7 @@ OPTION (ENABLE_ZCHUNK_COMPRESSION "Build with zchunk compression support?" OFF)
Brian Stinson d0f450
 OPTION (WITH_SYSTEM_ZCHUNK "Use system zchunk library?" OFF)
Brian Stinson d0f450
 OPTION (WITH_LIBXML2  "Build with libxml2 instead of libexpat?" OFF)
Brian Stinson d0f450
 OPTION (WITHOUT_COOKIEOPEN "Disable the use of stdio cookie opens?" OFF)
Brian Stinson d0f450
-OPTION (WITH_OPENSSL "Use OpenSSL instead of internal implementation of hashes?" OFF)
Brian Stinson d0f450
+OPTION (WITH_OPENSSL "Use OpenSSL instead of internal implementation of hashes?" ON)
Brian Stinson d0f450
 
Brian Stinson d0f450
 include (GNUInstallDirs)
Brian Stinson d0f450
 message (STATUS "Libraries will be installed in ${CMAKE_INSTALL_FULL_LIBDIR}")
b7f621
-- 
b7f621
2.26.0
b7f621