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

Side by Side Diff: base/crypto/symmetric_key_unittest.cc

Issue 1528021: Implement PBKDF2-based key derivation, random key generation,... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Make albertb's suggested changes. Created 10 years, 8 months 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 | Annotate | Revision Log
« no previous file with comments | « base/crypto/symmetric_key_nss.cc ('k') | base/crypto/symmetric_key_win.cc » ('j') | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/crypto/symmetric_key.h" 5 #include "base/crypto/symmetric_key.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 #if defined(USE_NSS) || defined(OS_MACOSX) 13 TEST(SymmetricKeyTest, GenerateRandomKey) {
14 #define MAYBE(name) name
15 #else
16 #define MAYBE(name) DISABLED_ ## name
17 #endif
18
19 TEST(SymmetricKeyTest, MAYBE(GenerateRandomKey)) {
20 scoped_ptr<base::SymmetricKey> key( 14 scoped_ptr<base::SymmetricKey> key(
21 base::SymmetricKey::GenerateRandomKey(base::SymmetricKey::AES, 256)); 15 base::SymmetricKey::GenerateRandomKey(base::SymmetricKey::AES, 256));
22 EXPECT_TRUE(NULL != key.get()); 16 EXPECT_TRUE(NULL != key.get());
23 std::string raw_key; 17 std::string raw_key;
24 EXPECT_TRUE(key->GetRawKey(&raw_key)); 18 EXPECT_TRUE(key->GetRawKey(&raw_key));
25 EXPECT_EQ(32U, raw_key.size()); 19 EXPECT_EQ(32U, raw_key.size());
26 20
27 // Do it again and check that the keys are different. 21 // Do it again and check that the keys are different.
28 // (Note: this has a one-in-10^77 chance of failure!) 22 // (Note: this has a one-in-10^77 chance of failure!)
29 scoped_ptr<base::SymmetricKey> key2( 23 scoped_ptr<base::SymmetricKey> key2(
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 50, 152 50,
159 160, 153 160,
160 { 154 {
161 0x6b, 0x9c, 0xf2, 0x6d, 0x45, 0x45, 0x5a, 0x43, 155 0x6b, 0x9c, 0xf2, 0x6d, 0x45, 0x45, 0x5a, 0x43,
162 0xa5, 0xb8, 0xbb, 0x27, 0x6a, 0x40, 0x3b, 0x39, 156 0xa5, 0xb8, 0xbb, 0x27, 0x6a, 0x40, 0x3b, 0x39,
163 0xe7, 0xfe, 0x37, 0xa0 157 0xe7, 0xfe, 0x37, 0xa0
164 }, 158 },
165 } 159 }
166 }; 160 };
167 161
168 TEST(SymmetricKeyTest, MAYBE(DeriveKeyFromPassword)) { 162 TEST(SymmetricKeyTest, DeriveKeyFromPassword) {
169 for (unsigned int i = 0; i < ARRAYSIZE_UNSAFE(test_vectors); ++i) { 163 for (unsigned int i = 0; i < ARRAYSIZE_UNSAFE(test_vectors); ++i) {
170 SCOPED_TRACE(StringPrintf("Test[%u]", i)); 164 SCOPED_TRACE(StringPrintf("Test[%u]", i));
171 #if defined(OS_MACOSX) 165 #if defined(OS_MACOSX)
172 // The OS X crypto libraries have minimum salt and iteration requirements 166 // The OS X crypto libraries have minimum salt and iteration requirements
173 // so some of the above tests will cause them to barf. Skip these. 167 // so some of the above tests will cause them to barf. Skip these.
174 if (strlen(test_vectors[i].salt) < 8 || test_vectors[i].rounds < 1000) { 168 if (strlen(test_vectors[i].salt) < 8 || test_vectors[i].rounds < 1000) {
175 LOG(INFO) << "Skipped test vector #" << i; 169 LOG(INFO) << "Skipped test vector #" << i;
176 continue; 170 continue;
177 } 171 }
178 #endif // OS_MACOSX 172 #endif // OS_MACOSX
179 scoped_ptr<base::SymmetricKey> key( 173 scoped_ptr<base::SymmetricKey> key(
180 base::SymmetricKey::DeriveKeyFromPassword( 174 base::SymmetricKey::DeriveKeyFromPassword(
181 base::SymmetricKey::HMAC_SHA1, 175 base::SymmetricKey::HMAC_SHA1,
182 test_vectors[i].password, test_vectors[i].salt, 176 test_vectors[i].password, test_vectors[i].salt,
183 test_vectors[i].rounds, test_vectors[i].key_size_in_bits)); 177 test_vectors[i].rounds, test_vectors[i].key_size_in_bits));
184 ASSERT_TRUE(NULL != key.get()); 178 ASSERT_TRUE(NULL != key.get());
185 179
186 std::string raw_key; 180 std::string raw_key;
187 key->GetRawKey(&raw_key); 181 key->GetRawKey(&raw_key);
188 EXPECT_EQ(test_vectors[i].key_size_in_bits / 8, raw_key.size()); 182 EXPECT_EQ(test_vectors[i].key_size_in_bits / 8, raw_key.size());
189 EXPECT_EQ(0, memcmp(test_vectors[i].expected, 183 EXPECT_EQ(0, memcmp(test_vectors[i].expected,
190 raw_key.data(), 184 raw_key.data(),
191 raw_key.size())); 185 raw_key.size()));
192 } 186 }
193 } 187 }
OLDNEW
« no previous file with comments | « base/crypto/symmetric_key_nss.cc ('k') | base/crypto/symmetric_key_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698