os: fix sha1 build error with Nettle 4.0

Nettle 2.6 (released in 2013) split the sha.h header into sha1.h & sha2.h,
but left the sha.h header for compatibility until the recent Nettle 4.0
release finally removed it.

Nettle 4.0 also dropped the length argument from the sha1_digest function.

Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1871
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2133>
This commit is contained in:
Alan Coopersmith
2026-03-15 14:09:29 +02:00
committed by Enrico Weigelt
parent cb5f2cd67e
commit 3ee086b897
2 changed files with 7 additions and 2 deletions

View File

@@ -437,7 +437,7 @@ foreach t : test_sha1
sha1_dep = libsha1_dep
endif
elif t == 'libnettle'
nettle_dep = dependency('nettle', required: false)
nettle_dep = dependency('nettle', version: '>= 2.6', required: false)
if nettle_dep.found()
sha1_found = true
sha1_dep = nettle_dep

View File

@@ -152,7 +152,8 @@ x_sha1_final(void *ctx, unsigned char result[20])
#elif defined(HAVE_SHA1_IN_LIBNETTLE) /* Use libnettle for SHA1 */
#include <nettle/sha.h>
#include <nettle/sha1.h>
#include <nettle/version.h>
void *
x_sha1_init(void)
@@ -175,7 +176,11 @@ x_sha1_update(void *ctx, void *data, int size)
int
x_sha1_final(void *ctx, unsigned char result[20])
{
#if NETTLE_VERSION_MAJOR < 4
sha1_digest(ctx, 20, result);
#else
sha1_digest(ctx, result);
#endif
free(ctx);
return 1;
}