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 |