| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // Unit tests for VaultKeyset. |
| 6 |
| 7 #include "vault_keyset.h" |
| 8 |
| 9 #include <base/logging.h> |
| 10 #include <chromeos/utility.h> |
| 11 #include <gtest/gtest.h> |
| 12 |
| 13 #include "crypto.h" |
| 14 #include "cryptohome_common.h" |
| 15 |
| 16 namespace cryptohome { |
| 17 using std::string; |
| 18 |
| 19 class VaultKeysetTest : public ::testing::Test { |
| 20 public: |
| 21 VaultKeysetTest() { } |
| 22 virtual ~VaultKeysetTest() { } |
| 23 |
| 24 static bool FindBlobInBlob(const chromeos::Blob& haystack, |
| 25 const chromeos::Blob& needle) { |
| 26 if (needle.size() > haystack.size()) { |
| 27 return false; |
| 28 } |
| 29 for (unsigned int start = 0; start <= (haystack.size() - needle.size()); |
| 30 start++) { |
| 31 if (memcmp(&haystack[start], &needle[0], needle.size()) == 0) { |
| 32 return true; |
| 33 } |
| 34 } |
| 35 return false; |
| 36 } |
| 37 |
| 38 private: |
| 39 DISALLOW_COPY_AND_ASSIGN(VaultKeysetTest); |
| 40 }; |
| 41 |
| 42 TEST_F(VaultKeysetTest, AllocateRandom) { |
| 43 // Check that allocating a random VaultKeyset works |
| 44 VaultKeyset vault_keyset; |
| 45 vault_keyset.CreateRandom(Crypto()); |
| 46 |
| 47 EXPECT_EQ(CRYPTOHOME_DEFAULT_KEY_SIZE, vault_keyset.FEK().size()); |
| 48 EXPECT_EQ(CRYPTOHOME_DEFAULT_KEY_SIGNATURE_SIZE, |
| 49 vault_keyset.FEK_SIG().size()); |
| 50 EXPECT_EQ(CRYPTOHOME_DEFAULT_KEY_SALT_SIZE, vault_keyset.FEK_SALT().size()); |
| 51 |
| 52 EXPECT_EQ(CRYPTOHOME_DEFAULT_KEY_SIZE, vault_keyset.FNEK().size()); |
| 53 EXPECT_EQ(CRYPTOHOME_DEFAULT_KEY_SIGNATURE_SIZE, |
| 54 vault_keyset.FNEK_SIG().size()); |
| 55 EXPECT_EQ(CRYPTOHOME_DEFAULT_KEY_SALT_SIZE, vault_keyset.FNEK_SALT().size()); |
| 56 } |
| 57 |
| 58 TEST_F(VaultKeysetTest, SerializeTest) { |
| 59 // Check that serialize works |
| 60 VaultKeyset vault_keyset; |
| 61 vault_keyset.CreateRandom(Crypto()); |
| 62 |
| 63 SecureBlob blob; |
| 64 EXPECT_EQ(true, vault_keyset.ToBuffer(&blob)); |
| 65 |
| 66 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(blob, vault_keyset.FEK())); |
| 67 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(blob, |
| 68 vault_keyset.FEK_SIG())); |
| 69 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(blob, |
| 70 vault_keyset.FEK_SALT())); |
| 71 |
| 72 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(blob, vault_keyset.FNEK())); |
| 73 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(blob, |
| 74 vault_keyset.FNEK_SIG())); |
| 75 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(blob, |
| 76 vault_keyset.FNEK_SALT())); |
| 77 } |
| 78 |
| 79 TEST_F(VaultKeysetTest, DeserializeTest) { |
| 80 // Check that deserialize works |
| 81 VaultKeyset vault_keyset; |
| 82 vault_keyset.CreateRandom(Crypto()); |
| 83 |
| 84 SecureBlob blob; |
| 85 EXPECT_EQ(true, vault_keyset.ToBuffer(&blob)); |
| 86 |
| 87 VaultKeyset new_vault_keyset; |
| 88 new_vault_keyset.AssignBuffer(blob); |
| 89 |
| 90 EXPECT_EQ(vault_keyset.FEK().size(), new_vault_keyset.FEK().size()); |
| 91 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(vault_keyset.FEK(), |
| 92 new_vault_keyset.FEK())); |
| 93 EXPECT_EQ(vault_keyset.FEK_SIG().size(), new_vault_keyset.FEK_SIG().size()); |
| 94 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(vault_keyset.FEK_SIG(), |
| 95 new_vault_keyset.FEK_SIG())); |
| 96 EXPECT_EQ(vault_keyset.FEK_SALT().size(), new_vault_keyset.FEK_SALT().size()); |
| 97 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(vault_keyset.FEK_SALT(), |
| 98 new_vault_keyset.FEK_SALT())); |
| 99 |
| 100 EXPECT_EQ(vault_keyset.FNEK().size(), new_vault_keyset.FNEK().size()); |
| 101 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(vault_keyset.FNEK(), |
| 102 new_vault_keyset.FNEK())); |
| 103 EXPECT_EQ(vault_keyset.FNEK_SIG().size(), new_vault_keyset.FNEK_SIG().size()); |
| 104 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(vault_keyset.FNEK_SIG(), |
| 105 new_vault_keyset.FNEK_SIG())); |
| 106 EXPECT_EQ(vault_keyset.FNEK_SALT().size(), |
| 107 new_vault_keyset.FNEK_SALT().size()); |
| 108 EXPECT_EQ(true, VaultKeysetTest::FindBlobInBlob(vault_keyset.FNEK_SALT(), |
| 109 new_vault_keyset.FNEK_SALT())); |
| 110 } |
| 111 |
| 112 } // namespace cryptohome |
| OLD | NEW |