Mercurial > hg > orthanc
diff OrthancFramework/Sources/Toolbox.cpp @ 5813:2b429588de28
fix support for Boost 1.86
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Wed, 25 Sep 2024 16:27:07 +0200 |
parents | 16df20505710 |
children | 122fd5f97d39 |
line wrap: on
line diff
--- a/OrthancFramework/Sources/Toolbox.cpp Tue Sep 24 09:26:42 2024 +0200 +++ b/OrthancFramework/Sources/Toolbox.cpp Wed Sep 25 16:27:07 2024 +0200 @@ -812,14 +812,32 @@ sha1.process_bytes(data, size); } +#if BOOST_VERSION >= 108600 + unsigned char digest[20]; + + // Sanity check for the memory layout: A SHA-1 digest is 160 bits wide + assert(sizeof(digest) == (160 / 8)); + assert(sizeof(boost::uuids::detail::sha1::digest_type) == 20); + + // From Boost 1.86, digest_type is "unsigned char[20]" while it was "unsigned int[5]"" in previous versions. + // Always perform the cast even if it is useless for Boost < 1.86 + sha1.get_digest(digest); + + result.resize(8 * 5 + 4); + sprintf(&result[0], "%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x-%02x%02x%02x%02x", + digest[0], digest[1], digest[2], digest[3], + digest[4], digest[5], digest[6], digest[7], + digest[8], digest[9], digest[10], digest[11], + digest[12], digest[13], digest[14], digest[15], + digest[16], digest[17], digest[18], digest[19]); + +#else unsigned int digest[5]; // Sanity check for the memory layout: A SHA-1 digest is 160 bits wide assert(sizeof(unsigned int) == 4 && sizeof(digest) == (160 / 8)); assert(sizeof(boost::uuids::detail::sha1::digest_type) == 20); - - // From Boost 1.86, digest_type is "unsigned char[20]" while it was "unsigned int[5]"" in previous versions. - // Always perform the cast even if it is useless for Boost < 1.86 - sha1.get_digest(*(reinterpret_cast<boost::uuids::detail::sha1::digest_type*>(digest))); + + sha1.get_digest(digest)); result.resize(8 * 5 + 4); sprintf(&result[0], "%08x-%08x-%08x-%08x-%08x", @@ -828,6 +846,9 @@ digest[2], digest[3], digest[4]); + +#endif + } void Toolbox::ComputeSHA1(std::string& result,