Author: rinrab
Date: Sun Dec 28 15:58:07 2025
New Revision: 1930928
Log:
Add internal APIs to compute checksums of an entire blocks of data with a
default that simply wraps APR routines as it was before. Those new functions
are now used to implement MD5 and SHA1 kinds in the svn_checksum() function.
* subversion/libsvn_subr/checksum.c
(svn_checksum): Implement MD5 and SHA1 kinds through svn_checksum__md5() and
svn_checksum__sha1() function instead of calling APR directly.
* subversion/libsvn_subr/checksum.h
(svn_checksum__md5, svn_checksum__sha1): Declare functions.
* subversion/libsvn_subr/checksum_apr.c
(svn_checksum__md5, svn_checksum__sha1): Implement functions.
Modified:
subversion/trunk/subversion/libsvn_subr/checksum.c
subversion/trunk/subversion/libsvn_subr/checksum.h
subversion/trunk/subversion/libsvn_subr/checksum_apr.c
Modified: subversion/trunk/subversion/libsvn_subr/checksum.c
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/checksum.c Sun Dec 28 15:40:10 2025 (r1930927)
+++ subversion/trunk/subversion/libsvn_subr/checksum.c Sun Dec 28 15:58:07 2025 (r1930928)
@@ -483,13 +483,13 @@ svn_checksum(svn_checksum_t **checksum,
switch (kind)
{
case svn_checksum_md5:
- apr_md5((unsigned char *)(*checksum)->digest, data, len);
+ SVN_ERR(svn_checksum__md5((unsigned char *)(*checksum)->digest, data,
+ len));
break;
case svn_checksum_sha1:
- apr_sha1_init(&sha1_ctx);
- apr_sha1_update(&sha1_ctx, data, (unsigned int)len);
- apr_sha1_final((unsigned char *)(*checksum)->digest, &sha1_ctx);
+ SVN_ERR(svn_checksum__sha1((unsigned char *)(*checksum)->digest, data,
+ len));
break;
case svn_checksum_fnv1a_32:
Modified: subversion/trunk/subversion/libsvn_subr/checksum.h
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/checksum.h Sun Dec 28 15:40:10 2025 (r1930927)
+++ subversion/trunk/subversion/libsvn_subr/checksum.h Sun Dec 28 15:58:07 2025 (r1930928)
@@ -69,6 +69,11 @@ svn__digests_match(const unsigned char d
/* MD5 checksum context */
+svn_error_t *
+svn_checksum__md5(unsigned char *digest,
+ const void *data,
+ apr_size_t len);
+
typedef struct svn_checksum__md5_ctx_t svn_checksum__md5_ctx_t;
svn_checksum__md5_ctx_t *
@@ -88,6 +93,11 @@ svn_checksum__md5_ctx_final(unsigned cha
/* SHA1 checksum context */
+svn_error_t *
+svn_checksum__sha1(unsigned char *digest,
+ const void *data,
+ apr_size_t len);
+
typedef struct svn_checksum__sha1_ctx_t svn_checksum__sha1_ctx_t;
svn_checksum__sha1_ctx_t *
Modified: subversion/trunk/subversion/libsvn_subr/checksum_apr.c
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/checksum_apr.c Sun Dec 28 15:40:10 2025 (r1930927)
+++ subversion/trunk/subversion/libsvn_subr/checksum_apr.c Sun Dec 28 15:58:07 2025 (r1930928)
@@ -33,6 +33,15 @@
/*** MD5 checksum ***/
+svn_error_t *
+svn_checksum__md5(unsigned char *digest,
+ const void *data,
+ apr_size_t len)
+{
+ apr_md5(digest, data, len);
+ return SVN_NO_ERROR;
+}
+
svn_checksum__md5_ctx_t *
svn_checksum__md5_ctx_create(apr_pool_t *pool)
{
@@ -72,6 +81,18 @@ svn_checksum__md5_ctx_final(unsigned cha
/*** SHA1 checksum ***/
+svn_error_t *
+svn_checksum__sha1(unsigned char *digest,
+ const void *data,
+ apr_size_t len)
+{
+ apr_sha1_ctx_t sha1_ctx;
+ apr_sha1_init(&sha1_ctx);
+ apr_sha1_update(&sha1_ctx, data, (unsigned int)len);
+ apr_sha1_final(digest, &sha1_ctx);
+ return SVN_NO_ERROR;
+}
+
svn_checksum__sha1_ctx_t *
svn_checksum__sha1_ctx_create(apr_pool_t *pool)
{
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.