Index: chrome/browser/chromeos/login/signed_settings.cc |
diff --git a/chrome/browser/chromeos/login/signed_settings.cc b/chrome/browser/chromeos/login/signed_settings.cc |
deleted file mode 100644 |
index 11fd6d37729e61a39c73d5ee9ba6c8278e8d530d..0000000000000000000000000000000000000000 |
--- a/chrome/browser/chromeos/login/signed_settings.cc |
+++ /dev/null |
@@ -1,290 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/chromeos/login/signed_settings.h" |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/threading/thread_restrictions.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/chromeos/cros/cros_library.h" |
-#include "chrome/browser/chromeos/login/authenticator.h" |
-#include "chrome/browser/chromeos/login/ownership_service.h" |
-#include "chrome/browser/policy/proto/chrome_device_policy.pb.h" |
-#include "chrome/browser/policy/proto/device_management_backend.pb.h" |
-#include "chromeos/dbus/dbus_thread_manager.h" |
-#include "chromeos/dbus/session_manager_client.h" |
-#include "content/public/browser/browser_thread.h" |
- |
-namespace em = enterprise_management; |
- |
-namespace chromeos { |
-using content::BrowserThread; |
- |
-const char kDevicePolicyType[] = "google/chromeos/device"; |
- |
-SignedSettings::SignedSettings() |
- : service_(OwnershipService::GetSharedInstance()) { |
-} |
- |
-SignedSettings::~SignedSettings() {} |
- |
-// static |
-bool SignedSettings::PolicyIsSane(const em::PolicyFetchResponse& value, |
- em::PolicyData* poldata) { |
- if (value.has_policy_data()) { |
- poldata->ParseFromString(value.policy_data()); |
- if (poldata->has_policy_type() && |
- poldata->policy_type() == kDevicePolicyType && |
- poldata->has_policy_value()) { |
- return true; |
- } |
- } |
- return false; |
-} |
- |
-// static |
-SignedSettings::ReturnCode SignedSettings::MapKeyOpCode( |
- OwnerManager::KeyOpCode return_code) { |
- return (return_code == OwnerManager::KEY_UNAVAILABLE ? |
- KEY_UNAVAILABLE : BAD_SIGNATURE); |
-} |
- |
-class StorePolicyOp : public SignedSettings { |
- public: |
- StorePolicyOp(em::PolicyFetchResponse* policy, |
- SignedSettings::Delegate<bool>* d); |
- void Succeed(bool value); |
- // Implementation of OwnerManager::Delegate |
- virtual void Execute() OVERRIDE; |
- virtual void Fail(SignedSettings::ReturnCode code) OVERRIDE; |
- virtual void OnKeyOpComplete(const OwnerManager::KeyOpCode return_code, |
- const std::vector<uint8>& payload) OVERRIDE; |
- |
- protected: |
- virtual ~StorePolicyOp(); |
- |
- private: |
- void RequestStorePolicy(); |
- |
- void OnBoolComplete(bool success); |
- // Always call d_->OnSettingOpCompleted() via this call. |
- // It guarantees that the callback will not be triggered until _after_ |
- // Execute() returns, which is implicitly assumed by SignedSettingsHelper |
- // in some cases. |
- void PerformCallback(SignedSettings::ReturnCode code, bool value); |
- |
- em::PolicyFetchResponse* policy_; |
- SignedSettings::Delegate<bool>* d_; |
-}; |
- |
-class RetrievePolicyOp : public SignedSettings { |
- public: |
- explicit RetrievePolicyOp( |
- SignedSettings::Delegate<const em::PolicyFetchResponse&>* d); |
- void Succeed(const em::PolicyFetchResponse& value); |
- // Implementation of OwnerManager::Delegate |
- virtual void Execute() OVERRIDE; |
- virtual void Fail(SignedSettings::ReturnCode code) OVERRIDE; |
- virtual void OnKeyOpComplete(const OwnerManager::KeyOpCode return_code, |
- const std::vector<uint8>& payload) OVERRIDE; |
- |
- protected: |
- virtual ~RetrievePolicyOp(); |
- |
- private: |
- void OnStringComplete(const std::string& serialized_proto); |
- // Always call d_->OnSettingOpCompleted() via this call. |
- // It guarantees that the callback will not be triggered until _after_ |
- // Execute() returns, which is implicitly assumed by SignedSettingsHelper |
- // in some cases. |
- void PerformCallback(SignedSettings::ReturnCode code, |
- const em::PolicyFetchResponse& value); |
- |
- void ProcessPolicy(const std::string& serialized_proto); |
- |
- em::PolicyFetchResponse policy_; |
- SignedSettings::Delegate<const em::PolicyFetchResponse&>* d_; |
-}; |
- |
-// static |
-SignedSettings* SignedSettings::CreateStorePolicyOp( |
- em::PolicyFetchResponse* policy, |
- SignedSettings::Delegate<bool>* d) { |
- DCHECK(d != NULL); |
- DCHECK(policy != NULL); |
- return new StorePolicyOp(policy, d); |
-} |
- |
-// static |
-SignedSettings* SignedSettings::CreateRetrievePolicyOp( |
- SignedSettings::Delegate<const em::PolicyFetchResponse&>* d) { |
- DCHECK(d != NULL); |
- return new RetrievePolicyOp(d); |
-} |
- |
- |
-StorePolicyOp::StorePolicyOp(em::PolicyFetchResponse* policy, |
- SignedSettings::Delegate<bool>* d) |
- : policy_(policy), |
- d_(d) { |
-} |
- |
-void StorePolicyOp::Succeed(bool ignored) { |
- SignedSettings::ReturnCode code = SUCCESS; |
- bool to_ret = true; |
- em::PolicyData poldata; |
- if (SignedSettings::PolicyIsSane(*policy_, &poldata)) { |
- } else { |
- code = NOT_FOUND; |
- to_ret = false; |
- } |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&StorePolicyOp::PerformCallback, this, code, to_ret)); |
-} |
- |
-void StorePolicyOp::Execute() { |
- // get protobuf contents to sign |
- if (!policy_->has_policy_data()) |
- Fail(OPERATION_FAILED); |
- else if (!policy_->has_policy_data_signature()) |
- service_->StartSigningAttempt(policy_->policy_data(), this); |
- else |
- RequestStorePolicy(); |
-} |
- |
-void StorePolicyOp::Fail(SignedSettings::ReturnCode code) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&StorePolicyOp::PerformCallback, this, code, false)); |
-} |
- |
-void StorePolicyOp::OnKeyOpComplete(const OwnerManager::KeyOpCode return_code, |
- const std::vector<uint8>& payload) { |
- // Ensure we're on the UI thread, due to the need to send DBus traffic. |
- if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&StorePolicyOp::OnKeyOpComplete, this, return_code, |
- payload)); |
- return; |
- } |
- VLOG(2) << "StorePolicyOp::OnKeyOpComplete return_code = " << return_code; |
- // Now, sure we're on the UI thread. |
- if (return_code == OwnerManager::SUCCESS) { |
- policy_->set_policy_data_signature(std::string(payload.begin(), |
- payload.end())); |
- RequestStorePolicy(); |
- return; |
- } |
- Fail(SignedSettings::MapKeyOpCode(return_code)); |
-} |
- |
-StorePolicyOp::~StorePolicyOp() {} |
- |
-void StorePolicyOp::RequestStorePolicy() { |
- std::string serialized; |
- if (policy_->SerializeToString(&serialized)) { |
- DBusThreadManager::Get()->GetSessionManagerClient()->StoreDevicePolicy( |
- serialized, |
- base::Bind(&StorePolicyOp::OnBoolComplete, this)); |
- } else { |
- Fail(OPERATION_FAILED); |
- } |
-} |
- |
-void StorePolicyOp::OnBoolComplete(bool success) { |
- if (success) |
- Succeed(true); |
- else |
- Fail(NOT_FOUND); |
-} |
- |
-void StorePolicyOp::PerformCallback(SignedSettings::ReturnCode code, |
- bool value) { |
- d_->OnSettingsOpCompleted(code, value); |
-} |
- |
-RetrievePolicyOp::RetrievePolicyOp( |
- SignedSettings::Delegate<const em::PolicyFetchResponse&>* d) |
- : d_(d) { |
-} |
- |
-void RetrievePolicyOp::Succeed(const em::PolicyFetchResponse& value) { |
- em::PolicyData poldata; |
- if (SignedSettings::PolicyIsSane(value, &poldata)) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&RetrievePolicyOp::PerformCallback, this, SUCCESS, value)); |
- } else { |
- Fail(NOT_FOUND); |
- } |
-} |
- |
-void RetrievePolicyOp::Execute() { |
- DBusThreadManager::Get()->GetSessionManagerClient()->RetrieveDevicePolicy( |
- base::Bind(&RetrievePolicyOp::OnStringComplete, this)); |
-} |
- |
-void RetrievePolicyOp::Fail(SignedSettings::ReturnCode code) { |
- VLOG(2) << "RetrievePolicyOp::Execute() failed with " << code; |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&RetrievePolicyOp::PerformCallback, this, code, |
- em::PolicyFetchResponse())); |
-} |
- |
-void RetrievePolicyOp::OnKeyOpComplete( |
- const OwnerManager::KeyOpCode return_code, |
- const std::vector<uint8>& payload) { |
- if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&RetrievePolicyOp::OnKeyOpComplete, this, return_code, |
- payload)); |
- return; |
- } |
- // Now, sure we're on the UI thread. |
- if (return_code == OwnerManager::SUCCESS) |
- Succeed(policy_); |
- else |
- Fail(SignedSettings::MapKeyOpCode(return_code)); |
-} |
- |
-RetrievePolicyOp::~RetrievePolicyOp() {} |
- |
-void RetrievePolicyOp::OnStringComplete(const std::string& serialized_proto) { |
- ProcessPolicy(serialized_proto); |
-} |
- |
-void RetrievePolicyOp::ProcessPolicy(const std::string& serialized_proto) { |
- if (serialized_proto.empty() || !policy_.ParseFromString(serialized_proto) || |
- (!policy_.has_policy_data() && !policy_.has_policy_data_signature())) { |
- Fail(NOT_FOUND); |
- return; |
- } |
- if (!policy_.has_policy_data()) { |
- Fail(OPERATION_FAILED); |
- return; |
- } |
- if (!policy_.has_policy_data_signature()) { |
- Fail(BAD_SIGNATURE); |
- return; |
- } |
- std::vector<uint8> sig; |
- const char* sig_ptr = policy_.policy_data_signature().c_str(); |
- sig.assign(sig_ptr, sig_ptr + policy_.policy_data_signature().length()); |
- service_->StartVerifyAttempt(policy_.policy_data(), sig, this); |
-} |
- |
-void RetrievePolicyOp::PerformCallback(SignedSettings::ReturnCode code, |
- const em::PolicyFetchResponse& value) { |
- d_->OnSettingsOpCompleted(code, value); |
-} |
- |
-} // namespace chromeos |