git-crypt icon indicating copy to clipboard operation
git-crypt copied to clipboard

fix build with libressl >= 3.5.0

Open ffontaine opened this issue 3 years ago • 6 comments

Fix the following build failure with libressl >= 3.5.0:

crypto-openssl-10.cpp:78:18: error: field 'ctx' has incomplete type 'HMAC_CTX' {aka 'hmac_ctx_st'}
   78 |         HMAC_CTX ctx;
      |                  ^~~

Fixes:

  • http://autobuild.buildroot.org/results/98747d470c2ad59280934e160d24bd3fdad1503c

Signed-off-by: Fabrice Fontaine [email protected]

ffontaine avatar May 14 '22 09:05 ffontaine

What if instead you tested for OPENSSL_VERSION_NUMBER < 0x10100000L? I believe for libressl >= 3.5.0 that would be 0x20000000L and guaranteed not to change so would accommodate that case as well as OpenSSL 1.1 and 3.0 in a single test.

loqs avatar May 15 '22 22:05 loqs

As OPENSSL_VERSION_NUMBER is hardcoded to 0x20000000L in libressl, this would mean that the build will fail for all versions before 3.5.0. If you want to be compatible with all libressl versions, LIBRESSL_VERSION_NUMBER must be checked.

ffontaine avatar May 16 '22 06:05 ffontaine

What if instead you use a feature test?

diff --git a/crypto-openssl-10.cpp b/crypto-openssl-10.cpp
index f0f2c53..1623690 100644
--- a/crypto-openssl-10.cpp
+++ b/crypto-openssl-10.cpp
@@ -28,16 +28,15 @@
  * as that of the covered work.
  */
 
-#include <openssl/opensslconf.h>
+#include <openssl/hmac.h>
 
-#if !defined(OPENSSL_API_COMPAT)
+#if defined(HMAC_cleanup)
 
 #include "crypto.hpp"
 #include "key.hpp"
 #include "util.hpp"
 #include <openssl/aes.h>
 #include <openssl/sha.h>
-#include <openssl/hmac.h>
 #include <openssl/evp.h>
 #include <openssl/rand.h>
 #include <openssl/err.h>
diff --git a/crypto-openssl-11.cpp b/crypto-openssl-11.cpp
index adf03bb..518b90c 100644
--- a/crypto-openssl-11.cpp
+++ b/crypto-openssl-11.cpp
@@ -28,16 +28,15 @@
  * as that of the covered work.
  */
 
-#include <openssl/opensslconf.h>
+#include <openssl/hmac.h>
 
-#if defined(OPENSSL_API_COMPAT)
+#if !defined(HMAC_cleanup)
 
 #include "crypto.hpp"
 #include "key.hpp"
 #include "util.hpp"
 #include <openssl/aes.h>
 #include <openssl/sha.h>
-#include <openssl/hmac.h>
 #include <openssl/evp.h>
 #include <openssl/rand.h>
 #include <openssl/err.h>

loqs avatar May 16 '22 14:05 loqs

I updated the PR as requested

ffontaine avatar May 20 '22 17:05 ffontaine

Do you plan on merging this PR?

ffontaine avatar Dec 19 '23 14:12 ffontaine