diff options
-rw-r--r-- | base/md5.cc | 2 | ||||
-rw-r--r-- | base/md5.h | 11 | ||||
-rw-r--r-- | base/md5_unittest.cc | 45 |
3 files changed, 24 insertions, 34 deletions
diff --git a/base/md5.cc b/base/md5.cc index fdda2a4..ff69dc0 100644 --- a/base/md5.cc +++ b/base/md5.cc @@ -18,8 +18,6 @@ * will fill a supplied 16-byte array with the digest. */ -#include <string> - #include "base/md5.h" #include "base/basictypes.h" @@ -33,10 +33,10 @@ // // You can call MD5DigestToBase16() to generate a string of the digest. -// The output of an MD5 operation -typedef struct MD5Digest_struct { +// The output of an MD5 operation. +struct MD5Digest { unsigned char a[16]; -} MD5Digest; +}; // Used for storing intermediate data during an MD5 computation. Callers // should not access the data. @@ -53,10 +53,10 @@ BASE_API void MD5Init(MD5Context* context); // For the given buffer of data, updates the given MD5 context with the sum of // the data. You can call this any number of times during the computation, // except that MD5Init() must have been called first. -BASE_API void MD5Update(MD5Context* context, const void* buf, size_t len); +BASE_API void MD5Update(MD5Context* context, const void* data, size_t length); // Finalizes the MD5 operation and fills the buffer with the digest. -BASE_API void MD5Final(MD5Digest* digest, MD5Context* pCtx); +BASE_API void MD5Final(MD5Digest* digest, MD5Context* context); // Converts a digest into human-readable hexadecimal. BASE_API std::string MD5DigestToBase16(const MD5Digest& digest); @@ -65,4 +65,3 @@ BASE_API std::string MD5DigestToBase16(const MD5Digest& digest); BASE_API std::string MD5String(const std::string& str); #endif // BASE_MD5_H_ - diff --git a/base/md5_unittest.cc b/base/md5_unittest.cc index dc7c66b..c81ff12 100644 --- a/base/md5_unittest.cc +++ b/base/md5_unittest.cc @@ -6,11 +6,12 @@ #include <string> #include "base/basictypes.h" -#include "base/logging.h" #include "base/memory/scoped_ptr.h" #include "base/md5.h" #include "testing/gtest/include/gtest/gtest.h" +namespace base { + TEST(MD5, DigestToBase16) { MD5Digest digest; @@ -21,9 +22,8 @@ TEST(MD5, DigestToBase16) { 0xec, 0xf8, 0x42, 0x7e }; - for (int i = 0; i < 16; ++i) { + for (int i = 0; i < 16; ++i) digest.a[i] = data[i] & 0xff; - } std::string actual = MD5DigestToBase16(digest); std::string expected = "d41d8cd98f00b204e9800998ecf8427e"; @@ -44,9 +44,8 @@ TEST(MD5, MD5SumEmtpyData) { 0xec, 0xf8, 0x42, 0x7e }; - for (int i = 0; i < 16; ++i) { + for (int i = 0; i < 16; ++i) EXPECT_EQ(expected[i], digest.a[i] & 0xFF); - } } TEST(MD5, MD5SumOneByteData) { @@ -62,21 +61,18 @@ TEST(MD5, MD5SumOneByteData) { 0x69, 0x77, 0x26, 0x61 }; - for (int i = 0; i < 16; ++i) { + for (int i = 0; i < 16; ++i) EXPECT_EQ(expected[i], digest.a[i] & 0xFF); - } } TEST(MD5, MD5SumLongData) { - MD5Digest digest; - const int length = 10 * 1024 * 1024 + 1; scoped_array<char> data(new char[length]); - for (int i = 0; i < length; ++i) { + for (int i = 0; i < length; ++i) data[i] = i & 0xFF; - } + MD5Digest digest; MD5Sum(data.get(), length, &digest); int expected[] = { @@ -86,9 +82,8 @@ TEST(MD5, MD5SumLongData) { 0x21, 0xc7, 0xa1, 0x3e }; - for (int i = 0; i < 16; ++i) { + for (int i = 0; i < 16; ++i) EXPECT_EQ(expected[i], digest.a[i] & 0xFF); - } } TEST(MD5, ContextWithEmptyData) { @@ -105,9 +100,8 @@ TEST(MD5, ContextWithEmptyData) { 0xec, 0xf8, 0x42, 0x7e }; - for (int i = 0; i < 16; ++i) { + for (int i = 0; i < 16; ++i) EXPECT_EQ(expected[i], digest.a[i] & 0xFF); - } } TEST(MD5, ContextWithLongData) { @@ -117,16 +111,14 @@ TEST(MD5, ContextWithLongData) { const int length = 10 * 1024 * 1024 + 1; scoped_array<char> data(new char[length]); - for (int i = 0; i < length; ++i) { + for (int i = 0; i < length; ++i) data[i] = i & 0xFF; - } int total = 0; while (total < length) { int len = 4097; // intentionally not 2^k. - if (len > length - total) { + if (len > length - total) len = length - total; - } MD5Update(&ctx, data.get() + total, len); total += len; @@ -144,9 +136,8 @@ TEST(MD5, ContextWithLongData) { 0x21, 0xc7, 0xa1, 0x3e }; - for (int i = 0; i < 16; ++i) { + for (int i = 0; i < 16; ++i) EXPECT_EQ(expected[i], digest.a[i] & 0xFF); - } } // Example data from http://www.ietf.org/rfc/rfc1321.txt A.5 Test Suite @@ -182,17 +173,19 @@ TEST(MD5, MD5StringTestSuite5) { TEST(MD5, MD5StringTestSuite6) { std::string actual = MD5String("ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789"); + "abcdefghijklmnopqrstuvwxyz" + "0123456789"); std::string expected = "d174ab98d277d9f5a5611c2c9f419d9f"; EXPECT_EQ(expected, actual); } TEST(MD5, MD5StringTestSuite7) { std::string actual = MD5String("12345678901234567890" - "12345678901234567890" - "12345678901234567890" - "12345678901234567890"); + "12345678901234567890" + "12345678901234567890" + "12345678901234567890"); std::string expected = "57edf4a22be3c955ac49da2e2107b67a"; EXPECT_EQ(expected, actual); } + +} // namespace base |