OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CRYPTAUTH_ENROLLMENT_MANAGER_H | 5 #ifndef COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CRYPTAUTH_ENROLLMENT_MANAGER_H |
6 #define COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CRYPTAUTH_ENROLLMENT_MANAGER_H | 6 #define COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CRYPTAUTH_ENROLLMENT_MANAGER_H |
7 | 7 |
| 8 #include <memory> |
| 9 |
8 #include "base/macros.h" | 10 #include "base/macros.h" |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
11 #include "base/observer_list.h" | 12 #include "base/observer_list.h" |
12 #include "base/time/time.h" | 13 #include "base/time/time.h" |
13 #include "components/proximity_auth/cryptauth/cryptauth_gcm_manager.h" | 14 #include "components/proximity_auth/cryptauth/cryptauth_gcm_manager.h" |
14 #include "components/proximity_auth/cryptauth/proto/cryptauth_api.pb.h" | 15 #include "components/proximity_auth/cryptauth/proto/cryptauth_api.pb.h" |
15 #include "components/proximity_auth/cryptauth/sync_scheduler.h" | 16 #include "components/proximity_auth/cryptauth/sync_scheduler.h" |
16 | 17 |
17 class PrefRegistrySimple; | 18 class PrefRegistrySimple; |
18 class PrefService; | 19 class PrefService; |
19 | 20 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 // |secure_message_delegate|: Used to generate the user's keypair if it does | 55 // |secure_message_delegate|: Used to generate the user's keypair if it does |
55 // not exist. | 56 // not exist. |
56 // |device_info|: Contains information about the local device that will be | 57 // |device_info|: Contains information about the local device that will be |
57 // uploaded to CryptAuth with each enrollment request. | 58 // uploaded to CryptAuth with each enrollment request. |
58 // |gcm_manager|: Used to perform GCM registrations and also notifies when GCM | 59 // |gcm_manager|: Used to perform GCM registrations and also notifies when GCM |
59 // push messages trigger re-enrollments. | 60 // push messages trigger re-enrollments. |
60 // Not owned and must outlive this instance. | 61 // Not owned and must outlive this instance. |
61 // |pref_service|: Contains preferences across browser restarts, and should | 62 // |pref_service|: Contains preferences across browser restarts, and should |
62 // have been registered through RegisterPrefs(). | 63 // have been registered through RegisterPrefs(). |
63 CryptAuthEnrollmentManager( | 64 CryptAuthEnrollmentManager( |
64 scoped_ptr<base::Clock> clock, | 65 std::unique_ptr<base::Clock> clock, |
65 scoped_ptr<CryptAuthEnrollerFactory> enroller_factory, | 66 std::unique_ptr<CryptAuthEnrollerFactory> enroller_factory, |
66 scoped_ptr<SecureMessageDelegate> secure_message_delegate, | 67 std::unique_ptr<SecureMessageDelegate> secure_message_delegate, |
67 const cryptauth::GcmDeviceInfo& device_info, | 68 const cryptauth::GcmDeviceInfo& device_info, |
68 CryptAuthGCMManager* gcm_manager, | 69 CryptAuthGCMManager* gcm_manager, |
69 PrefService* pref_service); | 70 PrefService* pref_service); |
70 | 71 |
71 ~CryptAuthEnrollmentManager() override; | 72 ~CryptAuthEnrollmentManager() override; |
72 | 73 |
73 // Registers the prefs used by this class to the given |pref_service|. | 74 // Registers the prefs used by this class to the given |pref_service|. |
74 static void RegisterPrefs(PrefRegistrySimple* registry); | 75 static void RegisterPrefs(PrefRegistrySimple* registry); |
75 | 76 |
76 // Begins scheduling periodic enrollment attempts. | 77 // Begins scheduling periodic enrollment attempts. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 110 |
110 // Returns the keypair used to enroll with CryptAuth. If no enrollment has | 111 // Returns the keypair used to enroll with CryptAuth. If no enrollment has |
111 // been completed, then an empty string will be returned. | 112 // been completed, then an empty string will be returned. |
112 // Note: These keys are really serialized protocol buffer messages, and should | 113 // Note: These keys are really serialized protocol buffer messages, and should |
113 // only be used by passing to SecureMessageDelegate. | 114 // only be used by passing to SecureMessageDelegate. |
114 std::string GetUserPublicKey(); | 115 std::string GetUserPublicKey(); |
115 std::string GetUserPrivateKey(); | 116 std::string GetUserPrivateKey(); |
116 | 117 |
117 protected: | 118 protected: |
118 // Creates a new SyncScheduler instance. Exposed for testing. | 119 // Creates a new SyncScheduler instance. Exposed for testing. |
119 virtual scoped_ptr<SyncScheduler> CreateSyncScheduler(); | 120 virtual std::unique_ptr<SyncScheduler> CreateSyncScheduler(); |
120 | 121 |
121 private: | 122 private: |
122 // CryptAuthGCMManager::Observer: | 123 // CryptAuthGCMManager::Observer: |
123 void OnGCMRegistrationResult(bool success) override; | 124 void OnGCMRegistrationResult(bool success) override; |
124 void OnReenrollMessage() override; | 125 void OnReenrollMessage() override; |
125 | 126 |
126 // Callback when a new keypair is generated. | 127 // Callback when a new keypair is generated. |
127 void OnKeyPairGenerated(const std::string& public_key, | 128 void OnKeyPairGenerated(const std::string& public_key, |
128 const std::string& private_key); | 129 const std::string& private_key); |
129 | 130 |
130 // SyncScheduler::Delegate: | 131 // SyncScheduler::Delegate: |
131 void OnSyncRequested( | 132 void OnSyncRequested( |
132 scoped_ptr<SyncScheduler::SyncRequest> sync_request) override; | 133 std::unique_ptr<SyncScheduler::SyncRequest> sync_request) override; |
133 | 134 |
134 // Starts a CryptAuth enrollment attempt, generating a new keypair if one is | 135 // Starts a CryptAuth enrollment attempt, generating a new keypair if one is |
135 // not already stored in the user prefs. | 136 // not already stored in the user prefs. |
136 void DoCryptAuthEnrollment(); | 137 void DoCryptAuthEnrollment(); |
137 | 138 |
138 // Starts a CryptAuth enrollment attempt, after a key-pair is stored in the | 139 // Starts a CryptAuth enrollment attempt, after a key-pair is stored in the |
139 // user prefs. | 140 // user prefs. |
140 void DoCryptAuthEnrollmentWithKeys(); | 141 void DoCryptAuthEnrollmentWithKeys(); |
141 | 142 |
142 // Callback when |cryptauth_enroller_| completes. | 143 // Callback when |cryptauth_enroller_| completes. |
143 void OnEnrollmentFinished(bool success); | 144 void OnEnrollmentFinished(bool success); |
144 | 145 |
145 // Used to determine the time. | 146 // Used to determine the time. |
146 scoped_ptr<base::Clock> clock_; | 147 std::unique_ptr<base::Clock> clock_; |
147 | 148 |
148 // Creates CryptAuthEnroller instances for each enrollment attempt. | 149 // Creates CryptAuthEnroller instances for each enrollment attempt. |
149 scoped_ptr<CryptAuthEnrollerFactory> enroller_factory_; | 150 std::unique_ptr<CryptAuthEnrollerFactory> enroller_factory_; |
150 | 151 |
151 // The SecureMessageDelegate used to generate the user's keypair if it does | 152 // The SecureMessageDelegate used to generate the user's keypair if it does |
152 // not already exist. | 153 // not already exist. |
153 scoped_ptr<SecureMessageDelegate> secure_message_delegate_; | 154 std::unique_ptr<SecureMessageDelegate> secure_message_delegate_; |
154 | 155 |
155 // The local device information to upload to CryptAuth. | 156 // The local device information to upload to CryptAuth. |
156 const cryptauth::GcmDeviceInfo device_info_; | 157 const cryptauth::GcmDeviceInfo device_info_; |
157 | 158 |
158 // Used to perform GCM registrations and also notifies when GCM push messages | 159 // Used to perform GCM registrations and also notifies when GCM push messages |
159 // trigger re-enrollments. Not owned and must outlive this instance. | 160 // trigger re-enrollments. Not owned and must outlive this instance. |
160 CryptAuthGCMManager* gcm_manager_; | 161 CryptAuthGCMManager* gcm_manager_; |
161 | 162 |
162 // Contains perferences that outlive the lifetime of this object and across | 163 // Contains perferences that outlive the lifetime of this object and across |
163 // process restarts. | 164 // process restarts. |
164 // Not owned and must outlive this instance. | 165 // Not owned and must outlive this instance. |
165 PrefService* pref_service_; | 166 PrefService* pref_service_; |
166 | 167 |
167 // Schedules the time between enrollment attempts. | 168 // Schedules the time between enrollment attempts. |
168 scoped_ptr<SyncScheduler> scheduler_; | 169 std::unique_ptr<SyncScheduler> scheduler_; |
169 | 170 |
170 // Contains the SyncRequest that |scheduler_| requests when an enrollment | 171 // Contains the SyncRequest that |scheduler_| requests when an enrollment |
171 // attempt is made. | 172 // attempt is made. |
172 scoped_ptr<SyncScheduler::SyncRequest> sync_request_; | 173 std::unique_ptr<SyncScheduler::SyncRequest> sync_request_; |
173 | 174 |
174 // The CryptAuthEnroller instance for the current enrollment attempt. A new | 175 // The CryptAuthEnroller instance for the current enrollment attempt. A new |
175 // instance will be created for each individual attempt. | 176 // instance will be created for each individual attempt. |
176 scoped_ptr<CryptAuthEnroller> cryptauth_enroller_; | 177 std::unique_ptr<CryptAuthEnroller> cryptauth_enroller_; |
177 | 178 |
178 // List of observers. | 179 // List of observers. |
179 base::ObserverList<Observer> observers_; | 180 base::ObserverList<Observer> observers_; |
180 | 181 |
181 base::WeakPtrFactory<CryptAuthEnrollmentManager> weak_ptr_factory_; | 182 base::WeakPtrFactory<CryptAuthEnrollmentManager> weak_ptr_factory_; |
182 | 183 |
183 DISALLOW_COPY_AND_ASSIGN(CryptAuthEnrollmentManager); | 184 DISALLOW_COPY_AND_ASSIGN(CryptAuthEnrollmentManager); |
184 }; | 185 }; |
185 | 186 |
186 } // namespace proximity_auth | 187 } // namespace proximity_auth |
187 | 188 |
188 #endif // COMPONENTS_PROXIMITY_CRYPTAUTH_CRYPTAUTH_ENROLLMENT_MANAGER_H | 189 #endif // COMPONENTS_PROXIMITY_CRYPTAUTH_CRYPTAUTH_ENROLLMENT_MANAGER_H |
OLD | NEW |