From 339fe2c92296849ff5c02a9441346400e7acfaba Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 13 Aug 2022 18:40:03 -0700 Subject: [PATCH] Add sha1 to daemon auth hashes & tweak conditionals. --- sha1.diff | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/sha1.diff b/sha1.diff index 6982d6c..78e2891 100644 --- a/sha1.diff +++ b/sha1.diff @@ -1,4 +1,5 @@ This patch adds sha1 to the checksum code when the openssl library is available. +It also enables SHA1 checksum hashing in the daemon auth code. To use this patch, run these commands for a successful build: @@ -16,21 +17,33 @@ diff --git a/checksum.c b/checksum.c { CSUM_XXH64, "xxh64", NULL }, { CSUM_XXH64, "xxhash", NULL }, +#endif -+#ifdef USE_OPENSSL ++#ifdef SHA_DIGEST_LENGTH + { CSUM_SHA1, "sha1", NULL }, #endif { CSUM_MD5, "md5", NULL }, { CSUM_MD4, "md4", NULL }, -@@ -143,6 +146,8 @@ int csum_len_for_type(int cst, BOOL flist_csum) +@@ -61,6 +64,9 @@ struct name_num_obj valid_checksums = { + + struct name_num_obj valid_auth_checksums = { + "daemon auth checksum", NULL, NULL, 0, 0, { ++#ifdef SHA_DIGEST_LENGTH ++ { CSUM_SHA1, "sha1", NULL }, ++#endif + { CSUM_MD5, "md5", NULL }, + { CSUM_MD4, "md4", NULL }, + { 0, NULL, NULL } +@@ -155,6 +161,10 @@ int csum_len_for_type(int cst, BOOL flist_csum) return MD4_DIGEST_LEN; case CSUM_MD5: return MD5_DIGEST_LEN; ++#ifdef SHA_DIGEST_LENGTH + case CSUM_SHA1: + return SHA_DIGEST_LENGTH; ++#endif case CSUM_XXH64: case CSUM_XXH3_64: return 64/8; -@@ -168,6 +173,7 @@ int canonical_checksum(int csum_type) +@@ -180,6 +190,7 @@ int canonical_checksum(int csum_type) break; case CSUM_MD4: case CSUM_MD5: @@ -38,12 +51,12 @@ diff --git a/checksum.c b/checksum.c return -1; case CSUM_XXH64: case CSUM_XXH3_64: -@@ -220,6 +226,18 @@ void get_checksum2(char *buf, int32 len, char *sum) +@@ -232,6 +243,18 @@ void get_checksum2(char *buf, int32 len, char *sum) SIVAL64(sum, 8, digest.high64); break; } +#endif -+#ifdef USE_OPENSSL ++#ifdef SHA_DIGEST_LENGTH + case CSUM_SHA1: { + SHA_CTX sha; + uchar seedbuf[4]; @@ -57,12 +70,12 @@ diff --git a/checksum.c b/checksum.c #endif case CSUM_MD5: { md5_context m5; -@@ -372,6 +390,23 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum) +@@ -384,6 +407,23 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum) SIVAL64(sum, 8, digest.high64); break; } +#endif -+#ifdef USE_OPENSSL ++#ifdef SHA_DIGEST_LENGTH + case CSUM_SHA1: { + SHA_CTX sha; + @@ -81,44 +94,46 @@ diff --git a/checksum.c b/checksum.c #endif case CSUM_MD5: { md5_context m5; -@@ -442,6 +477,7 @@ static union { +@@ -454,6 +494,9 @@ static union { md_context md; #ifdef USE_OPENSSL MD4_CTX m4; ++#endif ++#ifdef SHA_DIGEST_LENGTH + SHA_CTX sha; #endif md5_context m5; } ctx; -@@ -480,6 +516,11 @@ void sum_init(int csum_type, int seed) +@@ -494,6 +537,11 @@ int sum_init(int csum_type, int seed) out_of_memory("sum_init"); XXH3_128bits_reset(xxh3_state); break; +#endif -+#ifdef USE_OPENSSL ++#ifdef SHA_DIGEST_LENGTH + case CSUM_SHA1: + SHA1_Init(&ctx.sha); + break; #endif case CSUM_MD5: md5_begin(&ctx.m5); -@@ -530,6 +571,11 @@ void sum_update(const char *p, int32 len) +@@ -546,6 +594,11 @@ void sum_update(const char *p, int32 len) case CSUM_XXH3_128: XXH3_128bits_update(xxh3_state, p, len); break; +#endif -+#ifdef USE_OPENSSL ++#ifdef SHA_DIGEST_LENGTH + case CSUM_SHA1: + SHA1_Update(&ctx.sha, (uchar *)p, len); + break; #endif case CSUM_MD5: md5_update(&ctx.m5, (uchar *)p, len); -@@ -595,6 +641,11 @@ int sum_end(char *sum) +@@ -611,6 +664,11 @@ void sum_end(char *sum) SIVAL64(sum, 8, digest.high64); break; } +#endif -+#ifdef USE_OPENSSL ++#ifdef SHA_DIGEST_LENGTH + case CSUM_SHA1: + SHA1_Final((uchar *)sum, &ctx.sha); + break; @@ -132,7 +147,7 @@ diff --git a/lib/md-defines.h b/lib/md-defines.h #define MD4_DIGEST_LEN 16 #define MD5_DIGEST_LEN 16 -+#ifdef USE_OPENSSL ++#ifdef SHA_DIGEST_LENGTH +#define MAX_DIGEST_LEN SHA_DIGEST_LENGTH +#else #define MAX_DIGEST_LEN MD5_DIGEST_LEN -- 2.34.1