diff --git a/checksum.c b/checksum.c
--- a/checksum.c
+++ b/checksum.c
-@@ -58,6 +58,15 @@ struct name_num_obj valid_checksums = {
+@@ -57,6 +57,15 @@ struct name_num_item valid_checksums_items[] = {
#endif
- { CSUM_MD5, NNI_BUILTIN|NNI_EVP, "md5", NULL },
- { CSUM_MD4, NNI_BUILTIN|NNI_EVP, "md4", NULL },
+ { CSUM_MD5, NNI_BUILTIN|NNI_EVP, "md5", NULL },
+ { CSUM_MD4, NNI_BUILTIN|NNI_EVP, "md4", NULL },
+#ifdef SHA_DIGEST_LENGTH
-+ { CSUM_SHA1, NNI_EVP, "sha1", NULL },
++ { CSUM_SHA1, NNI_EVP, "sha1", NULL },
+#endif
+#ifdef SHA256_DIGEST_LENGTH
-+ { CSUM_SHA256, NNI_EVP, "sha256", NULL },
++ { CSUM_SHA256, NNI_EVP, "sha256", NULL },
+#endif
+#ifdef SHA512_DIGEST_LENGTH
-+ { CSUM_SHA512, NNI_EVP, "sha512", NULL },
++ { CSUM_SHA512, NNI_EVP, "sha512", NULL },
+#endif
- { CSUM_NONE, 0, "none", NULL },
- { 0, 0, NULL, NULL }
- }
-@@ -65,8 +74,15 @@ struct name_num_obj valid_checksums = {
+ { CSUM_NONE, 0, "none", NULL },
+ { 0, 0, NULL, NULL }
+ };
+@@ -66,6 +75,15 @@ struct name_num_obj valid_checksums = {
+ };
- struct name_num_obj valid_auth_checksums = {
- "daemon auth checksum", NULL, 0, 0, {
-- { CSUM_MD5, NNI_BUILTIN|NNI_EVP, "md5", NULL },
-- { CSUM_MD4, NNI_BUILTIN|NNI_EVP, "md4", NULL },
+ struct name_num_item valid_auth_checksums_items[] = {
+#ifdef SHA512_DIGEST_LENGTH
-+ { CSUM_SHA512, NNI_EVP, "sha512", NULL },
++ { CSUM_SHA512, NNI_EVP, "sha512", NULL },
+#endif
+#ifdef SHA256_DIGEST_LENGTH
-+ { CSUM_SHA256, NNI_EVP, "sha256", NULL },
++ { CSUM_SHA256, NNI_EVP, "sha256", NULL },
+#endif
+#ifdef SHA_DIGEST_LENGTH
-+ { CSUM_SHA1, NNI_EVP, "sha1", NULL },
++ { CSUM_SHA1, NNI_EVP, "sha1", NULL },
+#endif
- { 0, 0, NULL, NULL }
- }
- };
-@@ -207,6 +223,18 @@ int csum_len_for_type(int cst, BOOL flist_csum)
+ { CSUM_MD5, NNI_BUILTIN|NNI_EVP, "md5", NULL },
+ { CSUM_MD4, NNI_BUILTIN|NNI_EVP, "md4", NULL },
+ { 0, 0, NULL, NULL }
+@@ -211,6 +229,18 @@ int csum_len_for_type(int cst, BOOL flist_csum)
return MD4_DIGEST_LEN;
case CSUM_MD5:
return MD5_DIGEST_LEN;
case CSUM_XXH64:
case CSUM_XXH3_64:
return 64/8;
-@@ -232,6 +260,9 @@ int canonical_checksum(int csum_type)
+@@ -236,6 +266,9 @@ int canonical_checksum(int csum_type)
break;
case CSUM_MD4:
case CSUM_MD5:
#include <openssl/evp.h>
#endif
#include "md-defines.h"
-diff --git a/rsync.h b/rsync.h
---- a/rsync.h
-+++ b/rsync.h
-@@ -1168,7 +1168,7 @@ struct name_num_item {
- struct name_num_item *main_nni;
- };
-
--#define NNO_LIST_SIZE 10
-+#define NNO_LIST_SIZE 12
-
- struct name_num_obj {
- const char *type;