Author: kotkov Date: Wed Mar 22 15:17:31 2023 New Revision: 1908639 URL: http://svn.apache.org/viewvc?rev=1908639&view=rev Log: On the 'pristine-checksum-salt' branch: Lay some groundwork for using a dynamically salted checksum in a working copy by allowing to create a checksum context with a specified salt value.
* subversion/include/svn_checksum.h (): Include svn_string.h (svn_checksum_ctx_create2): New function, accepting a new `salt` argument. Revved from … (svn_checksum_ctx_create): …this function. (svn_checksum_ctx_reset): Update docstring. * subversion/libsvn_subr/checksum.c (struct svn_checksum_ctx_t): Add new `salt` field. (svn_checksum_ctx_create2): New. (svn_checksum_ctx_reset): Update implementation. (wrap_write_stream): Call the new function. (svn_checksum_ctx_create): Implement with a call to the new function. Move … * subversion/libsvn_subr/deprecated.c (svn_checksum_ctx_create): …here. * subversion/libsvn_subr/stream.c, subversion/libsvn_delta/text_delta.c, subversion/libsvn_fs_base/reps-strings.c, subversion/libsvn_fs_fs/cached_data.c, subversion/libsvn_fs_fs/index.c, subversion/libsvn_fs_fs/transaction.c, subversion/libsvn_fs_fs/verify.c, subversion/libsvn_fs_x/cached_data.c, subversion/libsvn_fs_x/index.c, subversion/libsvn_fs_x/transaction.c, subversion/libsvn_fs_x/verify.c, subversion/libsvn_ra_svn/client.c: Update all calls to the now deprecated svn_checksum_ctx_create(): call svn_checksum_ctx_create2() with a NULL salt. Modified: subversion/branches/pristine-checksum-salt/subversion/include/svn_checksum.h subversion/branches/pristine-checksum-salt/subversion/libsvn_delta/text_delta.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_base/reps-strings.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/cached_data.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/index.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/transaction.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/verify.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/cached_data.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/index.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/transaction.c subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/verify.c subversion/branches/pristine-checksum-salt/subversion/libsvn_ra_svn/client.c subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/checksum.c subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/deprecated.c subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/stream.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=1908639&r1=1908638&r2=1908639&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:17:31 2023 @@ -31,6 +31,7 @@ #include <apr_pools.h> /* for apr_pool_t */ #include "svn_types.h" /* for svn_boolean_t, svn_error_t */ +#include "svn_string.h" /* for svn_string_t */ #ifdef __cplusplus extern "C" { @@ -214,17 +215,33 @@ svn_checksum_empty_checksum(svn_checksum /** * Create a new @c svn_checksum_ctx_t structure, allocated from @a pool for - * calculating checksums of type @a kind. @see svn_checksum_final() + * calculating checksums of type @a kind. If @a salt is non-NULL, its content + * will be prepended to the checksummed data. @a salt doesn't need to have a + * specific lifetime, because it will be copied by the function internally. + * + * @see svn_checksum_final() + * + * @since New in 1.15. + */ +svn_checksum_ctx_t * +svn_checksum_ctx_create2(svn_checksum_kind_t kind, + const svn_string_t *salt, + apr_pool_t *pool); + +/** + * Similar to svn_checksum_ctx_create2(), but with @a salt set to @c NULL. * * @since New in 1.6. + * @deprecated Provided for backward compatibility with the 1.6 API. */ +SVN_DEPRECATED svn_checksum_ctx_t * svn_checksum_ctx_create(svn_checksum_kind_t kind, apr_pool_t *pool); /** * Reset an existing checksum @a ctx to initial state. - * @see svn_checksum_ctx_create() + * @see svn_checksum_ctx_create2() * * @since New in 1.10. */ Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_delta/text_delta.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_delta/text_delta.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_delta/text_delta.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_delta/text_delta.c Wed Mar 22 15:17:31 2023 @@ -439,7 +439,7 @@ svn_txdelta_run(svn_stream_t *source, tb.result_pool = result_pool; if (checksum != NULL) - tb.context = svn_checksum_ctx_create(checksum_kind, scratch_pool); + tb.context = svn_checksum_ctx_create2(checksum_kind, NULL, scratch_pool); do { @@ -481,7 +481,7 @@ svn_txdelta2(svn_txdelta_stream_t **stre b->more = TRUE; b->buf = apr_palloc(pool, 2 * SVN_DELTA_WINDOW_SIZE); b->context = calculate_checksum - ? svn_checksum_ctx_create(svn_checksum_md5, pool) + ? svn_checksum_ctx_create2(svn_checksum_md5, NULL, pool) : NULL; b->result_pool = pool; @@ -829,7 +829,7 @@ svn_txdelta_apply2(svn_stream_t *source, ab->result_digest = result_digest; if (result_digest) - ab->md5_context = svn_checksum_ctx_create(svn_checksum_md5, subpool); + ab->md5_context = svn_checksum_ctx_create2(svn_checksum_md5, NULL, subpool); if (error_info) ab->error_info = apr_pstrdup(subpool, error_info); @@ -902,7 +902,7 @@ svn_error_t *svn_txdelta_send_stream(svn svn_checksum_ctx_t *md5_checksum_ctx; if (digest) - md5_checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, pool); + md5_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, pool); while (1) { Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_base/reps-strings.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_base/reps-strings.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_base/reps-strings.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_base/reps-strings.c Wed Mar 22 15:17:31 2023 @@ -692,8 +692,8 @@ rep_read_get_baton(struct rep_read_baton struct rep_read_baton *b; b = apr_pcalloc(pool, sizeof(*b)); - b->md5_checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, pool); - b->sha1_checksum_ctx = svn_checksum_ctx_create(svn_checksum_sha1, pool); + b->md5_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, pool); + b->sha1_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_sha1, NULL, pool); if (rep_key) SVN_ERR(svn_fs_base__rep_contents_size(&(b->size), fs, rep_key, @@ -1028,8 +1028,8 @@ rep_write_get_baton(svn_fs_t *fs, struct rep_write_baton *b; b = apr_pcalloc(pool, sizeof(*b)); - b->md5_checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, pool); - b->sha1_checksum_ctx = svn_checksum_ctx_create(svn_checksum_sha1, pool); + b->md5_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, pool); + b->sha1_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_sha1, NULL, pool); b->fs = fs; b->trail = trail; b->pool = pool; Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/cached_data.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/cached_data.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/cached_data.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/cached_data.c Wed Mar 22 15:17:31 2023 @@ -1523,7 +1523,7 @@ rep_read_get_baton(struct rep_read_baton b->base_window = NULL; b->chunk_index = 0; b->buf = NULL; - b->md5_checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, pool); + b->md5_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, pool); b->checksum_finalized = FALSE; memcpy(b->md5_digest, rep->md5_digest, sizeof(rep->md5_digest)); b->len = rep->expanded_size; Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/index.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/index.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/index.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/index.c Wed Mar 22 15:17:31 2023 @@ -3101,7 +3101,7 @@ calc_fnv1(svn_fs_fs__p2l_entry_t *entry, unsigned char buffer[4096]; svn_checksum_t *checksum; svn_checksum_ctx_t *context - = svn_checksum_ctx_create(svn_checksum_fnv1a_32x4, scratch_pool); + = svn_checksum_ctx_create2(svn_checksum_fnv1a_32x4, NULL, scratch_pool); apr_off_t size = entry->size; /* Special rules apply to unused sections / items. The data must be a Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/transaction.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/transaction.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/transaction.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/transaction.c Wed Mar 22 15:17:31 2023 @@ -1876,7 +1876,7 @@ fnv1a_wrap_stream(svn_checksum_ctx_t **c fnv1a_stream_baton_t *baton = apr_pcalloc(pool, sizeof(*baton)); baton->inner_stream = inner_stream; - baton->context = svn_checksum_ctx_create(svn_checksum_fnv1a_32x4, pool); + baton->context = svn_checksum_ctx_create2(svn_checksum_fnv1a_32x4, NULL, pool); *context = baton->context; outer_stream = svn_stream_create(baton, pool); @@ -2208,8 +2208,8 @@ rep_write_get_baton(struct rep_write_bat b = apr_pcalloc(pool, sizeof(*b)); - b->sha1_checksum_ctx = svn_checksum_ctx_create(svn_checksum_sha1, pool); - b->md5_checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, pool); + b->sha1_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_sha1, NULL, pool); + b->md5_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, pool); b->fs = fs; b->result_pool = pool; @@ -2809,9 +2809,9 @@ write_container_rep(representation_t *re else fnv1a_checksum_ctx = NULL; whb->size = 0; - whb->md5_ctx = svn_checksum_ctx_create(svn_checksum_md5, scratch_pool); + whb->md5_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, scratch_pool); if (item_type != SVN_FS_FS__ITEM_TYPE_DIR_REP) - whb->sha1_ctx = svn_checksum_ctx_create(svn_checksum_sha1, scratch_pool); + whb->sha1_ctx = svn_checksum_ctx_create2(svn_checksum_sha1, NULL, scratch_pool); stream = svn_stream_create(whb, scratch_pool); svn_stream_set_write(stream, write_container_handler); @@ -2953,9 +2953,9 @@ write_container_delta_rep(representation whb->stream = svn_txdelta_target_push(diff_wh, diff_whb, source, scratch_pool); whb->size = 0; - whb->md5_ctx = svn_checksum_ctx_create(svn_checksum_md5, scratch_pool); + whb->md5_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, scratch_pool); if (item_type != SVN_FS_FS__ITEM_TYPE_DIR_REP) - whb->sha1_ctx = svn_checksum_ctx_create(svn_checksum_sha1, scratch_pool); + whb->sha1_ctx = svn_checksum_ctx_create2(svn_checksum_sha1, NULL, scratch_pool); /* serialize the hash */ stream = svn_stream_create(whb, scratch_pool); Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/verify.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/verify.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/verify.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_fs/verify.c Wed Mar 22 15:17:31 2023 @@ -179,7 +179,7 @@ verify_index_checksum(apr_file_t *file, apr_off_t size = end - start; svn_checksum_t *actual; svn_checksum_ctx_t *context - = svn_checksum_ctx_create(svn_checksum_md5, scratch_pool); + = svn_checksum_ctx_create2(svn_checksum_md5, NULL, scratch_pool); /* Calculate the index checksum. */ SVN_ERR(svn_io_file_seek(file, APR_SET, &start, scratch_pool)); @@ -566,7 +566,7 @@ expected_streamed_checksum(apr_file_t *f unsigned char buffer[STREAM_THRESHOLD]; svn_checksum_t *checksum; svn_checksum_ctx_t *context - = svn_checksum_ctx_create(svn_checksum_fnv1a_32x4, pool); + = svn_checksum_ctx_create2(svn_checksum_fnv1a_32x4, NULL, pool); apr_off_t size = entry->size; while (size > 0) Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/cached_data.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/cached_data.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/cached_data.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/cached_data.c Wed Mar 22 15:17:31 2023 @@ -1254,8 +1254,8 @@ rep_read_get_baton(rep_read_baton_t **rb b->base_window = NULL; b->chunk_index = 0; b->buf = NULL; - b->md5_checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, - result_pool); + b->md5_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, + result_pool); b->checksum_finalized = FALSE; memcpy(b->md5_digest, rep->md5_digest, sizeof(rep->md5_digest)); b->len = rep->expanded_size; Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/index.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/index.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/index.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/index.c Wed Mar 22 15:17:31 2023 @@ -3444,7 +3444,7 @@ calc_fnv1(svn_fs_x__p2l_entry_t *entry, unsigned char buffer[4096]; svn_checksum_t *checksum; svn_checksum_ctx_t *context - = svn_checksum_ctx_create(svn_checksum_fnv1a_32x4, scratch_pool); + = svn_checksum_ctx_create2(svn_checksum_fnv1a_32x4, NULL, scratch_pool); apr_off_t size = entry->size; /* Special rules apply to unused sections / items. The data must be a Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/transaction.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/transaction.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/transaction.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/transaction.c Wed Mar 22 15:17:31 2023 @@ -2257,10 +2257,10 @@ rep_write_get_baton(rep_write_baton_t ** b = apr_pcalloc(result_pool, sizeof(*b)); - b->sha1_checksum_ctx = svn_checksum_ctx_create(svn_checksum_sha1, + b->sha1_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_sha1, NULL, + result_pool); + b->md5_checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, result_pool); - b->md5_checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, - result_pool); b->fs = fs; b->result_pool = result_pool; @@ -2929,9 +2929,9 @@ write_container_delta_rep(svn_fs_x__repr whb->stream = svn_txdelta_target_push(diff_wh, diff_whb, source, scratch_pool); whb->size = 0; - whb->md5_ctx = svn_checksum_ctx_create(svn_checksum_md5, scratch_pool); + whb->md5_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, scratch_pool); if (item_type != SVN_FS_X__ITEM_TYPE_DIR_REP) - whb->sha1_ctx = svn_checksum_ctx_create(svn_checksum_sha1, scratch_pool); + whb->sha1_ctx = svn_checksum_ctx_create2(svn_checksum_sha1, NULL, scratch_pool); /* serialize the hash */ stream = svn_stream_create(whb, scratch_pool); Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/verify.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/verify.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/verify.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_fs_x/verify.c Wed Mar 22 15:17:31 2023 @@ -153,7 +153,7 @@ verify_index_checksum(svn_fs_x__revision apr_off_t size = index_info->end - index_info->start; svn_checksum_t *actual; svn_checksum_ctx_t *context - = svn_checksum_ctx_create(svn_checksum_md5, scratch_pool); + = svn_checksum_ctx_create2(svn_checksum_md5, NULL, scratch_pool); /* Calculate the index checksum. */ SVN_ERR(svn_fs_x__rev_file_seek(file, NULL, index_info->start)); @@ -537,7 +537,7 @@ expected_streamed_checksum(svn_fs_x__rev unsigned char buffer[STREAM_THRESHOLD]; svn_checksum_t *checksum; svn_checksum_ctx_t *context - = svn_checksum_ctx_create(svn_checksum_fnv1a_32x4, scratch_pool); + = svn_checksum_ctx_create2(svn_checksum_fnv1a_32x4, NULL, scratch_pool); apr_off_t size = entry->size; while (size > 0) Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_ra_svn/client.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_ra_svn/client.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_ra_svn/client.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_ra_svn/client.c Wed Mar 22 15:17:31 2023 @@ -1471,7 +1471,7 @@ static svn_error_t *get_file(svn_ra_sess { SVN_ERR(svn_checksum_parse_hex(&expected_checksum, svn_checksum_md5, expected_digest, pool)); - checksum_ctx = svn_checksum_ctx_create(svn_checksum_md5, pool); + checksum_ctx = svn_checksum_ctx_create2(svn_checksum_md5, NULL, pool); } /* Read the file's contents. */ 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=1908639&r1=1908638&r2=1908639&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:17:31 2023 @@ -533,33 +533,45 @@ struct svn_checksum_ctx_t { void *apr_ctx; svn_checksum_kind_t kind; + const svn_string_t *salt; }; svn_checksum_ctx_t * -svn_checksum_ctx_create(svn_checksum_kind_t kind, - apr_pool_t *pool) +svn_checksum_ctx_create2(svn_checksum_kind_t kind, + const svn_string_t *salt, + apr_pool_t *pool) { svn_checksum_ctx_t *ctx = apr_palloc(pool, sizeof(*ctx)); ctx->kind = kind; + + if (salt) + ctx->salt = svn_string_dup(salt, pool); + else + ctx->salt = svn_string_create_empty(pool); + switch (kind) { case svn_checksum_md5: ctx->apr_ctx = apr_palloc(pool, sizeof(apr_md5_ctx_t)); apr_md5_init(ctx->apr_ctx); + apr_md5_update(ctx->apr_ctx, ctx->salt->data, ctx->salt->len); break; case svn_checksum_sha1: ctx->apr_ctx = apr_palloc(pool, sizeof(apr_sha1_ctx_t)); apr_sha1_init(ctx->apr_ctx); + apr_sha1_update(ctx->apr_ctx, ctx->salt->data, (unsigned int)ctx->salt->len); break; case svn_checksum_fnv1a_32: ctx->apr_ctx = svn_fnv1a_32__context_create(pool); + svn_fnv1a_32__update(ctx->apr_ctx, ctx->salt->data, ctx->salt->len); break; case svn_checksum_fnv1a_32x4: ctx->apr_ctx = svn_fnv1a_32x4__context_create(pool); + svn_fnv1a_32x4__update(ctx->apr_ctx, ctx->salt->data, ctx->salt->len); break; default: @@ -577,19 +589,23 @@ svn_checksum_ctx_reset(svn_checksum_ctx_ case svn_checksum_md5: memset(ctx->apr_ctx, 0, sizeof(apr_md5_ctx_t)); apr_md5_init(ctx->apr_ctx); + apr_md5_update(ctx->apr_ctx, ctx->salt->data, ctx->salt->len); break; case svn_checksum_sha1: memset(ctx->apr_ctx, 0, sizeof(apr_sha1_ctx_t)); apr_sha1_init(ctx->apr_ctx); + apr_sha1_update(ctx->apr_ctx, ctx->salt->data, (unsigned int)ctx->salt->len); break; case svn_checksum_fnv1a_32: svn_fnv1a_32__context_reset(ctx->apr_ctx); + svn_fnv1a_32__update(ctx->apr_ctx, ctx->salt->data, ctx->salt->len); break; case svn_checksum_fnv1a_32x4: svn_fnv1a_32x4__context_reset(ctx->apr_ctx); + svn_fnv1a_32x4__update(ctx->apr_ctx, ctx->salt->data, ctx->salt->len); break; default: @@ -806,7 +822,7 @@ wrap_write_stream(svn_checksum_t **check stream_baton_t *baton = apr_pcalloc(pool, sizeof(*baton)); baton->inner_stream = inner_stream; - baton->context = svn_checksum_ctx_create(kind, pool); + baton->context = svn_checksum_ctx_create2(kind, NULL, pool); baton->checksum = checksum; baton->digest = digest; baton->pool = pool; Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/deprecated.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/deprecated.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/deprecated.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/deprecated.c Wed Mar 22 15:17:31 2023 @@ -2013,3 +2013,11 @@ svn_cstring_join(const apr_array_header_ { return svn_cstring_join2(strings, separator, TRUE, pool); } + +/*** From checksum.c ***/ +svn_checksum_ctx_t * +svn_checksum_ctx_create(svn_checksum_kind_t kind, + apr_pool_t *pool) +{ + return svn_checksum_ctx_create2(kind, NULL, pool); +} Modified: subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/stream.c URL: http://svn.apache.org/viewvc/subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/stream.c?rev=1908639&r1=1908638&r2=1908639&view=diff ============================================================================== --- subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/stream.c (original) +++ subversion/branches/pristine-checksum-salt/subversion/libsvn_subr/stream.c Wed Mar 22 15:17:31 2023 @@ -1496,12 +1496,12 @@ svn_stream_checksummed2(svn_stream_t *st baton = apr_palloc(pool, sizeof(*baton)); if (read_checksum) - baton->read_ctx = svn_checksum_ctx_create(checksum_kind, pool); + baton->read_ctx = svn_checksum_ctx_create2(checksum_kind, NULL, pool); else baton->read_ctx = NULL; if (write_checksum) - baton->write_ctx = svn_checksum_ctx_create(checksum_kind, pool); + baton->write_ctx = svn_checksum_ctx_create2(checksum_kind, NULL, pool); else baton->write_ctx = NULL; @@ -1530,7 +1530,7 @@ compute_stream_checksum(svn_checksum_t * apr_pool_t *result_pool, apr_pool_t *scratch_pool) { - svn_checksum_ctx_t *ctx = svn_checksum_ctx_create(kind, scratch_pool); + svn_checksum_ctx_t *ctx = svn_checksum_ctx_create2(kind, NULL, scratch_pool); char *buf = apr_palloc(scratch_pool, SVN__STREAM_CHUNK_SIZE); while (1)