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

Side by Side Diff: vault_keyset_unittest.cc

Issue 2645008: Update on feedback, update dbus API, add unit tests. TEST=manual,unit,BVT BUG=3628 323 (Closed) Base URL: ssh://git@chromiumos-git/cryptohome.git
Patch Set: Address second round of feedback. Created 10 years, 6 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
« no previous file with comments | « vault_keyset.cc ('k') | 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
(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
OLDNEW
« no previous file with comments | « vault_keyset.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698