Mercurial > hg > orthanc
comparison 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 |
comparison
equal
deleted
inserted
replaced
176:81f11fb357f2 | 177:81b6f3013738 |
---|---|
61 #include <iconv.h> | 61 #include <iconv.h> |
62 #endif | 62 #endif |
63 | 63 |
64 #include "../Resources/md5/md5.h" | 64 #include "../Resources/md5/md5.h" |
65 #include "../Resources/base64/base64.h" | 65 #include "../Resources/base64/base64.h" |
66 #include "../Resources/sha1/sha1.h" | |
66 | 67 |
67 | 68 |
68 #if BOOST_HAS_LOCALE == 0 | 69 #if BOOST_HAS_LOCALE == 0 |
69 namespace | 70 namespace |
70 { | 71 { |
516 } | 517 } |
517 } | 518 } |
518 | 519 |
519 return result; | 520 return result; |
520 } | 521 } |
522 | |
523 void Toolbox::ComputeSHA1(std::string& result, | |
524 const std::string& data) | |
525 { | |
526 SHA1 sha1; | |
527 if (data.size() > 0) | |
528 { | |
529 sha1.Input(&data[0], data.size()); | |
530 } | |
531 | |
532 unsigned digest[5]; | |
533 | |
534 // Sanity check for the memory layout: A SHA-1 digest is 160 bits wide | |
535 assert(sizeof(unsigned) == 4 && sizeof(digest) == (160 / 8)); | |
536 | |
537 if (sha1.Result(digest)) | |
538 { | |
539 result.resize(8 * 5 + 4); | |
540 sprintf(&result[0], "%08x-%08x-%08x-%08x-%08x", | |
541 digest[0], | |
542 digest[1], | |
543 digest[2], | |
544 digest[3], | |
545 digest[4]); | |
546 } | |
547 else | |
548 { | |
549 throw OrthancException(ErrorCode_InternalError); | |
550 } | |
551 } | |
552 | |
553 | |
521 } | 554 } |