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

Side by Side Diff: chromeos/cryptohome/cryptohome_library.cc

Issue 24869003: cryptohome: Move stateless wrapper functions out of CryptohomeLibrary (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 7 years, 2 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 | « chromeos/cryptohome/cryptohome_library.h ('k') | chromeos/cryptohome/mock_cryptohome_library.h » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chromeos/cryptohome/cryptohome_library.h" 5 #include "chromeos/cryptohome/cryptohome_library.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
(...skipping 19 matching lines...) Expand all
30 30
31 // This class handles the interaction with the ChromeOS cryptohome library APIs. 31 // This class handles the interaction with the ChromeOS cryptohome library APIs.
32 class CryptohomeLibraryImpl : public CryptohomeLibrary { 32 class CryptohomeLibraryImpl : public CryptohomeLibrary {
33 public: 33 public:
34 CryptohomeLibraryImpl() { 34 CryptohomeLibraryImpl() {
35 } 35 }
36 36
37 virtual ~CryptohomeLibraryImpl() { 37 virtual ~CryptohomeLibraryImpl() {
38 } 38 }
39 39
40 virtual bool TpmIsEnabled() OVERRIDE {
41 bool result = false;
42 DBusThreadManager::Get()->GetCryptohomeClient()->CallTpmIsEnabledAndBlock(
43 &result);
44 return result;
45 }
46
47 virtual bool TpmIsOwned() OVERRIDE {
48 bool result = false;
49 DBusThreadManager::Get()->GetCryptohomeClient()->CallTpmIsOwnedAndBlock(
50 &result);
51 return result;
52 }
53
54 virtual bool TpmIsBeingOwned() OVERRIDE {
55 bool result = false;
56 DBusThreadManager::Get()->GetCryptohomeClient()->
57 CallTpmIsBeingOwnedAndBlock(&result);
58 return result;
59 }
60
61 virtual bool InstallAttributesGet(
62 const std::string& name, std::string* value) OVERRIDE {
63 std::vector<uint8> buf;
64 bool success = false;
65 DBusThreadManager::Get()->GetCryptohomeClient()->
66 InstallAttributesGet(name, &buf, &success);
67 if (success) {
68 // Cryptohome returns 'buf' with a terminating '\0' character.
69 DCHECK(!buf.empty());
70 DCHECK_EQ(buf.back(), 0);
71 value->assign(reinterpret_cast<char*>(buf.data()), buf.size() - 1);
72 }
73 return success;
74 }
75
76 virtual bool InstallAttributesSet(
77 const std::string& name, const std::string& value) OVERRIDE {
78 std::vector<uint8> buf(value.c_str(), value.c_str() + value.size() + 1);
79 bool success = false;
80 DBusThreadManager::Get()->GetCryptohomeClient()->
81 InstallAttributesSet(name, buf, &success);
82 return success;
83 }
84
85 virtual bool InstallAttributesFinalize() OVERRIDE {
86 bool success = false;
87 DBusThreadManager::Get()->GetCryptohomeClient()->
88 InstallAttributesFinalize(&success);
89 return success;
90 }
91
92 virtual bool InstallAttributesIsInvalid() OVERRIDE {
93 bool result = false;
94 DBusThreadManager::Get()->GetCryptohomeClient()->
95 InstallAttributesIsInvalid(&result);
96 return result;
97 }
98
99 virtual bool InstallAttributesIsFirstInstall() OVERRIDE {
100 bool result = false;
101 DBusThreadManager::Get()->GetCryptohomeClient()->
102 InstallAttributesIsFirstInstall(&result);
103 return result;
104 }
105
106 virtual std::string GetSystemSalt() OVERRIDE { 40 virtual std::string GetSystemSalt() OVERRIDE {
107 LoadSystemSalt(); // no-op if it's already loaded. 41 LoadSystemSalt(); // no-op if it's already loaded.
108 return system_salt_; 42 return system_salt_;
109 } 43 }
110 44
111 virtual std::string EncryptWithSystemSalt(const std::string& token) OVERRIDE { 45 virtual std::string EncryptWithSystemSalt(const std::string& token) OVERRIDE {
112 // Don't care about token encryption while debugging. 46 // Don't care about token encryption while debugging.
113 if (!base::SysInfo::IsRunningOnChromeOS()) 47 if (!base::SysInfo::IsRunningOnChromeOS())
114 return token; 48 return token;
115 49
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 160
227 DISALLOW_COPY_AND_ASSIGN(CryptohomeLibraryImpl); 161 DISALLOW_COPY_AND_ASSIGN(CryptohomeLibraryImpl);
228 }; 162 };
229 163
230 class CryptohomeLibraryStubImpl : public CryptohomeLibrary { 164 class CryptohomeLibraryStubImpl : public CryptohomeLibrary {
231 public: 165 public:
232 CryptohomeLibraryStubImpl() 166 CryptohomeLibraryStubImpl()
233 : locked_(false) {} 167 : locked_(false) {}
234 virtual ~CryptohomeLibraryStubImpl() {} 168 virtual ~CryptohomeLibraryStubImpl() {}
235 169
236 virtual bool TpmIsEnabled() OVERRIDE {
237 return true;
238 }
239
240 virtual bool TpmIsOwned() OVERRIDE {
241 return true;
242 }
243
244 virtual bool TpmIsBeingOwned() OVERRIDE {
245 return true;
246 }
247
248 virtual bool InstallAttributesGet(
249 const std::string& name, std::string* value) OVERRIDE {
250 if (install_attrs_.find(name) != install_attrs_.end()) {
251 *value = install_attrs_[name];
252 return true;
253 }
254 return false;
255 }
256
257 virtual bool InstallAttributesSet(
258 const std::string& name, const std::string& value) OVERRIDE {
259 install_attrs_[name] = value;
260 return true;
261 }
262
263 virtual bool InstallAttributesFinalize() OVERRIDE {
264 locked_ = true;
265 return true;
266 }
267
268 virtual bool InstallAttributesIsInvalid() OVERRIDE {
269 return false;
270 }
271
272 virtual bool InstallAttributesIsFirstInstall() OVERRIDE {
273 return !locked_;
274 }
275
276 virtual std::string GetSystemSalt() OVERRIDE { 170 virtual std::string GetSystemSalt() OVERRIDE {
277 return kStubSystemSalt; 171 return kStubSystemSalt;
278 } 172 }
279 173
280 virtual std::string EncryptWithSystemSalt(const std::string& token) OVERRIDE { 174 virtual std::string EncryptWithSystemSalt(const std::string& token) OVERRIDE {
281 return token; 175 return token;
282 } 176 }
283 177
284 virtual std::string DecryptWithSystemSalt( 178 virtual std::string DecryptWithSystemSalt(
285 const std::string& encrypted_token_hex) OVERRIDE { 179 const std::string& encrypted_token_hex) OVERRIDE {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 void CryptohomeLibrary::SetForTest(CryptohomeLibrary* impl) { 226 void CryptohomeLibrary::SetForTest(CryptohomeLibrary* impl) {
333 CHECK(!g_test_cryptohome_library || !impl); 227 CHECK(!g_test_cryptohome_library || !impl);
334 g_test_cryptohome_library = impl; 228 g_test_cryptohome_library = impl;
335 } 229 }
336 230
337 // static 231 // static
338 CryptohomeLibrary* CryptohomeLibrary::GetTestImpl() { 232 CryptohomeLibrary* CryptohomeLibrary::GetTestImpl() {
339 return new CryptohomeLibraryStubImpl(); 233 return new CryptohomeLibraryStubImpl();
340 } 234 }
341 235
342 } // namespace chromeos 236 namespace cryptohome_util {
237
238 bool TpmIsEnabled() {
239 bool result = false;
240 DBusThreadManager::Get()->GetCryptohomeClient()->CallTpmIsEnabledAndBlock(
241 &result);
242 return result;
243 }
244
245 bool TpmIsOwned() {
246 bool result = false;
247 DBusThreadManager::Get()->GetCryptohomeClient()->CallTpmIsOwnedAndBlock(
248 &result);
249 return result;
250 }
251
252 bool TpmIsBeingOwned() {
253 bool result = false;
254 DBusThreadManager::Get()->GetCryptohomeClient()->
255 CallTpmIsBeingOwnedAndBlock(&result);
256 return result;
257 }
258
259 bool InstallAttributesGet(
260 const std::string& name, std::string* value) {
261 std::vector<uint8> buf;
262 bool success = false;
263 DBusThreadManager::Get()->GetCryptohomeClient()->
264 InstallAttributesGet(name, &buf, &success);
265 if (success) {
266 // Cryptohome returns 'buf' with a terminating '\0' character.
267 DCHECK(!buf.empty());
268 DCHECK_EQ(buf.back(), 0);
269 value->assign(reinterpret_cast<char*>(buf.data()), buf.size() - 1);
270 }
271 return success;
272 }
273
274 bool InstallAttributesSet(
275 const std::string& name, const std::string& value) {
276 std::vector<uint8> buf(value.c_str(), value.c_str() + value.size() + 1);
277 bool success = false;
278 DBusThreadManager::Get()->GetCryptohomeClient()->
279 InstallAttributesSet(name, buf, &success);
280 return success;
281 }
282
283 bool InstallAttributesFinalize() {
284 bool success = false;
285 DBusThreadManager::Get()->GetCryptohomeClient()->
286 InstallAttributesFinalize(&success);
287 return success;
288 }
289
290 bool InstallAttributesIsInvalid() {
291 bool result = false;
292 DBusThreadManager::Get()->GetCryptohomeClient()->
293 InstallAttributesIsInvalid(&result);
294 return result;
295 }
296
297 bool InstallAttributesIsFirstInstall() {
298 bool result = false;
299 DBusThreadManager::Get()->GetCryptohomeClient()->
300 InstallAttributesIsFirstInstall(&result);
301 return result;
302 }
303
304 } // namespace cryptohome_util
305 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/cryptohome/cryptohome_library.h ('k') | chromeos/cryptohome/mock_cryptohome_library.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698