| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/fake_cryptohome_client.h" | 5 #include "chromeos/dbus/fake_cryptohome_client.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream.h" | 25 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream.h" |
| 26 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite
.h" | 26 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite
.h" |
| 27 | 27 |
| 28 namespace chromeos { | 28 namespace chromeos { |
| 29 | 29 |
| 30 namespace { | 30 namespace { |
| 31 // Signature nonces are twenty bytes. This matches the attestation code. | 31 // Signature nonces are twenty bytes. This matches the attestation code. |
| 32 constexpr char kTwentyBytesNonce[] = "+addtwentybytesnonce"; | 32 constexpr char kTwentyBytesNonce[] = "+addtwentybytesnonce"; |
| 33 // A symbolic signature. | 33 // A symbolic signature. |
| 34 constexpr char kSignature[] = "signed"; | 34 constexpr char kSignature[] = "signed"; |
| 35 // Interval to update the progress of MigrateToDircrypto in milliseconds. |
| 36 constexpr int kDircryptoMigrationUpdateIntervalMs = 200; |
| 37 // The number of updates the MigrateToDircrypto will send before it completes. |
| 38 constexpr uint64_t kDircryptoMigrationMaxProgress = 15; |
| 35 } // namespace | 39 } // namespace |
| 36 | 40 |
| 37 FakeCryptohomeClient::FakeCryptohomeClient() | 41 FakeCryptohomeClient::FakeCryptohomeClient() |
| 38 : service_is_available_(true), | 42 : service_is_available_(true), |
| 39 async_call_id_(1), | 43 async_call_id_(1), |
| 40 unmount_result_(true), | 44 unmount_result_(true), |
| 41 system_salt_(GetStubSystemSalt()), | 45 system_salt_(GetStubSystemSalt()), |
| 42 weak_ptr_factory_(this) { | 46 weak_ptr_factory_(this) { |
| 43 base::FilePath cache_path; | 47 base::FilePath cache_path; |
| 44 locked_ = PathService::Get(chromeos::FILE_INSTALL_ATTRIBUTES, &cache_path) && | 48 locked_ = PathService::Get(chromeos::FILE_INSTALL_ATTRIBUTES, &cache_path) && |
| (...skipping 14 matching lines...) Expand all Loading... |
| 59 | 63 |
| 60 void FakeCryptohomeClient::ResetAsyncCallStatusHandlers() { | 64 void FakeCryptohomeClient::ResetAsyncCallStatusHandlers() { |
| 61 async_call_status_handler_.Reset(); | 65 async_call_status_handler_.Reset(); |
| 62 async_call_status_data_handler_.Reset(); | 66 async_call_status_data_handler_.Reset(); |
| 63 } | 67 } |
| 64 | 68 |
| 65 void FakeCryptohomeClient::SetLowDiskSpaceHandler( | 69 void FakeCryptohomeClient::SetLowDiskSpaceHandler( |
| 66 const LowDiskSpaceHandler& handler) {} | 70 const LowDiskSpaceHandler& handler) {} |
| 67 | 71 |
| 68 void FakeCryptohomeClient::SetDircryptoMigrationProgressHandler( | 72 void FakeCryptohomeClient::SetDircryptoMigrationProgressHandler( |
| 69 const DircryptoMigrationProgessHandler& handler) {} | 73 const DircryptoMigrationProgessHandler& handler) { |
| 74 dircrypto_migration_progress_handler_ = handler; |
| 75 } |
| 70 | 76 |
| 71 void FakeCryptohomeClient::WaitForServiceToBeAvailable( | 77 void FakeCryptohomeClient::WaitForServiceToBeAvailable( |
| 72 const WaitForServiceToBeAvailableCallback& callback) { | 78 const WaitForServiceToBeAvailableCallback& callback) { |
| 73 if (service_is_available_) { | 79 if (service_is_available_) { |
| 74 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, | 80 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
| 75 base::Bind(callback, true)); | 81 base::Bind(callback, true)); |
| 76 } else { | 82 } else { |
| 77 pending_wait_for_service_to_be_available_callbacks_.push_back(callback); | 83 pending_wait_for_service_to_be_available_callbacks_.push_back(callback); |
| 78 } | 84 } |
| 79 } | 85 } |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 cryptohome::BaseReply reply; | 588 cryptohome::BaseReply reply; |
| 583 ReturnProtobufMethodCallback(reply, callback); | 589 ReturnProtobufMethodCallback(reply, callback); |
| 584 } | 590 } |
| 585 | 591 |
| 586 void FakeCryptohomeClient::MigrateToDircrypto( | 592 void FakeCryptohomeClient::MigrateToDircrypto( |
| 587 const cryptohome::Identification& cryptohome_id, | 593 const cryptohome::Identification& cryptohome_id, |
| 588 const cryptohome::AuthorizationRequest& auth, | 594 const cryptohome::AuthorizationRequest& auth, |
| 589 const VoidDBusMethodCallback& callback) { | 595 const VoidDBusMethodCallback& callback) { |
| 590 base::ThreadTaskRunnerHandle::Get()->PostTask( | 596 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 591 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); | 597 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); |
| 598 dircrypto_migration_progress_ = 0; |
| 599 dircrypto_migration_progress_timer_.Start( |
| 600 FROM_HERE, |
| 601 base::TimeDelta::FromMilliseconds(kDircryptoMigrationUpdateIntervalMs), |
| 602 this, &FakeCryptohomeClient::OnDircryptoMigrationProgressUpdated); |
| 592 } | 603 } |
| 593 | 604 |
| 594 void FakeCryptohomeClient::SetServiceIsAvailable(bool is_available) { | 605 void FakeCryptohomeClient::SetServiceIsAvailable(bool is_available) { |
| 595 service_is_available_ = is_available; | 606 service_is_available_ = is_available; |
| 596 if (is_available) { | 607 if (is_available) { |
| 597 std::vector<WaitForServiceToBeAvailableCallback> callbacks; | 608 std::vector<WaitForServiceToBeAvailableCallback> callbacks; |
| 598 callbacks.swap(pending_wait_for_service_to_be_available_callbacks_); | 609 callbacks.swap(pending_wait_for_service_to_be_available_callbacks_); |
| 599 for (size_t i = 0; i < callbacks.size(); ++i) | 610 for (size_t i = 0; i < callbacks.size(); ++i) |
| 600 callbacks[i].Run(is_available); | 611 callbacks[i].Run(is_available); |
| 601 } | 612 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 648 const std::string& data) { | 659 const std::string& data) { |
| 649 callback.Run(async_call_id_); | 660 callback.Run(async_call_id_); |
| 650 if (!async_call_status_data_handler_.is_null()) { | 661 if (!async_call_status_data_handler_.is_null()) { |
| 651 base::ThreadTaskRunnerHandle::Get()->PostTask( | 662 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 652 FROM_HERE, base::Bind(async_call_status_data_handler_, async_call_id_, | 663 FROM_HERE, base::Bind(async_call_status_data_handler_, async_call_id_, |
| 653 true, data)); | 664 true, data)); |
| 654 } | 665 } |
| 655 ++async_call_id_; | 666 ++async_call_id_; |
| 656 } | 667 } |
| 657 | 668 |
| 669 void FakeCryptohomeClient::OnDircryptoMigrationProgressUpdated() { |
| 670 dircrypto_migration_progress_++; |
| 671 |
| 672 if (dircrypto_migration_progress_ >= kDircryptoMigrationMaxProgress) { |
| 673 if (!dircrypto_migration_progress_handler_.is_null()) { |
| 674 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 675 FROM_HERE, base::Bind(dircrypto_migration_progress_handler_, |
| 676 cryptohome::DIRCRYPTO_MIGRATION_SUCCESS, |
| 677 dircrypto_migration_progress_, |
| 678 kDircryptoMigrationMaxProgress)); |
| 679 } |
| 680 dircrypto_migration_progress_timer_.Stop(); |
| 681 return; |
| 682 } |
| 683 if (!dircrypto_migration_progress_handler_.is_null()) { |
| 684 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 685 FROM_HERE, base::Bind(dircrypto_migration_progress_handler_, |
| 686 cryptohome::DIRCRYPTO_MIGRATION_IN_PROGRESS, |
| 687 dircrypto_migration_progress_, |
| 688 kDircryptoMigrationMaxProgress)); |
| 689 } |
| 690 } |
| 691 |
| 658 } // namespace chromeos | 692 } // namespace chromeos |
| OLD | NEW |