Mercurial > hg > orthanc
diff OrthancFramework/Sources/Toolbox.cpp @ 5377:daf4807631c5
ComputeMD5 for std::set
author | Alain Mazy <am@osimis.io> |
---|---|
date | Thu, 24 Aug 2023 13:35:18 +0200 |
parents | 123a94dd57df |
children | be0b9c407985 |
line wrap: on
line diff
--- a/OrthancFramework/Sources/Toolbox.cpp Tue Aug 22 16:35:22 2023 +0200 +++ b/OrthancFramework/Sources/Toolbox.cpp Thu Aug 24 13:35:18 2023 +0200 @@ -496,6 +496,34 @@ result[2 * i + 1] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] % 16)); } } + + void Toolbox::ComputeMD5(std::string& result, + const std::set<std::string>& data) + { + md5_state_s state; + md5_init(&state); + + if (data.size() > 0) + { + for (std::set<std::string>::const_iterator it = data.begin(); it != data.end(); ++it) + { + md5_append(&state, + reinterpret_cast<const md5_byte_t*>(it->c_str()), + static_cast<int>(it->size())); + } + } + + md5_byte_t actualHash[16]; + md5_finish(&state, actualHash); + + result.resize(32); + for (unsigned int i = 0; i < 16; i++) + { + result[2 * i] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] / 16)); + result[2 * i + 1] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] % 16)); + } + } + #endif