Mercurial > hg > orthanc
diff Core/Toolbox.cpp @ 177:81b6f3013738
sha1
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 09 Nov 2012 10:42:00 +0100 |
parents | fe180eae201d |
children | 8e673a65564d |
line wrap: on
line diff
--- a/Core/Toolbox.cpp Wed Nov 07 17:21:21 2012 +0100 +++ b/Core/Toolbox.cpp Fri Nov 09 10:42:00 2012 +0100 @@ -63,6 +63,7 @@ #include "../Resources/md5/md5.h" #include "../Resources/base64/base64.h" +#include "../Resources/sha1/sha1.h" #if BOOST_HAS_LOCALE == 0 @@ -518,4 +519,36 @@ return result; } + + void Toolbox::ComputeSHA1(std::string& result, + const std::string& data) + { + SHA1 sha1; + if (data.size() > 0) + { + sha1.Input(&data[0], data.size()); + } + + unsigned digest[5]; + + // Sanity check for the memory layout: A SHA-1 digest is 160 bits wide + assert(sizeof(unsigned) == 4 && sizeof(digest) == (160 / 8)); + + if (sha1.Result(digest)) + { + result.resize(8 * 5 + 4); + sprintf(&result[0], "%08x-%08x-%08x-%08x-%08x", + digest[0], + digest[1], + digest[2], + digest[3], + digest[4]); + } + else + { + throw OrthancException(ErrorCode_InternalError); + } + } + + }