1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "crypto/symmetric_key.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/string_number_conversions.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string_util.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(SymmetricKeyTest, GenerateRandomKey) { 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<crypto::SymmetricKey> key( 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::GenerateRandomKey(crypto::SymmetricKey::AES, 256)); 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != key.get()); 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string raw_key; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(key->GetRawKey(&raw_key)); 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(32U, raw_key.size()); 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Do it again and check that the keys are different. 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // (Note: this has a one-in-10^77 chance of failure!) 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<crypto::SymmetricKey> key2( 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::GenerateRandomKey(crypto::SymmetricKey::AES, 256)); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != key2.get()); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string raw_key2; 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(key2->GetRawKey(&raw_key2)); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(32U, raw_key2.size()); 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_NE(raw_key, raw_key2); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(SymmetricKeyTest, ImportGeneratedKey) { 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<crypto::SymmetricKey> key1( 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::GenerateRandomKey(crypto::SymmetricKey::AES, 256)); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != key1.get()); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string raw_key1; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(key1->GetRawKey(&raw_key1)); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<crypto::SymmetricKey> key2( 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::Import(crypto::SymmetricKey::AES, raw_key1)); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != key2.get()); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string raw_key2; 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(key2->GetRawKey(&raw_key2)); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(raw_key1, raw_key2); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(SymmetricKeyTest, ImportDerivedKey) { 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<crypto::SymmetricKey> key1( 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::DeriveKeyFromPassword( 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, "password", "somesalt", 1024, 160)); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != key1.get()); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string raw_key1; 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(key1->GetRawKey(&raw_key1)); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<crypto::SymmetricKey> key2( 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::Import(crypto::SymmetricKey::HMAC_SHA1, raw_key1)); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(NULL != key2.get()); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string raw_key2; 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(key2->GetRawKey(&raw_key2)); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(raw_key1, raw_key2); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct PBKDF2TestVector { 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::Algorithm algorithm; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* password; 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char* salt; 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch unsigned int rounds; 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch unsigned int key_size_in_bits; 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const char* expected; // ASCII encoded hex bytes 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass SymmetricKeyDeriveKeyFromPasswordTest 784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch : public testing::TestWithParam<PBKDF2TestVector> { 794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben MurdochTEST_P(SymmetricKeyDeriveKeyFromPasswordTest, DeriveKeyFromPassword) { 824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch PBKDF2TestVector test_data(GetParam()); 834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#if defined(OS_MACOSX) 844a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The OS X crypto libraries have minimum salt and iteration requirements 854a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // so some of the tests below will cause them to barf. Skip these. 864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch if (strlen(test_data.salt) < 8 || test_data.rounds < 1000) { 874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch VLOG(1) << "Skipped test vector for " << test_data.expected; 884a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch return; 894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // OS_MACOSX 914a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<crypto::SymmetricKey> key( 93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::DeriveKeyFromPassword( 944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch test_data.algorithm, 954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch test_data.password, test_data.salt, 964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch test_data.rounds, test_data.key_size_in_bits)); 974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch ASSERT_TRUE(NULL != key.get()); 984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::string raw_key; 1004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch key->GetRawKey(&raw_key); 1014a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch EXPECT_EQ(test_data.key_size_in_bits / 8, raw_key.size()); 1024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch EXPECT_EQ(test_data.expected, 1034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch StringToLowerASCII(base::HexEncode(raw_key.data(), 1044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch raw_key.size()))); 1054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 1064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstatic const PBKDF2TestVector kTestVectors[] = { 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // These tests come from 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // http://www.ietf.org/id/draft-josefsson-pbkdf2-test-vectors-00.txt 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 111ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "salt", 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1, 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "0c60c80f961f0e71f3a9b524af6012062fe037a6", 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "salt", 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2, 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957", 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "salt", 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 4096, 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "4b007901b765489abead49d926f721d065a429c1", 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This test takes over 30s to run on the trybots. 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if 0 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 137ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "salt", 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16777216, 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984", 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // These tests come from RFC 3962, via BSD source code at 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // http://www.openbsd.org/cgi-bin/cvsweb/src/sbin/bioctl/pbkdf2.c?rev=HEAD&content-type=text/plain 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 149ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "ATHENA.MIT.EDUraeburn", 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1, 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "cdedb5281bb2f801565a1122b25635150ad1f7a0", 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "ATHENA.MIT.EDUraeburn", 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2, 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "01dbee7f4a9e243e988b62c73cda935da05378b9", 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 165ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "ATHENA.MIT.EDUraeburn", 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1200, 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "5c08eb61fdf71e4e4ec3cf6ba1f5512ba7e52ddb", 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 173ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "password", 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "\0224VxxV4\022", /* 0x1234567878563412 */ 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5, 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "d1daa78615f287e6a1c8b120d7062a493f98d203", 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 181ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "pass phrase equals block size", 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1200, 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1864a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "139c30c0966bc32ba55fdbf212530ac9c5ec59f1", 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 189ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "pass phrase exceeds block size", 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1200, 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 1944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "9ccad6d468770cd51b10e6a68721be611a8b4d28", 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }, 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 197ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::HMAC_SHA1, 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "\360\235\204\236", /* g-clef (0xf09d849e) */ 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "EXAMPLE.COMpianist", 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50, 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160, 2024a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "6b9cf26d45455a43a5b8bb276a403b39e7fe37a0", 2034a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch }, 2044a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2054a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Regression tests for AES keys, derived from the Linux NSS implementation. 2064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch { 207ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::AES, 2084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "A test password", 2094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "saltsalt", 2104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1, 2114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 256, 2124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "44899a7777f0e6e8b752f875f02044b8ac593de146de896f2e8a816e315a36de", 2134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch }, 2144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch { 215ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen crypto::SymmetricKey::AES, 2164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 2174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "pass phrase exceeds block size", 2184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 20, 2194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 256, 2204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch "e0739745dc28b8721ba402e05214d2ac1eab54cf72bee1fba388297a09eb493c", 2214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch }, 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben MurdochINSTANTIATE_TEST_CASE_P(, SymmetricKeyDeriveKeyFromPasswordTest, 2254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch testing::ValuesIn(kTestVectors)); 226