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

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

Issue 2326473002: Revert of Do a better job at faking simple challenge signatures. (Closed)
Patch Set: Created 4 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/fake_cryptohome_client.h" 5 #include "chromeos/dbus/fake_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/files/file_util.h" 11 #include "base/files/file_util.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/path_service.h" 13 #include "base/path_service.h"
14 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
15 #include "base/threading/thread_restrictions.h" 15 #include "base/threading/thread_restrictions.h"
16 #include "base/threading/thread_task_runner_handle.h" 16 #include "base/threading/thread_task_runner_handle.h"
17 #include "chromeos/chromeos_paths.h" 17 #include "chromeos/chromeos_paths.h"
18 #include "chromeos/attestation/attestation.pb.h"
19 #include "chromeos/dbus/cryptohome/key.pb.h" 18 #include "chromeos/dbus/cryptohome/key.pb.h"
20 #include "chromeos/dbus/cryptohome/rpc.pb.h" 19 #include "chromeos/dbus/cryptohome/rpc.pb.h"
21 #include "third_party/cros_system_api/dbus/service_constants.h" 20 #include "third_party/cros_system_api/dbus/service_constants.h"
22 #include "third_party/protobuf/src/google/protobuf/io/coded_stream.h" 21 #include "third_party/protobuf/src/google/protobuf/io/coded_stream.h"
23 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream.h" 22 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream.h"
24 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite .h" 23 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite .h"
25 24
26 namespace chromeos { 25 namespace chromeos {
27 26
28 namespace {
29 // Signature nonces are twenty bytes. This matches the attestation code.
30 constexpr char kTwentyBytesNonce[] = "+addtwentybytesnonce";
31 // A symbolic signature.
32 constexpr char kSignature[] = "signed";
33 } // namespace
34
35 FakeCryptohomeClient::FakeCryptohomeClient() 27 FakeCryptohomeClient::FakeCryptohomeClient()
36 : service_is_available_(true), 28 : service_is_available_(true),
37 async_call_id_(1), 29 async_call_id_(1),
38 unmount_result_(true), 30 unmount_result_(true),
39 system_salt_(GetStubSystemSalt()), 31 system_salt_(GetStubSystemSalt()),
40 weak_ptr_factory_(this) { 32 weak_ptr_factory_(this) {
41 base::FilePath cache_path; 33 base::FilePath cache_path;
42 locked_ = PathService::Get(chromeos::FILE_INSTALL_ATTRIBUTES, &cache_path) && 34 locked_ = PathService::Get(chromeos::FILE_INSTALL_ATTRIBUTES, &cache_path) &&
43 base::PathExists(cache_path); 35 base::PathExists(cache_path);
44 } 36 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 73
82 bool FakeCryptohomeClient::Unmount(bool* success) { 74 bool FakeCryptohomeClient::Unmount(bool* success) {
83 *success = unmount_result_; 75 *success = unmount_result_;
84 return true; 76 return true;
85 } 77 }
86 78
87 void FakeCryptohomeClient::AsyncCheckKey( 79 void FakeCryptohomeClient::AsyncCheckKey(
88 const cryptohome::Identification& cryptohome_id, 80 const cryptohome::Identification& cryptohome_id,
89 const std::string& key, 81 const std::string& key,
90 const AsyncMethodCallback& callback) { 82 const AsyncMethodCallback& callback) {
91 ReturnAsyncMethodResult(callback); 83 ReturnAsyncMethodResult(callback, false);
92 } 84 }
93 85
94 void FakeCryptohomeClient::AsyncMigrateKey( 86 void FakeCryptohomeClient::AsyncMigrateKey(
95 const cryptohome::Identification& cryptohome_id, 87 const cryptohome::Identification& cryptohome_id,
96 const std::string& from_key, 88 const std::string& from_key,
97 const std::string& to_key, 89 const std::string& to_key,
98 const AsyncMethodCallback& callback) { 90 const AsyncMethodCallback& callback) {
99 ReturnAsyncMethodResult(callback); 91 ReturnAsyncMethodResult(callback, false);
100 } 92 }
101 93
102 void FakeCryptohomeClient::AsyncRemove( 94 void FakeCryptohomeClient::AsyncRemove(
103 const cryptohome::Identification& cryptohome_id, 95 const cryptohome::Identification& cryptohome_id,
104 const AsyncMethodCallback& callback) { 96 const AsyncMethodCallback& callback) {
105 ReturnAsyncMethodResult(callback); 97 ReturnAsyncMethodResult(callback, false);
106 } 98 }
107 99
108 void FakeCryptohomeClient::RenameCryptohome( 100 void FakeCryptohomeClient::RenameCryptohome(
109 const cryptohome::Identification& cryptohome_id_from, 101 const cryptohome::Identification& cryptohome_id_from,
110 const cryptohome::Identification& cryptohome_id_to, 102 const cryptohome::Identification& cryptohome_id_to,
111 const ProtobufMethodCallback& callback) { 103 const ProtobufMethodCallback& callback) {
112 cryptohome::BaseReply reply; 104 cryptohome::BaseReply reply;
113 ReturnProtobufMethodCallback(reply, callback); 105 ReturnProtobufMethodCallback(reply, callback);
114 } 106 }
115 107
(...skipping 28 matching lines...) Expand all
144 std::string FakeCryptohomeClient::BlockingGetSanitizedUsername( 136 std::string FakeCryptohomeClient::BlockingGetSanitizedUsername(
145 const cryptohome::Identification& cryptohome_id) { 137 const cryptohome::Identification& cryptohome_id) {
146 return GetStubSanitizedUsername(cryptohome_id); 138 return GetStubSanitizedUsername(cryptohome_id);
147 } 139 }
148 140
149 void FakeCryptohomeClient::AsyncMount( 141 void FakeCryptohomeClient::AsyncMount(
150 const cryptohome::Identification& cryptohome_id, 142 const cryptohome::Identification& cryptohome_id,
151 const std::string& key, 143 const std::string& key,
152 int flags, 144 int flags,
153 const AsyncMethodCallback& callback) { 145 const AsyncMethodCallback& callback) {
154 ReturnAsyncMethodResult(callback); 146 ReturnAsyncMethodResult(callback, false);
155 } 147 }
156 148
157 void FakeCryptohomeClient::AsyncAddKey( 149 void FakeCryptohomeClient::AsyncAddKey(
158 const cryptohome::Identification& cryptohome_id, 150 const cryptohome::Identification& cryptohome_id,
159 const std::string& key, 151 const std::string& key,
160 const std::string& new_key, 152 const std::string& new_key,
161 const AsyncMethodCallback& callback) { 153 const AsyncMethodCallback& callback) {
162 ReturnAsyncMethodResult(callback); 154 ReturnAsyncMethodResult(callback, false);
163 } 155 }
164 156
165 void FakeCryptohomeClient::AsyncMountGuest( 157 void FakeCryptohomeClient::AsyncMountGuest(
166 const AsyncMethodCallback& callback) { 158 const AsyncMethodCallback& callback) {
167 ReturnAsyncMethodResult(callback); 159 ReturnAsyncMethodResult(callback, false);
168 } 160 }
169 161
170 void FakeCryptohomeClient::AsyncMountPublic( 162 void FakeCryptohomeClient::AsyncMountPublic(
171 const cryptohome::Identification& public_mount_id, 163 const cryptohome::Identification& public_mount_id,
172 int flags, 164 int flags,
173 const AsyncMethodCallback& callback) { 165 const AsyncMethodCallback& callback) {
174 ReturnAsyncMethodResult(callback); 166 ReturnAsyncMethodResult(callback, false);
175 } 167 }
176 168
177 void FakeCryptohomeClient::TpmIsReady( 169 void FakeCryptohomeClient::TpmIsReady(
178 const BoolDBusMethodCallback& callback) { 170 const BoolDBusMethodCallback& callback) {
179 base::ThreadTaskRunnerHandle::Get()->PostTask( 171 base::ThreadTaskRunnerHandle::Get()->PostTask(
180 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); 172 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true));
181 } 173 }
182 174
183 void FakeCryptohomeClient::TpmIsEnabled( 175 void FakeCryptohomeClient::TpmIsEnabled(
184 const BoolDBusMethodCallback& callback) { 176 const BoolDBusMethodCallback& callback) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 359
368 void FakeCryptohomeClient::TpmAttestationIsEnrolled( 360 void FakeCryptohomeClient::TpmAttestationIsEnrolled(
369 const BoolDBusMethodCallback& callback) { 361 const BoolDBusMethodCallback& callback) {
370 base::ThreadTaskRunnerHandle::Get()->PostTask( 362 base::ThreadTaskRunnerHandle::Get()->PostTask(
371 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); 363 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true));
372 } 364 }
373 365
374 void FakeCryptohomeClient::AsyncTpmAttestationCreateEnrollRequest( 366 void FakeCryptohomeClient::AsyncTpmAttestationCreateEnrollRequest(
375 chromeos::attestation::PrivacyCAType pca_type, 367 chromeos::attestation::PrivacyCAType pca_type,
376 const AsyncMethodCallback& callback) { 368 const AsyncMethodCallback& callback) {
377 ReturnAsyncMethodData(callback, std::string()); 369 ReturnAsyncMethodResult(callback, true);
378 } 370 }
379 371
380 void FakeCryptohomeClient::AsyncTpmAttestationEnroll( 372 void FakeCryptohomeClient::AsyncTpmAttestationEnroll(
381 chromeos::attestation::PrivacyCAType pca_type, 373 chromeos::attestation::PrivacyCAType pca_type,
382 const std::string& pca_response, 374 const std::string& pca_response,
383 const AsyncMethodCallback& callback) { 375 const AsyncMethodCallback& callback) {
384 ReturnAsyncMethodResult(callback); 376 ReturnAsyncMethodResult(callback, false);
385 } 377 }
386 378
387 void FakeCryptohomeClient::AsyncTpmAttestationCreateCertRequest( 379 void FakeCryptohomeClient::AsyncTpmAttestationCreateCertRequest(
388 chromeos::attestation::PrivacyCAType pca_type, 380 chromeos::attestation::PrivacyCAType pca_type,
389 attestation::AttestationCertificateProfile certificate_profile, 381 attestation::AttestationCertificateProfile certificate_profile,
390 const cryptohome::Identification& cryptohome_id, 382 const cryptohome::Identification& cryptohome_id,
391 const std::string& request_origin, 383 const std::string& request_origin,
392 const AsyncMethodCallback& callback) { 384 const AsyncMethodCallback& callback) {
393 ReturnAsyncMethodData(callback, std::string()); 385 ReturnAsyncMethodResult(callback, true);
394 } 386 }
395 387
396 void FakeCryptohomeClient::AsyncTpmAttestationFinishCertRequest( 388 void FakeCryptohomeClient::AsyncTpmAttestationFinishCertRequest(
397 const std::string& pca_response, 389 const std::string& pca_response,
398 attestation::AttestationKeyType key_type, 390 attestation::AttestationKeyType key_type,
399 const cryptohome::Identification& cryptohome_id, 391 const cryptohome::Identification& cryptohome_id,
400 const std::string& key_name, 392 const std::string& key_name,
401 const AsyncMethodCallback& callback) { 393 const AsyncMethodCallback& callback) {
402 ReturnAsyncMethodData(callback, std::string()); 394 ReturnAsyncMethodResult(callback, true);
403 } 395 }
404 396
405 void FakeCryptohomeClient::TpmAttestationDoesKeyExist( 397 void FakeCryptohomeClient::TpmAttestationDoesKeyExist(
406 attestation::AttestationKeyType key_type, 398 attestation::AttestationKeyType key_type,
407 const cryptohome::Identification& cryptohome_id, 399 const cryptohome::Identification& cryptohome_id,
408 const std::string& key_name, 400 const std::string& key_name,
409 const BoolDBusMethodCallback& callback) { 401 const BoolDBusMethodCallback& callback) {
410 base::ThreadTaskRunnerHandle::Get()->PostTask( 402 base::ThreadTaskRunnerHandle::Get()->PostTask(
411 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false)); 403 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false));
412 } 404 }
(...skipping 16 matching lines...) Expand all
429 base::ThreadTaskRunnerHandle::Get()->PostTask( 421 base::ThreadTaskRunnerHandle::Get()->PostTask(
430 FROM_HERE, 422 FROM_HERE,
431 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string())); 423 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string()));
432 } 424 }
433 425
434 void FakeCryptohomeClient::TpmAttestationRegisterKey( 426 void FakeCryptohomeClient::TpmAttestationRegisterKey(
435 attestation::AttestationKeyType key_type, 427 attestation::AttestationKeyType key_type,
436 const cryptohome::Identification& cryptohome_id, 428 const cryptohome::Identification& cryptohome_id,
437 const std::string& key_name, 429 const std::string& key_name,
438 const AsyncMethodCallback& callback) { 430 const AsyncMethodCallback& callback) {
439 ReturnAsyncMethodData(callback, std::string()); 431 ReturnAsyncMethodResult(callback, true);
440 } 432 }
441 433
442 void FakeCryptohomeClient::TpmAttestationSignEnterpriseChallenge( 434 void FakeCryptohomeClient::TpmAttestationSignEnterpriseChallenge(
443 attestation::AttestationKeyType key_type, 435 attestation::AttestationKeyType key_type,
444 const cryptohome::Identification& cryptohome_id, 436 const cryptohome::Identification& cryptohome_id,
445 const std::string& key_name, 437 const std::string& key_name,
446 const std::string& domain, 438 const std::string& domain,
447 const std::string& device_id, 439 const std::string& device_id,
448 attestation::AttestationChallengeOptions options, 440 attestation::AttestationChallengeOptions options,
449 const std::string& challenge, 441 const std::string& challenge,
450 const AsyncMethodCallback& callback) { 442 const AsyncMethodCallback& callback) {
451 ReturnAsyncMethodData(callback, std::string()); 443 ReturnAsyncMethodResult(callback, true);
452 } 444 }
453 445
454 void FakeCryptohomeClient::TpmAttestationSignSimpleChallenge( 446 void FakeCryptohomeClient::TpmAttestationSignSimpleChallenge(
455 attestation::AttestationKeyType key_type, 447 attestation::AttestationKeyType key_type,
456 const cryptohome::Identification& cryptohome_id, 448 const cryptohome::Identification& cryptohome_id,
457 const std::string& key_name, 449 const std::string& key_name,
458 const std::string& challenge, 450 const std::string& challenge,
459 const AsyncMethodCallback& callback) { 451 const AsyncMethodCallback& callback) {
460 chromeos::attestation::SignedData signed_data; 452 ReturnAsyncMethodResult(callback, true);
461 signed_data.set_data(challenge + kTwentyBytesNonce);
462 signed_data.set_signature(kSignature);
463 ReturnAsyncMethodData(callback, signed_data.SerializeAsString());
464 } 453 }
465 454
466 void FakeCryptohomeClient::TpmAttestationGetKeyPayload( 455 void FakeCryptohomeClient::TpmAttestationGetKeyPayload(
467 attestation::AttestationKeyType key_type, 456 attestation::AttestationKeyType key_type,
468 const cryptohome::Identification& cryptohome_id, 457 const cryptohome::Identification& cryptohome_id,
469 const std::string& key_name, 458 const std::string& key_name,
470 const DataMethodCallback& callback) { 459 const DataMethodCallback& callback) {
471 base::ThreadTaskRunnerHandle::Get()->PostTask( 460 base::ThreadTaskRunnerHandle::Get()->PostTask(
472 FROM_HERE, 461 FROM_HERE,
473 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string())); 462 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string()));
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 } 581 }
593 582
594 void FakeCryptohomeClient::ReturnProtobufMethodCallback( 583 void FakeCryptohomeClient::ReturnProtobufMethodCallback(
595 const cryptohome::BaseReply& reply, 584 const cryptohome::BaseReply& reply,
596 const ProtobufMethodCallback& callback) { 585 const ProtobufMethodCallback& callback) {
597 base::ThreadTaskRunnerHandle::Get()->PostTask( 586 base::ThreadTaskRunnerHandle::Get()->PostTask(
598 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true, reply)); 587 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true, reply));
599 } 588 }
600 589
601 void FakeCryptohomeClient::ReturnAsyncMethodResult( 590 void FakeCryptohomeClient::ReturnAsyncMethodResult(
602 const AsyncMethodCallback& callback) { 591 const AsyncMethodCallback& callback,
592 bool returns_data) {
603 base::ThreadTaskRunnerHandle::Get()->PostTask( 593 base::ThreadTaskRunnerHandle::Get()->PostTask(
604 FROM_HERE, 594 FROM_HERE,
605 base::Bind(&FakeCryptohomeClient::ReturnAsyncMethodResultInternal, 595 base::Bind(&FakeCryptohomeClient::ReturnAsyncMethodResultInternal,
606 weak_ptr_factory_.GetWeakPtr(), callback)); 596 weak_ptr_factory_.GetWeakPtr(), callback, returns_data));
607 }
608
609 void FakeCryptohomeClient::ReturnAsyncMethodData(
610 const AsyncMethodCallback& callback,
611 const std::string& data) {
612 base::ThreadTaskRunnerHandle::Get()->PostTask(
613 FROM_HERE,
614 base::Bind(&FakeCryptohomeClient::ReturnAsyncMethodDataInternal,
615 weak_ptr_factory_.GetWeakPtr(), callback, data));
616 } 597 }
617 598
618 void FakeCryptohomeClient::ReturnAsyncMethodResultInternal( 599 void FakeCryptohomeClient::ReturnAsyncMethodResultInternal(
619 const AsyncMethodCallback& callback) { 600 const AsyncMethodCallback& callback,
601 bool returns_data) {
620 callback.Run(async_call_id_); 602 callback.Run(async_call_id_);
621 if (!async_call_status_handler_.is_null()) { 603 if (!returns_data && !async_call_status_handler_.is_null()) {
622 base::ThreadTaskRunnerHandle::Get()->PostTask( 604 base::ThreadTaskRunnerHandle::Get()->PostTask(
623 FROM_HERE, base::Bind(async_call_status_handler_, async_call_id_, true, 605 FROM_HERE, base::Bind(async_call_status_handler_, async_call_id_, true,
624 cryptohome::MOUNT_ERROR_NONE)); 606 cryptohome::MOUNT_ERROR_NONE));
625 } 607 } else if (returns_data && !async_call_status_data_handler_.is_null()) {
626 ++async_call_id_;
627 }
628
629 void FakeCryptohomeClient::ReturnAsyncMethodDataInternal(
630 const AsyncMethodCallback& callback,
631 const std::string& data) {
632 callback.Run(async_call_id_);
633 if (!async_call_status_data_handler_.is_null()) {
634 base::ThreadTaskRunnerHandle::Get()->PostTask( 608 base::ThreadTaskRunnerHandle::Get()->PostTask(
635 FROM_HERE, base::Bind(async_call_status_data_handler_, async_call_id_, 609 FROM_HERE, base::Bind(async_call_status_data_handler_, async_call_id_,
636 true, data)); 610 true, std::string()));
637 } 611 }
638 ++async_call_id_; 612 ++async_call_id_;
639 } 613 }
640 614
641 } // namespace chromeos 615 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/fake_cryptohome_client.h ('k') | chromeos/dbus/fake_cryptohome_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698