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 }