From 6d50c38e2bc6a17afb19effe06d2103f06c8ea1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Sat, 20 Jun 2009 12:58:56 +0200 Subject: Added SHA1::getHexHash(). diff --git a/Swiften/StringCodecs/SHA1.cpp b/Swiften/StringCodecs/SHA1.cpp index 367f3c9..18fde71 100644 --- a/Swiften/StringCodecs/SHA1.cpp +++ b/Swiften/StringCodecs/SHA1.cpp @@ -1,3 +1,7 @@ +#include +#include +#include + #include "Swiften/Base/Platform.h" #pragma GCC diagnostic ignored "-Wold-style-cast" @@ -193,4 +197,15 @@ ByteArray SHA1::getBinaryHash(const ByteArray& input) { return digest; } +String SHA1::getHexHash(const ByteArray& input) { + ByteArray digest = getBinaryHash(input); + std::ostringstream result; + result << std::hex; + + for (unsigned int i = 0; i < digest.getSize(); ++i) { + result << std::setw(2) << std::setfill('0') << boost::numeric_cast(static_cast(digest[i])); + } + return String(result.str()); +} + } diff --git a/Swiften/StringCodecs/SHA1.h b/Swiften/StringCodecs/SHA1.h index 7d432ac..0b0f434 100644 --- a/Swiften/StringCodecs/SHA1.h +++ b/Swiften/StringCodecs/SHA1.h @@ -7,6 +7,7 @@ namespace Swift { class SHA1 { public: static ByteArray getBinaryHash(const ByteArray& data); + static String getHexHash(const ByteArray& data); }; } diff --git a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp b/Swiften/StringCodecs/UnitTest/SHA1Test.cpp index 16e96ad..a6c7a72 100644 --- a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp +++ b/Swiften/StringCodecs/UnitTest/SHA1Test.cpp @@ -8,16 +8,22 @@ using namespace Swift; class SHA1Test : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(SHA1Test); - CPPUNIT_TEST(testEncode); + CPPUNIT_TEST(testGetBinaryHash); + CPPUNIT_TEST(testGetHexHash); CPPUNIT_TEST_SUITE_END(); public: SHA1Test() {} - void testEncode() { + void testGetBinaryHash() { ByteArray result(SHA1::getBinaryHash("client/pc//Exodus 0.9.1