Author: kotkov
Date: Wed Mar 22 15:10:28 2023
New Revision: 1908638

URL: http://svn.apache.org/viewvc?rev=1908638&view=rev
Log:
On the 'pristine-checksum-salt' branch: Revert r1906820 that introduced
a new statically salted checksum type, `svn_checksum_sha1_salted`.

I'll try to implement and use a checksum with a dynamically added salt,
which requires going in a slightly different direction than adding a new
svn_checksum_kind_t type.

Modified:
    subversion/branches/pristine-checksum-salt/subversion/include/svn_checksum.h
    subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/checksum.c
    
subversion/branches/pristine-checksum-salt/subversion/tests/libsvn_subr/checksum-test.c

Modified: 
subversion/branches/pristine-checksum-salt/subversion/include/svn_checksum.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/include/svn_checksum.h?rev=1908638&r1=1908637&r2=1908638&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/include/svn_checksum.h 
(original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/include/svn_checksum.h 
Wed Mar 22 15:10:28 2023
@@ -58,11 +58,7 @@ typedef enum svn_checksum_kind_t
   /** The checksum is (or should be set to) a modified FNV-1a 32 bit,
    * in big endian byte order.
    * @since New in 1.9. */
-  svn_checksum_fnv1a_32x4,
-
-  /** The checksum is (or should be set to) a salted SHA1 checksum.
-   * @since New in 1.15. */
-  svn_checksum_sha1_salted
+  svn_checksum_fnv1a_32x4
 } svn_checksum_kind_t;
 
 /**

Modified: 
subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/checksum.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/checksum.c?rev=1908638&r1=1908637&r2=1908638&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/checksum.c 
(original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/checksum.c 
Wed Mar 22 15:10:28 2023
@@ -64,19 +64,12 @@ static const unsigned char fnv1a_32x4_em
   0xcd, 0x6d, 0x9a, 0x85
 };
 
-/* The salted-SHA1 digest for the empty string. */
-static const unsigned char sha1_salted_empty_string_digest_array[] = {
-  0x1f, 0x5d, 0xae, 0x8c, 0x03, 0xf9, 0x6f, 0x6c, 0xc4, 0xd1,
-  0x5c, 0xcc, 0x52, 0x7d, 0xf2, 0xf9, 0x14, 0xa4, 0x33, 0xbb
-};
-
 /* Digests for an empty string, indexed by checksum type */
 static const unsigned char * empty_string_digests[] = {
   md5_empty_string_digest_array,
   sha1_empty_string_digest_array,
   fnv1a_32_empty_string_digest_array,
-  fnv1a_32x4_empty_string_digest_array,
-  sha1_salted_empty_string_digest_array
+  fnv1a_32x4_empty_string_digest_array
 };
 
 /* Digest sizes in bytes, indexed by checksum type */
@@ -84,8 +77,7 @@ static const apr_size_t digest_sizes[] =
   APR_MD5_DIGESTSIZE,
   APR_SHA1_DIGESTSIZE,
   sizeof(apr_uint32_t),
-  sizeof(apr_uint32_t),
-  APR_SHA1_DIGESTSIZE
+  sizeof(apr_uint32_t)
 };
 
 /* Checksum type prefixes used in serialized checksums. */
@@ -94,25 +86,16 @@ static const char *ckind_str[] = {
   "$sha1$",
   "$fnv1$",
   "$fnvm$",
-  "$ssh1$",
   /* ### svn_checksum_deserialize() assumes all these have the same strlen() */
 };
 
 /* Returns the digest size of it's argument. */
 #define DIGESTSIZE(k) \
-  (((k) < svn_checksum_md5 || (k) > svn_checksum_sha1_salted) ? 0 : 
digest_sizes[k])
+  (((k) < svn_checksum_md5 || (k) > svn_checksum_fnv1a_32x4) ? 0 : 
digest_sizes[k])
 
 /* Largest supported digest size */
 #define MAX_DIGESTSIZE (MAX(APR_MD5_DIGESTSIZE,APR_SHA1_DIGESTSIZE))
 
