OLD | NEW |
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/dbus/cryptohome_client.h" | 5 #include "chromeos/dbus/cryptohome_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "chromeos/dbus/blocking_method_caller.h" | 9 #include "chromeos/dbus/blocking_method_caller.h" |
10 #include "dbus/bus.h" | 10 #include "dbus/bus.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 proxy_->ConnectToSignal( | 35 proxy_->ConnectToSignal( |
36 cryptohome::kCryptohomeInterface, | 36 cryptohome::kCryptohomeInterface, |
37 cryptohome::kSignalAsyncCallStatus, | 37 cryptohome::kSignalAsyncCallStatus, |
38 base::Bind(&CryptohomeClientImpl::OnAsyncCallStatus, | 38 base::Bind(&CryptohomeClientImpl::OnAsyncCallStatus, |
39 weak_ptr_factory_.GetWeakPtr()), | 39 weak_ptr_factory_.GetWeakPtr()), |
40 base::Bind(&CryptohomeClientImpl::OnSignalConnected, | 40 base::Bind(&CryptohomeClientImpl::OnSignalConnected, |
41 weak_ptr_factory_.GetWeakPtr())); | 41 weak_ptr_factory_.GetWeakPtr())); |
42 } | 42 } |
43 | 43 |
44 // CryptohomeClient override. | 44 // CryptohomeClient override. |
45 virtual void SetAsyncCallStatusHandler(AsyncCallStatusHandler handler) | 45 virtual void SetAsyncCallStatusHandler(const AsyncCallStatusHandler& handler) |
46 OVERRIDE { | 46 OVERRIDE { |
47 async_call_status_handler_ = handler; | 47 async_call_status_handler_ = handler; |
48 } | 48 } |
49 | 49 |
50 // CryptohomeClient override. | 50 // CryptohomeClient override. |
51 virtual void ResetAsyncCallStatusHandler() OVERRIDE { | 51 virtual void ResetAsyncCallStatusHandler() OVERRIDE { |
52 async_call_status_handler_.Reset(); | 52 async_call_status_handler_.Reset(); |
53 } | 53 } |
54 | 54 |
55 // CryptohomeClient override. | 55 // CryptohomeClient override. |
56 virtual bool IsMounted(bool* is_mounted) OVERRIDE { | 56 virtual bool IsMounted(bool* is_mounted) OVERRIDE { |
57 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeIsMounted); | 57 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeIsMounted); |
58 return CallBoolMethodAndBlock(&method_call, is_mounted); | 58 return CallBoolMethodAndBlock(&method_call, is_mounted); |
59 } | 59 } |
60 | 60 |
61 // CryptohomeClient override. | 61 // CryptohomeClient override. |
62 virtual bool Unmount(bool *success) OVERRIDE { | 62 virtual bool Unmount(bool *success) OVERRIDE { |
63 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeUnmount); | 63 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeUnmount); |
64 return CallBoolMethodAndBlock(&method_call, success); | 64 return CallBoolMethodAndBlock(&method_call, success); |
65 } | 65 } |
66 | 66 |
67 // CryptohomeClient override. | 67 // CryptohomeClient override. |
68 virtual void AsyncCheckKey(const std::string& username, | 68 virtual void AsyncCheckKey(const std::string& username, |
69 const std::string& key, | 69 const std::string& key, |
70 AsyncMethodCallback callback) OVERRIDE { | 70 const AsyncMethodCallback& callback) OVERRIDE { |
71 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncCheckKey); | 71 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncCheckKey); |
72 dbus::MessageWriter writer(&method_call); | 72 dbus::MessageWriter writer(&method_call); |
73 writer.AppendString(username); | 73 writer.AppendString(username); |
74 writer.AppendString(key); | 74 writer.AppendString(key); |
75 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 75 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
76 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 76 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
77 weak_ptr_factory_.GetWeakPtr(), | 77 weak_ptr_factory_.GetWeakPtr(), |
78 callback)); | 78 callback)); |
79 } | 79 } |
80 | 80 |
81 // CryptohomeClient override. | 81 // CryptohomeClient override. |
82 virtual void AsyncMigrateKey(const std::string& username, | 82 virtual void AsyncMigrateKey(const std::string& username, |
83 const std::string& from_key, | 83 const std::string& from_key, |
84 const std::string& to_key, | 84 const std::string& to_key, |
85 AsyncMethodCallback callback) OVERRIDE { | 85 const AsyncMethodCallback& callback) OVERRIDE { |
86 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncMigrateKey); | 86 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncMigrateKey); |
87 dbus::MessageWriter writer(&method_call); | 87 dbus::MessageWriter writer(&method_call); |
88 writer.AppendString(username); | 88 writer.AppendString(username); |
89 writer.AppendString(from_key); | 89 writer.AppendString(from_key); |
90 writer.AppendString(to_key); | 90 writer.AppendString(to_key); |
91 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 91 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
92 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 92 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
93 weak_ptr_factory_.GetWeakPtr(), | 93 weak_ptr_factory_.GetWeakPtr(), |
94 callback)); | 94 callback)); |
95 } | 95 } |
96 | 96 |
97 // CryptohomeClient override. | 97 // CryptohomeClient override. |
98 virtual void AsyncRemove(const std::string& username, | 98 virtual void AsyncRemove(const std::string& username, |
99 AsyncMethodCallback callback) OVERRIDE { | 99 const AsyncMethodCallback& callback) OVERRIDE { |
100 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncRemove); | 100 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncRemove); |
101 dbus::MessageWriter writer(&method_call); | 101 dbus::MessageWriter writer(&method_call); |
102 writer.AppendString(username); | 102 writer.AppendString(username); |
103 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 103 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
104 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 104 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
105 weak_ptr_factory_.GetWeakPtr(), | 105 weak_ptr_factory_.GetWeakPtr(), |
106 callback)); | 106 callback)); |
107 } | 107 } |
108 | 108 |
109 // CryptohomeClient override. | 109 // CryptohomeClient override. |
110 virtual bool GetSystemSalt(std::vector<uint8>* salt) OVERRIDE { | 110 virtual bool GetSystemSalt(std::vector<uint8>* salt) OVERRIDE { |
111 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeGetSystemSalt); | 111 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeGetSystemSalt); |
112 scoped_ptr<dbus::Response> response( | 112 scoped_ptr<dbus::Response> response( |
113 blocking_method_caller_.CallMethodAndBlock(&method_call)); | 113 blocking_method_caller_.CallMethodAndBlock(&method_call)); |
114 if (!response.get()) | 114 if (!response.get()) |
115 return false; | 115 return false; |
116 dbus::MessageReader reader(response.get()); | 116 dbus::MessageReader reader(response.get()); |
117 uint8* bytes = NULL; | 117 uint8* bytes = NULL; |
118 size_t length = 0; | 118 size_t length = 0; |
119 if (!reader.PopArrayOfBytes(&bytes, &length)) | 119 if (!reader.PopArrayOfBytes(&bytes, &length)) |
120 return false; | 120 return false; |
121 salt->assign(bytes, bytes + length); | 121 salt->assign(bytes, bytes + length); |
122 return true; | 122 return true; |
123 } | 123 } |
124 | 124 |
125 // CryptohomeClient override. | 125 // CryptohomeClient override. |
126 virtual void AsyncMount(const std::string& username, | 126 virtual void AsyncMount(const std::string& username, |
127 const std::string& key, | 127 const std::string& key, |
128 const bool create_if_missing, | 128 const bool create_if_missing, |
129 AsyncMethodCallback callback) OVERRIDE { | 129 const AsyncMethodCallback& callback) OVERRIDE { |
130 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncMount); | 130 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncMount); |
131 dbus::MessageWriter writer(&method_call); | 131 dbus::MessageWriter writer(&method_call); |
132 writer.AppendString(username); | 132 writer.AppendString(username); |
133 writer.AppendString(key); | 133 writer.AppendString(key); |
134 writer.AppendBool(create_if_missing); | 134 writer.AppendBool(create_if_missing); |
135 writer.AppendBool(false); // deprecated_replace_tracked_subdirectories | 135 writer.AppendBool(false); // deprecated_replace_tracked_subdirectories |
136 // deprecated_tracked_subdirectories | 136 // deprecated_tracked_subdirectories |
137 writer.AppendArrayOfStrings(std::vector<std::string>()); | 137 writer.AppendArrayOfStrings(std::vector<std::string>()); |
138 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 138 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
139 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 139 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
140 weak_ptr_factory_.GetWeakPtr(), | 140 weak_ptr_factory_.GetWeakPtr(), |
141 callback)); | 141 callback)); |
142 } | 142 } |
143 | 143 |
144 // CryptohomeClient override. | 144 // CryptohomeClient override. |
145 virtual void AsyncMountGuest(AsyncMethodCallback callback) OVERRIDE { | 145 virtual void AsyncMountGuest(const AsyncMethodCallback& callback) OVERRIDE { |
146 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncMountGuest); | 146 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeAsyncMountGuest); |
147 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 147 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
148 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 148 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
149 weak_ptr_factory_.GetWeakPtr(), | 149 weak_ptr_factory_.GetWeakPtr(), |
150 callback)); | 150 callback)); |
151 } | 151 } |
152 | 152 |
153 // CryptohomeClient override. | 153 // CryptohomeClient override. |
154 virtual bool TpmIsReady(bool* ready) OVERRIDE { | 154 virtual bool TpmIsReady(bool* ready) OVERRIDE { |
155 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsReady); | 155 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsReady); |
156 return CallBoolMethodAndBlock(&method_call, ready); | 156 return CallBoolMethodAndBlock(&method_call, ready); |
157 } | 157 } |
158 | 158 |
159 // CryptohomeClient override. | 159 // CryptohomeClient override. |
160 virtual void TpmIsEnabled(BoolMethodCallback callback) OVERRIDE { | 160 virtual void TpmIsEnabled(const BoolMethodCallback& callback) OVERRIDE { |
161 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsEnabled); | 161 INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeTpmIsEnabled); |
162 proxy_->CallMethod( | 162 proxy_->CallMethod( |
163 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 163 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
164 base::Bind( | 164 base::Bind( |
165 &CryptohomeClientImpl::OnBoolMethod, | 165 &CryptohomeClientImpl::OnBoolMethod, |
166 weak_ptr_factory_.GetWeakPtr(), | 166 weak_ptr_factory_.GetWeakPtr(), |
167 callback)); | 167 callback)); |
168 } | 168 } |
169 | 169 |
170 // CryptohomeClient override. | 170 // CryptohomeClient override. |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 // CryptohomeClient override. | 212 // CryptohomeClient override. |
213 virtual bool TpmClearStoredPassword() OVERRIDE { | 213 virtual bool TpmClearStoredPassword() OVERRIDE { |
214 INITIALIZE_METHOD_CALL(method_call, | 214 INITIALIZE_METHOD_CALL(method_call, |
215 cryptohome::kCryptohomeTpmClearStoredPassword); | 215 cryptohome::kCryptohomeTpmClearStoredPassword); |
216 scoped_ptr<dbus::Response> response( | 216 scoped_ptr<dbus::Response> response( |
217 blocking_method_caller_.CallMethodAndBlock(&method_call)); | 217 blocking_method_caller_.CallMethodAndBlock(&method_call)); |
218 return response.get() != NULL; | 218 return response.get() != NULL; |
219 } | 219 } |
220 | 220 |
221 // CryptohomeClient override. | 221 // CryptohomeClient override. |
222 virtual void Pkcs11IsTpmTokenReady(BoolMethodCallback callback) | 222 virtual void Pkcs11IsTpmTokenReady(const BoolMethodCallback& callback) |
223 OVERRIDE { | 223 OVERRIDE { |
224 INITIALIZE_METHOD_CALL(method_call, | 224 INITIALIZE_METHOD_CALL(method_call, |
225 cryptohome::kCryptohomePkcs11IsTpmTokenReady); | 225 cryptohome::kCryptohomePkcs11IsTpmTokenReady); |
226 proxy_->CallMethod( | 226 proxy_->CallMethod( |
227 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 227 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
228 base::Bind( | 228 base::Bind( |
229 &CryptohomeClientImpl::OnBoolMethod, | 229 &CryptohomeClientImpl::OnBoolMethod, |
230 weak_ptr_factory_.GetWeakPtr(), | 230 weak_ptr_factory_.GetWeakPtr(), |
231 callback)); | 231 callback)); |
232 } | 232 } |
233 | 233 |
234 // CryptohomeClient override. | 234 // CryptohomeClient override. |
235 virtual void Pkcs11GetTpmTokenInfo(Pkcs11GetTpmTokenInfoCallback callback) | 235 virtual void Pkcs11GetTpmTokenInfo( |
236 OVERRIDE { | 236 const Pkcs11GetTpmTokenInfoCallback& callback) OVERRIDE { |
237 INITIALIZE_METHOD_CALL(method_call, | 237 INITIALIZE_METHOD_CALL(method_call, |
238 cryptohome::kCryptohomePkcs11GetTpmTokenInfo); | 238 cryptohome::kCryptohomePkcs11GetTpmTokenInfo); |
239 proxy_->CallMethod( | 239 proxy_->CallMethod( |
240 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 240 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
241 base::Bind( | 241 base::Bind( |
242 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo, | 242 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo, |
243 weak_ptr_factory_.GetWeakPtr(), | 243 weak_ptr_factory_.GetWeakPtr(), |
244 callback)); | 244 callback)); |
245 } | 245 } |
246 | 246 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 // CryptohomeClient override. | 302 // CryptohomeClient override. |
303 virtual bool InstallAttributesIsFirstInstall(bool* is_first_install) OVERRIDE | 303 virtual bool InstallAttributesIsFirstInstall(bool* is_first_install) OVERRIDE |
304 { | 304 { |
305 INITIALIZE_METHOD_CALL( | 305 INITIALIZE_METHOD_CALL( |
306 method_call, cryptohome::kCryptohomeInstallAttributesIsFirstInstall); | 306 method_call, cryptohome::kCryptohomeInstallAttributesIsFirstInstall); |
307 return CallBoolMethodAndBlock(&method_call, is_first_install); | 307 return CallBoolMethodAndBlock(&method_call, is_first_install); |
308 } | 308 } |
309 | 309 |
310 private: | 310 private: |
311 // Handles the result of AsyncXXX methods. | 311 // Handles the result of AsyncXXX methods. |
312 void OnAsyncMethodCall(AsyncMethodCallback callback, | 312 void OnAsyncMethodCall(const AsyncMethodCallback& callback, |
313 dbus::Response* response) { | 313 dbus::Response* response) { |
314 if (!response) | 314 if (!response) |
315 return; | 315 return; |
316 dbus::MessageReader reader(response); | 316 dbus::MessageReader reader(response); |
317 int async_id = 0; | 317 int async_id = 0; |
318 if (!reader.PopInt32(&async_id)) { | 318 if (!reader.PopInt32(&async_id)) { |
319 LOG(ERROR) << "Invalid response: " << response->ToString(); | 319 LOG(ERROR) << "Invalid response: " << response->ToString(); |
320 return; | 320 return; |
321 } | 321 } |
322 callback.Run(async_id); | 322 callback.Run(async_id); |
323 } | 323 } |
324 | 324 |
325 // Calls a method with a bool value reult and block. | 325 // Calls a method with a bool value reult and block. |
326 bool CallBoolMethodAndBlock(dbus::MethodCall* method_call, | 326 bool CallBoolMethodAndBlock(dbus::MethodCall* method_call, |
327 bool* result) { | 327 bool* result) { |
328 scoped_ptr<dbus::Response> response( | 328 scoped_ptr<dbus::Response> response( |
329 blocking_method_caller_.CallMethodAndBlock(method_call)); | 329 blocking_method_caller_.CallMethodAndBlock(method_call)); |
330 if (!response.get()) | 330 if (!response.get()) |
331 return false; | 331 return false; |
332 dbus::MessageReader reader(response.get()); | 332 dbus::MessageReader reader(response.get()); |
333 return reader.PopBool(result); | 333 return reader.PopBool(result); |
334 } | 334 } |
335 | 335 |
336 // Handles responses for methods with a bool value result. | 336 // Handles responses for methods with a bool value result. |
337 void OnBoolMethod(BoolMethodCallback callback, | 337 void OnBoolMethod(const BoolMethodCallback& callback, |
338 dbus::Response* response) { | 338 dbus::Response* response) { |
339 if (!response) { | 339 if (!response) { |
340 callback.Run(DBUS_METHOD_CALL_FAILURE, false); | 340 callback.Run(DBUS_METHOD_CALL_FAILURE, false); |
341 return; | 341 return; |
342 } | 342 } |
343 dbus::MessageReader reader(response); | 343 dbus::MessageReader reader(response); |
344 bool result = false; | 344 bool result = false; |
345 if (!reader.PopBool(&result)) { | 345 if (!reader.PopBool(&result)) { |
346 callback.Run(DBUS_METHOD_CALL_FAILURE, false); | 346 callback.Run(DBUS_METHOD_CALL_FAILURE, false); |
347 return; | 347 return; |
348 } | 348 } |
349 callback.Run(DBUS_METHOD_CALL_SUCCESS, result); | 349 callback.Run(DBUS_METHOD_CALL_SUCCESS, result); |
350 } | 350 } |
351 | 351 |
352 // Handles responses for Pkcs11GetTpmtTokenInfo. | 352 // Handles responses for Pkcs11GetTpmtTokenInfo. |
353 void OnPkcs11GetTpmTokenInfo(Pkcs11GetTpmTokenInfoCallback callback, | 353 void OnPkcs11GetTpmTokenInfo(const Pkcs11GetTpmTokenInfoCallback& callback, |
354 dbus::Response* response) { | 354 dbus::Response* response) { |
355 if (!response) { | 355 if (!response) { |
356 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string(), std::string()); | 356 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string(), std::string()); |
357 return; | 357 return; |
358 } | 358 } |
359 dbus::MessageReader reader(response); | 359 dbus::MessageReader reader(response); |
360 std::string label; | 360 std::string label; |
361 std::string user_pin; | 361 std::string user_pin; |
362 if (!reader.PopString(&label) || !reader.PopString(&user_pin)) { | 362 if (!reader.PopString(&label) || !reader.PopString(&user_pin)) { |
363 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string(), std::string()); | 363 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string(), std::string()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 CryptohomeClientStubImpl() | 404 CryptohomeClientStubImpl() |
405 : weak_ptr_factory_(this), | 405 : weak_ptr_factory_(this), |
406 async_call_id_(1), | 406 async_call_id_(1), |
407 tpm_is_ready_counter_(0), | 407 tpm_is_ready_counter_(0), |
408 locked_(false) { | 408 locked_(false) { |
409 } | 409 } |
410 | 410 |
411 virtual ~CryptohomeClientStubImpl() {} | 411 virtual ~CryptohomeClientStubImpl() {} |
412 | 412 |
413 // CryptohomeClient override. | 413 // CryptohomeClient override. |
414 virtual void SetAsyncCallStatusHandler(AsyncCallStatusHandler handler) | 414 virtual void SetAsyncCallStatusHandler(const AsyncCallStatusHandler& handler) |
415 OVERRIDE { | 415 OVERRIDE { |
416 async_call_status_handler_ = handler; | 416 async_call_status_handler_ = handler; |
417 } | 417 } |
418 | 418 |
419 // CryptohomeClient override. | 419 // CryptohomeClient override. |
420 virtual void ResetAsyncCallStatusHandler() OVERRIDE { | 420 virtual void ResetAsyncCallStatusHandler() OVERRIDE { |
421 async_call_status_handler_.Reset(); | 421 async_call_status_handler_.Reset(); |
422 } | 422 } |
423 | 423 |
424 // CryptohomeClient override. | 424 // CryptohomeClient override. |
425 virtual bool IsMounted(bool* is_mounted) OVERRIDE { | 425 virtual bool IsMounted(bool* is_mounted) OVERRIDE { |
426 *is_mounted = true; | 426 *is_mounted = true; |
427 return true; | 427 return true; |
428 } | 428 } |
429 | 429 |
430 // CryptohomeClient override. | 430 // CryptohomeClient override. |
431 virtual bool Unmount(bool* success) OVERRIDE { | 431 virtual bool Unmount(bool* success) OVERRIDE { |
432 *success = true; | 432 *success = true; |
433 return true; | 433 return true; |
434 } | 434 } |
435 | 435 |
436 // CryptohomeClient override. | 436 // CryptohomeClient override. |
437 virtual void AsyncCheckKey(const std::string& username, | 437 virtual void AsyncCheckKey(const std::string& username, |
438 const std::string& key, | 438 const std::string& key, |
439 AsyncMethodCallback callback) OVERRIDE { | 439 const AsyncMethodCallback& callback) OVERRIDE { |
440 ReturnAsyncMethodResult(callback); | 440 ReturnAsyncMethodResult(callback); |
441 } | 441 } |
442 | 442 |
443 // CryptohomeClient override. | 443 // CryptohomeClient override. |
444 virtual void AsyncMigrateKey(const std::string& username, | 444 virtual void AsyncMigrateKey(const std::string& username, |
445 const std::string& from_key, | 445 const std::string& from_key, |
446 const std::string& to_key, | 446 const std::string& to_key, |
447 AsyncMethodCallback callback) OVERRIDE { | 447 const AsyncMethodCallback& callback) OVERRIDE { |
448 ReturnAsyncMethodResult(callback); | 448 ReturnAsyncMethodResult(callback); |
449 } | 449 } |
450 | 450 |
451 // CryptohomeClient override. | 451 // CryptohomeClient override. |
452 virtual void AsyncRemove(const std::string& username, | 452 virtual void AsyncRemove(const std::string& username, |
453 AsyncMethodCallback callback) OVERRIDE { | 453 const AsyncMethodCallback& callback) OVERRIDE { |
454 ReturnAsyncMethodResult(callback); | 454 ReturnAsyncMethodResult(callback); |
455 } | 455 } |
456 | 456 |
457 // CryptohomeClient override. | 457 // CryptohomeClient override. |
458 virtual bool GetSystemSalt(std::vector<uint8>* salt) OVERRIDE { | 458 virtual bool GetSystemSalt(std::vector<uint8>* salt) OVERRIDE { |
459 const char kStubSystemSalt[] = "stub_system_salt"; | 459 const char kStubSystemSalt[] = "stub_system_salt"; |
460 salt->assign(kStubSystemSalt, | 460 salt->assign(kStubSystemSalt, |
461 kStubSystemSalt + arraysize(kStubSystemSalt)); | 461 kStubSystemSalt + arraysize(kStubSystemSalt)); |
462 return true; | 462 return true; |
463 } | 463 } |
464 | 464 |
465 // CryptohomeClient override. | 465 // CryptohomeClient override. |
466 virtual void AsyncMount(const std::string& username, | 466 virtual void AsyncMount(const std::string& username, |
467 const std::string& key, | 467 const std::string& key, |
468 const bool create_if_missing, | 468 const bool create_if_missing, |
469 AsyncMethodCallback callback) OVERRIDE { | 469 const AsyncMethodCallback& callback) OVERRIDE { |
470 ReturnAsyncMethodResult(callback); | 470 ReturnAsyncMethodResult(callback); |
471 } | 471 } |
472 | 472 |
473 // CryptohomeClient override. | 473 // CryptohomeClient override. |
474 virtual void AsyncMountGuest(AsyncMethodCallback callback) OVERRIDE { | 474 virtual void AsyncMountGuest(const AsyncMethodCallback& callback) OVERRIDE { |
475 ReturnAsyncMethodResult(callback); | 475 ReturnAsyncMethodResult(callback); |
476 } | 476 } |
477 | 477 |
478 // CryptohomeClient override. | 478 // CryptohomeClient override. |
479 virtual bool TpmIsReady(bool* ready) OVERRIDE { | 479 virtual bool TpmIsReady(bool* ready) OVERRIDE { |
480 *ready = (tpm_is_ready_counter_++ > 20); | 480 *ready = (tpm_is_ready_counter_++ > 20); |
481 return true; | 481 return true; |
482 } | 482 } |
483 | 483 |
484 // CryptohomeClient override. | 484 // CryptohomeClient override. |
485 virtual void TpmIsEnabled(BoolMethodCallback callback) OVERRIDE { | 485 virtual void TpmIsEnabled(const BoolMethodCallback& callback) OVERRIDE { |
486 MessageLoop::current()->PostTask( | 486 MessageLoop::current()->PostTask( |
487 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); | 487 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
488 } | 488 } |
489 | 489 |
490 // CryptohomeClient override. | 490 // CryptohomeClient override. |
491 virtual bool CallTpmIsEnabledAndBlock(bool* enabled) OVERRIDE { | 491 virtual bool CallTpmIsEnabledAndBlock(bool* enabled) OVERRIDE { |
492 *enabled = true; | 492 *enabled = true; |
493 return true; | 493 return true; |
494 } | 494 } |
495 | 495 |
(...skipping 16 matching lines...) Expand all Loading... |
512 return true; | 512 return true; |
513 } | 513 } |
514 | 514 |
515 // CryptohomeClient override. | 515 // CryptohomeClient override. |
516 virtual bool TpmCanAttemptOwnership() OVERRIDE { return true; } | 516 virtual bool TpmCanAttemptOwnership() OVERRIDE { return true; } |
517 | 517 |
518 // CryptohomeClient override. | 518 // CryptohomeClient override. |
519 virtual bool TpmClearStoredPassword() OVERRIDE { return true; } | 519 virtual bool TpmClearStoredPassword() OVERRIDE { return true; } |
520 | 520 |
521 // CryptohomeClient override. | 521 // CryptohomeClient override. |
522 virtual void Pkcs11IsTpmTokenReady(BoolMethodCallback callback) OVERRIDE { | 522 virtual void Pkcs11IsTpmTokenReady( |
| 523 const BoolMethodCallback& callback) OVERRIDE { |
523 MessageLoop::current()->PostTask( | 524 MessageLoop::current()->PostTask( |
524 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); | 525 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
525 } | 526 } |
526 | 527 |
527 // CryptohomeClient override. | 528 // CryptohomeClient override. |
528 virtual void Pkcs11GetTpmTokenInfo( | 529 virtual void Pkcs11GetTpmTokenInfo( |
529 Pkcs11GetTpmTokenInfoCallback callback) OVERRIDE { | 530 const Pkcs11GetTpmTokenInfoCallback& callback) OVERRIDE { |
530 const char kStubLabel[] = "Stub TPM Token"; | 531 const char kStubLabel[] = "Stub TPM Token"; |
531 const char kStubUserPin[] = "012345"; | 532 const char kStubUserPin[] = "012345"; |
532 MessageLoop::current()->PostTask( | 533 MessageLoop::current()->PostTask( |
533 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, kStubLabel, | 534 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, kStubLabel, |
534 kStubUserPin)); | 535 kStubUserPin)); |
535 } | 536 } |
536 | 537 |
537 // CryptohomeClient override. | 538 // CryptohomeClient override. |
538 virtual bool InstallAttributesGet(const std::string& name, | 539 virtual bool InstallAttributesGet(const std::string& name, |
539 std::vector<uint8>* value, | 540 std::vector<uint8>* value, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 | 579 |
579 // CryptohomeClient override. | 580 // CryptohomeClient override. |
580 virtual bool InstallAttributesIsFirstInstall(bool* is_first_install) OVERRIDE | 581 virtual bool InstallAttributesIsFirstInstall(bool* is_first_install) OVERRIDE |
581 { | 582 { |
582 *is_first_install = !locked_; | 583 *is_first_install = !locked_; |
583 return true; | 584 return true; |
584 } | 585 } |
585 | 586 |
586 private: | 587 private: |
587 // Posts tasks which return fake results to the UI thread. | 588 // Posts tasks which return fake results to the UI thread. |
588 void ReturnAsyncMethodResult(AsyncMethodCallback callback) { | 589 void ReturnAsyncMethodResult(const AsyncMethodCallback& callback) { |
589 MessageLoop::current()->PostTask( | 590 MessageLoop::current()->PostTask( |
590 FROM_HERE, | 591 FROM_HERE, |
591 base::Bind(&CryptohomeClientStubImpl::ReturnAsyncMethodResultInternal, | 592 base::Bind(&CryptohomeClientStubImpl::ReturnAsyncMethodResultInternal, |
592 weak_ptr_factory_.GetWeakPtr(), | 593 weak_ptr_factory_.GetWeakPtr(), |
593 callback)); | 594 callback)); |
594 } | 595 } |
595 | 596 |
596 // This method is used to implement ReturnAsyncMethodResult. | 597 // This method is used to implement ReturnAsyncMethodResult. |
597 void ReturnAsyncMethodResultInternal(AsyncMethodCallback callback) { | 598 void ReturnAsyncMethodResultInternal(const AsyncMethodCallback& callback) { |
598 callback.Run(async_call_id_); | 599 callback.Run(async_call_id_); |
599 if (!async_call_status_handler_.is_null()) { | 600 if (!async_call_status_handler_.is_null()) { |
600 MessageLoop::current()->PostTask( | 601 MessageLoop::current()->PostTask( |
601 FROM_HERE, | 602 FROM_HERE, |
602 base::Bind(async_call_status_handler_, | 603 base::Bind(async_call_status_handler_, |
603 async_call_id_, | 604 async_call_id_, |
604 true, | 605 true, |
605 cryptohome::MOUNT_ERROR_NONE)); | 606 cryptohome::MOUNT_ERROR_NONE)); |
606 } | 607 } |
607 ++async_call_id_; | 608 ++async_call_id_; |
(...skipping 21 matching lines...) Expand all Loading... |
629 // static | 630 // static |
630 CryptohomeClient* CryptohomeClient::Create(DBusClientImplementationType type, | 631 CryptohomeClient* CryptohomeClient::Create(DBusClientImplementationType type, |
631 dbus::Bus* bus) { | 632 dbus::Bus* bus) { |
632 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 633 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
633 return new CryptohomeClientImpl(bus); | 634 return new CryptohomeClientImpl(bus); |
634 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); | 635 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); |
635 return new CryptohomeClientStubImpl(); | 636 return new CryptohomeClientStubImpl(); |
636 } | 637 } |
637 | 638 |
638 } // namespace chromeos | 639 } // namespace chromeos |
OLD | NEW |