Chromium Code Reviews| Index: components/policy/core/common/cloud/cloud_policy_client.h |
| diff --git a/components/policy/core/common/cloud/cloud_policy_client.h b/components/policy/core/common/cloud/cloud_policy_client.h |
| index 2fb9f4bdc5c24a312649adeb212d321c6e072943..d2fec13505cf9b0d233a0b383493e371ac971961 100644 |
| --- a/components/policy/core/common/cloud/cloud_policy_client.h |
| +++ b/components/policy/core/common/cloud/cloud_policy_client.h |
| @@ -24,6 +24,10 @@ |
| #include "components/policy/policy_export.h" |
| #include "policy/proto/device_management_backend.pb.h" |
| +namespace cryptohome { |
| +class AsyncMethodCaller; |
| +} |
| + |
| namespace net { |
| class URLRequestContextGetter; |
| } |
| @@ -79,10 +83,31 @@ class POLICY_EXPORT CloudPolicyClient { |
| virtual void OnClientError(CloudPolicyClient* client) = 0; |
| }; |
| + // Data signing interface. |
| + class POLICY_EXPORT SigningService { |
| + public: |
| + typedef base::Callback<void(bool success, |
|
achuithb
2016/08/23 18:40:28
use using here instead.
https://groups.google.com/
The one and only Dr. Crash
2016/08/24 05:53:44
Done.
|
| + enterprise_management::SignedData signed_data)> |
| + SigningCallback; |
| + |
| + // Signs |data| and calls |callback| with the signed data. |
| + virtual void SignData(const std::string& data, |
| + SigningCallback callback) = 0; |
|
achuithb
2016/08/23 18:40:28
pass const reference instead.
The one and only Dr. Crash
2016/08/24 05:53:44
Done.
|
| + }; |
| + |
| // |provider| and |service| are weak pointers and it's the caller's |
| // responsibility to keep them valid for the lifetime of CloudPolicyClient. |
| // |verification_key_hash| contains an identifier telling the DMServer which |
| - // verification key to use. |
| + // verification key to use. The |signing_service| is used to sign sensitive |
| + // requests. |
| + CloudPolicyClient( |
| + const std::string& machine_id, |
| + const std::string& machine_model, |
| + const std::string& verification_key_hash, |
| + DeviceManagementService* service, |
| + scoped_refptr<net::URLRequestContextGetter> request_context, |
| + SigningService* signing_service); |
| + // Constructs a client without signing support. |
| CloudPolicyClient( |
|
achuithb
2016/08/23 18:40:28
we don't prefer multiple ctors. Please just use th
The one and only Dr. Crash
2016/08/24 05:53:44
Done.
|
| const std::string& machine_id, |
| const std::string& machine_model, |
| @@ -107,6 +132,17 @@ class POLICY_EXPORT CloudPolicyClient { |
| const std::string& requisition, |
| const std::string& current_state_key); |
| + // Attempts to register with the device management service using a |
| + // registration certificate. Results in a registration change or |
| + // error notification. |
| + virtual void RegisterWithCertificate( |
| + enterprise_management::DeviceRegisterRequest::Type registration_type, |
| + enterprise_management::DeviceRegisterRequest::Flavor flavor, |
| + const std::string& pem_certificate_chain, |
| + const std::string& client_id, |
| + const std::string& requisition, |
| + const std::string& current_state_key); |
| + |
| // Sets information about a policy invalidation. Subsequent fetch operations |
| // will use the given info, and callers can use fetched_invalidation_version |
| // to determine which version of policy was fetched. |
| @@ -269,6 +305,10 @@ class POLICY_EXPORT CloudPolicyClient { |
| // Callback for retries of registration requests. |
| void OnRetryRegister(DeviceManagementRequestJob* job); |
| + // Callback for siganture of requests. |
| + void OnRegisterWithCertificateRequestSigned(bool success, |
| + enterprise_management::SignedData signed_data); |
| + |
| // Callback for registration requests. |
| void OnRegisterCompleted( |
| DeviceManagementStatus status, |
| @@ -376,6 +416,9 @@ class POLICY_EXPORT CloudPolicyClient { |
| // Used for issuing requests to the cloud. |
| DeviceManagementService* service_; |
| + // Used for signing requests. |
| + SigningService* signing_service_; |
| + |
| // Only one outstanding policy fetch is allowed, so this is tracked in |
| // its own member variable. |
| std::unique_ptr<DeviceManagementRequestJob> policy_fetch_request_job_; |
| @@ -392,6 +435,8 @@ class POLICY_EXPORT CloudPolicyClient { |
| scoped_refptr<net::URLRequestContextGetter> request_context_; |
| private: |
| + void SetClientId(const std::string& client_id); |
| + |
| DISALLOW_COPY_AND_ASSIGN(CloudPolicyClient); |
| }; |