145 lines
4.4 KiB
Diff
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
|
|
|