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:
{ 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:
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];
#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;
+
#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;
#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