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

Side by Side Diff: chromeos/dbus/cryptohome_client.h

Issue 1693383003: ChromeOS cryptohome should be able to use gaia id as user identifier. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unit tests. Created 4 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 unified diff | Download patch
« no previous file with comments | « chromeos/cryptohome/mock_async_method_caller.h ('k') | chromeos/dbus/cryptohome_client.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef CHROMEOS_DBUS_CRYPTOHOME_CLIENT_H_ 5 #ifndef CHROMEOS_DBUS_CRYPTOHOME_CLIENT_H_
6 #define CHROMEOS_DBUS_CRYPTOHOME_CLIENT_H_ 6 #define CHROMEOS_DBUS_CRYPTOHOME_CLIENT_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <string> 10 #include <string>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "chromeos/attestation/attestation_constants.h" 15 #include "chromeos/attestation/attestation_constants.h"
16 #include "chromeos/chromeos_export.h" 16 #include "chromeos/chromeos_export.h"
17 #include "chromeos/dbus/dbus_client.h" 17 #include "chromeos/dbus/dbus_client.h"
18 #include "chromeos/dbus/dbus_method_call_status.h" 18 #include "chromeos/dbus/dbus_method_call_status.h"
19 19
20 namespace cryptohome { 20 namespace cryptohome {
21 21
22 class AccountIdentifier;
23 class AddKeyRequest; 22 class AddKeyRequest;
24 class AuthorizationRequest; 23 class AuthorizationRequest;
25 class BaseReply; 24 class BaseReply;
26 class CheckKeyRequest; 25 class CheckKeyRequest;
27 class FlushAndSignBootAttributesRequest; 26 class FlushAndSignBootAttributesRequest;
28 class GetBootAttributeRequest; 27 class GetBootAttributeRequest;
29 class GetKeyDataRequest; 28 class GetKeyDataRequest;
30 class MountRequest; 29 class MountRequest;
31 class RemoveKeyRequest; 30 class RemoveKeyRequest;
32 class SetBootAttributeRequest; 31 class SetBootAttributeRequest;
33 class UpdateKeyRequest; 32 class UpdateKeyRequest;
34 33
34 class Identification;
35
35 } // namespace cryptohome 36 } // namespace cryptohome
36 37
37 namespace chromeos { 38 namespace chromeos {
38 39
39 // CryptohomeClient is used to communicate with the Cryptohome service. 40 // CryptohomeClient is used to communicate with the Cryptohome service.
40 // All method should be called from the origin thread (UI thread) which 41 // All method should be called from the origin thread (UI thread) which
41 // initializes the DBusThreadManager instance. 42 // initializes the DBusThreadManager instance.
42 class CHROMEOS_EXPORT CryptohomeClient : public DBusClient { 43 class CHROMEOS_EXPORT CryptohomeClient : public DBusClient {
43 public: 44 public:
44 // Constant that will be passed to AsyncMethodCallback to indicate that 45 // Constant that will be passed to AsyncMethodCallback to indicate that
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 bool result, 89 bool result,
89 const cryptohome::BaseReply& reply)> ProtobufMethodCallback; 90 const cryptohome::BaseReply& reply)> ProtobufMethodCallback;
90 91
91 ~CryptohomeClient() override; 92 ~CryptohomeClient() override;
92 93
93 // Factory function, creates a new instance and returns ownership. 94 // Factory function, creates a new instance and returns ownership.
94 // For normal usage, access the singleton via DBusThreadManager::Get(). 95 // For normal usage, access the singleton via DBusThreadManager::Get().
95 static CryptohomeClient* Create(); 96 static CryptohomeClient* Create();
96 97
97 // Returns the sanitized |username| that the stub implementation would return. 98 // Returns the sanitized |username| that the stub implementation would return.
98 static std::string GetStubSanitizedUsername(const std::string& username); 99 static std::string GetStubSanitizedUsername(
100 const cryptohome::Identification& cryptohome_id);
99 101
100 // Sets AsyncCallStatus signal handlers. 102 // Sets AsyncCallStatus signal handlers.
101 // |handler| is called when results for AsyncXXX methods are returned. 103 // |handler| is called when results for AsyncXXX methods are returned.
102 // Cryptohome service will process the calls in a first-in-first-out manner 104 // Cryptohome service will process the calls in a first-in-first-out manner
103 // when they are made in parallel. 105 // when they are made in parallel.
104 virtual void SetAsyncCallStatusHandlers( 106 virtual void SetAsyncCallStatusHandlers(
105 const AsyncCallStatusHandler& handler, 107 const AsyncCallStatusHandler& handler,
106 const AsyncCallStatusWithDataHandler& data_handler) = 0; 108 const AsyncCallStatusWithDataHandler& data_handler) = 0;
107 109
108 // Resets AsyncCallStatus signal handlers. 110 // Resets AsyncCallStatus signal handlers.
109 virtual void ResetAsyncCallStatusHandlers() = 0; 111 virtual void ResetAsyncCallStatusHandlers() = 0;
110 112
111 // Runs the callback as soon as the service becomes available. 113 // Runs the callback as soon as the service becomes available.
112 virtual void WaitForServiceToBeAvailable( 114 virtual void WaitForServiceToBeAvailable(
113 const WaitForServiceToBeAvailableCallback& callback) = 0; 115 const WaitForServiceToBeAvailableCallback& callback) = 0;
114 116
115 // Calls IsMounted method and returns true when the call succeeds. 117 // Calls IsMounted method and returns true when the call succeeds.
116 virtual void IsMounted(const BoolDBusMethodCallback& callback) = 0; 118 virtual void IsMounted(const BoolDBusMethodCallback& callback) = 0;
117 119
118 // Calls Unmount method and returns true when the call succeeds. 120 // Calls Unmount method and returns true when the call succeeds.
119 // This method blocks until the call returns. 121 // This method blocks until the call returns.
120 virtual bool Unmount(bool* success) = 0; 122 virtual bool Unmount(bool* success) = 0;
121 123
122 // Calls AsyncCheckKey method. |callback| is called after the method call 124 // Calls AsyncCheckKey method. |callback| is called after the method call
123 // succeeds. 125 // succeeds.
124 virtual void AsyncCheckKey(const std::string& username, 126 virtual void AsyncCheckKey(const cryptohome::Identification& cryptohome_id,
125 const std::string& key, 127 const std::string& key,
126 const AsyncMethodCallback& callback) = 0; 128 const AsyncMethodCallback& callback) = 0;
127 129
128 // Calls AsyncMigrateKey method. |callback| is called after the method call 130 // Calls AsyncMigrateKey method. |callback| is called after the method call
129 // succeeds. 131 // succeeds.
130 virtual void AsyncMigrateKey(const std::string& username, 132 virtual void AsyncMigrateKey(const cryptohome::Identification& cryptohome_id,
131 const std::string& from_key, 133 const std::string& from_key,
132 const std::string& to_key, 134 const std::string& to_key,
133 const AsyncMethodCallback& callback) = 0; 135 const AsyncMethodCallback& callback) = 0;
134 136
135 // Calls AsyncRemove method. |callback| is called after the method call 137 // Calls AsyncRemove method. |callback| is called after the method call
136 // succeeds. 138 // succeeds.
137 virtual void AsyncRemove(const std::string& username, 139 virtual void AsyncRemove(const cryptohome::Identification& cryptohome_id,
138 const AsyncMethodCallback& callback) = 0; 140 const AsyncMethodCallback& callback) = 0;
139 141
140 // Calls GetSystemSalt method. |callback| is called after the method call 142 // Calls GetSystemSalt method. |callback| is called after the method call
141 // succeeds. 143 // succeeds.
142 virtual void GetSystemSalt(const GetSystemSaltCallback& callback) = 0; 144 virtual void GetSystemSalt(const GetSystemSaltCallback& callback) = 0;
143 145
144 // Calls GetSanitizedUsername method. |callback| is called after the method 146 // Calls GetSanitizedUsername method. |callback| is called after the method
145 // call succeeds. 147 // call succeeds.
146 virtual void GetSanitizedUsername( 148 virtual void GetSanitizedUsername(
147 const std::string& username, 149 const cryptohome::Identification& cryptohome_id,
148 const StringDBusMethodCallback& callback) = 0; 150 const StringDBusMethodCallback& callback) = 0;
149 151
150 // Same as GetSanitizedUsername() but blocks until a reply is received, and 152 // Same as GetSanitizedUsername() but blocks until a reply is received, and
151 // returns the sanitized username synchronously. Returns an empty string if 153 // returns the sanitized username synchronously. Returns an empty string if
152 // the method call fails. 154 // the method call fails.
153 // This may only be called in situations where blocking the UI thread is 155 // This may only be called in situations where blocking the UI thread is
154 // considered acceptable (e.g. restarting the browser after a crash or after 156 // considered acceptable (e.g. restarting the browser after a crash or after
155 // a flag change). 157 // a flag change).
156 virtual std::string BlockingGetSanitizedUsername( 158 virtual std::string BlockingGetSanitizedUsername(
157 const std::string& username) = 0; 159 const cryptohome::Identification& cryptohome_id) = 0;
158 160
159 // Calls the AsyncMount method to asynchronously mount the cryptohome for 161 // Calls the AsyncMount method to asynchronously mount the cryptohome for
160 // |username|, using |key| to unlock it. For supported |flags|, see the 162 // |username|, using |key| to unlock it. For supported |flags|, see the
161 // documentation of AsyncMethodCaller::AsyncMount(). 163 // documentation of AsyncMethodCaller::AsyncMount().
162 // |callback| is called after the method call succeeds. 164 // |callback| is called after the method call succeeds.
163 virtual void AsyncMount(const std::string& username, 165 virtual void AsyncMount(const cryptohome::Identification& cryptohome_id,
164 const std::string& key, 166 const std::string& key,
165 int flags, 167 int flags,
166 const AsyncMethodCallback& callback) = 0; 168 const AsyncMethodCallback& callback) = 0;
167 169
168 // Calls the AsyncAddKey method to asynchronously add another |new_key| for 170 // Calls the AsyncAddKey method to asynchronously add another |new_key| for
169 // |username|, using |key| to unlock it first. 171 // |username|, using |key| to unlock it first.
170 // |callback| is called after the method call succeeds. 172 // |callback| is called after the method call succeeds.
171 virtual void AsyncAddKey(const std::string& username, 173 virtual void AsyncAddKey(const cryptohome::Identification& cryptohome_id,
172 const std::string& key, 174 const std::string& key,
173 const std::string& new_key, 175 const std::string& new_key,
174 const AsyncMethodCallback& callback) = 0; 176 const AsyncMethodCallback& callback) = 0;
175 177
176 // Calls AsyncMountGuest method. |callback| is called after the method call 178 // Calls AsyncMountGuest method. |callback| is called after the method call
177 // succeeds. 179 // succeeds.
178 virtual void AsyncMountGuest(const AsyncMethodCallback& callback) = 0; 180 virtual void AsyncMountGuest(const AsyncMethodCallback& callback) = 0;
179 181
180 // Calls the AsyncMount method to asynchronously mount the cryptohome for 182 // Calls the AsyncMount method to asynchronously mount the cryptohome for
181 // |public_mount_id|. For supported |flags|, see the documentation of 183 // |public_mount_id|. For supported |flags|, see the documentation of
182 // AsyncMethodCaller::AsyncMount(). |callback| is called after the method 184 // AsyncMethodCaller::AsyncMount(). |callback| is called after the method
183 // call succeeds. 185 // call succeeds.
184 virtual void AsyncMountPublic(const std::string& public_mount_id, 186 virtual void AsyncMountPublic(
185 int flags, 187 const cryptohome::Identification& public_mount_id,
186 const AsyncMethodCallback& callback) = 0; 188 int flags,
189 const AsyncMethodCallback& callback) = 0;
187 190
188 // Calls TpmIsReady method. 191 // Calls TpmIsReady method.
189 virtual void TpmIsReady(const BoolDBusMethodCallback& callback) = 0; 192 virtual void TpmIsReady(const BoolDBusMethodCallback& callback) = 0;
190 193
191 // Calls TpmIsEnabled method. 194 // Calls TpmIsEnabled method.
192 virtual void TpmIsEnabled(const BoolDBusMethodCallback& callback) = 0; 195 virtual void TpmIsEnabled(const BoolDBusMethodCallback& callback) = 0;
193 196
194 // Calls TpmIsEnabled method and returns true when the call succeeds. 197 // Calls TpmIsEnabled method and returns true when the call succeeds.
195 // This method blocks until the call returns. 198 // This method blocks until the call returns.
196 // TODO(hashimoto): Remove this method. crbug.com/141006 199 // TODO(hashimoto): Remove this method. crbug.com/141006
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 const BoolDBusMethodCallback& callback) = 0; 237 const BoolDBusMethodCallback& callback) = 0;
235 238
236 // Calls Pkcs11GetTpmTokenInfo method. This method is deprecated, you should 239 // Calls Pkcs11GetTpmTokenInfo method. This method is deprecated, you should
237 // use Pkcs11GetTpmTokenInfoForUser instead. On success |callback| will 240 // use Pkcs11GetTpmTokenInfoForUser instead. On success |callback| will
238 // receive PKCS #11 token information for the token associated with the user 241 // receive PKCS #11 token information for the token associated with the user
239 // who originally signed in (i.e. PKCS #11 slot 0). 242 // who originally signed in (i.e. PKCS #11 slot 0).
240 virtual void Pkcs11GetTpmTokenInfo( 243 virtual void Pkcs11GetTpmTokenInfo(
241 const Pkcs11GetTpmTokenInfoCallback& callback) = 0; 244 const Pkcs11GetTpmTokenInfoCallback& callback) = 0;
242 245
243 // Calls Pkcs11GetTpmTokenInfoForUser method. On success |callback| will 246 // Calls Pkcs11GetTpmTokenInfoForUser method. On success |callback| will
244 // receive PKCS #11 token information for the user identified by |user_email|. 247 // receive PKCS #11 token information for the user identified by
245 // The |user_email| must be a canonical email address as returned by 248 // |cryptohome_id|.
246 // user_manager::User::email().
247 virtual void Pkcs11GetTpmTokenInfoForUser( 249 virtual void Pkcs11GetTpmTokenInfoForUser(
248 const std::string& user_email, 250 const cryptohome::Identification& cryptohome_id,
249 const Pkcs11GetTpmTokenInfoCallback& callback) = 0; 251 const Pkcs11GetTpmTokenInfoCallback& callback) = 0;
250 252
251 // Calls InstallAttributesGet method and returns true when the call succeeds. 253 // Calls InstallAttributesGet method and returns true when the call succeeds.
252 // This method blocks until the call returns. 254 // This method blocks until the call returns.
253 // The original content of |value| is lost. 255 // The original content of |value| is lost.
254 virtual bool InstallAttributesGet(const std::string& name, 256 virtual bool InstallAttributesGet(const std::string& name,
255 std::vector<uint8_t>* value, 257 std::vector<uint8_t>* value,
256 bool* successful) = 0; 258 bool* successful) = 0;
257 259
258 // Calls InstallAttributesSet method and returns true when the call succeeds. 260 // Calls InstallAttributesSet method and returns true when the call succeeds.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 // will be called when the dbus call completes. When the operation completes, 303 // will be called when the dbus call completes. When the operation completes,
302 // the AsyncCallStatusHandler signal handler is called. |pca_response| is the 304 // the AsyncCallStatusHandler signal handler is called. |pca_response| is the
303 // response to the enrollment request emitted by the Privacy CA of type 305 // response to the enrollment request emitted by the Privacy CA of type
304 // |pca_type|. 306 // |pca_type|.
305 virtual void AsyncTpmAttestationEnroll( 307 virtual void AsyncTpmAttestationEnroll(
306 chromeos::attestation::PrivacyCAType pca_type, 308 chromeos::attestation::PrivacyCAType pca_type,
307 const std::string& pca_response, 309 const std::string& pca_response,
308 const AsyncMethodCallback& callback) = 0; 310 const AsyncMethodCallback& callback) = 0;
309 311
310 // Asynchronously creates an attestation certificate request according to 312 // Asynchronously creates an attestation certificate request according to
311 // |certificate_profile|. Some profiles require that the |user_id| of the 313 // |certificate_profile|. Some profiles require that the |cryptohome_id| of
312 // currently active user and an identifier of the |request_origin| be 314 // the currently active user and an identifier of the |request_origin| be
313 // provided. |callback| will be called when the dbus call completes. When 315 // provided. |callback| will be called when the dbus call completes. When
314 // the operation completes, the AsyncCallStatusWithDataHandler signal handler 316 // the operation completes, the AsyncCallStatusWithDataHandler signal handler
315 // is called. The data that is sent with the signal is a certificate request 317 // is called. The data that is sent with the signal is a certificate request
316 // to be sent to the Privacy CA of type |pca_type|. The certificate request 318 // to be sent to the Privacy CA of type |pca_type|. The certificate request
317 // is completed by calling AsyncTpmAttestationFinishCertRequest. The 319 // is completed by calling AsyncTpmAttestationFinishCertRequest. The
318 // |user_id| will not be included in the certificate request for the Privacy 320 // |cryptohome_id| will not be included in the certificate request for the
319 // CA. 321 // Privacy CA.
320 virtual void AsyncTpmAttestationCreateCertRequest( 322 virtual void AsyncTpmAttestationCreateCertRequest(
321 chromeos::attestation::PrivacyCAType pca_type, 323 chromeos::attestation::PrivacyCAType pca_type,
322 attestation::AttestationCertificateProfile certificate_profile, 324 attestation::AttestationCertificateProfile certificate_profile,
323 const std::string& user_id, 325 const cryptohome::Identification& cryptohome_id,
324 const std::string& request_origin, 326 const std::string& request_origin,
325 const AsyncMethodCallback& callback) = 0; 327 const AsyncMethodCallback& callback) = 0;
326 328
327 // Asynchronously finishes a certificate request operation. The callback will 329 // Asynchronously finishes a certificate request operation. The callback will
328 // be called when the dbus call completes. When the operation completes, the 330 // be called when the dbus call completes. When the operation completes, the
329 // AsyncCallStatusWithDataHandler signal handler is called. The data that is 331 // AsyncCallStatusWithDataHandler signal handler is called. The data that is
330 // sent with the signal is a certificate chain in PEM format. |pca_response| 332 // sent with the signal is a certificate chain in PEM format. |pca_response|
331 // is the response to the certificate request emitted by the Privacy CA. 333 // is the response to the certificate request emitted by the Privacy CA.
332 // |key_type| determines whether the certified key is to be associated with 334 // |key_type| determines whether the certified key is to be associated with
333 // the current user. |key_name| is a name for the key. If |key_type| is 335 // the current user. |key_name| is a name for the key. If |key_type| is
334 // KEY_USER, a |user_id| must be provided. Otherwise |user_id| is ignored. 336 // KEY_USER, a |cryptohome_id| must be provided. Otherwise |cryptohome_id|
335 // For normal GAIA users the |user_id| is a canonical email address. 337 // is ignored.
336 virtual void AsyncTpmAttestationFinishCertRequest( 338 virtual void AsyncTpmAttestationFinishCertRequest(
337 const std::string& pca_response, 339 const std::string& pca_response,
338 attestation::AttestationKeyType key_type, 340 attestation::AttestationKeyType key_type,
339 const std::string& user_id, 341 const cryptohome::Identification& cryptohome_id,
340 const std::string& key_name, 342 const std::string& key_name,
341 const AsyncMethodCallback& callback) = 0; 343 const AsyncMethodCallback& callback) = 0;
342 344
343 // Checks if an attestation key already exists. If the key specified by 345 // Checks if an attestation key already exists. If the key specified by
344 // |key_type| and |key_name| exists, then the result sent to the callback will 346 // |key_type| and |key_name| exists, then the result sent to the callback will
345 // be true. If |key_type| is KEY_USER, a |user_id| must be provided. 347 // be true. If |key_type| is KEY_USER, a |cryptohome_id| must be provided.
346 // Otherwise |user_id| is ignored. For normal GAIA users the |user_id| is a 348 // Otherwise |cryptohome_id| is ignored.
347 // canonical email address.
348 virtual void TpmAttestationDoesKeyExist( 349 virtual void TpmAttestationDoesKeyExist(
349 attestation::AttestationKeyType key_type, 350 attestation::AttestationKeyType key_type,
350 const std::string& user_id, 351 const cryptohome::Identification& cryptohome_id,
351 const std::string& key_name, 352 const std::string& key_name,
352 const BoolDBusMethodCallback& callback) = 0; 353 const BoolDBusMethodCallback& callback) = 0;
353 354
354 // Gets the attestation certificate for the key specified by |key_type| and 355 // Gets the attestation certificate for the key specified by |key_type| and
355 // |key_name|. |callback| will be called when the operation completes. If 356 // |key_name|. |callback| will be called when the operation completes. If
356 // the key does not exist the callback |result| parameter will be false. If 357 // the key does not exist the callback |result| parameter will be false. If
357 // |key_type| is KEY_USER, a |user_id| must be provided. Otherwise |user_id| 358 // |key_type| is KEY_USER, a |cryptohome_id| must be provided. Otherwise
358 // is ignored. For normal GAIA users the |user_id| is a canonical email 359 // |cryptohome_id|
359 // address. 360 // is ignored.
360 virtual void TpmAttestationGetCertificate( 361 virtual void TpmAttestationGetCertificate(
361 attestation::AttestationKeyType key_type, 362 attestation::AttestationKeyType key_type,
362 const std::string& user_id, 363 const cryptohome::Identification& cryptohome_id,
363 const std::string& key_name, 364 const std::string& key_name,
364 const DataMethodCallback& callback) = 0; 365 const DataMethodCallback& callback) = 0;
365 366
366 // Gets the public key for the key specified by |key_type| and |key_name|. 367 // Gets the public key for the key specified by |key_type| and |key_name|.
367 // |callback| will be called when the operation completes. If the key does 368 // |callback| will be called when the operation completes. If the key does
368 // not exist the callback |result| parameter will be false. If |key_type| is 369 // not exist the callback |result| parameter will be false. If |key_type| is
369 // KEY_USER, a |user_id| must be provided. Otherwise |user_id| is ignored. 370 // KEY_USER, a |cryptohome_id| must be provided. Otherwise |cryptohome_id|
370 // For normal GAIA users the |user_id| is a canonical email address. 371 // is ignored.
371 virtual void TpmAttestationGetPublicKey( 372 virtual void TpmAttestationGetPublicKey(
372 attestation::AttestationKeyType key_type, 373 attestation::AttestationKeyType key_type,
373 const std::string& user_id, 374 const cryptohome::Identification& cryptohome_id,
374 const std::string& key_name, 375 const std::string& key_name,
375 const DataMethodCallback& callback) = 0; 376 const DataMethodCallback& callback) = 0;
376 377
377 // Asynchronously registers an attestation key with the current user's 378 // Asynchronously registers an attestation key with the current user's
378 // PKCS #11 token. The |callback| will be called when the dbus call 379 // PKCS #11 token. The |callback| will be called when the dbus call
379 // completes. When the operation completes, the AsyncCallStatusHandler signal 380 // completes. When the operation completes, the AsyncCallStatusHandler signal
380 // handler is called. |key_type| and |key_name| specify the key to register. 381 // handler is called. |key_type| and |key_name| specify the key to register.
381 // If |key_type| is KEY_USER, a |user_id| must be provided. Otherwise 382 // If |key_type| is KEY_USER, a |cryptohome_id| must be provided. Otherwise
382 // |user_id| is ignored. For normal GAIA users the |user_id| is a canonical 383 // |cryptohome_id| is ignored.
383 // email address.
384 virtual void TpmAttestationRegisterKey( 384 virtual void TpmAttestationRegisterKey(
385 attestation::AttestationKeyType key_type, 385 attestation::AttestationKeyType key_type,
386 const std::string& user_id, 386 const cryptohome::Identification& cryptohome_id,
387 const std::string& key_name, 387 const std::string& key_name,
388 const AsyncMethodCallback& callback) = 0; 388 const AsyncMethodCallback& callback) = 0;
389 389
390 // Asynchronously signs an enterprise challenge with the key specified by 390 // Asynchronously signs an enterprise challenge with the key specified by
391 // |key_type| and |key_name|. |domain| and |device_id| will be included in 391 // |key_type| and |key_name|. |domain| and |device_id| will be included in
392 // the challenge response. |options| control how the challenge response is 392 // the challenge response. |options| control how the challenge response is
393 // generated. |challenge| must be a valid enterprise attestation challenge. 393 // generated. |challenge| must be a valid enterprise attestation challenge.
394 // The |callback| will be called when the dbus call completes. When the 394 // The |callback| will be called when the dbus call completes. When the
395 // operation completes, the AsyncCallStatusWithDataHandler signal handler is 395 // operation completes, the AsyncCallStatusWithDataHandler signal handler is
396 // called. If |key_type| is KEY_USER, a |user_id| must be provided. 396 // called. If |key_type| is KEY_USER, a |cryptohome_id| must be provided.
397 // Otherwise |user_id| is ignored. For normal GAIA users the |user_id| is a 397 // Otherwise |cryptohome_id| is ignored.
398 // canonical email address.
399 virtual void TpmAttestationSignEnterpriseChallenge( 398 virtual void TpmAttestationSignEnterpriseChallenge(
400 attestation::AttestationKeyType key_type, 399 attestation::AttestationKeyType key_type,
401 const std::string& user_id, 400 const cryptohome::Identification& cryptohome_id,
402 const std::string& key_name, 401 const std::string& key_name,
403 const std::string& domain, 402 const std::string& domain,
404 const std::string& device_id, 403 const std::string& device_id,
405 attestation::AttestationChallengeOptions options, 404 attestation::AttestationChallengeOptions options,
406 const std::string& challenge, 405 const std::string& challenge,
407 const AsyncMethodCallback& callback) = 0; 406 const AsyncMethodCallback& callback) = 0;
408 407
409 // Asynchronously signs a simple challenge with the key specified by 408 // Asynchronously signs a simple challenge with the key specified by
410 // |key_type| and |key_name|. |challenge| can be any set of arbitrary bytes. 409 // |key_type| and |key_name|. |challenge| can be any set of arbitrary bytes.
411 // A nonce will be appended to the challenge before signing; this method 410 // A nonce will be appended to the challenge before signing; this method
412 // cannot be used to sign arbitrary data. The |callback| will be called when 411 // cannot be used to sign arbitrary data. The |callback| will be called when
413 // the dbus call completes. When the operation completes, the 412 // the dbus call completes. When the operation completes, the
414 // AsyncCallStatusWithDataHandler signal handler is called. If |key_type| is 413 // AsyncCallStatusWithDataHandler signal handler is called. If |key_type| is
415 // KEY_USER, a |user_id| must be provided. Otherwise |user_id| is ignored. 414 // KEY_USER, a |cryptohome_id| must be provided. Otherwise |cryptohome_id|
416 // For normal GAIA users the |user_id| is a canonical email address. 415 // is ignored.
417 virtual void TpmAttestationSignSimpleChallenge( 416 virtual void TpmAttestationSignSimpleChallenge(
418 attestation::AttestationKeyType key_type, 417 attestation::AttestationKeyType key_type,
419 const std::string& user_id, 418 const cryptohome::Identification& cryptohome_id,
420 const std::string& key_name, 419 const std::string& key_name,
421 const std::string& challenge, 420 const std::string& challenge,
422 const AsyncMethodCallback& callback) = 0; 421 const AsyncMethodCallback& callback) = 0;
423 422
424 // Gets the payload associated with the key specified by |key_type| and 423 // Gets the payload associated with the key specified by |key_type| and
425 // |key_name|. The |callback| will be called when the operation completes. 424 // |key_name|. The |callback| will be called when the operation completes.
426 // If the key does not exist the callback |result| parameter will be false. 425 // If the key does not exist the callback |result| parameter will be false.
427 // If no payload has been set for the key the callback |result| parameter will 426 // If no payload has been set for the key the callback |result| parameter will
428 // be true and the |data| parameter will be empty. If |key_type| is 427 // be true and the |data| parameter will be empty. If |key_type| is
429 // KEY_USER, a |user_id| must be provided. Otherwise |user_id| is ignored. 428 // KEY_USER, a |cryptohome_id| must be provided. Otherwise |cryptohome_id|
430 // For normal GAIA users the |user_id| is a canonical email address. 429 // is ignored.
431 virtual void TpmAttestationGetKeyPayload( 430 virtual void TpmAttestationGetKeyPayload(
432 attestation::AttestationKeyType key_type, 431 attestation::AttestationKeyType key_type,
433 const std::string& user_id, 432 const cryptohome::Identification& cryptohome_id,
434 const std::string& key_name, 433 const std::string& key_name,
435 const DataMethodCallback& callback) = 0; 434 const DataMethodCallback& callback) = 0;
436 435
437 // Sets the |payload| associated with the key specified by |key_type| and 436 // Sets the |payload| associated with the key specified by |key_type| and
438 // |key_name|. The |callback| will be called when the operation completes. 437 // |key_name|. The |callback| will be called when the operation completes.
439 // If the operation succeeds, the callback |result| parameter will be true. 438 // If the operation succeeds, the callback |result| parameter will be true.
440 // If |key_type| is KEY_USER, a |user_id| must be provided. Otherwise 439 // If |key_type| is KEY_USER, a |cryptohome_id| must be provided. Otherwise
441 // |user_id| is ignored. For normal GAIA users the |user_id| is a canonical 440 // |cryptohome_id| is ignored.
442 // email address.
443 virtual void TpmAttestationSetKeyPayload( 441 virtual void TpmAttestationSetKeyPayload(
444 attestation::AttestationKeyType key_type, 442 attestation::AttestationKeyType key_type,
445 const std::string& user_id, 443 const cryptohome::Identification& cryptohome_id,
446 const std::string& key_name, 444 const std::string& key_name,
447 const std::string& payload, 445 const std::string& payload,
448 const BoolDBusMethodCallback& callback) = 0; 446 const BoolDBusMethodCallback& callback) = 0;
449 447
450 // Deletes certified keys as specified by |key_type| and |key_prefix|. The 448 // Deletes certified keys as specified by |key_type| and |key_prefix|. The
451 // |callback| will be called when the operation completes. If the operation 449 // |callback| will be called when the operation completes. If the operation
452 // succeeds, the callback |result| parameter will be true. If |key_type| is 450 // succeeds, the callback |result| parameter will be true. If |key_type| is
453 // KEY_USER, a |user_id| must be provided. Otherwise |user_id| is ignored. 451 // KEY_USER, a |cryptohome_id| must be provided. Otherwise |cryptohome_id|
454 // For normal GAIA users the |user_id| is a canonical email address. All keys 452 // is ignored.
455 // where the key name has a prefix matching |key_prefix| will be deleted. All 453 // All keys where the key name has a prefix matching |key_prefix| will be
456 // meta-data associated with the key, including certificates, will also be 454 // deleted. All meta-data associated with the key, including certificates,
457 // deleted. 455 // will also be deleted.
458 virtual void TpmAttestationDeleteKeys( 456 virtual void TpmAttestationDeleteKeys(
459 attestation::AttestationKeyType key_type, 457 attestation::AttestationKeyType key_type,
460 const std::string& user_id, 458 const cryptohome::Identification& cryptohome_id,
461 const std::string& key_prefix, 459 const std::string& key_prefix,
462 const BoolDBusMethodCallback& callback) = 0; 460 const BoolDBusMethodCallback& callback) = 0;
463 461
464 // Asynchronously calls the GetKeyDataEx method. |callback| will be invoked 462 // Asynchronously calls the GetKeyDataEx method. |callback| will be invoked
465 // with the reply protobuf. 463 // with the reply protobuf.
466 // GetKeyDataEx returns information about the key specified in |request|. At 464 // GetKeyDataEx returns information about the key specified in |request|. At
467 // present, this does not include any secret information and the call should 465 // present, this does not include any secret information and the call should
468 // not be authenticated (|auth| should be empty). 466 // not be authenticated (|auth| should be empty).
469 virtual void GetKeyDataEx( 467 virtual void GetKeyDataEx(const cryptohome::Identification& cryptohome_id,
470 const cryptohome::AccountIdentifier& id, 468 const cryptohome::AuthorizationRequest& auth,
471 const cryptohome::AuthorizationRequest& auth, 469 const cryptohome::GetKeyDataRequest& request,
472 const cryptohome::GetKeyDataRequest& request, 470 const ProtobufMethodCallback& callback) = 0;
473 const ProtobufMethodCallback& callback) = 0;
474 471
475 // Asynchronously calls CheckKeyEx method. |callback| is called after method 472 // Asynchronously calls CheckKeyEx method. |callback| is called after method
476 // call, and with reply protobuf. 473 // call, and with reply protobuf.
477 // CheckKeyEx just checks if authorization information is valid. 474 // CheckKeyEx just checks if authorization information is valid.
478 virtual void CheckKeyEx( 475 virtual void CheckKeyEx(const cryptohome::Identification& cryptohome_id,
479 const cryptohome::AccountIdentifier& id, 476 const cryptohome::AuthorizationRequest& auth,
480 const cryptohome::AuthorizationRequest& auth, 477 const cryptohome::CheckKeyRequest& request,
481 const cryptohome::CheckKeyRequest& request, 478 const ProtobufMethodCallback& callback) = 0;
482 const ProtobufMethodCallback& callback) = 0;
483 479
484 // Asynchronously calls MountEx method. |callback| is called after method 480 // Asynchronously calls MountEx method. |callback| is called after method
485 // call, and with reply protobuf. 481 // call, and with reply protobuf.
486 // MountEx attempts to mount home dir using given authorization, and can 482 // MountEx attempts to mount home dir using given authorization, and can
487 // create new home dir if necessary values are specified in |request|. 483 // create new home dir if necessary values are specified in |request|.
488 virtual void MountEx( 484 virtual void MountEx(const cryptohome::Identification& cryptohome_id,
489 const cryptohome::AccountIdentifier& id, 485 const cryptohome::AuthorizationRequest& auth,
490 const cryptohome::AuthorizationRequest& auth, 486 const cryptohome::MountRequest& request,
491 const cryptohome::MountRequest& request, 487 const ProtobufMethodCallback& callback) = 0;
492 const ProtobufMethodCallback& callback) = 0;
493 488
494 // Asynchronously calls AddKeyEx method. |callback| is called after method 489 // Asynchronously calls AddKeyEx method. |callback| is called after method
495 // call, and with reply protobuf. 490 // call, and with reply protobuf.
496 // AddKeyEx adds another key to the given key set. |request| also defines 491 // AddKeyEx adds another key to the given key set. |request| also defines
497 // behavior in case when key with specified label already exist. 492 // behavior in case when key with specified label already exist.
498 virtual void AddKeyEx( 493 virtual void AddKeyEx(const cryptohome::Identification& cryptohome_id,
499 const cryptohome::AccountIdentifier& id, 494 const cryptohome::AuthorizationRequest& auth,
500 const cryptohome::AuthorizationRequest& auth, 495 const cryptohome::AddKeyRequest& request,
501 const cryptohome::AddKeyRequest& request, 496 const ProtobufMethodCallback& callback) = 0;
502 const ProtobufMethodCallback& callback) = 0;
503 497
504 // Asynchronously calls UpdateKeyEx method. |callback| is called after method 498 // Asynchronously calls UpdateKeyEx method. |callback| is called after method
505 // call, and with reply protobuf. Reply will contain MountReply extension. 499 // call, and with reply protobuf. Reply will contain MountReply extension.
506 // UpdateKeyEx replaces key used for authorization, without affecting any 500 // UpdateKeyEx replaces key used for authorization, without affecting any
507 // other keys. If specified at home dir creation time, new key may have 501 // other keys. If specified at home dir creation time, new key may have
508 // to be signed and/or encrypted. 502 // to be signed and/or encrypted.
509 virtual void UpdateKeyEx( 503 virtual void UpdateKeyEx(const cryptohome::Identification& cryptohome_id,
510 const cryptohome::AccountIdentifier& id, 504 const cryptohome::AuthorizationRequest& auth,
511 const cryptohome::AuthorizationRequest& auth, 505 const cryptohome::UpdateKeyRequest& request,
512 const cryptohome::UpdateKeyRequest& request, 506 const ProtobufMethodCallback& callback) = 0;
513 const ProtobufMethodCallback& callback) = 0;
514 507
515 // Asynchronously calls RemoveKeyEx method. |callback| is called after method 508 // Asynchronously calls RemoveKeyEx method. |callback| is called after method
516 // call, and with reply protobuf. 509 // call, and with reply protobuf.
517 // RemoveKeyEx removes key from the given key set. 510 // RemoveKeyEx removes key from the given key set.
518 virtual void RemoveKeyEx(const cryptohome::AccountIdentifier& id, 511 virtual void RemoveKeyEx(const cryptohome::Identification& cryptohome_id,
519 const cryptohome::AuthorizationRequest& auth, 512 const cryptohome::AuthorizationRequest& auth,
520 const cryptohome::RemoveKeyRequest& request, 513 const cryptohome::RemoveKeyRequest& request,
521 const ProtobufMethodCallback& callback) = 0; 514 const ProtobufMethodCallback& callback) = 0;
522 515
523 // Asynchronously calls GetBootAttribute method. |callback| is called after 516 // Asynchronously calls GetBootAttribute method. |callback| is called after
524 // method call, and with reply protobuf. 517 // method call, and with reply protobuf.
525 // GetBootAttribute gets the value of the specified boot attribute. 518 // GetBootAttribute gets the value of the specified boot attribute.
526 virtual void GetBootAttribute( 519 virtual void GetBootAttribute(
527 const cryptohome::GetBootAttributeRequest& request, 520 const cryptohome::GetBootAttributeRequest& request,
528 const ProtobufMethodCallback& callback) = 0; 521 const ProtobufMethodCallback& callback) = 0;
(...skipping 19 matching lines...) Expand all
548 // Create() should be used instead. 541 // Create() should be used instead.
549 CryptohomeClient(); 542 CryptohomeClient();
550 543
551 private: 544 private:
552 DISALLOW_COPY_AND_ASSIGN(CryptohomeClient); 545 DISALLOW_COPY_AND_ASSIGN(CryptohomeClient);
553 }; 546 };
554 547
555 } // namespace chromeos 548 } // namespace chromeos
556 549
557 #endif // CHROMEOS_DBUS_CRYPTOHOME_CLIENT_H_ 550 #endif // CHROMEOS_DBUS_CRYPTOHOME_CLIENT_H_
OLDNEW
« no previous file with comments | « chromeos/cryptohome/mock_async_method_caller.h ('k') | chromeos/dbus/cryptohome_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698