Blame SOURCES/0002-Add-support-for-computing-hashes-using-OpenSSL.patch

6e36fb
From d053217223eff6e329da84b4d2e0c73d95e1a00f Mon Sep 17 00:00:00 2001
6e36fb
From: Jaroslav Rohel <jrohel@redhat.com>
6e36fb
Date: Thu, 28 Mar 2019 12:56:08 +0100
6e36fb
Subject: [PATCH] Add support for computing hashes using OpenSSL
6e36fb
6e36fb
---
6e36fb
 CMakeLists.txt       | 11 ++++++++++-
6e36fb
 src/CMakeLists.txt   | 15 ++++++++++-----
6e36fb
 src/chksum.c         | 32 ++++++++++++++++++++++++++++++++
6e36fb
 tools/CMakeLists.txt |  2 +-
6e36fb
 4 files changed, 53 insertions(+), 7 deletions(-)
6e36fb
6e36fb
diff --git a/CMakeLists.txt b/CMakeLists.txt
6e36fb
index ab385f1..b2a0b72 100644
6e36fb
--- a/CMakeLists.txt
6e36fb
+++ b/CMakeLists.txt
6e36fb
@@ -38,6 +38,7 @@ OPTION (ENABLE_ZSTD_COMPRESSION "Build with zstd compression support?" OFF)
6e36fb
 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)
6e36fb
+OPTION (WITH_OPENSSL "Use OpenSSL instead of internal implementation of hashes?" OFF)
6e36fb
 
6e36fb
 # Library
6e36fb
 IF (DEFINED LIB)
6e36fb
@@ -177,6 +178,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})
6e36fb
@@ -287,7 +293,7 @@ ENDIF (${CMAKE_MAJOR_VERSION} GREATER 2)
6e36fb
 
6e36fb
 # should create config.h with #cmakedefine instead...
6e36fb
 FOREACH (VAR HAVE_STRCHRNUL HAVE_FOPENCOOKIE HAVE_FUNOPEN WORDS_BIGENDIAN
6e36fb
-  HAVE_RPM_DB_H HAVE_PGPDIGGETPARAMS WITH_LIBXML2 )
6e36fb
+  HAVE_RPM_DB_H HAVE_PGPDIGGETPARAMS WITH_LIBXML2 WITH_OPENSSL)
6e36fb
   IF(${VAR})
6e36fb
     ADD_DEFINITIONS (-D${VAR}=1)
6e36fb
     SET (SWIG_FLAGS ${SWIG_FLAGS} -D${VAR})
6e36fb
@@ -419,6 +425,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
6e36fb
index be487a7..fc3092a 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
6e36fb
@@ -33,16 +32,22 @@ IF (ENABLE_CONDA)
6e36fb
     SET (libsolv_SRCS ${libsolv_SRCS} conda.c)
6e36fb
 ENDIF (ENABLE_CONDA)
6e36fb
 
6e36fb
+IF (NOT WITH_OPENSSL)
6e36fb
+  SET (libsolv_SRCS ${libsolv_SRCS} md5.c sha1.c sha2.c)
6e36fb
+ENDIF (NOT WITH_OPENSSL)
6e36fb
 
6e36fb
 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
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
6e36fb
index df46145..d7b39e8 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
+
6e36fb
 struct s_Chksum {
6e36fb
   Id type;
6e36fb
   int done;
6e36fb
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
6e36fb
index 802dc50..b1f6c7a 100644
6e36fb
--- a/tools/CMakeLists.txt
6e36fb
+++ b/tools/CMakeLists.txt
6e36fb
@@ -99,7 +99,7 @@ SET (tools_list ${tools_list} appdata2solv)
6e36fb
 ENDIF (ENABLE_APPDATA)
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})
6e36fb
--
6e36fb
libgit2 0.27.8
6e36fb