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

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

Powered by Google App Engine
This is Rietveld 408576698