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

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

Issue 1165323004: We should use UserID object to identify users instead of username. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "chromeos/cryptohome/async_method_caller.h" 11 #include "chromeos/cryptohome/async_method_caller.h"
12 #include "chromeos/dbus/blocking_method_caller.h" 12 #include "chromeos/dbus/blocking_method_caller.h"
13 #include "chromeos/dbus/cryptohome/key.pb.h" 13 #include "chromeos/dbus/cryptohome/key.pb.h"
14 #include "chromeos/dbus/cryptohome/rpc.pb.h" 14 #include "chromeos/dbus/cryptohome/rpc.pb.h"
15 #include "components/user_manager/user_id.h"
15 #include "dbus/bus.h" 16 #include "dbus/bus.h"
16 #include "dbus/message.h" 17 #include "dbus/message.h"
17 #include "dbus/object_path.h" 18 #include "dbus/object_path.h"
18 #include "dbus/object_proxy.h" 19 #include "dbus/object_proxy.h"
19 #include "third_party/cros_system_api/dbus/service_constants.h" 20 #include "third_party/cros_system_api/dbus/service_constants.h"
20 21
21 namespace chromeos { 22 namespace chromeos {
22 23
23 const int CryptohomeClient::kNotReadyAsyncId = -1; 24 const int CryptohomeClient::kNotReadyAsyncId = -1;
24 25
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 } 67 }
67 68
68 // CryptohomeClient override. 69 // CryptohomeClient override.
69 bool Unmount(bool* success) override { 70 bool Unmount(bool* success) override {
70 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 71 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
71 cryptohome::kCryptohomeUnmount); 72 cryptohome::kCryptohomeUnmount);
72 return CallBoolMethodAndBlock(&method_call, success); 73 return CallBoolMethodAndBlock(&method_call, success);
73 } 74 }
74 75
75 // CryptohomeClient override. 76 // CryptohomeClient override.
76 void AsyncCheckKey(const std::string& username, 77 void AsyncCheckKey(const user_manager::UserID& user_id,
77 const std::string& key, 78 const std::string& key,
78 const AsyncMethodCallback& callback) override { 79 const AsyncMethodCallback& callback) override {
79 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 80 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
80 cryptohome::kCryptohomeAsyncCheckKey); 81 cryptohome::kCryptohomeAsyncCheckKey);
81 dbus::MessageWriter writer(&method_call); 82 dbus::MessageWriter writer(&method_call);
82 writer.AppendString(username); 83 writer.AppendString(user_id.GetUserEmail());
83 writer.AppendString(key); 84 writer.AppendString(key);
84 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 85 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
85 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 86 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
86 weak_ptr_factory_.GetWeakPtr(), 87 weak_ptr_factory_.GetWeakPtr(),
87 callback)); 88 callback));
88 } 89 }
89 90
90 // CryptohomeClient override. 91 // CryptohomeClient override.
91 void AsyncMigrateKey(const std::string& username, 92 void AsyncMigrateKey(const user_manager::UserID& user_id,
92 const std::string& from_key, 93 const std::string& from_key,
93 const std::string& to_key, 94 const std::string& to_key,
94 const AsyncMethodCallback& callback) override { 95 const AsyncMethodCallback& callback) override {
95 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 96 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
96 cryptohome::kCryptohomeAsyncMigrateKey); 97 cryptohome::kCryptohomeAsyncMigrateKey);
97 dbus::MessageWriter writer(&method_call); 98 dbus::MessageWriter writer(&method_call);
98 writer.AppendString(username); 99 writer.AppendString(user_id.GetUserEmail());
99 writer.AppendString(from_key); 100 writer.AppendString(from_key);
100 writer.AppendString(to_key); 101 writer.AppendString(to_key);
101 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 102 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
102 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 103 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
103 weak_ptr_factory_.GetWeakPtr(), 104 weak_ptr_factory_.GetWeakPtr(),
104 callback)); 105 callback));
105 } 106 }
106 107
107 // CryptohomeClient override. 108 // CryptohomeClient override.
108 void AsyncRemove(const std::string& username, 109 void AsyncRemove(const user_manager::UserID& user_id,
109 const AsyncMethodCallback& callback) override { 110 const AsyncMethodCallback& callback) override {
110 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 111 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
111 cryptohome::kCryptohomeAsyncRemove); 112 cryptohome::kCryptohomeAsyncRemove);
112 dbus::MessageWriter writer(&method_call); 113 dbus::MessageWriter writer(&method_call);
113 writer.AppendString(username); 114 writer.AppendString(user_id.GetUserEmail());
114 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 115 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
115 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 116 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
116 weak_ptr_factory_.GetWeakPtr(), 117 weak_ptr_factory_.GetWeakPtr(),
117 callback)); 118 callback));
118 } 119 }
119 120
120 // CryptohomeClient override. 121 // CryptohomeClient override.
121 void GetSystemSalt(const GetSystemSaltCallback& callback) override { 122 void GetSystemSalt(const GetSystemSaltCallback& callback) override {
122 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 123 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
123 cryptohome::kCryptohomeGetSystemSalt); 124 cryptohome::kCryptohomeGetSystemSalt);
124 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 125 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
125 base::Bind(&CryptohomeClientImpl::OnGetSystemSalt, 126 base::Bind(&CryptohomeClientImpl::OnGetSystemSalt,
126 weak_ptr_factory_.GetWeakPtr(), 127 weak_ptr_factory_.GetWeakPtr(),
127 callback)); 128 callback));
128 } 129 }
129 130
130 // CryptohomeClient override, 131 // CryptohomeClient override,
131 void GetSanitizedUsername(const std::string& username, 132 void GetSanitizedUsername(const user_manager::UserID& user_id,
132 const StringDBusMethodCallback& callback) override { 133 const StringDBusMethodCallback& callback) override {
133 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 134 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
134 cryptohome::kCryptohomeGetSanitizedUsername); 135 cryptohome::kCryptohomeGetSanitizedUsername);
135 dbus::MessageWriter writer(&method_call); 136 dbus::MessageWriter writer(&method_call);
136 writer.AppendString(username); 137 writer.AppendString(user_id.GetUserEmail());
137 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 138 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
138 base::Bind(&CryptohomeClientImpl::OnStringMethod, 139 base::Bind(&CryptohomeClientImpl::OnStringMethod,
139 weak_ptr_factory_.GetWeakPtr(), 140 weak_ptr_factory_.GetWeakPtr(),
140 callback)); 141 callback));
141 } 142 }
142 143
143 // CryptohomeClient override. 144 // CryptohomeClient override.
144 std::string BlockingGetSanitizedUsername( 145 std::string BlockingGetSanitizedUsername(
145 const std::string& username) override { 146 const user_manager::UserID& user_id) override {
146 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 147 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
147 cryptohome::kCryptohomeGetSanitizedUsername); 148 cryptohome::kCryptohomeGetSanitizedUsername);
148 dbus::MessageWriter writer(&method_call); 149 dbus::MessageWriter writer(&method_call);
149 writer.AppendString(username); 150 writer.AppendString(user_id.GetUserEmail());
150 151
151 scoped_ptr<dbus::Response> response = 152 scoped_ptr<dbus::Response> response =
152 blocking_method_caller_->CallMethodAndBlock(&method_call); 153 blocking_method_caller_->CallMethodAndBlock(&method_call);
153 154
154 std::string sanitized_username; 155 std::string sanitized_username;
155 if (response) { 156 if (response) {
156 dbus::MessageReader reader(response.get()); 157 dbus::MessageReader reader(response.get());
157 reader.PopString(&sanitized_username); 158 reader.PopString(&sanitized_username);
158 } 159 }
159 160
160 return sanitized_username; 161 return sanitized_username;
161 } 162 }
162 163
163 // CryptohomeClient override. 164 // CryptohomeClient override.
164 void AsyncMount(const std::string& username, 165 void AsyncMount(const user_manager::UserID& user_id,
165 const std::string& key, 166 const std::string& key,
166 int flags, 167 int flags,
167 const AsyncMethodCallback& callback) override { 168 const AsyncMethodCallback& callback) override {
168 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 169 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
169 cryptohome::kCryptohomeAsyncMount); 170 cryptohome::kCryptohomeAsyncMount);
170 dbus::MessageWriter writer(&method_call); 171 dbus::MessageWriter writer(&method_call);
171 writer.AppendString(username); 172 writer.AppendString(user_id.GetUserEmail());
172 writer.AppendString(key); 173 writer.AppendString(key);
173 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING); 174 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING);
174 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL); 175 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL);
175 // deprecated_tracked_subdirectories 176 // deprecated_tracked_subdirectories
176 writer.AppendArrayOfStrings(std::vector<std::string>()); 177 writer.AppendArrayOfStrings(std::vector<std::string>());
177 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 178 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
178 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 179 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
179 weak_ptr_factory_.GetWeakPtr(), 180 weak_ptr_factory_.GetWeakPtr(),
180 callback)); 181 callback));
181 } 182 }
182 183
183 // CryptohomeClient override. 184 // CryptohomeClient override.
184 void AsyncAddKey(const std::string& username, 185 void AsyncAddKey(const user_manager::UserID& user_id,
185 const std::string& key, 186 const std::string& key,
186 const std::string& new_key, 187 const std::string& new_key,
187 const AsyncMethodCallback& callback) override { 188 const AsyncMethodCallback& callback) override {
188 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 189 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
189 cryptohome::kCryptohomeAsyncAddKey); 190 cryptohome::kCryptohomeAsyncAddKey);
190 dbus::MessageWriter writer(&method_call); 191 dbus::MessageWriter writer(&method_call);
191 writer.AppendString(username); 192 writer.AppendString(user_id.GetUserEmail());
192 writer.AppendString(key); 193 writer.AppendString(key);
193 writer.AppendString(new_key); 194 writer.AppendString(new_key);
194 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 195 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
195 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 196 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
196 weak_ptr_factory_.GetWeakPtr(), 197 weak_ptr_factory_.GetWeakPtr(),
197 callback)); 198 callback));
198 } 199 }
199 200
200 // CryptohomeClient override. 201 // CryptohomeClient override.
201 void AsyncMountGuest(const AsyncMethodCallback& callback) override { 202 void AsyncMountGuest(const AsyncMethodCallback& callback) override {
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 proxy_->CallMethod( 326 proxy_->CallMethod(
326 &method_call, kTpmDBusTimeoutMs , 327 &method_call, kTpmDBusTimeoutMs ,
327 base::Bind( 328 base::Bind(
328 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo, 329 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo,
329 weak_ptr_factory_.GetWeakPtr(), 330 weak_ptr_factory_.GetWeakPtr(),
330 callback)); 331 callback));
331 } 332 }
332 333
333 // CryptohomeClient override. 334 // CryptohomeClient override.
334 void Pkcs11GetTpmTokenInfoForUser( 335 void Pkcs11GetTpmTokenInfoForUser(
335 const std::string& user_email, 336 const user_manager::UserID& user_id,
336 const Pkcs11GetTpmTokenInfoCallback& callback) override { 337 const Pkcs11GetTpmTokenInfoCallback& callback) override {
337 dbus::MethodCall method_call( 338 dbus::MethodCall method_call(
338 cryptohome::kCryptohomeInterface, 339 cryptohome::kCryptohomeInterface,
339 cryptohome::kCryptohomePkcs11GetTpmTokenInfoForUser); 340 cryptohome::kCryptohomePkcs11GetTpmTokenInfoForUser);
340 dbus::MessageWriter writer(&method_call); 341 dbus::MessageWriter writer(&method_call);
341 writer.AppendString(user_email); 342 writer.AppendString(user_id.GetUserEmail());
342 proxy_->CallMethod( 343 proxy_->CallMethod(
343 &method_call, kTpmDBusTimeoutMs , 344 &method_call, kTpmDBusTimeoutMs ,
344 base::Bind( 345 base::Bind(
345 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfoForUser, 346 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfoForUser,
346 weak_ptr_factory_.GetWeakPtr(), 347 weak_ptr_factory_.GetWeakPtr(),
347 callback)); 348 callback));
348 } 349 }
349 350
350 // CryptohomeClient override. 351 // CryptohomeClient override.
351 bool InstallAttributesGet(const std::string& name, 352 bool InstallAttributesGet(const std::string& name,
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 463 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
463 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 464 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
464 weak_ptr_factory_.GetWeakPtr(), 465 weak_ptr_factory_.GetWeakPtr(),
465 callback)); 466 callback));
466 } 467 }
467 468
468 // CryptohomeClient override. 469 // CryptohomeClient override.
469 void AsyncTpmAttestationCreateCertRequest( 470 void AsyncTpmAttestationCreateCertRequest(
470 attestation::PrivacyCAType pca_type, 471 attestation::PrivacyCAType pca_type,
471 attestation::AttestationCertificateProfile certificate_profile, 472 attestation::AttestationCertificateProfile certificate_profile,
472 const std::string& user_id, 473 const user_manager::UserID& user_id,
473 const std::string& request_origin, 474 const std::string& request_origin,
474 const AsyncMethodCallback& callback) override { 475 const AsyncMethodCallback& callback) override {
475 dbus::MethodCall method_call( 476 dbus::MethodCall method_call(
476 cryptohome::kCryptohomeInterface, 477 cryptohome::kCryptohomeInterface,
477 cryptohome::kCryptohomeAsyncTpmAttestationCreateCertRequest); 478 cryptohome::kCryptohomeAsyncTpmAttestationCreateCertRequest);
478 dbus::MessageWriter writer(&method_call); 479 dbus::MessageWriter writer(&method_call);
479 writer.AppendInt32(pca_type); 480 writer.AppendInt32(pca_type);
480 writer.AppendInt32(certificate_profile); 481 writer.AppendInt32(certificate_profile);
481 writer.AppendString(user_id); 482 writer.AppendString(user_id.GetUserEmail());
482 writer.AppendString(request_origin); 483 writer.AppendString(request_origin);
483 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 484 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
484 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 485 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
485 weak_ptr_factory_.GetWeakPtr(), 486 weak_ptr_factory_.GetWeakPtr(),
486 callback)); 487 callback));
487 } 488 }
488 489
489 // CryptohomeClient override. 490 // CryptohomeClient override.
490 void AsyncTpmAttestationFinishCertRequest( 491 void AsyncTpmAttestationFinishCertRequest(
491 const std::string& pca_response, 492 const std::string& pca_response,
492 attestation::AttestationKeyType key_type, 493 attestation::AttestationKeyType key_type,
493 const std::string& user_id, 494 const user_manager::UserID& user_id,
494 const std::string& key_name, 495 const std::string& key_name,
495 const AsyncMethodCallback& callback) override { 496 const AsyncMethodCallback& callback) override {
496 dbus::MethodCall method_call( 497 dbus::MethodCall method_call(
497 cryptohome::kCryptohomeInterface, 498 cryptohome::kCryptohomeInterface,
498 cryptohome::kCryptohomeAsyncTpmAttestationFinishCertRequest); 499 cryptohome::kCryptohomeAsyncTpmAttestationFinishCertRequest);
499 dbus::MessageWriter writer(&method_call); 500 dbus::MessageWriter writer(&method_call);
500 writer.AppendArrayOfBytes( 501 writer.AppendArrayOfBytes(
501 reinterpret_cast<const uint8*>(pca_response.data()), 502 reinterpret_cast<const uint8*>(pca_response.data()),
502 pca_response.size()); 503 pca_response.size());
503 bool is_user_specific = (key_type == attestation::KEY_USER); 504 bool is_user_specific = (key_type == attestation::KEY_USER);
504 writer.AppendBool(is_user_specific); 505 writer.AppendBool(is_user_specific);
505 writer.AppendString(user_id); 506 writer.AppendString(user_id.GetUserEmail());
506 writer.AppendString(key_name); 507 writer.AppendString(key_name);
507 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 508 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
508 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 509 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
509 weak_ptr_factory_.GetWeakPtr(), 510 weak_ptr_factory_.GetWeakPtr(),
510 callback)); 511 callback));
511 } 512 }
512 513
513 // CryptohomeClient override. 514 // CryptohomeClient override.
514 void TpmAttestationDoesKeyExist( 515 void TpmAttestationDoesKeyExist(
515 attestation::AttestationKeyType key_type, 516 attestation::AttestationKeyType key_type,
516 const std::string& user_id, 517 const user_manager::UserID& user_id,
517 const std::string& key_name, 518 const std::string& key_name,
518 const BoolDBusMethodCallback& callback) override { 519 const BoolDBusMethodCallback& callback) override {
519 dbus::MethodCall method_call( 520 dbus::MethodCall method_call(
520 cryptohome::kCryptohomeInterface, 521 cryptohome::kCryptohomeInterface,
521 cryptohome::kCryptohomeTpmAttestationDoesKeyExist); 522 cryptohome::kCryptohomeTpmAttestationDoesKeyExist);
522 dbus::MessageWriter writer(&method_call); 523 dbus::MessageWriter writer(&method_call);
523 bool is_user_specific = (key_type == attestation::KEY_USER); 524 bool is_user_specific = (key_type == attestation::KEY_USER);
524 writer.AppendBool(is_user_specific); 525 writer.AppendBool(is_user_specific);
525 writer.AppendString(user_id); 526 writer.AppendString(user_id.GetUserEmail());
526 writer.AppendString(key_name); 527 writer.AppendString(key_name);
527 CallBoolMethod(&method_call, callback); 528 CallBoolMethod(&method_call, callback);
528 } 529 }
529 530
530 // CryptohomeClient override. 531 // CryptohomeClient override.
531 void TpmAttestationGetCertificate( 532 void TpmAttestationGetCertificate(
532 attestation::AttestationKeyType key_type, 533 attestation::AttestationKeyType key_type,
533 const std::string& user_id, 534 const user_manager::UserID& user_id,
534 const std::string& key_name, 535 const std::string& key_name,
535 const DataMethodCallback& callback) override { 536 const DataMethodCallback& callback) override {
536 dbus::MethodCall method_call( 537 dbus::MethodCall method_call(
537 cryptohome::kCryptohomeInterface, 538 cryptohome::kCryptohomeInterface,
538 cryptohome::kCryptohomeTpmAttestationGetCertificate); 539 cryptohome::kCryptohomeTpmAttestationGetCertificate);
539 dbus::MessageWriter writer(&method_call); 540 dbus::MessageWriter writer(&method_call);
540 bool is_user_specific = (key_type == attestation::KEY_USER); 541 bool is_user_specific = (key_type == attestation::KEY_USER);
541 writer.AppendBool(is_user_specific); 542 writer.AppendBool(is_user_specific);
542 writer.AppendString(user_id); 543 writer.AppendString(user_id.GetUserEmail());
543 writer.AppendString(key_name); 544 writer.AppendString(key_name);
544 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 545 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
545 base::Bind(&CryptohomeClientImpl::OnDataMethod, 546 base::Bind(&CryptohomeClientImpl::OnDataMethod,
546 weak_ptr_factory_.GetWeakPtr(), 547 weak_ptr_factory_.GetWeakPtr(),
547 callback)); 548 callback));
548 } 549 }
549 550
550 // CryptohomeClient override. 551 // CryptohomeClient override.
551 void TpmAttestationGetPublicKey(attestation::AttestationKeyType key_type, 552 void TpmAttestationGetPublicKey(attestation::AttestationKeyType key_type,
552 const std::string& user_id, 553 const user_manager::UserID& user_id,
553 const std::string& key_name, 554 const std::string& key_name,
554 const DataMethodCallback& callback) override { 555 const DataMethodCallback& callback) override {
555 dbus::MethodCall method_call( 556 dbus::MethodCall method_call(
556 cryptohome::kCryptohomeInterface, 557 cryptohome::kCryptohomeInterface,
557 cryptohome::kCryptohomeTpmAttestationGetPublicKey); 558 cryptohome::kCryptohomeTpmAttestationGetPublicKey);
558 dbus::MessageWriter writer(&method_call); 559 dbus::MessageWriter writer(&method_call);
559 bool is_user_specific = (key_type == attestation::KEY_USER); 560 bool is_user_specific = (key_type == attestation::KEY_USER);
560 writer.AppendBool(is_user_specific); 561 writer.AppendBool(is_user_specific);
561 writer.AppendString(user_id); 562 writer.AppendString(user_id.GetUserEmail());
562 writer.AppendString(key_name); 563 writer.AppendString(key_name);
563 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 564 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
564 base::Bind(&CryptohomeClientImpl::OnDataMethod, 565 base::Bind(&CryptohomeClientImpl::OnDataMethod,
565 weak_ptr_factory_.GetWeakPtr(), 566 weak_ptr_factory_.GetWeakPtr(),
566 callback)); 567 callback));
567 } 568 }
568 569
569 // CryptohomeClient override. 570 // CryptohomeClient override.
570 void TpmAttestationRegisterKey(attestation::AttestationKeyType key_type, 571 void TpmAttestationRegisterKey(attestation::AttestationKeyType key_type,
571 const std::string& user_id, 572 const user_manager::UserID& user_id,
572 const std::string& key_name, 573 const std::string& key_name,
573 const AsyncMethodCallback& callback) override { 574 const AsyncMethodCallback& callback) override {
574 dbus::MethodCall method_call( 575 dbus::MethodCall method_call(
575 cryptohome::kCryptohomeInterface, 576 cryptohome::kCryptohomeInterface,
576 cryptohome::kCryptohomeTpmAttestationRegisterKey); 577 cryptohome::kCryptohomeTpmAttestationRegisterKey);
577 dbus::MessageWriter writer(&method_call); 578 dbus::MessageWriter writer(&method_call);
578 bool is_user_specific = (key_type == attestation::KEY_USER); 579 bool is_user_specific = (key_type == attestation::KEY_USER);
579 writer.AppendBool(is_user_specific); 580 writer.AppendBool(is_user_specific);
580 writer.AppendString(user_id); 581 writer.AppendString(user_id.GetUserEmail());
581 writer.AppendString(key_name); 582 writer.AppendString(key_name);
582 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 583 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
583 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 584 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
584 weak_ptr_factory_.GetWeakPtr(), 585 weak_ptr_factory_.GetWeakPtr(),
585 callback)); 586 callback));
586 } 587 }
587 588
588 // CryptohomeClient override. 589 // CryptohomeClient override.
589 void TpmAttestationSignEnterpriseChallenge( 590 void TpmAttestationSignEnterpriseChallenge(
590 attestation::AttestationKeyType key_type, 591 attestation::AttestationKeyType key_type,
591 const std::string& user_id, 592 const user_manager::UserID& user_id,
592 const std::string& key_name, 593 const std::string& key_name,
593 const std::string& domain, 594 const std::string& domain,
594 const std::string& device_id, 595 const std::string& device_id,
595 attestation::AttestationChallengeOptions options, 596 attestation::AttestationChallengeOptions options,
596 const std::string& challenge, 597 const std::string& challenge,
597 const AsyncMethodCallback& callback) override { 598 const AsyncMethodCallback& callback) override {
598 dbus::MethodCall method_call( 599 dbus::MethodCall method_call(
599 cryptohome::kCryptohomeInterface, 600 cryptohome::kCryptohomeInterface,
600 cryptohome::kCryptohomeTpmAttestationSignEnterpriseChallenge); 601 cryptohome::kCryptohomeTpmAttestationSignEnterpriseChallenge);
601 dbus::MessageWriter writer(&method_call); 602 dbus::MessageWriter writer(&method_call);
602 bool is_user_specific = (key_type == attestation::KEY_USER); 603 bool is_user_specific = (key_type == attestation::KEY_USER);
603 writer.AppendBool(is_user_specific); 604 writer.AppendBool(is_user_specific);
604 writer.AppendString(user_id); 605 writer.AppendString(user_id.GetUserEmail());
605 writer.AppendString(key_name); 606 writer.AppendString(key_name);
606 writer.AppendString(domain); 607 writer.AppendString(domain);
607 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(device_id.data()), 608 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(device_id.data()),
608 device_id.size()); 609 device_id.size());
609 bool include_signed_public_key = 610 bool include_signed_public_key =
610 (options & attestation::CHALLENGE_INCLUDE_SIGNED_PUBLIC_KEY); 611 (options & attestation::CHALLENGE_INCLUDE_SIGNED_PUBLIC_KEY);
611 writer.AppendBool(include_signed_public_key); 612 writer.AppendBool(include_signed_public_key);
612 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(challenge.data()), 613 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(challenge.data()),
613 challenge.size()); 614 challenge.size());
614 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 615 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
615 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 616 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
616 weak_ptr_factory_.GetWeakPtr(), 617 weak_ptr_factory_.GetWeakPtr(),
617 callback)); 618 callback));
618 } 619 }
619 620
620 // CryptohomeClient override. 621 // CryptohomeClient override.
621 void TpmAttestationSignSimpleChallenge( 622 void TpmAttestationSignSimpleChallenge(
622 attestation::AttestationKeyType key_type, 623 attestation::AttestationKeyType key_type,
623 const std::string& user_id, 624 const user_manager::UserID& user_id,
624 const std::string& key_name, 625 const std::string& key_name,
625 const std::string& challenge, 626 const std::string& challenge,
626 const AsyncMethodCallback& callback) override { 627 const AsyncMethodCallback& callback) override {
627 dbus::MethodCall method_call( 628 dbus::MethodCall method_call(
628 cryptohome::kCryptohomeInterface, 629 cryptohome::kCryptohomeInterface,
629 cryptohome::kCryptohomeTpmAttestationSignSimpleChallenge); 630 cryptohome::kCryptohomeTpmAttestationSignSimpleChallenge);
630 dbus::MessageWriter writer(&method_call); 631 dbus::MessageWriter writer(&method_call);
631 bool is_user_specific = (key_type == attestation::KEY_USER); 632 bool is_user_specific = (key_type == attestation::KEY_USER);
632 writer.AppendBool(is_user_specific); 633 writer.AppendBool(is_user_specific);
633 writer.AppendString(user_id); 634 writer.AppendString(user_id.GetUserEmail());
634 writer.AppendString(key_name); 635 writer.AppendString(key_name);
635 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(challenge.data()), 636 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(challenge.data()),
636 challenge.size()); 637 challenge.size());
637 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 638 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
638 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, 639 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall,
639 weak_ptr_factory_.GetWeakPtr(), 640 weak_ptr_factory_.GetWeakPtr(),
640 callback)); 641 callback));
641 } 642 }
642 643
643 // CryptohomeClient override. 644 // CryptohomeClient override.
644 void TpmAttestationGetKeyPayload( 645 void TpmAttestationGetKeyPayload(
645 attestation::AttestationKeyType key_type, 646 attestation::AttestationKeyType key_type,
646 const std::string& user_id, 647 const user_manager::UserID& user_id,
647 const std::string& key_name, 648 const std::string& key_name,
648 const DataMethodCallback& callback) override { 649 const DataMethodCallback& callback) override {
649 dbus::MethodCall method_call( 650 dbus::MethodCall method_call(
650 cryptohome::kCryptohomeInterface, 651 cryptohome::kCryptohomeInterface,
651 cryptohome::kCryptohomeTpmAttestationGetKeyPayload); 652 cryptohome::kCryptohomeTpmAttestationGetKeyPayload);
652 dbus::MessageWriter writer(&method_call); 653 dbus::MessageWriter writer(&method_call);
653 bool is_user_specific = (key_type == attestation::KEY_USER); 654 bool is_user_specific = (key_type == attestation::KEY_USER);
654 writer.AppendBool(is_user_specific); 655 writer.AppendBool(is_user_specific);
655 writer.AppendString(user_id); 656 writer.AppendString(user_id.GetUserEmail());
656 writer.AppendString(key_name); 657 writer.AppendString(key_name);
657 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , 658 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs ,
658 base::Bind(&CryptohomeClientImpl::OnDataMethod, 659 base::Bind(&CryptohomeClientImpl::OnDataMethod,
659 weak_ptr_factory_.GetWeakPtr(), 660 weak_ptr_factory_.GetWeakPtr(),
660 callback)); 661 callback));
661 } 662 }
662 663
663 // CryptohomeClient override. 664 // CryptohomeClient override.
664 void TpmAttestationSetKeyPayload( 665 void TpmAttestationSetKeyPayload(
665 attestation::AttestationKeyType key_type, 666 attestation::AttestationKeyType key_type,
666 const std::string& user_id, 667 const user_manager::UserID& user_id,
667 const std::string& key_name, 668 const std::string& key_name,
668 const std::string& payload, 669 const std::string& payload,
669 const BoolDBusMethodCallback& callback) override { 670 const BoolDBusMethodCallback& callback) override {
670 dbus::MethodCall method_call( 671 dbus::MethodCall method_call(
671 cryptohome::kCryptohomeInterface, 672 cryptohome::kCryptohomeInterface,
672 cryptohome::kCryptohomeTpmAttestationSetKeyPayload); 673 cryptohome::kCryptohomeTpmAttestationSetKeyPayload);
673 dbus::MessageWriter writer(&method_call); 674 dbus::MessageWriter writer(&method_call);
674 bool is_user_specific = (key_type == attestation::KEY_USER); 675 bool is_user_specific = (key_type == attestation::KEY_USER);
675 writer.AppendBool(is_user_specific); 676 writer.AppendBool(is_user_specific);
676 writer.AppendString(user_id); 677 writer.AppendString(user_id.GetUserEmail());
677 writer.AppendString(key_name); 678 writer.AppendString(key_name);
678 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(payload.data()), 679 writer.AppendArrayOfBytes(reinterpret_cast<const uint8*>(payload.data()),
679 payload.size()); 680 payload.size());
680 CallBoolMethod(&method_call, callback); 681 CallBoolMethod(&method_call, callback);
681 } 682 }
682 683
683 // CryptohomeClient override. 684 // CryptohomeClient override.
684 void TpmAttestationDeleteKeys( 685 void TpmAttestationDeleteKeys(
685 attestation::AttestationKeyType key_type, 686 attestation::AttestationKeyType key_type,
686 const std::string& user_id, 687 const user_manager::UserID& user_id,
687 const std::string& key_prefix, 688 const std::string& key_prefix,
688 const BoolDBusMethodCallback& callback) override { 689 const BoolDBusMethodCallback& callback) override {
689 dbus::MethodCall method_call( 690 dbus::MethodCall method_call(
690 cryptohome::kCryptohomeInterface, 691 cryptohome::kCryptohomeInterface,
691 cryptohome::kCryptohomeTpmAttestationDeleteKeys); 692 cryptohome::kCryptohomeTpmAttestationDeleteKeys);
692 dbus::MessageWriter writer(&method_call); 693 dbus::MessageWriter writer(&method_call);
693 bool is_user_specific = (key_type == attestation::KEY_USER); 694 bool is_user_specific = (key_type == attestation::KEY_USER);
694 writer.AppendBool(is_user_specific); 695 writer.AppendBool(is_user_specific);
695 writer.AppendString(user_id); 696 writer.AppendString(user_id.GetUserEmail());
696 writer.AppendString(key_prefix); 697 writer.AppendString(key_prefix);
697 CallBoolMethod(&method_call, callback); 698 CallBoolMethod(&method_call, callback);
698 } 699 }
699 700
700 void GetKeyDataEx(const cryptohome::AccountIdentifier& id, 701 void GetKeyDataEx(const cryptohome::AccountIdentifier& id,
701 const cryptohome::AuthorizationRequest& auth, 702 const cryptohome::AuthorizationRequest& auth,
702 const cryptohome::GetKeyDataRequest& request, 703 const cryptohome::GetKeyDataRequest& request,
703 const ProtobufMethodCallback& callback) override { 704 const ProtobufMethodCallback& callback) override {
704 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, 705 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface,
705 cryptohome::kCryptohomeGetKeyDataEx); 706 cryptohome::kCryptohomeGetKeyDataEx);
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 1129
1129 CryptohomeClient::~CryptohomeClient() {} 1130 CryptohomeClient::~CryptohomeClient() {}
1130 1131
1131 // static 1132 // static
1132 CryptohomeClient* CryptohomeClient::Create() { 1133 CryptohomeClient* CryptohomeClient::Create() {
1133 return new CryptohomeClientImpl(); 1134 return new CryptohomeClientImpl();
1134 } 1135 }
1135 1136
1136 // static 1137 // static
1137 std::string CryptohomeClient::GetStubSanitizedUsername( 1138 std::string CryptohomeClient::GetStubSanitizedUsername(
1138 const std::string& username) { 1139 const user_manager::UserID& user_id) {
1139 return username + kUserIdStubHashSuffix; 1140 return user_id.GetUserEmail() + kUserIdStubHashSuffix;
1140 } 1141 }
1141 1142
1142 } // namespace chromeos 1143 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698