1+ From: Jonathan Wright <
[email protected] >
2+ Date: Fri Jun 6 16:47:14 2025 -0500
3+ Subject: Rebase patch to libsolv-0.7.32
4+
5+ From 49859c1ad32487de6adb65eedf4b81f021e1b0e8 Mon Sep 17 00:00:00 2001
6+ From: Jaroslav Rohel <
[email protected] >
7+ Date: Fri, 25 Oct 2019 14:33:22 +0200
8+ Subject: [PATCH] Add support for computing hashes using OpenSSL
9+
10+ It adds WITH_OPENSSL build option.
11+ If it is ON, OpenSSL will be used instead of internal implementation
12+ of computing hashes (MD5, SHA1, SHA224, SHA256, SHA384, SHA512).
13+
14+ diff --git a/CMakeLists.txt b/CMakeLists.txt
15+ index 5ba5ed5..16750ae 100644
16+ --- a/CMakeLists.txt
17+ +++ b/CMakeLists.txt
18+ @@ -42,6 +42,7 @@ OPTION (ENABLE_ZCHUNK_COMPRESSION "Build with zchunk compression support?" OFF)
19+ OPTION (WITH_SYSTEM_ZCHUNK "Use system zchunk library?" OFF)
20+ OPTION (WITH_LIBXML2 "Build with libxml2 instead of libexpat?" OFF)
21+ OPTION (WITHOUT_COOKIEOPEN "Disable the use of stdio cookie opens?" OFF)
22+ + OPTION (WITH_OPENSSL "Use OpenSSL instead of internal implementation of hashes?" OFF)
23+
24+ OPTION (ENABLE_STATIC_TOOLS "Link the tools against the static version of the libraries?" OFF)
25+ OPTION (ENABLE_STATIC_BINDINGS "Link the bindings against the static version of the libraries?" OFF)
26+ @@ -173,6 +174,11 @@ INCLUDE_DIRECTORIES (${EXPAT_INCLUDE_DIRS})
27+ ENDIF (WITH_LIBXML2 )
28+ ENDIF (ENABLE_RPMMD OR ENABLE_SUSEREPO OR ENABLE_APPDATA OR ENABLE_COMPS OR ENABLE_HELIXREPO OR ENABLE_MDKREPO)
29+
30+ + IF (WITH_OPENSSL)
31+ + FIND_PACKAGE (OpenSSL REQUIRED)
32+ + INCLUDE_DIRECTORIES (${OPENSSL_INCLUDE_DIR})
33+ + ENDIF(WITH_OPENSSL)
34+ +
35+ IF (ENABLE_ZLIB_COMPRESSION)
36+ FIND_PACKAGE (ZLIB REQUIRED)
37+ INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIRS})
38+ @@ -292,8 +298,8 @@ check_linker_flag("-Wl,--version-script=${CMAKE_SOURCE_DIR}/src/libsolv.ver" HAV
39+
40+ # should create config.h with #cmakedefine instead...
41+ FOREACH (VAR HAVE_STRCHRNUL HAVE_FOPENCOOKIE HAVE_FUNOPEN WORDS_BIGENDIAN
42+ - HAVE_RPM_DB_H HAVE_RPMDBNEXTITERATORHEADERBLOB HAVE_RPMDBFSTAT
43+ - WITH_LIBXML2 WITHOUT_COOKIEOPEN)
44+ + HAVE_RPM_DB_H HAVE_PGPDIGGETPARAMS HAVE_RPMDBNEXTITERATORHEADERBLOB HAVE_RPMDBFSTAT
45+ + WITH_LIBXML2 WITHOUT_COOKIEOPEN WITH_OPENSSL)
46+ IF(${VAR})
47+ ADD_DEFINITIONS (-D${VAR}=1)
48+ SET (SWIG_FLAGS ${SWIG_FLAGS} -D${VAR})
49+ @@ -432,6 +438,9 @@ ENDIF (ENABLE_ZSTD_COMPRESSION)
50+ IF (WITH_SYSTEM_ZCHUNK)
51+ SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${ZCHUNK_LIBRARIES})
52+ ENDIF (WITH_SYSTEM_ZCHUNK)
53+ + IF (WITH_OPENSSL)
54+ + SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARY})
55+ + ENDIF (WITH_OPENSSL)
56+ IF (ENABLE_RPMDB)
57+ SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES})
58+ ENDIF (ENABLE_RPMDB)
59+ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
60+ index 25ad09b..4265dfb 100644
61+ --- a/src/CMakeLists.txt
62+ +++ b/src/CMakeLists.txt
63+ @@ -18,7 +18,7 @@ SET (libsolv_SRCS
64+ solver.c solverdebug.c repo_solv.c repo_write.c evr.c pool.c
65+ queue.c repo.c repodata.c repopage.c util.c policy.c solvable.c
66+ transaction.c order.c rules.c problems.c linkedpkg.c cplxdeps.c
67+ - chksum.c md5.c sha1.c sha2.c solvversion.c selection.c
68+ + chksum.c solvversion.c selection.c
69+ fileprovides.c diskusage.c suse.c solver_util.c cleandeps.c
70+ userinstalled.c filelistfilter.c decision.c)
71+
72+ @@ -47,6 +47,10 @@ IF (WIN32)
73+ LIST (APPEND libsolv_SRCS ${WIN32_COMPAT_SOURCES})
74+ ENDIF (WIN32)
75+
76+ + IF (NOT WITH_OPENSSL)
77+ + SET (libsolv_SRCS ${libsolv_SRCS} md5.c sha1.c sha2.c)
78+ + ENDIF (NOT WITH_OPENSSL)
79+ +
80+ IF (HAVE_LINKER_VERSION_SCRIPT)
81+ SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/src/libsolv.ver")
82+ ENDIF (HAVE_LINKER_VERSION_SCRIPT)
83+ @@ -55,6 +59,9 @@ IF (DISABLE_SHARED)
84+ ADD_LIBRARY (libsolv STATIC ${libsolv_SRCS})
85+ ELSE (DISABLE_SHARED)
86+ ADD_LIBRARY (libsolv SHARED ${libsolv_SRCS})
87+ + IF (WITH_OPENSSL)
88+ + TARGET_LINK_LIBRARIES (libsolv ${OPENSSL_CRYPTO_LIBRARY})
89+ + ENDIF (WITH_OPENSSL)
90+ ENDIF (DISABLE_SHARED)
91+
92+ IF (WIN32)
93+ diff --git a/src/chksum.c b/src/chksum.c
94+ index 1f8ab47..9189b74 100644
95+ --- a/src/chksum.c
96+ +++ b/src/chksum.c
97+ @@ -15,10 +15,42 @@
98+ #include "util.h"
99+ #include "chksum.h"
100+
101+ + #ifdef WITH_OPENSSL
102+ +
103+ + #include <openssl/md5.h>
104+ + #include <openssl/sha.h>
105+ +
106+ + typedef SHA_CTX SHA1_CTX;
107+ + typedef SHA256_CTX SHA224_CTX;
108+ + typedef SHA512_CTX SHA384_CTX;
109+ +
110+ + #define solv_MD5_Init(ctx) MD5_Init(ctx)
111+ + #define solv_MD5_Update(ctx, data, len) MD5_Update(ctx, data, len)
112+ + #define solv_MD5_Final(md, ctx) MD5_Final(md, ctx)
113+ + #define solv_SHA1_Init(ctx) SHA1_Init(ctx)
114+ + #define solv_SHA1_Update(ctx, data, len) SHA1_Update(ctx, data, len)
115+ + #define solv_SHA1_Final(ctx, md) SHA1_Final(md, ctx)
116+ + #define solv_SHA224_Init(ctx) SHA224_Init(ctx)
117+ + #define solv_SHA224_Update(ctx, data, len) SHA224_Update(ctx, data, len)
118+ + #define solv_SHA224_Final(md, ctx) SHA224_Final(md, ctx)
119+ + #define solv_SHA256_Init(ctx) SHA256_Init(ctx)
120+ + #define solv_SHA256_Update(ctx, data, len) SHA256_Update(ctx, data, len)
121+ + #define solv_SHA256_Final(md, ctx) SHA256_Final(md, ctx)
122+ + #define solv_SHA384_Init(ctx) SHA384_Init(ctx)
123+ + #define solv_SHA384_Update(ctx, data, len) SHA384_Update(ctx, data, len)
124+ + #define solv_SHA384_Final(md, ctx) SHA384_Final(md, ctx)
125+ + #define solv_SHA512_Init(ctx) SHA512_Init(ctx)
126+ + #define solv_SHA512_Update(ctx, data, len) SHA512_Update(ctx, data, len)
127+ + #define solv_SHA512_Final(md, ctx) SHA512_Final(md, ctx)
128+ +
129+ + #else
130+ +
131+ #include "md5.h"
132+ #include "sha1.h"
133+ #include "sha2.h"
134+
135+ + #endif
136+ +
137+ #ifdef _WIN32
138+ #include "strfncs.h"
139+ #endif
140+ diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
141+ index 4b3548a..c405743 100644
142+ --- a/tools/CMakeLists.txt
143+ +++ b/tools/CMakeLists.txt
144+ @@ -19,7 +19,7 @@ ENDIF (WIN32)
145+ SET (tools_list testsolv mergesolv dumpsolv installcheck testsolv)
146+
147+ ADD_EXECUTABLE (dumpsolv dumpsolv.c )
148+ - TARGET_LINK_LIBRARIES (dumpsolv ${LIBSOLV_TOOLS_LIBRARY})
149+ + TARGET_LINK_LIBRARIES (dumpsolv ${LIBSOLV_TOOLS_LIBRARY} ${SYSTEM_LIBRARIES})
150+
151+ IF (ENABLE_RPMDB)
152+ ADD_EXECUTABLE (rpmdb2solv rpmdb2solv.c)
153+
0 commit comments