Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4650)

Unified Diff: chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc

Issue 2727713003: Update FWMP in TPM (Closed)
Patch Set: Nit Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
diff --git a/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc b/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
index c4bcf11f3d016e291ce611035e442083827f8090..6c5b025da238d1848c20a66b8690ba30ffcb44c8 100644
--- a/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
+++ b/chrome/browser/chromeos/policy/enrollment_handler_chromeos.cc
@@ -29,6 +29,7 @@
#include "chromeos/attestation/attestation_flow.h"
#include "chromeos/chromeos_switches.h"
#include "chromeos/dbus/auth_policy_client.h"
+#include "chromeos/dbus/cryptohome/rpc.pb.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/upstart_client.h"
#include "components/version_info/version_info.h"
@@ -76,6 +77,34 @@ em::DeviceRegisterRequest::Flavor EnrollmentModeToRegistrationFlavor(
return em::DeviceRegisterRequest::FLAVOR_ENROLLMENT_MANUAL;
}
+// Returns whether block_devmode is set. Must only be invoked after the policy
Thiemo Nagel 2017/03/27 17:21:47 Nit: The 2nd sentence is obsolete now.
igorcov 2017/03/28 16:39:09 Done.
+// has been retrieved.
+bool GetBlockdevmodeFromPolicy(
+ enterprise_management::PolicyFetchResponse* policy) {
Thiemo Nagel 2017/03/27 17:21:47 Nit: const
igorcov 2017/03/28 16:39:09 Done.
+ DCHECK(policy);
+ em::PolicyData policy_data;
+ if (!policy_data.ParseFromString(policy->policy_data())) {
+ LOG(ERROR) << "Failed to parse policy data";
+ return false;
+ }
+
+ em::ChromeDeviceSettingsProto payload;
+ if (!payload.ParseFromString(policy_data.policy_value())) {
+ LOG(ERROR) << "Failed to parse policy value";
+ return false;
+ }
+
+ bool block_devmode = false;
+ if (payload.has_system_settings()) {
+ const em::SystemSettingsProto& container = payload.system_settings();
+ if (container.has_block_devmode()) {
+ block_devmode = container.block_devmode();
+ }
+ }
+
+ return block_devmode;
+}
+
} // namespace
EnrollmentHandlerChromeOS::EnrollmentHandlerChromeOS(
@@ -397,6 +426,31 @@ void EnrollmentHandlerChromeOS::OnGetTokensResponse(
StartJoinAdDomain();
}
+void EnrollmentHandlerChromeOS::SetFirmwareManagementParametersData() {
+ DCHECK_EQ(STEP_SET_FWMP_DATA, enrollment_step_);
+
+ install_attributes_->SetBlockDevmodeInTpm(
+ GetBlockdevmodeFromPolicy(policy_.get()),
+ base::Bind(
+ &EnrollmentHandlerChromeOS::OnFirmwareManagementParametersDataSet,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void EnrollmentHandlerChromeOS::OnFirmwareManagementParametersDataSet(
+ chromeos::DBusMethodCallStatus call_status,
+ bool result,
+ const cryptohome::BaseReply& reply) {
+ DCHECK_EQ(STEP_SET_FWMP_DATA, enrollment_step_);
+ if (!result) {
+ LOG(ERROR)
+ << "Failed to update firmware management parameters in TPM, error: "
+ << reply.error();
+ }
+
+ SetStep(STEP_LOCK_DEVICE);
+ StartLockDevice();
+}
+
// GaiaOAuthClient::Delegate
void EnrollmentHandlerChromeOS::OnRefreshTokenResponse(
const std::string& access_token,
@@ -427,8 +481,8 @@ void EnrollmentHandlerChromeOS::OnNetworkError(int response_code) {
void EnrollmentHandlerChromeOS::StartJoinAdDomain() {
DCHECK_EQ(STEP_AD_DOMAIN_JOIN, enrollment_step_);
if (device_mode_ != DEVICE_MODE_ENTERPRISE_AD) {
- SetStep(STEP_LOCK_DEVICE);
- StartLockDevice();
+ SetStep(STEP_SET_FWMP_DATA);
+ SetFirmwareManagementParametersData();
return;
}
DCHECK(ad_join_delegate_);
@@ -441,8 +495,8 @@ void EnrollmentHandlerChromeOS::OnAdDomainJoined(const std::string& realm) {
DCHECK_EQ(STEP_AD_DOMAIN_JOIN, enrollment_step_);
CHECK(!realm.empty());
realm_ = realm;
- SetStep(STEP_LOCK_DEVICE);
- StartLockDevice();
+ SetStep(STEP_SET_FWMP_DATA);
+ SetFirmwareManagementParametersData();
}
void EnrollmentHandlerChromeOS::StartLockDevice() {

Powered by Google App Engine
This is Rietveld 408576698