OLD | NEW |
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" |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 } | 193 } |
194 }; | 194 }; |
195 | 195 |
196 TEST(SymmetricKeyTest, DeriveKeyFromPassword) { | 196 TEST(SymmetricKeyTest, DeriveKeyFromPassword) { |
197 for (unsigned int i = 0; i < ARRAYSIZE_UNSAFE(test_vectors); ++i) { | 197 for (unsigned int i = 0; i < ARRAYSIZE_UNSAFE(test_vectors); ++i) { |
198 SCOPED_TRACE(StringPrintf("Test[%u]", i)); | 198 SCOPED_TRACE(StringPrintf("Test[%u]", i)); |
199 #if defined(OS_MACOSX) | 199 #if defined(OS_MACOSX) |
200 // The OS X crypto libraries have minimum salt and iteration requirements | 200 // The OS X crypto libraries have minimum salt and iteration requirements |
201 // so some of the above tests will cause them to barf. Skip these. | 201 // so some of the above tests will cause them to barf. Skip these. |
202 if (strlen(test_vectors[i].salt) < 8 || test_vectors[i].rounds < 1000) { | 202 if (strlen(test_vectors[i].salt) < 8 || test_vectors[i].rounds < 1000) { |
203 LOG(INFO) << "Skipped test vector #" << i; | 203 VLOG(1) << "Skipped test vector #" << i; |
204 continue; | 204 continue; |
205 } | 205 } |
206 #endif // OS_MACOSX | 206 #endif // OS_MACOSX |
207 scoped_ptr<base::SymmetricKey> key( | 207 scoped_ptr<base::SymmetricKey> key( |
208 base::SymmetricKey::DeriveKeyFromPassword( | 208 base::SymmetricKey::DeriveKeyFromPassword( |
209 base::SymmetricKey::HMAC_SHA1, | 209 base::SymmetricKey::HMAC_SHA1, |
210 test_vectors[i].password, test_vectors[i].salt, | 210 test_vectors[i].password, test_vectors[i].salt, |
211 test_vectors[i].rounds, test_vectors[i].key_size_in_bits)); | 211 test_vectors[i].rounds, test_vectors[i].key_size_in_bits)); |
212 ASSERT_TRUE(NULL != key.get()); | 212 ASSERT_TRUE(NULL != key.get()); |
213 | 213 |
214 std::string raw_key; | 214 std::string raw_key; |
215 key->GetRawKey(&raw_key); | 215 key->GetRawKey(&raw_key); |
216 EXPECT_EQ(test_vectors[i].key_size_in_bits / 8, raw_key.size()); | 216 EXPECT_EQ(test_vectors[i].key_size_in_bits / 8, raw_key.size()); |
217 EXPECT_EQ(0, memcmp(test_vectors[i].expected, | 217 EXPECT_EQ(0, memcmp(test_vectors[i].expected, |
218 raw_key.data(), | 218 raw_key.data(), |
219 raw_key.size())); | 219 raw_key.size())); |
220 } | 220 } |
221 } | 221 } |
OLD | NEW |