| 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 "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 scoped_refptr<ownership::PublicKey> public_key( | 46 scoped_refptr<ownership::PublicKey> public_key( |
| 47 device_settings_service_->GetPublicKey()); | 47 device_settings_service_->GetPublicKey()); |
| 48 if (!install_attributes_->IsEnterpriseDevice() || | 48 if (!install_attributes_->IsEnterpriseDevice() || |
| 49 !device_settings_service_->policy_data() || !public_key.get() || | 49 !device_settings_service_->policy_data() || !public_key.get() || |
| 50 !public_key->is_loaded()) { | 50 !public_key->is_loaded()) { |
| 51 status_ = STATUS_BAD_STATE; | 51 status_ = STATUS_BAD_STATE; |
| 52 NotifyStoreError(); | 52 NotifyStoreError(); |
| 53 return; | 53 return; |
| 54 } | 54 } |
| 55 | 55 |
| 56 scoped_ptr<DeviceCloudPolicyValidator> validator(CreateValidator(policy)); | 56 std::unique_ptr<DeviceCloudPolicyValidator> validator( |
| 57 CreateValidator(policy)); |
| 57 validator->ValidateSignature(public_key->as_string(), | 58 validator->ValidateSignature(public_key->as_string(), |
| 58 GetPolicyVerificationKey(), | 59 GetPolicyVerificationKey(), |
| 59 install_attributes_->GetDomain(), | 60 install_attributes_->GetDomain(), |
| 60 true); | 61 true); |
| 61 validator->ValidateAgainstCurrentPolicy( | 62 validator->ValidateAgainstCurrentPolicy( |
| 62 device_settings_service_->policy_data(), | 63 device_settings_service_->policy_data(), |
| 63 CloudPolicyValidatorBase::TIMESTAMP_REQUIRED, | 64 CloudPolicyValidatorBase::TIMESTAMP_REQUIRED, |
| 64 CloudPolicyValidatorBase::DM_TOKEN_REQUIRED); | 65 CloudPolicyValidatorBase::DM_TOKEN_REQUIRED); |
| 65 validator.release()->StartValidation( | 66 validator.release()->StartValidation( |
| 66 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, | 67 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, |
| 67 weak_factory_.GetWeakPtr())); | 68 weak_factory_.GetWeakPtr())); |
| 68 } | 69 } |
| 69 | 70 |
| 70 void DeviceCloudPolicyStoreChromeOS::Load() { | 71 void DeviceCloudPolicyStoreChromeOS::Load() { |
| 71 device_settings_service_->Load(); | 72 device_settings_service_->Load(); |
| 72 } | 73 } |
| 73 | 74 |
| 74 void DeviceCloudPolicyStoreChromeOS::InstallInitialPolicy( | 75 void DeviceCloudPolicyStoreChromeOS::InstallInitialPolicy( |
| 75 const em::PolicyFetchResponse& policy) { | 76 const em::PolicyFetchResponse& policy) { |
| 76 // Cancel all pending requests. | 77 // Cancel all pending requests. |
| 77 weak_factory_.InvalidateWeakPtrs(); | 78 weak_factory_.InvalidateWeakPtrs(); |
| 78 | 79 |
| 79 if (!install_attributes_->IsEnterpriseDevice()) { | 80 if (!install_attributes_->IsEnterpriseDevice()) { |
| 80 status_ = STATUS_BAD_STATE; | 81 status_ = STATUS_BAD_STATE; |
| 81 NotifyStoreError(); | 82 NotifyStoreError(); |
| 82 return; | 83 return; |
| 83 } | 84 } |
| 84 | 85 |
| 85 scoped_ptr<DeviceCloudPolicyValidator> validator(CreateValidator(policy)); | 86 std::unique_ptr<DeviceCloudPolicyValidator> validator( |
| 87 CreateValidator(policy)); |
| 86 validator->ValidateInitialKey(GetPolicyVerificationKey(), | 88 validator->ValidateInitialKey(GetPolicyVerificationKey(), |
| 87 install_attributes_->GetDomain()); | 89 install_attributes_->GetDomain()); |
| 88 validator.release()->StartValidation( | 90 validator.release()->StartValidation( |
| 89 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, | 91 base::Bind(&DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated, |
| 90 weak_factory_.GetWeakPtr())); | 92 weak_factory_.GetWeakPtr())); |
| 91 } | 93 } |
| 92 | 94 |
| 93 void DeviceCloudPolicyStoreChromeOS::OwnershipStatusChanged() { | 95 void DeviceCloudPolicyStoreChromeOS::OwnershipStatusChanged() { |
| 94 // Nothing to do. | 96 // Nothing to do. |
| 95 } | 97 } |
| 96 | 98 |
| 97 void DeviceCloudPolicyStoreChromeOS::DeviceSettingsUpdated() { | 99 void DeviceCloudPolicyStoreChromeOS::DeviceSettingsUpdated() { |
| 98 if (!weak_factory_.HasWeakPtrs()) | 100 if (!weak_factory_.HasWeakPtrs()) |
| 99 UpdateFromService(); | 101 UpdateFromService(); |
| 100 } | 102 } |
| 101 | 103 |
| 102 void DeviceCloudPolicyStoreChromeOS::OnDeviceSettingsServiceShutdown() { | 104 void DeviceCloudPolicyStoreChromeOS::OnDeviceSettingsServiceShutdown() { |
| 103 device_settings_service_ = nullptr; | 105 device_settings_service_ = nullptr; |
| 104 } | 106 } |
| 105 | 107 |
| 106 scoped_ptr<DeviceCloudPolicyValidator> | 108 std::unique_ptr<DeviceCloudPolicyValidator> |
| 107 DeviceCloudPolicyStoreChromeOS::CreateValidator( | 109 DeviceCloudPolicyStoreChromeOS::CreateValidator( |
| 108 const em::PolicyFetchResponse& policy) { | 110 const em::PolicyFetchResponse& policy) { |
| 109 scoped_ptr<DeviceCloudPolicyValidator> validator( | 111 std::unique_ptr<DeviceCloudPolicyValidator> validator( |
| 110 DeviceCloudPolicyValidator::Create( | 112 DeviceCloudPolicyValidator::Create( |
| 111 scoped_ptr<em::PolicyFetchResponse>( | 113 std::unique_ptr<em::PolicyFetchResponse>( |
| 112 new em::PolicyFetchResponse(policy)), | 114 new em::PolicyFetchResponse(policy)), |
| 113 background_task_runner_)); | 115 background_task_runner_)); |
| 114 validator->ValidateDomain(install_attributes_->GetDomain()); | 116 validator->ValidateDomain(install_attributes_->GetDomain()); |
| 115 validator->ValidatePolicyType(dm_protocol::kChromeDevicePolicyType); | 117 validator->ValidatePolicyType(dm_protocol::kChromeDevicePolicyType); |
| 116 validator->ValidatePayload(); | 118 validator->ValidatePayload(); |
| 117 return validator; | 119 return validator; |
| 118 } | 120 } |
| 119 | 121 |
| 120 void DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated( | 122 void DeviceCloudPolicyStoreChromeOS::OnPolicyToStoreValidated( |
| 121 DeviceCloudPolicyValidator* validator) { | 123 DeviceCloudPolicyValidator* validator) { |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 case chromeos::DeviceSettingsService::STORE_VALIDATION_ERROR: | 232 case chromeos::DeviceSettingsService::STORE_VALIDATION_ERROR: |
| 231 case chromeos::DeviceSettingsService::STORE_TEMP_VALIDATION_ERROR: | 233 case chromeos::DeviceSettingsService::STORE_TEMP_VALIDATION_ERROR: |
| 232 status_ = STATUS_LOAD_ERROR; | 234 status_ = STATUS_LOAD_ERROR; |
| 233 break; | 235 break; |
| 234 } | 236 } |
| 235 | 237 |
| 236 NotifyStoreError(); | 238 NotifyStoreError(); |
| 237 } | 239 } |
| 238 | 240 |
| 239 } // namespace policy | 241 } // namespace policy |
| OLD | NEW |