svn commit: r1931095 - subversion/trunk/subversion/libsvn_subr

[email protected]
Newsgroups gmane.comp.version-control.subversion.svn
Message-ID <176753209579.2715148.5348670951751076750@svn02-us-east.apache.org>
Author: rinrab
Date: Sun Jan  4 13:08:15 2026
New Revision: 1931095

Log:
bcrypt: Use Win32 API directly when computing checksum without a context
instead of creating a context on stack. It's more convenient and it feels
wrong to use our "public" API with additional custom manipulations here.

* subversion/libsvn_subr/checksum_bcrypt.c
  (bcrypt_checksum): Replace bcrypt_ctx_t with a plain BCRYPT_HANDLE, use
   BCryptHashData() and BCryptFinishHash() instead of bcrypt_ctx_update() and
   bcrypt_ctx_final().

Modified:
   subversion/trunk/subversion/libsvn_subr/checksum_bcrypt.c

Modified: subversion/trunk/subversion/libsvn_subr/checksum_bcrypt.c
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/checksum_bcrypt.c	Sun Jan  4 12:48:14 2026	(r1931094)
+++ subversion/trunk/subversion/libsvn_subr/checksum_bcrypt.c	Sun Jan  4 13:08:15 2026	(r1931095)
@@ -165,9 +165,11 @@ bcrypt_checksum(algorithm_state_t *algor
                 const void *data,
                 apr_size_t len)
 {
-  bcrypt_ctx_t bcrypt_ctx = { 0 };
+  BCRYPT_HANDLE handle;
   void *object_buf;
 
+  SVN_ERR_ASSERT(len <= ULONG_MAX);
+
   SVN_ERR(svn_atomic__init_once(&algorithm->initialized, algorithm_init,
                                 algorithm, NULL));
 
@@ -175,17 +177,21 @@ bcrypt_checksum(algorithm_state_t *algor
   object_buf = alloca(algorithm->object_length);
 
   SVN_ERR(handle_error(BCryptCreateHash(algorithm->alg_handle,
-                                        &bcrypt_ctx.handle,
+                                        &handle,
                                         object_buf, algorithm->object_length,
                                         /* pbSecret */ NULL,
                                         /* cbSecret */ 0,
                                         /* dwFlags */ 0)));
 
-  SVN_ERR(bcrypt_ctx_update(algorithm, &bcrypt_ctx,
-                            data, len));
-
-  SVN_ERR(bcrypt_ctx_final(algorithm, &bcrypt_ctx,
-                           digest));
+  SVN_ERR(handle_error(BCryptHashData(handle,
+                                      (PUCHAR) data,
+                                      (ULONG) len,
+                                      /* dwFlags */ 0)));
+
+  SVN_ERR(handle_error(BCryptFinishHash(handle,
+                                        (PUCHAR) digest,
+                                        algorithm->hash_length,
+                                        /* dwFlags */ 0)));
 
   return SVN_NO_ERROR;
 }
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.