kumquat-buildroot/package/open-iscsi/0001-SHA3-is-not-supported-by-libressl.patch
Fabrice Fontaine 295baf16a1 package/open-iscsi: fix libressl build
Fix the following libressl build failure raised since the addition of
the package in commit 2a571acddd:

/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/or1k-buildroot-linux-gnu/11.3.0/../../../../or1k-buildroot-linux-gnu/bin/ld: iscsid.p/usr_auth.c.o: in function `auth_hash_init':
auth.c:(.text+0x7bc): undefined reference to `EVP_sha3_256'

Fixes:
 - http://autobuild.buildroot.org/results/48a4bddc355956733d712214797350cca8e111d9

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2023-02-15 22:38:54 +01:00

145 lines
4.4 KiB
Diff

From 29a4c3a518d13bfc0a07915e7e87fbec2b66597c Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Mon, 13 Feb 2023 08:55:11 +0100
Subject: [PATCH] SHA3 is not supported by libressl
Disable SHA3 with libressl as it is not supported resulting in the
following build failure:
/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/or1k-buildroot-linux-gnu/11.3.0/../../../../or1k-buildroot-linux-gnu/bin/ld: iscsid.p/usr_auth.c.o: in function `auth_hash_init':
auth.c:(.text+0x7bc): undefined reference to `EVP_sha3_256'
Fixes:
- http://autobuild.buildroot.org/results/48a4bddc355956733d712214797350cca8e111d9
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Upstream status: https://github.com/open-iscsi/open-iscsi/pull/396]
---
libopeniscsiusr/idbm.h | 2 ++
usr/auth.c | 13 ++++++++++++-
usr/auth.h | 4 ++++
usr/idbm.c | 2 ++
4 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/libopeniscsiusr/idbm.h b/libopeniscsiusr/idbm.h
index be5986f..1043b27 100644
--- a/libopeniscsiusr/idbm.h
+++ b/libopeniscsiusr/idbm.h
@@ -56,7 +56,9 @@ enum iscsi_chap_algs {
ISCSI_AUTH_CHAP_ALG_MD5 = 5,
ISCSI_AUTH_CHAP_ALG_SHA1 = 6,
ISCSI_AUTH_CHAP_ALG_SHA256 = 7,
+#ifndef LIBRESSL_VERSION_NUMBER
ISCSI_AUTH_CHAP_ALG_SHA3_256 = 8,
+#endif
AUTH_CHAP_ALG_MAX_COUNT = 5,
};
diff --git a/usr/auth.c b/usr/auth.c
index 46c328e..5f50e26 100644
--- a/usr/auth.c
+++ b/usr/auth.c
@@ -181,9 +181,11 @@ static int auth_hash_init(EVP_MD_CTX **context, int chap_alg) {
case AUTH_CHAP_ALG_SHA256:
digest = EVP_sha256();
break;
+#ifndef LIBRESSL_VERSION_NUMBER
case AUTH_CHAP_ALG_SHA3_256:
digest = EVP_sha3_256();
break;
+#endif
}
if (*context == NULL)
@@ -298,7 +300,9 @@ static int
acl_chk_chap_alg_optn(int chap_algorithm)
{
if (chap_algorithm == AUTH_OPTION_NONE ||
+#ifndef LIBRESSL_VERSION_NUMBER
chap_algorithm == AUTH_CHAP_ALG_SHA3_256 ||
+#endif
chap_algorithm == AUTH_CHAP_ALG_SHA256 ||
chap_algorithm == AUTH_CHAP_ALG_SHA1 ||
chap_algorithm == AUTH_CHAP_ALG_MD5)
@@ -711,9 +715,11 @@ acl_chk_chap_alg_key(struct iscsi_acl *client)
case AUTH_CHAP_ALG_SHA256:
client->chap_challenge_len = AUTH_CHAP_SHA256_RSP_LEN;
break;
+#ifndef LIBRESSL_VERSION_NUMBER
case AUTH_CHAP_ALG_SHA3_256:
client->chap_challenge_len = AUTH_CHAP_SHA3_256_RSP_LEN;
break;
+#endif
}
return;
}
@@ -862,7 +868,10 @@ acl_local_auth(struct iscsi_acl *client)
client->local_state = AUTH_LOCAL_STATE_ERROR;
client->dbg_status = AUTH_DBG_STATUS_CHAP_ALG_REJECT;
break;
- } else if ((client->negotiated_chap_alg != AUTH_CHAP_ALG_SHA3_256) &&
+ } else if (
+#ifndef LIBRESSL_VERSION_NUMBER
+ (client->negotiated_chap_alg != AUTH_CHAP_ALG_SHA3_256) &&
+#endif
(client->negotiated_chap_alg != AUTH_CHAP_ALG_SHA256) &&
(client->negotiated_chap_alg != AUTH_CHAP_ALG_SHA1) &&
(client->negotiated_chap_alg != AUTH_CHAP_ALG_MD5)) {
@@ -1824,6 +1833,7 @@ acl_init_chap_digests(int *value_list, unsigned *chap_algs, int conf_count) {
"SHA256 due to crypto lib configuration");
}
break;
+#ifndef LIBRESSL_VERSION_NUMBER
case AUTH_CHAP_ALG_SHA3_256:
if (EVP_DigestInit_ex(context, EVP_sha3_256(), NULL)) {
value_list[i++] = AUTH_CHAP_ALG_SHA3_256;
@@ -1832,6 +1842,7 @@ acl_init_chap_digests(int *value_list, unsigned *chap_algs, int conf_count) {
"SHA3-256 due to crypto lib configuration");
}
break;
+#endif
case ~0:
/* unset value in array, just ignore */
break;
diff --git a/usr/auth.h b/usr/auth.h
index 16cdb24..9357772 100644
--- a/usr/auth.h
+++ b/usr/auth.h
@@ -32,7 +32,9 @@ enum {
AUTH_CHAP_MD5_RSP_LEN = 16,
AUTH_CHAP_SHA1_RSP_LEN = 20,
AUTH_CHAP_SHA256_RSP_LEN = 32,
+#ifndef LIBRESSL_VERSION_NUMBER
AUTH_CHAP_SHA3_256_RSP_LEN = 32,
+#endif
AUTH_CHAP_RSP_MAX = 32,
};
@@ -67,7 +69,9 @@ enum {
AUTH_CHAP_ALG_MD5 = 5,
AUTH_CHAP_ALG_SHA1 = 6,
AUTH_CHAP_ALG_SHA256 = 7,
+#ifndef LIBRESSL_VERSION_NUMBER
AUTH_CHAP_ALG_SHA3_256 = 8,
+#endif
AUTH_CHAP_ALG_MAX_COUNT = 5
};
diff --git a/usr/idbm.c b/usr/idbm.c
index 90bc142..082e1c6 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -200,7 +200,9 @@ static struct int_list_tbl {
{ "MD5", AUTH_CHAP_ALG_MD5 },
{ "SHA1", AUTH_CHAP_ALG_SHA1 },
{ "SHA256", AUTH_CHAP_ALG_SHA256 },
+#ifndef LIBRESSL_VERSION_NUMBER
{ "SHA3-256", AUTH_CHAP_ALG_SHA3_256 },
+#endif
};
static void
--
2.39.0