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

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

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/dbus/cryptohome_client.h ('k') | chromeos/dbus/fake_cryptohome_client.h » ('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 #include "chromeos/dbus/cryptohome_client.h" 5 #include "chromeos/dbus/cryptohome_client.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/location.h" 11 #include "base/location.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
14 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
15 #include "chromeos/cryptohome/async_method_caller.h" 15 #include "chromeos/cryptohome/async_method_caller.h"
16 #include "chromeos/cryptohome/cryptohome_parameters.h"
16 #include "chromeos/dbus/blocking_method_caller.h" 17 #include "chromeos/dbus/blocking_method_caller.h"
17 #include "chromeos/dbus/cryptohome/key.pb.h" 18 #include "chromeos/dbus/cryptohome/key.pb.h"
18 #include "chromeos/dbus/cryptohome/rpc.pb.h" 19 #include "chromeos/dbus/cryptohome/rpc.pb.h"
19 #include "dbus/bus.h" 20 #include "dbus/bus.h"
20 #include "dbus/message.h" 21 #include "dbus/message.h"
21 #include "dbus/object_path.h" 22 #include "dbus/object_path.h"
22 #include "dbus/object_proxy.h" 23 #include "dbus/object_proxy.h"
23 #include "third_party/cros_system_api/dbus/service_constants.h" 24 #include "third_party/cros_system_api/dbus/service_constants.h"
24 25
25 namespace chromeos { 26 namespace chromeos {
26 27
27 const int CryptohomeClient::kNotReadyAsyncId = -1; 28 const int CryptohomeClient::kNotReadyAsyncId = -1;
28 29
29 namespace { 30 namespace {
30 31
31 // This suffix is appended to user_id to get hash in stub implementation: 32 // This suffix is appended to cryptohome_id to get hash in stub implementation:
32 // stub_hash = "[user_id]-hash"; 33 // stub_hash = "[cryptohome_id]-hash";
33 static const char kUserIdStubHashSuffix[] = "-hash"; 34 static const char kUserIdStubHashSuffix[] = "-hash";
34 35
35 // Timeout for TPM operations. On slow machines it should be larger, than 36 // Timeout for TPM operations. On slow machines it should be larger, than
36 // default DBus timeout. TPM operations can take up to 80 seconds, so limit 37 // default DBus timeout. TPM operations can take up to 80 seconds, so limit
37 // is 2 minutes. 38 // is 2 minutes.
38 const int kTpmDBusTimeoutMs = 2 * 60 * 1000; 39 const int kTpmDBusTimeoutMs = 2 * 60 * 1000;
39 40
41 void FillIdentificationProtobuf(const cryptohome::Identification& id,
42 cryptohome::AccountIdentifier* id_proto) {
43 id_proto->set_account_id(id.id());
44 }
45
40 // The CryptohomeClient implementation. 46 // The CryptohomeClient implementation.
41 class CryptohomeClientImpl : public CryptohomeClient { 47 class CryptohomeClientImpl : public CryptohomeClient {
42 public: 48 public:
43 CryptohomeClientImpl() : proxy_(NULL), weak_ptr_factory_(this) {} 49 CryptohomeClientImpl() : proxy_(NULL), weak_ptr_factory_(this) {}
44 50
45 // CryptohomeClient override. 51 // CryptohomeClient override.
46 void SetAsyncCallStatusHandlers( 52 void SetAsyncCallStatusHandlers(
47 const AsyncCallStatusHandler& handler, 53 const AsyncCallStatusHandler& handler,
48 const AsyncCallStatusWithDataHandler& data_handler) override { 54 const AsyncCallStatusWithDataHandler& data_handler) override {
49 async_call_status_handler_ = handler; 55 async_call_status_handler_ = handler;
(...skipping 20 matching lines...) Expand all
70 } 76 }
71 77
72 // CryptohomeClient override. 78 // CryptohomeClient override.
73 bool Unmount(bool* success) override { 79 bool Unmount(bool* success) override {
74 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 80 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
75 cryptohome::kCryptohomeUnmount); 81 cryptohome::kCryptohomeUnmount);
76 return CallBoolMethodAndBlock(&method_call, success); 82 return CallBoolMethodAndBlock(&method_call, success);
77 } 83 }
78 84
79 // CryptohomeClient override. 85 // CryptohomeClient override.
80 void AsyncCheckKey(const std::string& username, 86 void AsyncCheckKey(const cryptohome::Identification& cryptohome_id,
81 const std::string& key, 87 const std::string& key,
82 const AsyncMethodCallback& callback) override { 88 const AsyncMethodCallback& callback) override {
83 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 89 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
84 cryptohome::kCryptohomeAsyncCheckKey); 90 cryptohome::kCryptohomeAsyncCheckKey);
85 dbus::MessageWriter writer(&method_call); 91 dbus::MessageWriter writer(&method_call);
86 writer.AppendString(username); 92 writer.AppendString(cryptohome_id.id());
87 writer.AppendString(key); 93 writer.AppendString(key);
88 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 94 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
89 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 95 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
90 weak_ptr_factory_.GetWeakPtr(), 96 weak_ptr_factory_.GetWeakPtr(),
91 callback)); 97 callback));
92 } 98 }
93 99
94 // CryptohomeClient override. 100 // CryptohomeClient override.
95 void AsyncMigrateKey(const std::string& username, 101 void AsyncMigrateKey(const cryptohome::Identification& cryptohome_id,
96 const std::string& from_key, 102 const std::string& from_key,
97 const std::string& to_key, 103 const std::string& to_key,
98 const AsyncMethodCallback& callback) override { 104 const AsyncMethodCallback& callback) override {
99 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 105 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
100 cryptohome::kCryptohomeAsyncMigrateKey); 106 cryptohome::kCryptohomeAsyncMigrateKey);
101 dbus::MessageWriter writer(&method_call); 107 dbus::MessageWriter writer(&method_call);
102 writer.AppendString(username); 108 writer.AppendString(cryptohome_id.id());
103 writer.AppendString(from_key); 109 writer.AppendString(from_key);
104 writer.AppendString(to_key); 110 writer.AppendString(to_key);
105 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 111 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
106 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 112 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
107 weak_ptr_factory_.GetWeakPtr(), 113 weak_ptr_factory_.GetWeakPtr(),
108 callback)); 114 callback));
109 } 115 }
110 116
111 // CryptohomeClient override. 117 // CryptohomeClient override.
112 void AsyncRemove(const std::string& username, 118 void AsyncRemove(const cryptohome::Identification& cryptohome_id,
113 const AsyncMethodCallback& callback) override { 119 const AsyncMethodCallback& callback) override {
114 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 120 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
115 cryptohome::kCryptohomeAsyncRemove); 121 cryptohome::kCryptohomeAsyncRemove);
116 dbus::MessageWriter writer(&method_call); 122 dbus::MessageWriter writer(&method_call);
117 writer.AppendString(username); 123 writer.AppendString(cryptohome_id.id());
118 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 124 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
119 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 125 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
120 weak_ptr_factory_.GetWeakPtr(), 126 weak_ptr_factory_.GetWeakPtr(),
121 callback)); 127 callback));
122 } 128 }
123 129
124 // CryptohomeClient override. 130 // CryptohomeClient override.
125 void GetSystemSalt(const GetSystemSaltCallback& callback) override { 131 void GetSystemSalt(const GetSystemSaltCallback& callback) override {
126 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 132 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
127 cryptohome::kCryptohomeGetSystemSalt); 133 cryptohome::kCryptohomeGetSystemSalt);
128 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 134 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
129 base::Bind(&CryptohomeClientImpl::OnGetSystemSalt, 135 base::Bind(&CryptohomeClientImpl::OnGetSystemSalt,
130 weak_ptr_factory_.GetWeakPtr(), 136 weak_ptr_factory_.GetWeakPtr(),
131 callback)); 137 callback));
132 } 138 }
133 139
134 // CryptohomeClient override, 140 // CryptohomeClient override,
135 void GetSanitizedUsername(const std::string& username, 141 void GetSanitizedUsername(const cryptohome::Identification& cryptohome_id,
136 const StringDBusMethodCallback& callback) override { 142 const StringDBusMethodCallback& callback) override {
137 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 143 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
138 cryptohome::kCryptohomeGetSanitizedUsername); 144 cryptohome::kCryptohomeGetSanitizedUsername);
139 dbus::MessageWriter writer(&method_call); 145 dbus::MessageWriter writer(&method_call);
140 writer.AppendString(username); 146 writer.AppendString(cryptohome_id.id());
141 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 147 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
142 base::Bind(&CryptohomeClientImpl::OnStringMethod, 148 base::Bind(&CryptohomeClientImpl::OnStringMethod,
143 weak_ptr_factory_.GetWeakPtr(), 149 weak_ptr_factory_.GetWeakPtr(),
144 callback)); 150 callback));
145 } 151 }
146 152
147 // CryptohomeClient override. 153 // CryptohomeClient override.
148 std::string BlockingGetSanitizedUsername( 154 std::string BlockingGetSanitizedUsername(
149 const std::string& username) override { 155 const cryptohome::Identification& cryptohome_id) override {
150 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 156 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
151 cryptohome::kCryptohomeGetSanitizedUsername); 157 cryptohome::kCryptohomeGetSanitizedUsername);
152 dbus::MessageWriter writer(&method_call); 158 dbus::MessageWriter writer(&method_call);
153 writer.AppendString(username); 159 writer.AppendString(cryptohome_id.id());
154 160
155 scoped_ptr<dbus::Response> response = 161 scoped_ptr<dbus::Response> response =
156 blocking_method_caller_->CallMethodAndBlock(&method_call); 162 blocking_method_caller_->CallMethodAndBlock(&method_call);
157 163
158 std::string sanitized_username; 164 std::string sanitized_username;
159 if (response) { 165 if (response) {
160 dbus::MessageReader reader(response.get()); 166 dbus::MessageReader reader(response.get());
161 reader.PopString(&sanitized_username); 167 reader.PopString(&sanitized_username);
162 } 168 }
163 169
164 return sanitized_username; 170 return sanitized_username;
165 } 171 }
166 172
167 // CryptohomeClient override. 173 // CryptohomeClient override.
168 void AsyncMount(const std::string& username, 174 void AsyncMount(const cryptohome::Identification& cryptohome_id,
169 const std::string& key, 175 const std::string& key,
170 int flags, 176 int flags,
171 const AsyncMethodCallback& callback) override { 177 const AsyncMethodCallback& callback) override {
172 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 178 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
173 cryptohome::kCryptohomeAsyncMount); 179 cryptohome::kCryptohomeAsyncMount);
174 dbus::MessageWriter writer(&method_call); 180 dbus::MessageWriter writer(&method_call);
175 writer.AppendString(username); 181 writer.AppendString(cryptohome_id.id());
176 writer.AppendString(key); 182 writer.AppendString(key);
177 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING); 183 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING);
178 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL); 184 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL);
179 // deprecated_tracked_subdirectories 185 // deprecated_tracked_subdirectories
180 writer.AppendArrayOfStrings(std::vector<std::string>()); 186 writer.AppendArrayOfStrings(std::vector<std::string>());
181 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 187 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
182 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 188 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
183 weak_ptr_factory_.GetWeakPtr(), 189 weak_ptr_factory_.GetWeakPtr(),
184 callback)); 190 callback));
185 } 191 }
186 192
187 // CryptohomeClient override. 193 // CryptohomeClient override.
188 void AsyncAddKey(const std::string& username, 194 void AsyncAddKey(const cryptohome::Identification& cryptohome_id,
189 const std::string& key, 195 const std::string& key,
190 const std::string& new_key, 196 const std::string& new_key,
191 const AsyncMethodCallback& callback) override { 197 const AsyncMethodCallback& callback) override {
192 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 198 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
193 cryptohome::kCryptohomeAsyncAddKey); 199 cryptohome::kCryptohomeAsyncAddKey);
194 dbus::MessageWriter writer(&method_call); 200 dbus::MessageWriter writer(&method_call);
195 writer.AppendString(username); 201 writer.AppendString(cryptohome_id.id());
196 writer.AppendString(key); 202 writer.AppendString(key);
197 writer.AppendString(new_key); 203 writer.AppendString(new_key);
198 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 204 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
199 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 205 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
200 weak_ptr_factory_.GetWeakPtr(), 206 weak_ptr_factory_.GetWeakPtr(),
201 callback)); 207 callback));
202 } 208 }
203 209
204 // CryptohomeClient override. 210 // CryptohomeClient override.
205 void AsyncMountGuest(const AsyncMethodCallback& callback) override { 211 void AsyncMountGuest(const AsyncMethodCallback& callback) override {
206 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 212 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
207 cryptohome::kCryptohomeAsyncMountGuest); 213 cryptohome::kCryptohomeAsyncMountGuest);
208 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 214 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
209 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 215 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
210 weak_ptr_factory_.GetWeakPtr(), 216 weak_ptr_factory_.GetWeakPtr(),
211 callback)); 217 callback));
212 } 218 }
213 219
214 // CryptohomeClient override. 220 // CryptohomeClient override.
215 void AsyncMountPublic(const std::string& public_mount_id, 221 void AsyncMountPublic(const cryptohome::Identification& public_mount_id,
216 int flags, 222 int flags,
217 const AsyncMethodCallback& callback) override { 223 const AsyncMethodCallback& callback) override {
218 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 224 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
219 cryptohome::kCryptohomeAsyncMountPublic); 225 cryptohome::kCryptohomeAsyncMountPublic);
220 dbus::MessageWriter writer(&method_call); 226 dbus::MessageWriter writer(&method_call);
221 writer.AppendString(public_mount_id); 227 writer.AppendString(public_mount_id.id());
222 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING); 228 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING);
223 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL); 229 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL);
224 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 230 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
225 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 231 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
226 weak_ptr_factory_.GetWeakPtr(), 232 weak_ptr_factory_.GetWeakPtr(),
227 callback)); 233 callback));
228 } 234 }
229 235
230 // CryptohomeClient override. 236 // CryptohomeClient override.
231 void TpmIsReady(const BoolDBusMethodCallback& callback) override { 237 void TpmIsReady(const BoolDBusMethodCallback& callback) override {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 proxy_->CallMethod( 335 proxy_->CallMethod(
330 &method_call, kTpmDBusTimeoutMs , 336 &method_call, kTpmDBusTimeoutMs ,
331 base::Bind( 337 base::Bind(
332 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo, 338 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo,
333 weak_ptr_factory_.GetWeakPtr(), 339 weak_ptr_factory_.GetWeakPtr(),
334 callback)); 340 callback));
335 } 341 }
336 342
337 // CryptohomeClient override. 343 // CryptohomeClient override.
338 void Pkcs11GetTpmTokenInfoForUser( 344 void Pkcs11GetTpmTokenInfoForUser(
339 const std::string& user_email, 345 const cryptohome::Identification& cryptohome_id,
340 const Pkcs11GetTpmTokenInfoCallback& callback) override { 346 const Pkcs11GetTpmTokenInfoCallback& callback) override {
341 dbus::MethodCall method_call( 347 dbus::MethodCall method_call(
342 cryptohome::kCryptohomeInterface, 348 cryptohome::kCryptohomeInterface,
343 cryptohome::kCryptohomePkcs11GetTpmTokenInfoForUser); 349 cryptohome::kCryptohomePkcs11GetTpmTokenInfoForUser);
344 dbus::MessageWriter writer(&method_call); 350 dbus::MessageWriter writer(&method_call);
345 writer.AppendString(user_email); 351 writer.AppendString(cryptohome_id.id());
346 proxy_->CallMethod( 352 proxy_->CallMethod(
347 &method_call, kTpmDBusTimeoutMs , 353 &method_call, kTpmDBusTimeoutMs ,
348 base::Bind( 354 base::Bind(
349 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfoForUser, 355 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfoForUser,
350 weak_ptr_factory_.GetWeakPtr(), 356 weak_ptr_factory_.GetWeakPtr(),
351 callback)); 357 callback));
352 } 358 }
353 359
354 // CryptohomeClient override. 360 // CryptohomeClient override.
355 bool InstallAttributesGet(const std::string& name, 361 bool InstallAttributesGet(const std::string& name,
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 472 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
467 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 473 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
468 weak_ptr_factory_.GetWeakPtr(), 474 weak_ptr_factory_.GetWeakPtr(),
469 callback)); 475 callback));
470 } 476 }
471 477
472 // CryptohomeClient override. 478 // CryptohomeClient override.
473 void AsyncTpmAttestationCreateCertRequest( 479 void AsyncTpmAttestationCreateCertRequest(
474 attestation::PrivacyCAType pca_type, 480 attestation::PrivacyCAType pca_type,
475 attestation::AttestationCertificateProfile certificate_profile, 481 attestation::AttestationCertificateProfile certificate_profile,
476 const std::string& user_id, 482 const cryptohome::Identification& cryptohome_id,
477 const std::string& request_origin, 483 const std::string& request_origin,
478 const AsyncMethodCallback& callback) override { 484 const AsyncMethodCallback& callback) override {
479 dbus::MethodCall method_call( 485 dbus::MethodCall method_call(
480 cryptohome::kCryptohomeInterface, 486 cryptohome::kCryptohomeInterface,
481 cryptohome::kCryptohomeAsyncTpmAttestationCreateCertRequest); 487 cryptohome::kCryptohomeAsyncTpmAttestationCreateCertRequest);
482 dbus::MessageWriter writer(&method_call); 488 dbus::MessageWriter writer(&method_call);
483 writer.AppendInt32(pca_type); 489 writer.AppendInt32(pca_type);
484 writer.AppendInt32(certificate_profile); 490 writer.AppendInt32(certificate_profile);
485 writer.AppendString(user_id); 491 writer.AppendString(cryptohome_id.id());
486 writer.AppendString(request_origin); 492 writer.AppendString(request_origin);
487 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 493 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
488 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 494 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
489 weak_ptr_factory_.GetWeakPtr(), 495 weak_ptr_factory_.GetWeakPtr(),
490 callback)); 496 callback));
491 } 497 }
492 498
493 // CryptohomeClient override. 499 // CryptohomeClient override.
494 void AsyncTpmAttestationFinishCertRequest( 500 void AsyncTpmAttestationFinishCertRequest(
495 const std::string& pca_response, 501 const std::string& pca_response,
496 attestation::AttestationKeyType key_type, 502 attestation::AttestationKeyType key_type,
497 const std::string& user_id, 503 const cryptohome::Identification& cryptohome_id,
498 const std::string& key_name, 504 const std::string& key_name,
499 const AsyncMethodCallback& callback) override { 505 const AsyncMethodCallback& callback) override {
500 dbus::MethodCall method_call( 506 dbus::MethodCall method_call(
501 cryptohome::kCryptohomeInterface, 507 cryptohome::kCryptohomeInterface,
502 cryptohome::kCryptohomeAsyncTpmAttestationFinishCertRequest); 508 cryptohome::kCryptohomeAsyncTpmAttestationFinishCertRequest);
503 dbus::MessageWriter writer(&method_call); 509 dbus::MessageWriter writer(&method_call);
504 writer.AppendArrayOfBytes( 510 writer.AppendArrayOfBytes(
505 reinterpret_cast<const uint8_t*>(pca_response.data()), 511 reinterpret_cast<const uint8_t*>(pca_response.data()),
506 pca_response.size()); 512 pca_response.size());
507 bool is_user_specific = (key_type == attestation::KEY_USER); 513 bool is_user_specific = (key_type == attestation::KEY_USER);
508 writer.AppendBool(is_user_specific); 514 writer.AppendBool(is_user_specific);
509 writer.AppendString(user_id); 515 writer.AppendString(cryptohome_id.id());
510 writer.AppendString(key_name); 516 writer.AppendString(key_name);
511 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 517 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
512 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 518 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
513 weak_ptr_factory_.GetWeakPtr(), 519 weak_ptr_factory_.GetWeakPtr(),
514 callback)); 520 callback));
515 } 521 }
516 522
517 // CryptohomeClient override. 523 // CryptohomeClient override.
518 void TpmAttestationDoesKeyExist( 524 void TpmAttestationDoesKeyExist(
519 attestation::AttestationKeyType key_type, 525 attestation::AttestationKeyType key_type,
520 const std::string& user_id, 526 const cryptohome::Identification& cryptohome_id,
521 const std::string& key_name, 527 const std::string& key_name,
522 const BoolDBusMethodCallback& callback) override { 528 const BoolDBusMethodCallback& callback) override {
523 dbus::MethodCall method_call( 529 dbus::MethodCall method_call(
524 cryptohome::kCryptohomeInterface, 530 cryptohome::kCryptohomeInterface,
525 cryptohome::kCryptohomeTpmAttestationDoesKeyExist); 531 cryptohome::kCryptohomeTpmAttestationDoesKeyExist);
526 dbus::MessageWriter writer(&method_call); 532 dbus::MessageWriter writer(&method_call);
527 bool is_user_specific = (key_type == attestation::KEY_USER); 533 bool is_user_specific = (key_type == attestation::KEY_USER);
528 writer.AppendBool(is_user_specific); 534 writer.AppendBool(is_user_specific);
529 writer.AppendString(user_id); 535 writer.AppendString(cryptohome_id.id());
530 writer.AppendString(key_name); 536 writer.AppendString(key_name);
531 CallBoolMethod(&method_call, callback); 537 CallBoolMethod(&method_call, callback);
532 } 538 }
533 539
534 // CryptohomeClient override. 540 // CryptohomeClient override.
535 void TpmAttestationGetCertificate( 541 void TpmAttestationGetCertificate(
536 attestation::AttestationKeyType key_type, 542 attestation::AttestationKeyType key_type,
537 const std::string& user_id, 543 const cryptohome::Identification& cryptohome_id,
538 const std::string& key_name, 544 const std::string& key_name,
539 const DataMethodCallback& callback) override { 545 const DataMethodCallback& callback) override {
540 dbus::MethodCall method_call( 546 dbus::MethodCall method_call(
541 cryptohome::kCryptohomeInterface, 547 cryptohome::kCryptohomeInterface,
542 cryptohome::kCryptohomeTpmAttestationGetCertificate); 548 cryptohome::kCryptohomeTpmAttestationGetCertificate);
543 dbus::MessageWriter writer(&method_call); 549 dbus::MessageWriter writer(&method_call);
544 bool is_user_specific = (key_type == attestation::KEY_USER); 550 bool is_user_specific = (key_type == attestation::KEY_USER);
545 writer.AppendBool(is_user_specific); 551 writer.AppendBool(is_user_specific);
546 writer.AppendString(user_id); 552 writer.AppendString(cryptohome_id.id());
547 writer.AppendString(key_name); 553 writer.AppendString(key_name);
548 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 554 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
549 base::Bind(&CryptohomeClientImpl::OnDataMethod, 555 base::Bind(&CryptohomeClientImpl::OnDataMethod,
550 weak_ptr_factory_.GetWeakPtr(), 556 weak_ptr_factory_.GetWeakPtr(),
551 callback)); 557 callback));
552 } 558 }
553 559
554 // CryptohomeClient override. 560 // CryptohomeClient override.
555 void TpmAttestationGetPublicKey(attestation::AttestationKeyType key_type, 561 void TpmAttestationGetPublicKey(
556 const std::string& user_id, 562 attestation::AttestationKeyType key_type,
557 const std::string& key_name, 563 const cryptohome::Identification& cryptohome_id,
558 const DataMethodCallback& callback) override { 564 const std::string& key_name,
565 const DataMethodCallback& callback) override {
559 dbus::MethodCall method_call( 566 dbus::MethodCall method_call(
560 cryptohome::kCryptohomeInterface, 567 cryptohome::kCryptohomeInterface,
561 cryptohome::kCryptohomeTpmAttestationGetPublicKey); 568 cryptohome::kCryptohomeTpmAttestationGetPublicKey);
562 dbus::MessageWriter writer(&method_call); 569 dbus::MessageWriter writer(&method_call);
563 bool is_user_specific = (key_type == attestation::KEY_USER); 570 bool is_user_specific = (key_type == attestation::KEY_USER);
564 writer.AppendBool(is_user_specific); 571 writer.AppendBool(is_user_specific);
565 writer.AppendString(user_id); 572 writer.AppendString(cryptohome_id.id());
566 writer.AppendString(key_name); 573 writer.AppendString(key_name);
567 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 574 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
568 base::Bind(&CryptohomeClientImpl::OnDataMethod, 575 base::Bind(&CryptohomeClientImpl::OnDataMethod,
569 weak_ptr_factory_.GetWeakPtr(), 576 weak_ptr_factory_.GetWeakPtr(),
570 callback)); 577 callback));
571 } 578 }
572 579
573 // CryptohomeClient override. 580 // CryptohomeClient override.
574 void TpmAttestationRegisterKey(attestation::AttestationKeyType key_type, 581 void TpmAttestationRegisterKey(
575 const std::string& user_id, 582 attestation::AttestationKeyType key_type,
576 const std::string& key_name, 583 const cryptohome::Identification& cryptohome_id,
577 const AsyncMethodCallback& callback) override { 584 const std::string& key_name,
585 const AsyncMethodCallback& callback) override {
578 dbus::MethodCall method_call( 586 dbus::MethodCall method_call(
579 cryptohome::kCryptohomeInterface, 587 cryptohome::kCryptohomeInterface,
580 cryptohome::kCryptohomeTpmAttestationRegisterKey); 588 cryptohome::kCryptohomeTpmAttestationRegisterKey);
581 dbus::MessageWriter writer(&method_call); 589 dbus::MessageWriter writer(&method_call);
582 bool is_user_specific = (key_type == attestation::KEY_USER); 590 bool is_user_specific = (key_type == attestation::KEY_USER);
583 writer.AppendBool(is_user_specific); 591 writer.AppendBool(is_user_specific);
584 writer.AppendString(user_id); 592 writer.AppendString(cryptohome_id.id());
585 writer.AppendString(key_name); 593 writer.AppendString(key_name);
586 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 594 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
587 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 595 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
588 weak_ptr_factory_.GetWeakPtr(), 596 weak_ptr_factory_.GetWeakPtr(),
589 callback)); 597 callback));
590 } 598 }
591 599
592 // CryptohomeClient override. 600 // CryptohomeClient override.
593 void TpmAttestationSignEnterpriseChallenge( 601 void TpmAttestationSignEnterpriseChallenge(
594 attestation::AttestationKeyType key_type, 602 attestation::AttestationKeyType key_type,
595 const std::string& user_id, 603 const cryptohome::Identification& cryptohome_id,
596 const std::string& key_name, 604 const std::string& key_name,
597 const std::string& domain, 605 const std::string& domain,
598 const std::string& device_id, 606 const std::string& device_id,
599 attestation::AttestationChallengeOptions options, 607 attestation::AttestationChallengeOptions options,
600 const std::string& challenge, 608 const std::string& challenge,
601 const AsyncMethodCallback& callback) override { 609 const AsyncMethodCallback& callback) override {
602 dbus::MethodCall method_call( 610 dbus::MethodCall method_call(
603 cryptohome::kCryptohomeInterface, 611 cryptohome::kCryptohomeInterface,
604 cryptohome::kCryptohomeTpmAttestationSignEnterpriseChallenge); 612 cryptohome::kCryptohomeTpmAttestationSignEnterpriseChallenge);
605 dbus::MessageWriter writer(&method_call); 613 dbus::MessageWriter writer(&method_call);
606 bool is_user_specific = (key_type == attestation::KEY_USER); 614 bool is_user_specific = (key_type == attestation::KEY_USER);
607 writer.AppendBool(is_user_specific); 615 writer.AppendBool(is_user_specific);
608 writer.AppendString(user_id); 616 writer.AppendString(cryptohome_id.id());
609 writer.AppendString(key_name); 617 writer.AppendString(key_name);
610 writer.AppendString(domain); 618 writer.AppendString(domain);
611 writer.AppendArrayOfBytes( 619 writer.AppendArrayOfBytes(
612 reinterpret_cast<const uint8_t*>(device_id.data()), device_id.size()); 620 reinterpret_cast<const uint8_t*>(device_id.data()), device_id.size());
613 bool include_signed_public_key = 621 bool include_signed_public_key =
614 (options & attestation::CHALLENGE_INCLUDE_SIGNED_PUBLIC_KEY); 622 (options & attestation::CHALLENGE_INCLUDE_SIGNED_PUBLIC_KEY);
615 writer.AppendBool(include_signed_public_key); 623 writer.AppendBool(include_signed_public_key);
616 writer.AppendArrayOfBytes( 624 writer.AppendArrayOfBytes(
617 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size()); 625 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size());
618 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 626 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
619 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 627 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
620 weak_ptr_factory_.GetWeakPtr(), 628 weak_ptr_factory_.GetWeakPtr(),
621 callback)); 629 callback));
622 } 630 }
623 631
624 // CryptohomeClient override. 632 // CryptohomeClient override.
625 void TpmAttestationSignSimpleChallenge( 633 void TpmAttestationSignSimpleChallenge(
626 attestation::AttestationKeyType key_type, 634 attestation::AttestationKeyType key_type,
627 const std::string& user_id, 635 const cryptohome::Identification& cryptohome_id,
628 const std::string& key_name, 636 const std::string& key_name,
629 const std::string& challenge, 637 const std::string& challenge,
630 const AsyncMethodCallback& callback) override { 638 const AsyncMethodCallback& callback) override {
631 dbus::MethodCall method_call( 639 dbus::MethodCall method_call(
632 cryptohome::kCryptohomeInterface, 640 cryptohome::kCryptohomeInterface,
633 cryptohome::kCryptohomeTpmAttestationSignSimpleChallenge); 641 cryptohome::kCryptohomeTpmAttestationSignSimpleChallenge);
634 dbus::MessageWriter writer(&method_call); 642 dbus::MessageWriter writer(&method_call);
635 bool is_user_specific = (key_type == attestation::KEY_USER); 643 bool is_user_specific = (key_type == attestation::KEY_USER);
636 writer.AppendBool(is_user_specific); 644 writer.AppendBool(is_user_specific);
637 writer.AppendString(user_id); 645 writer.AppendString(cryptohome_id.id());
638 writer.AppendString(key_name); 646 writer.AppendString(key_name);
639 writer.AppendArrayOfBytes( 647 writer.AppendArrayOfBytes(
640 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size()); 648 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size());
641 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 649 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
642 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 650 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
643 weak_ptr_factory_.GetWeakPtr(), 651 weak_ptr_factory_.GetWeakPtr(),
644 callback)); 652 callback));
645 } 653 }
646 654
647 // CryptohomeClient override. 655 // CryptohomeClient override.
648 void TpmAttestationGetKeyPayload( 656 void TpmAttestationGetKeyPayload(
649 attestation::AttestationKeyType key_type, 657 attestation::AttestationKeyType key_type,
650 const std::string& user_id, 658 const cryptohome::Identification& cryptohome_id,
651 const std::string& key_name, 659 const std::string& key_name,
652 const DataMethodCallback& callback) override { 660 const DataMethodCallback& callback) override {
653 dbus::MethodCall method_call( 661 dbus::MethodCall method_call(
654 cryptohome::kCryptohomeInterface, 662 cryptohome::kCryptohomeInterface,
655 cryptohome::kCryptohomeTpmAttestationGetKeyPayload); 663 cryptohome::kCryptohomeTpmAttestationGetKeyPayload);
656 dbus::MessageWriter writer(&method_call); 664 dbus::MessageWriter writer(&method_call);
657 bool is_user_specific = (key_type == attestation::KEY_USER); 665 bool is_user_specific = (key_type == attestation::KEY_USER);
658 writer.AppendBool(is_user_specific); 666 writer.AppendBool(is_user_specific);
659 writer.AppendString(user_id); 667 writer.AppendString(cryptohome_id.id());
660 writer.AppendString(key_name); 668 writer.AppendString(key_name);
661 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 669 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
662 base::Bind(&CryptohomeClientImpl::OnDataMethod, 670 base::Bind(&CryptohomeClientImpl::OnDataMethod,
663 weak_ptr_factory_.GetWeakPtr(), 671 weak_ptr_factory_.GetWeakPtr(),
664 callback)); 672 callback));
665 } 673 }
666 674
667 // CryptohomeClient override. 675 // CryptohomeClient override.
668 void TpmAttestationSetKeyPayload( 676 void TpmAttestationSetKeyPayload(
669 attestation::AttestationKeyType key_type, 677 attestation::AttestationKeyType key_type,
670 const std::string& user_id, 678 const cryptohome::Identification& cryptohome_id,
671 const std::string& key_name, 679 const std::string& key_name,
672 const std::string& payload, 680 const std::string& payload,
673 const BoolDBusMethodCallback& callback) override { 681 const BoolDBusMethodCallback& callback) override {
674 dbus::MethodCall method_call( 682 dbus::MethodCall method_call(
675 cryptohome::kCryptohomeInterface, 683 cryptohome::kCryptohomeInterface,
676 cryptohome::kCryptohomeTpmAttestationSetKeyPayload); 684 cryptohome::kCryptohomeTpmAttestationSetKeyPayload);
677 dbus::MessageWriter writer(&method_call); 685 dbus::MessageWriter writer(&method_call);
678 bool is_user_specific = (key_type == attestation::KEY_USER); 686 bool is_user_specific = (key_type == attestation::KEY_USER);
679 writer.AppendBool(is_user_specific); 687 writer.AppendBool(is_user_specific);
680 writer.AppendString(user_id); 688 writer.AppendString(cryptohome_id.id());
681 writer.AppendString(key_name); 689 writer.AppendString(key_name);
682 writer.AppendArrayOfBytes(reinterpret_cast<const uint8_t*>(payload.data()), 690 writer.AppendArrayOfBytes(reinterpret_cast<const uint8_t*>(payload.data()),
683 payload.size()); 691 payload.size());
684 CallBoolMethod(&method_call, callback); 692 CallBoolMethod(&method_call, callback);
685 } 693 }
686 694
687 // CryptohomeClient override. 695 // CryptohomeClient override.
688 void TpmAttestationDeleteKeys( 696 void TpmAttestationDeleteKeys(
689 attestation::AttestationKeyType key_type, 697 attestation::AttestationKeyType key_type,
690 const std::string& user_id, 698 const cryptohome::Identification& cryptohome_id,
691 const std::string& key_prefix, 699 const std::string& key_prefix,
692 const BoolDBusMethodCallback& callback) override { 700 const BoolDBusMethodCallback& callback) override {
693 dbus::MethodCall method_call( 701 dbus::MethodCall method_call(
694 cryptohome::kCryptohomeInterface, 702 cryptohome::kCryptohomeInterface,
695 cryptohome::kCryptohomeTpmAttestationDeleteKeys); 703 cryptohome::kCryptohomeTpmAttestationDeleteKeys);
696 dbus::MessageWriter writer(&method_call); 704 dbus::MessageWriter writer(&method_call);
697 bool is_user_specific = (key_type == attestation::KEY_USER); 705 bool is_user_specific = (key_type == attestation::KEY_USER);
698 writer.AppendBool(is_user_specific); 706 writer.AppendBool(is_user_specific);
699 writer.AppendString(user_id); 707 writer.AppendString(cryptohome_id.id());
700 writer.AppendString(key_prefix); 708 writer.AppendString(key_prefix);
701 CallBoolMethod(&method_call, callback); 709 CallBoolMethod(&method_call, callback);
702 } 710 }
703 711
704 void GetKeyDataEx(const cryptohome::AccountIdentifier& id, 712 void GetKeyDataEx(const cryptohome::Identification& id,
705 const cryptohome::AuthorizationRequest& auth, 713 const cryptohome::AuthorizationRequest& auth,
706 const cryptohome::GetKeyDataRequest& request, 714 const cryptohome::GetKeyDataRequest& request,
707 const ProtobufMethodCallback& callback) override { 715 const ProtobufMethodCallback& callback) override {
716 cryptohome::AccountIdentifier id_proto;
717 FillIdentificationProtobuf(id, &id_proto);
718
708 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 719 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
709 cryptohome::kCryptohomeGetKeyDataEx); 720 cryptohome::kCryptohomeGetKeyDataEx);
710 dbus::MessageWriter writer(&method_call); 721 dbus::MessageWriter writer(&method_call);
711 writer.AppendProtoAsArrayOfBytes(id); 722 writer.AppendProtoAsArrayOfBytes(id_proto);
712 writer.AppendProtoAsArrayOfBytes(auth); 723 writer.AppendProtoAsArrayOfBytes(auth);
713 writer.AppendProtoAsArrayOfBytes(request); 724 writer.AppendProtoAsArrayOfBytes(request);
714 725
715 proxy_->CallMethod(&method_call, 726 proxy_->CallMethod(&method_call,
716 kTpmDBusTimeoutMs, 727 kTpmDBusTimeoutMs,
717 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, 728 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod,
718 weak_ptr_factory_.GetWeakPtr(), 729 weak_ptr_factory_.GetWeakPtr(),
719 callback)); 730 callback));
720 } 731 }
721 732
722 void CheckKeyEx(const cryptohome::AccountIdentifier& id, 733 void CheckKeyEx(const cryptohome::Identification& id,
723 const cryptohome::AuthorizationRequest& auth, 734 const cryptohome::AuthorizationRequest& auth,
724 const cryptohome::CheckKeyRequest& request, 735 const cryptohome::CheckKeyRequest& request,
725 const ProtobufMethodCallback& callback) override { 736 const ProtobufMethodCallback& callback) override {
726 const char* method_name = cryptohome::kCryptohomeCheckKeyEx; 737 const char* method_name = cryptohome::kCryptohomeCheckKeyEx;
727 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 738 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
728 method_name); 739 method_name);
729 740
741 cryptohome::AccountIdentifier id_proto;
742 FillIdentificationProtobuf(id, &id_proto);
743
730 dbus::MessageWriter writer(&method_call); 744 dbus::MessageWriter writer(&method_call);
731 writer.AppendProtoAsArrayOfBytes(id); 745 writer.AppendProtoAsArrayOfBytes(id_proto);
732 writer.AppendProtoAsArrayOfBytes(auth); 746 writer.AppendProtoAsArrayOfBytes(auth);
733 writer.AppendProtoAsArrayOfBytes(request); 747 writer.AppendProtoAsArrayOfBytes(request);
734 748
735 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 749 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
736 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, 750 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod,
737 weak_ptr_factory_.GetWeakPtr(), 751 weak_ptr_factory_.GetWeakPtr(),
738 callback)); 752 callback));
739 } 753 }
740 754
741 void MountEx(const cryptohome::AccountIdentifier& id, 755 void MountEx(const cryptohome::Identification& id,
742 const cryptohome::AuthorizationRequest& auth, 756 const cryptohome::AuthorizationRequest& auth,
743 const cryptohome::MountRequest& request, 757 const cryptohome::MountRequest& request,
744 const ProtobufMethodCallback& callback) override { 758 const ProtobufMethodCallback& callback) override {
745 const char* method_name = cryptohome::kCryptohomeMountEx; 759 const char* method_name = cryptohome::kCryptohomeMountEx;
746 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 760 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
747 method_name); 761 method_name);
748 762
763 cryptohome::AccountIdentifier id_proto;
764 FillIdentificationProtobuf(id, &id_proto);
765
749 dbus::MessageWriter writer(&method_call); 766 dbus::MessageWriter writer(&method_call);
750 writer.AppendProtoAsArrayOfBytes(id); 767 writer.AppendProtoAsArrayOfBytes(id_proto);
751 writer.AppendProtoAsArrayOfBytes(auth); 768 writer.AppendProtoAsArrayOfBytes(auth);
752 writer.AppendProtoAsArrayOfBytes(request); 769 writer.AppendProtoAsArrayOfBytes(request);
753 770
754 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 771 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
755 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, 772 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod,
756 weak_ptr_factory_.GetWeakPtr(), 773 weak_ptr_factory_.GetWeakPtr(),
757 callback)); 774 callback));
758 } 775 }
759 776
760 void AddKeyEx(const cryptohome::AccountIdentifier& id, 777 void AddKeyEx(const cryptohome::Identification& id,
761 const cryptohome::AuthorizationRequest& auth, 778 const cryptohome::AuthorizationRequest& auth,
762 const cryptohome::AddKeyRequest& request, 779 const cryptohome::AddKeyRequest& request,
763 const ProtobufMethodCallback& callback) override { 780 const ProtobufMethodCallback& callback) override {
764 const char* method_name = cryptohome::kCryptohomeAddKeyEx; 781 const char* method_name = cryptohome::kCryptohomeAddKeyEx;
765 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 782 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
766 method_name); 783 method_name);
767 784
785 cryptohome::AccountIdentifier id_proto;
786 FillIdentificationProtobuf(id, &id_proto);
787
768 dbus::MessageWriter writer(&method_call); 788 dbus::MessageWriter writer(&method_call);
769 writer.AppendProtoAsArrayOfBytes(id); 789 writer.AppendProtoAsArrayOfBytes(id_proto);
770 writer.AppendProtoAsArrayOfBytes(auth); 790 writer.AppendProtoAsArrayOfBytes(auth);
771 writer.AppendProtoAsArrayOfBytes(request); 791 writer.AppendProtoAsArrayOfBytes(request);
772 792
773 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs, 793 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs,
774 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, 794 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod,
775 weak_ptr_factory_.GetWeakPtr(), 795 weak_ptr_factory_.GetWeakPtr(),
776 callback)); 796 callback));
777 } 797 }
778 798
779 void UpdateKeyEx(const cryptohome::AccountIdentifier& id, 799 void UpdateKeyEx(const cryptohome::Identification& id,
780 const cryptohome::AuthorizationRequest& auth, 800 const cryptohome::AuthorizationRequest& auth,
781 const cryptohome::UpdateKeyRequest& request, 801 const cryptohome::UpdateKeyRequest& request,
782 const ProtobufMethodCallback& callback) override { 802 const ProtobufMethodCallback& callback) override {
783 const char* method_name = cryptohome::kCryptohomeUpdateKeyEx; 803 const char* method_name = cryptohome::kCryptohomeUpdateKeyEx;
784 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 804 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
785 method_name); 805 method_name);
786 806
807 cryptohome::AccountIdentifier id_proto;
808 FillIdentificationProtobuf(id, &id_proto);
809
787 dbus::MessageWriter writer(&method_call); 810 dbus::MessageWriter writer(&method_call);
788 writer.AppendProtoAsArrayOfBytes(id); 811 writer.AppendProtoAsArrayOfBytes(id_proto);
789 writer.AppendProtoAsArrayOfBytes(auth); 812 writer.AppendProtoAsArrayOfBytes(auth);
790 writer.AppendProtoAsArrayOfBytes(request); 813 writer.AppendProtoAsArrayOfBytes(request);
791 814
792 proxy_->CallMethod(&method_call, 815 proxy_->CallMethod(&method_call,
793 kTpmDBusTimeoutMs , 816 kTpmDBusTimeoutMs ,
794 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, 817 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod,
795 weak_ptr_factory_.GetWeakPtr(), 818 weak_ptr_factory_.GetWeakPtr(),
796 callback)); 819 callback));
797 } 820 }
798 821
799 void RemoveKeyEx(const cryptohome::AccountIdentifier& id, 822 void RemoveKeyEx(const cryptohome::Identification& id,
800 const cryptohome::AuthorizationRequest& auth, 823 const cryptohome::AuthorizationRequest& auth,
801 const cryptohome::RemoveKeyRequest& request, 824 const cryptohome::RemoveKeyRequest& request,
802 const ProtobufMethodCallback& callback) override { 825 const ProtobufMethodCallback& callback) override {
803 const char* method_name = cryptohome::kCryptohomeRemoveKeyEx; 826 const char* method_name = cryptohome::kCryptohomeRemoveKeyEx;
804 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, method_name); 827 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, method_name);
805 828
829 cryptohome::AccountIdentifier id_proto;
830 FillIdentificationProtobuf(id, &id_proto);
831
806 dbus::MessageWriter writer(&method_call); 832 dbus::MessageWriter writer(&method_call);
807 writer.AppendProtoAsArrayOfBytes(id); 833 writer.AppendProtoAsArrayOfBytes(id_proto);
808 writer.AppendProtoAsArrayOfBytes(auth); 834 writer.AppendProtoAsArrayOfBytes(auth);
809 writer.AppendProtoAsArrayOfBytes(request); 835 writer.AppendProtoAsArrayOfBytes(request);
810 836
811 proxy_->CallMethod(&method_call, 837 proxy_->CallMethod(&method_call,
812 kTpmDBusTimeoutMs , 838 kTpmDBusTimeoutMs ,
813 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, 839 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod,
814 weak_ptr_factory_.GetWeakPtr(), 840 weak_ptr_factory_.GetWeakPtr(),
815 callback)); 841 callback));
816 } 842 }
817 843
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 1158
1133 CryptohomeClient::~CryptohomeClient() {} 1159 CryptohomeClient::~CryptohomeClient() {}
1134 1160
1135 // static 1161 // static
1136 CryptohomeClient* CryptohomeClient::Create() { 1162 CryptohomeClient* CryptohomeClient::Create() {
1137 return new CryptohomeClientImpl(); 1163 return new CryptohomeClientImpl();
1138 } 1164 }
1139 1165
1140 // static 1166 // static
1141 std::string CryptohomeClient::GetStubSanitizedUsername( 1167 std::string CryptohomeClient::GetStubSanitizedUsername(
1142 const std::string& username) { 1168 const cryptohome::Identification& cryptohome_id) {
1143 return username + kUserIdStubHashSuffix; 1169 return cryptohome_id.id() + kUserIdStubHashSuffix;
1144 } 1170 }
1145 1171
1146 } // namespace chromeos 1172 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/cryptohome_client.h ('k') | chromeos/dbus/fake_cryptohome_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698