diff options
author | hans@chromium.org <hans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-13 21:17:20 +0000 |
---|---|---|
committer | hans@chromium.org <hans@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-13 21:17:20 +0000 |
commit | 5035f683b6fbf8cc945a96af9598a4739a8c6f4f (patch) | |
tree | 8e0034b65759f5bcbba3de1ad8e5f368635c4743 /base/sha1_unittest.cc | |
parent | dfbb6ff293dc14f646c17a42981b4645a4172e20 (diff) | |
download | chromium_src-5035f683b6fbf8cc945a96af9598a4739a8c6f4f.zip chromium_src-5035f683b6fbf8cc945a96af9598a4739a8c6f4f.tar.gz chromium_src-5035f683b6fbf8cc945a96af9598a4739a8c6f4f.tar.bz2 |
Add base::SHA1HashBytes.
We need this for LevelDB.
BUG=64078
TEST=base_unittest --gtest_filter=SHA1Test
Review URL: http://codereview.chromium.org/6661025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77973 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/sha1_unittest.cc')
-rw-r--r-- | base/sha1_unittest.cc | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/base/sha1_unittest.cc b/base/sha1_unittest.cc index e445e8f..406150b 100644 --- a/base/sha1_unittest.cc +++ b/base/sha1_unittest.cc @@ -54,3 +54,55 @@ TEST(SHA1Test, Test3) { for (size_t i = 0; i < base::SHA1_LENGTH; i++) EXPECT_EQ(expected[i], output[i] & 0xFF); } + +TEST(SHA1Test, Test1Bytes) { + // Example A.1 from FIPS 180-2: one-block message. + std::string input = "abc"; + unsigned char output[base::SHA1_LENGTH]; + + unsigned char expected[] = { 0xa9, 0x99, 0x3e, 0x36, + 0x47, 0x06, 0x81, 0x6a, + 0xba, 0x3e, 0x25, 0x71, + 0x78, 0x50, 0xc2, 0x6c, + 0x9c, 0xd0, 0xd8, 0x9d }; + + base::SHA1HashBytes(reinterpret_cast<const unsigned char*>(input.c_str()), + input.length(), output); + for (size_t i = 0; i < base::SHA1_LENGTH; i++) + EXPECT_EQ(expected[i], output[i]); +} + +TEST(SHA1Test, Test2Bytes) { + // Example A.2 from FIPS 180-2: multi-block message. + std::string input = + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; + unsigned char output[base::SHA1_LENGTH]; + + unsigned char expected[] = { 0x84, 0x98, 0x3e, 0x44, + 0x1c, 0x3b, 0xd2, 0x6e, + 0xba, 0xae, 0x4a, 0xa1, + 0xf9, 0x51, 0x29, 0xe5, + 0xe5, 0x46, 0x70, 0xf1 }; + + base::SHA1HashBytes(reinterpret_cast<const unsigned char*>(input.c_str()), + input.length(), output); + for (size_t i = 0; i < base::SHA1_LENGTH; i++) + EXPECT_EQ(expected[i], output[i]); +} + +TEST(SHA1Test, Test3Bytes) { + // Example A.3 from FIPS 180-2: long message. + std::string input(1000000, 'a'); + unsigned char output[base::SHA1_LENGTH]; + + unsigned char expected[] = { 0x34, 0xaa, 0x97, 0x3c, + 0xd4, 0xc4, 0xda, 0xa4, + 0xf6, 0x1e, 0xeb, 0x2b, + 0xdb, 0xad, 0x27, 0x31, + 0x65, 0x34, 0x01, 0x6f }; + + base::SHA1HashBytes(reinterpret_cast<const unsigned char*>(input.c_str()), + input.length(), output); + for (size_t i = 0; i < base::SHA1_LENGTH; i++) + EXPECT_EQ(expected[i], output[i]); +} |