Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(428)

Side by Side Diff: base/sha1_unittest.cc

Issue 1460513002: Added SHA1HashFile unittests. (Closed) Base URL: https://github.com/domokit/mojo.git@base_tests
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/sha1.h" 5 #include "base/sha1.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/files/scoped_file.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
12 TEST(SHA1Test, Test1) { 13 TEST(SHA1Test, Test1) {
13 // Example A.1 from FIPS 180-2: one-block message. 14 // Example A.1 from FIPS 180-2: one-block message.
14 std::string input = "abc"; 15 std::string input = "abc";
15 16
16 int expected[] = { 0xa9, 0x99, 0x3e, 0x36, 17 int expected[] = { 0xa9, 0x99, 0x3e, 0x36,
17 0x47, 0x06, 0x81, 0x6a, 18 0x47, 0x06, 0x81, 0x6a,
18 0xba, 0x3e, 0x25, 0x71, 19 0xba, 0x3e, 0x25, 0x71,
19 0x78, 0x50, 0xc2, 0x6c, 20 0x78, 0x50, 0xc2, 0x6c,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 0xd4, 0xc4, 0xda, 0xa4, 100 0xd4, 0xc4, 0xda, 0xa4,
100 0xf6, 0x1e, 0xeb, 0x2b, 101 0xf6, 0x1e, 0xeb, 0x2b,
101 0xdb, 0xad, 0x27, 0x31, 102 0xdb, 0xad, 0x27, 0x31,
102 0x65, 0x34, 0x01, 0x6f }; 103 0x65, 0x34, 0x01, 0x6f };
103 104
104 base::SHA1HashBytes(reinterpret_cast<const unsigned char*>(input.c_str()), 105 base::SHA1HashBytes(reinterpret_cast<const unsigned char*>(input.c_str()),
105 input.length(), output); 106 input.length(), output);
106 for (size_t i = 0; i < base::kSHA1Length; i++) 107 for (size_t i = 0; i < base::kSHA1Length; i++)
107 EXPECT_EQ(expected[i], output[i]); 108 EXPECT_EQ(expected[i], output[i]);
108 } 109 }
110
111 // Helper function to test SHA1HashFile.
112 void doHashFile(const std::string& input, unsigned char *output) {
Petr Hosek 2015/12/02 22:51:31 Nit: * belongs to type.
Sean Klein 2015/12/02 23:01:22 Done.
113 std::string file_name = "sha1_test_data.txt";
114 base::ScopedFILE file(fopen(file_name.c_str(), "w+"));
115 EXPECT_NE(nullptr, file);
116 EXPECT_EQ(input.length(),
117 fwrite(input.c_str(), 1, input.length(), file.get()));
Petr Hosek 2015/12/02 22:51:31 Nit: I'd use sizeof(char) instead of 1.
Sean Klein 2015/12/02 23:01:22 Done.
118 EXPECT_EQ(0, fflush(file.get()));
119 EXPECT_EQ(true, base::SHA1HashFile(file_name, output));
120 EXPECT_EQ(0, unlink(file_name.c_str()));
121 }
122
123 TEST(SHA1Test, Test1File) {
124 // Example A.1 from FIPS 180-2: one-block message.
125 std::string input = "abc";
126 unsigned char output[base::kSHA1Length];
127
128 unsigned char expected[] = { 0xa9, 0x99, 0x3e, 0x36,
Petr Hosek 2015/12/02 22:51:31 This should be const.
Sean Klein 2015/12/02 23:01:22 Done.
129 0x47, 0x06, 0x81, 0x6a,
130 0xba, 0x3e, 0x25, 0x71,
131 0x78, 0x50, 0xc2, 0x6c,
132 0x9c, 0xd0, 0xd8, 0x9d };
133
134 doHashFile(input, output);
135 for (size_t i = 0; i < base::kSHA1Length; i++)
136 EXPECT_EQ(expected[i], output[i]);
137 }
138
139 TEST(SHA1Test, Test2File) {
140 // Example A.2 from FIPS 180-2: multi-block message.
141 std::string input =
142 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
143 unsigned char output[base::kSHA1Length];
144
145 unsigned char expected[] = { 0x84, 0x98, 0x3e, 0x44,
Petr Hosek 2015/12/02 22:51:31 ditto
Sean Klein 2015/12/02 23:01:21 Done.
146 0x1c, 0x3b, 0xd2, 0x6e,
147 0xba, 0xae, 0x4a, 0xa1,
148 0xf9, 0x51, 0x29, 0xe5,
149 0xe5, 0x46, 0x70, 0xf1 };
150
151 doHashFile(input, output);
152 for (size_t i = 0; i < base::kSHA1Length; i++)
153 EXPECT_EQ(expected[i], output[i]);
154 }
155
156 TEST(SHA1Test, Test3File) {
157 // Example A.3 from FIPS 180-2: long message.
158 std::string input(1000000, 'a');
159 unsigned char output[base::kSHA1Length];
160
161 unsigned char expected[] = { 0x34, 0xaa, 0x97, 0x3c,
Petr Hosek 2015/12/02 22:51:32 ditto
Sean Klein 2015/12/02 23:01:22 Done.
162 0xd4, 0xc4, 0xda, 0xa4,
163 0xf6, 0x1e, 0xeb, 0x2b,
164 0xdb, 0xad, 0x27, 0x31,
165 0x65, 0x34, 0x01, 0x6f };
166
167 doHashFile(input, output);
168 for (size_t i = 0; i < base::kSHA1Length; i++)
169 EXPECT_EQ(expected[i], output[i]);
170 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698