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

Unified Diff: chrome/browser/chromeos/policy/device_cloud_policy_initializer.h

Issue 2276593004: Device registration using an enrollment certificate from the PCA. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge branch 'master' into register-with-certificate Created 4 years, 4 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/device_cloud_policy_initializer.h
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h b/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h
index ea018ba46c1b23e95c42fc01f10ba63267ad6a20..6c6ee03ea4850e07edc53d03eb0eeee928337277 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_initializer.h
@@ -17,6 +17,7 @@
#include "components/policy/core/common/cloud/cloud_policy_client.h"
#include "components/policy/core/common/cloud/cloud_policy_constants.h"
#include "components/policy/core/common/cloud/cloud_policy_store.h"
+#include "components/policy/core/common/cloud/signing_service.h"
class PrefService;
@@ -25,7 +26,9 @@ class SequencedTaskRunner;
}
namespace chromeos {
-class CryptohomeClient;
+namespace attestation {
+class AttestationFlow;
+}
}
namespace cryptohome {
@@ -59,8 +62,8 @@ class DeviceCloudPolicyInitializer : public CloudPolicyStore::Observer {
ServerBackedStateKeysBroker* state_keys_broker,
DeviceCloudPolicyStoreChromeOS* device_store,
DeviceCloudPolicyManagerChromeOS* manager,
- cryptohome::AsyncMethodCaller* async_caller,
- chromeos::CryptohomeClient* cryptohome_client);
+ cryptohome::AsyncMethodCaller* async_method_caller,
+ std::unique_ptr<chromeos::attestation::AttestationFlow> attestation_flow);
~DeviceCloudPolicyInitializer() override;
@@ -95,6 +98,29 @@ class DeviceCloudPolicyInitializer : public CloudPolicyStore::Observer {
void OnStoreError(CloudPolicyStore* store) override;
private:
+ // Signing class using the enrollment certificate's TPM-bound key to
+ // sign data.
+ class TpmEnrollmentKeySigningService : public policy::SigningService {
+ public:
+ TpmEnrollmentKeySigningService(
+ cryptohome::AsyncMethodCaller* async_method_caller);
+ ~TpmEnrollmentKeySigningService();
+
+ void SignData(const std::string& data,
pastarmovj 2016/08/29 11:51:35 Please add a comment : policy::SigningService impl
The one and only Dr. Crash 2016/08/29 19:55:32 That is what the override keyword is for IMO. I im
+ const SigningCallback& callback) override;
+
+ private:
+ void OnDataSigned(const std::string& data,
+ const SigningCallback& callback,
+ bool success,
+ const std::string& signed_data);
+
+ cryptohome::AsyncMethodCaller* async_method_caller_;
+
+ // Used to create tasks which run delayed on the UI thread.
+ base::WeakPtrFactory<TpmEnrollmentKeySigningService> weak_ptr_factory_;
+ };
+
// Handles completion signaled by |enrollment_handler_|.
void EnrollmentCompleted(const EnrollmentCallback& enrollment_callback,
EnrollmentStatus status);
@@ -113,15 +139,20 @@ class DeviceCloudPolicyInitializer : public CloudPolicyStore::Observer {
ServerBackedStateKeysBroker* state_keys_broker_;
DeviceCloudPolicyStoreChromeOS* device_store_;
DeviceCloudPolicyManagerChromeOS* manager_;
- cryptohome::AsyncMethodCaller* async_method_caller_;
- chromeos::CryptohomeClient* cryptohome_client_;
- bool is_initialized_;
+ std::unique_ptr<chromeos::attestation::AttestationFlow> attestation_flow_;
+ bool is_initialized_ = false;
// Non-NULL if there is an enrollment operation pending.
std::unique_ptr<EnrollmentHandlerChromeOS> enrollment_handler_;
ServerBackedStateKeysBroker::Subscription state_keys_update_subscription_;
+ // Our signing service.
+ TpmEnrollmentKeySigningService signing_service_;
+
+ // Used to create tasks which run delayed on the UI thread.
+ base::WeakPtrFactory<DeviceCloudPolicyInitializer> weak_ptr_factory_;
pastarmovj 2016/08/29 11:51:35 Do you need this weak pointer? I think you only ne
The one and only Dr. Crash 2016/08/29 19:55:32 You are right, I do not need it anymore. Removed.
+
DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyInitializer);
};

Powered by Google App Engine
This is Rietveld 408576698