diff options
| -rw-r--r-- | Swiften/StringCodecs/SHA1.cpp | 3 | ||||
| -rw-r--r-- | Swiften/StringCodecs/UnitTest/SHA1Test.cpp | 10 | 
2 files changed, 12 insertions, 1 deletions
| diff --git a/Swiften/StringCodecs/SHA1.cpp b/Swiften/StringCodecs/SHA1.cpp index 18fde71..e59836c 100644 --- a/Swiften/StringCodecs/SHA1.cpp +++ b/Swiften/StringCodecs/SHA1.cpp @@ -188,11 +188,12 @@ boost::uint8_t finalcount[8];  namespace Swift {  ByteArray SHA1::getBinaryHash(const ByteArray& input) { +	ByteArray inputCopy(input);  	ByteArray digest;  	digest.resize(20);  	SHA1_CTX context;  	SHA1Init(&context); -	SHA1Update(&context, (boost::uint8_t*) input.getData(), input.getSize()); +	SHA1Update(&context, (boost::uint8_t*) inputCopy.getData(), inputCopy.getSize());  	SHA1Final((boost::uint8_t*) digest.getData(), &context);  	return digest;  } diff --git a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp b/Swiften/StringCodecs/UnitTest/SHA1Test.cpp index a6c7a72..e556429 100644 --- a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp +++ b/Swiften/StringCodecs/UnitTest/SHA1Test.cpp @@ -9,6 +9,7 @@ class SHA1Test : public CppUnit::TestFixture  {  		CPPUNIT_TEST_SUITE(SHA1Test);  		CPPUNIT_TEST(testGetBinaryHash); +		CPPUNIT_TEST(testGetBinaryHash_Twice);  		CPPUNIT_TEST(testGetHexHash);  		CPPUNIT_TEST_SUITE_END(); @@ -20,6 +21,15 @@ class SHA1Test : public CppUnit::TestFixture  			CPPUNIT_ASSERT_EQUAL(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"), result);  		} + +		void testGetBinaryHash_Twice() { +			ByteArray input("client/pc//Exodus 0.9.1<http://jabber.org/protocol/caps<http://jabber.org/protocol/disco#info<http://jabber.org/protocol/disco#items<http://jabber.org/protocol/muc<"); +			SHA1::getBinaryHash(input); +			ByteArray result(SHA1::getBinaryHash(input)); + +			CPPUNIT_ASSERT_EQUAL(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"), result); +		} +  		void testGetHexHash() {  			String result(SHA1::getHexHash("client/pc//Exodus 0.9.1<http://jabber.org/protocol/caps<http://jabber.org/protocol/disco#info<http://jabber.org/protocol/disco#items<http://jabber.org/protocol/muc<"));  			CPPUNIT_ASSERT_EQUAL(String("4206b23ca6b0a643d20d89b04ff58cf78b8096ed"), result); | 
 Swift
 Swift