-/* The salt we use for salted-SHA1 checksum. */
-static const unsigned char sha1_salt[] = {
-  0x2e, 0x95, 0x1d, 0xb1, 0xd7, 0x11, 0xa0, 0x77,
-  0xe7, 0x22, 0xbc, 0x1d, 0xc0, 0x93, 0x1f, 0x63,
-  0x24, 0xee, 0x28, 0x3b, 0x6d, 0x3f, 0x08, 0x33,
-  0x57, 0x50, 0xfb, 0x80, 0xd3, 0xa2, 0x03, 0xf4
-};
-
 const unsigned char *
 svn__empty_string_digest(svn_checksum_kind_t kind)
 {
@@ -170,7 +153,7 @@ svn__digests_match(const unsigned char d
 static svn_error_t *
 validate_kind(svn_checksum_kind_t kind)
 {
-  if (kind >= svn_checksum_md5 && kind <= svn_checksum_sha1_salted)
+  if (kind >= svn_checksum_md5 && kind <= svn_checksum_fnv1a_32x4)
     return SVN_NO_ERROR;
   else
     return svn_error_create(SVN_ERR_BAD_CHECKSUM_KIND, NULL, NULL);
@@ -219,7 +202,6 @@ svn_checksum_create(svn_checksum_kind_t
       case svn_checksum_sha1:
       case svn_checksum_fnv1a_32:
       case svn_checksum_fnv1a_32x4:
-      case svn_checksum_sha1_salted:
         digest_size = digest_sizes[kind];
         break;
 
@@ -285,7 +267,6 @@ svn_checksum_match(const svn_checksum_t
       case svn_checksum_sha1:
       case svn_checksum_fnv1a_32:
       case svn_checksum_fnv1a_32x4:
-      case svn_checksum_sha1_salted:
         return svn__digests_match(checksum1->digest,
                                   checksum2->digest,
                                   digest_sizes[checksum1->kind]);
@@ -306,7 +287,6 @@ svn_checksum_to_cstring_display(const sv
       case svn_checksum_sha1:
       case svn_checksum_fnv1a_32:
       case svn_checksum_fnv1a_32x4:
-      case svn_checksum_sha1_salted:
         return svn__digest_to_cstring_display(checksum->digest,
                                               digest_sizes[checksum->kind],
                                               pool);
@@ -330,7 +310,6 @@ svn_checksum_to_cstring(const svn_checks
       case svn_checksum_sha1:
       case svn_checksum_fnv1a_32:
       case svn_checksum_fnv1a_32x4:
-      case svn_checksum_sha1_salted:
         return svn__digest_to_cstring(checksum->digest,
                                       digest_sizes[checksum->kind],
                                       pool);
@@ -348,7 +327,7 @@ svn_checksum_serialize(const svn_checksu
                        apr_pool_t *scratch_pool)
 {
   SVN_ERR_ASSERT_NO_RETURN(checksum->kind >= svn_checksum_md5
-                           || checksum->kind <= svn_checksum_sha1_salted);
+                           || checksum->kind <= svn_checksum_fnv1a_32x4);
   return apr_pstrcat(result_pool,
                      ckind_str[checksum->kind],
                      svn_checksum_to_cstring(checksum, scratch_pool),
@@ -374,7 +353,7 @@ svn_checksum_deserialize(const svn_check
                              _("Invalid prefix in checksum '%s'"),
                              data);
 
-  for (kind = svn_checksum_md5; kind <= svn_checksum_sha1_salted; ++kind)
+  for (kind = svn_checksum_md5; kind <= svn_checksum_fnv1a_32x4; ++kind)
     if (strncmp(ckind_str[kind], data, prefix_len) == 0)
       {
         SVN_ERR(svn_checksum_parse_hex(&parsed_checksum, kind,
@@ -481,7 +460,6 @@ svn_checksum_dup(const svn_checksum_t *c
       case svn_checksum_sha1:
       case svn_checksum_fnv1a_32:
       case svn_checksum_fnv1a_32x4:
-      case svn_checksum_sha1_salted:
         return checksum_create(checksum->kind, checksum->digest, pool);
 
       default:
@@ -524,13 +502,6 @@ svn_checksum(svn_checksum_t **checksum,
           = htonl(svn__fnv1a_32x4(data, len));
         break;
 
-      case svn_checksum_sha1_salted:
-        apr_sha1_init(&sha1_ctx);
-        apr_sha1_update(&sha1_ctx, (const char *)sha1_salt, sizeof(sha1_salt));
-        apr_sha1_update(&sha1_ctx, data, (unsigned int)len);
-        apr_sha1_final((unsigned char *)(*checksum)->digest, &sha1_ctx);
-        break;
-
       default:
         /* We really shouldn't get here, but if we do... */
         return svn_error_create(SVN_ERR_BAD_CHECKSUM_KIND, NULL, NULL);
@@ -550,7 +521,6 @@ svn_checksum_empty_checksum(svn_checksum
       case svn_checksum_sha1:
       case svn_checksum_fnv1a_32:
       case svn_checksum_fnv1a_32x4:
-      case svn_checksum_sha1_salted:
         return checksum_create(kind, empty_string_digests[kind], pool);
 
       default:
@@ -592,12 +562,6 @@ svn_checksum_ctx_create(svn_checksum_kin
         ctx->apr_ctx = svn_fnv1a_32x4__context_create(pool);
         break;
 
-      case svn_checksum_sha1_salted:
-        ctx->apr_ctx = apr_palloc(pool, sizeof(apr_sha1_ctx_t));
-        apr_sha1_init(ctx->apr_ctx);
-        apr_sha1_update(ctx->apr_ctx, (const char *)sha1_salt, 
sizeof(sha1_salt));
-        break;
-
       default:
         SVN_ERR_MALFUNCTION_NO_RETURN();
     }
@@ -628,12 +592,6 @@ svn_checksum_ctx_reset(svn_checksum_ctx_
         svn_fnv1a_32x4__context_reset(ctx->apr_ctx);
         break;
 
-      case svn_checksum_sha1_salted:
-        memset(ctx->apr_ctx, 0, sizeof(apr_sha1_ctx_t));
-        apr_sha1_init(ctx->apr_ctx);
-        apr_sha1_update(ctx->apr_ctx, (const char *)sha1_salt, 
sizeof(sha1_salt));
-        break;
-
       default:
         SVN_ERR_MALFUNCTION();
     }
@@ -664,10 +622,6 @@ svn_checksum_update(svn_checksum_ctx_t *
         svn_fnv1a_32x4__update(ctx->apr_ctx, data, len);
         break;
 
-      case svn_checksum_sha1_salted:
-        apr_sha1_update(ctx->apr_ctx, data, (unsigned int)len);
-        break;
-
       default:
         /* We really shouldn't get here, but if we do... */
         return svn_error_create(SVN_ERR_BAD_CHECKSUM_KIND, NULL, NULL);
@@ -703,10 +657,6 @@ svn_checksum_final(svn_checksum_t **chec
           = htonl(svn_fnv1a_32x4__finalize(ctx->apr_ctx));
         break;
 
-      case svn_checksum_sha1_salted:
-        apr_sha1_final((unsigned char *)(*checksum)->digest, ctx->apr_ctx);
-        break;
-
       default:
         /* We really shouldn't get here, but if we do... */
         return svn_error_create(SVN_ERR_BAD_CHECKSUM_KIND, NULL, NULL);
@@ -758,7 +708,6 @@ svn_checksum_is_empty_checksum(svn_check
       case svn_checksum_sha1:
       case svn_checksum_fnv1a_32:
       case svn_checksum_fnv1a_32x4:
-      case svn_checksum_sha1_salted:
         return svn__digests_match(checksum->digest,
                                   svn__empty_string_digest(checksum->kind),
                                   digest_sizes[checksum->kind]);

Modified: 
subversion/branches/pristine-checksum-salt/subversion/tests/libsvn_subr/checksum-test.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/tests/libsvn_subr/checksum-test.c?rev=1908638&r1=1908637&r2=1908638&view=diff
==============================================================================
--- 
subversion/branches/pristine-checksum-salt/subversion/tests/libsvn_subr/checksum-test.c
 (original)
+++ 
subversion/branches/pristine-checksum-salt/subversion/tests/libsvn_subr/checksum-test.c
 Wed Mar 22 15:10:28 2023
@@ -68,8 +68,6 @@ test_checksum_parse(apr_pool_t *pool)
   SVN_ERR(checksum_parse_kind("cafeaffe",
                               svn_checksum_fnv1a_32x4,
                               "modified fnv-1a", pool));
-  SVN_ERR(checksum_parse_kind("c4fb4f348b4b13bb28bf03c2f6f2352f049d66d2",
-                              svn_checksum_sha1_salted, "sha1-salted", pool));
 
   return SVN_NO_ERROR;
 }
@@ -78,7 +76,7 @@ static svn_error_t *
 test_checksum_empty(apr_pool_t *pool)
 {
   svn_checksum_kind_t kind;
-  for (kind = svn_checksum_md5; kind <= svn_checksum_sha1_salted; ++kind)
+  for (kind = svn_checksum_md5; kind <= svn_checksum_fnv1a_32x4; ++kind)
     {
       svn_checksum_t *checksum;
       char data = '\0';
@@ -121,7 +119,7 @@ static svn_error_t *
 zero_match(apr_pool_t *pool)
 {
   svn_checksum_kind_t kind;
-  for (kind = svn_checksum_md5; kind <= svn_checksum_sha1_salted; ++kind)
+  for (kind = svn_checksum_md5; kind <= svn_checksum_fnv1a_32x4; ++kind)
     SVN_ERR(zero_match_kind(kind, pool));
 
   return SVN_NO_ERROR;
@@ -134,7 +132,7 @@ zero_cross_match(apr_pool_t *pool)
   svn_checksum_kind_t k_kind;
 
   for (i_kind = svn_checksum_md5;
-       i_kind <= svn_checksum_sha1_salted;
+       i_kind <= svn_checksum_fnv1a_32x4;
        ++i_kind)
     {
       svn_checksum_t *i_zero;
@@ -145,7 +143,7 @@ zero_cross_match(apr_pool_t *pool)
       SVN_ERR(svn_checksum(&i_A, i_kind, "A", 1, pool));
 
       for (k_kind = svn_checksum_md5;
-           k_kind <= svn_checksum_sha1_salted;
+           k_kind <= svn_checksum_fnv1a_32x4;
            ++k_kind)
         {
           svn_checksum_t *k_zero;
@@ -260,7 +258,7 @@ static svn_error_t *
 test_serialization(apr_pool_t *pool)
 {
   svn_checksum_kind_t kind;
-  for (kind = svn_checksum_md5; kind <= svn_checksum_sha1_salted; ++kind)
+  for (kind = svn_checksum_md5; kind <= svn_checksum_fnv1a_32x4; ++kind)
     {
       const svn_checksum_t *parsed_checksum;
       svn_checksum_t *checksum = svn_checksum_empty_checksum(kind, pool);
@@ -280,7 +278,7 @@ static svn_error_t *
 test_checksum_parse_all_zero(apr_pool_t *pool)
 {
   svn_checksum_kind_t kind;
-  for (kind = svn_checksum_md5; kind <= svn_checksum_sha1_salted; ++kind)
+  for (kind = svn_checksum_md5; kind <= svn_checksum_fnv1a_32x4; ++kind)
     {
       svn_checksum_t *checksum;
       const char *hex;
@@ -304,7 +302,7 @@ test_checksummed_stream_read(apr_pool_t
   const svn_string_t *str = svn_string_create("abcde", pool);
   svn_checksum_kind_t kind;
 
-  for (kind = svn_checksum_md5; kind <= svn_checksum_sha1_salted; ++kind)
+  for (kind = svn_checksum_md5; kind <= svn_checksum_fnv1a_32x4; ++kind)
     {
       svn_stream_t *stream;
       svn_checksum_t *expected_checksum;
@@ -335,7 +333,7 @@ test_checksummed_stream_reset(apr_pool_t
   const svn_string_t *str = svn_string_create("abcde", pool);
   svn_checksum_kind_t kind;
 
-  for (kind = svn_checksum_md5; kind <= svn_checksum_sha1_salted; ++kind)
+  for (kind = svn_checksum_md5; kind <= svn_checksum_fnv1a_32x4; ++kind)
     {
       svn_stream_t *stream;
       svn_checksum_t *expected_checksum;


Reply via email to