comparison 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
comparison
equal deleted inserted replaced
5376:4ab905749aed 5377:daf4807631c5
494 { 494 {
495 result[2 * i] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] / 16)); 495 result[2 * i] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] / 16));
496 result[2 * i + 1] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] % 16)); 496 result[2 * i + 1] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] % 16));
497 } 497 }
498 } 498 }
499
500 void Toolbox::ComputeMD5(std::string& result,
501 const std::set<std::string>& data)
502 {
503 md5_state_s state;
504 md5_init(&state);
505
506 if (data.size() > 0)
507 {
508 for (std::set<std::string>::const_iterator it = data.begin(); it != data.end(); ++it)
509 {
510 md5_append(&state,
511 reinterpret_cast<const md5_byte_t*>(it->c_str()),
512 static_cast<int>(it->size()));
513 }
514 }
515
516 md5_byte_t actualHash[16];
517 md5_finish(&state, actualHash);
518
519 result.resize(32);
520 for (unsigned int i = 0; i < 16; i++)
521 {
522 result[2 * i] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] / 16));
523 result[2 * i + 1] = GetHexadecimalCharacter(static_cast<uint8_t>(actualHash[i] % 16));
524 }
525 }
526
499 #endif 527 #endif
500 528
501 529
502 #if ORTHANC_ENABLE_BASE64 == 1 530 #if ORTHANC_ENABLE_BASE64 == 1
503 void Toolbox::EncodeBase64(std::string& result, 531 void Toolbox::EncodeBase64(std::string& result,