changeset 6592:681cf6db8aa6

fix md5 computation for boost <= 1.70
author Alain Mazy <am@orthanc.team>
date Thu, 19 Feb 2026 17:13:17 +0100
parents 76fd43aea734
children e0540311207e
files OrthancFramework/Sources/Toolbox.cpp
diffstat 1 files changed, 29 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/OrthancFramework/Sources/Toolbox.cpp	Thu Feb 19 15:48:21 2026 +0100
+++ b/OrthancFramework/Sources/Toolbox.cpp	Thu Feb 19 17:13:17 2026 +0100
@@ -278,7 +278,7 @@
             digest[8], digest[9], digest[10], digest[11],
             digest[12], digest[13], digest[14], digest[15]);
 
-#    else  // BOOST_VERSION >= 108600
+#    elif BOOST_VERSION > 107000
     unsigned int digest[4];
 
     // Sanity check for the memory layout: A MD5 digest is 128 bits wide
@@ -294,6 +294,34 @@
             digest[2],
             digest[3]);
 
+#    else // BOOST version between 1066 and 1070: there was a byte order bug in these implementations (https://github.com/boostorg/uuid/pull/109)
+    unsigned int digest[4];
+
+    // Sanity check for the memory layout: A MD5 digest is 128 bits wide
+    assert(sizeof(digest) == (128 / 8));
+    assert(sizeof(boost::uuids::detail::md5::digest_type) == 16);
+
+    pimpl_->md5_.get_digest(digest);
+
+    target.resize(32);
+    sprintf(&target[0], "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
+            (digest[0] >> 0) & 0xFF, 
+            (digest[0] >> 8) & 0xFF,
+            (digest[0] >> 16) & 0xFF,
+            (digest[0] >> 24) & 0xFF,
+            (digest[1] >> 0) & 0xFF, 
+            (digest[1] >> 8) & 0xFF,
+            (digest[1] >> 16) & 0xFF,
+            (digest[1] >> 24) & 0xFF,
+            (digest[2] >> 0) & 0xFF, 
+            (digest[2] >> 8) & 0xFF,
+            (digest[2] >> 16) & 0xFF,
+            (digest[2] >> 24) & 0xFF,
+            (digest[3] >> 0) & 0xFF, 
+            (digest[3] >> 8) & 0xFF,
+            (digest[3] >> 16) & 0xFF,
+            (digest[3] >> 24) & 0xFF);
+
 #    endif //BOOST_VERSION >= 108600
   }
 #  else // BOOST_VERSION >= 106600