| OLD | NEW |
| 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 "sync/internal_api/sync_encryption_handler_impl.h" | 5 #include "sync/internal_api/sync_encryption_handler_impl.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "sync/test/fake_encryptor.h" | 24 #include "sync/test/fake_encryptor.h" |
| 25 #include "sync/util/cryptographer.h" | 25 #include "sync/util/cryptographer.h" |
| 26 #include "testing/gmock/include/gmock/gmock.h" | 26 #include "testing/gmock/include/gmock/gmock.h" |
| 27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 28 | 28 |
| 29 namespace syncer { | 29 namespace syncer { |
| 30 | 30 |
| 31 namespace { | 31 namespace { |
| 32 | 32 |
| 33 using ::testing::_; | 33 using ::testing::_; |
| 34 using ::testing::AnyNumber; |
| 34 using ::testing::Mock; | 35 using ::testing::Mock; |
| 35 using ::testing::StrictMock; | 36 using ::testing::StrictMock; |
| 36 | 37 |
| 37 static const char kKeystoreKey[] = "keystore_key"; | 38 static const char kKeystoreKey[] = "keystore_key"; |
| 38 | 39 |
| 39 class SyncEncryptionHandlerObserverMock | 40 class SyncEncryptionHandlerObserverMock |
| 40 : public SyncEncryptionHandler::Observer { | 41 : public SyncEncryptionHandler::Observer { |
| 41 public: | 42 public: |
| 42 MOCK_METHOD2(OnPassphraseRequired, | 43 MOCK_METHOD2(OnPassphraseRequired, |
| 43 void(PassphraseRequiredReason, | 44 void(PassphraseRequiredReason, |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 sync_pb::NigoriSpecifics current_nigori_specifics; | 373 sync_pb::NigoriSpecifics current_nigori_specifics; |
| 373 GetCryptographer()->AddKey(old_key); | 374 GetCryptographer()->AddKey(old_key); |
| 374 GetCryptographer()->AddKey(current_key); | 375 GetCryptographer()->AddKey(current_key); |
| 375 GetCryptographer()->Encrypt( | 376 GetCryptographer()->Encrypt( |
| 376 our_encrypted_specifics, | 377 our_encrypted_specifics, |
| 377 our_encrypted_specifics.mutable_encrypted()); | 378 our_encrypted_specifics.mutable_encrypted()); |
| 378 GetCryptographer()->GetKeys( | 379 GetCryptographer()->GetKeys( |
| 379 current_nigori_specifics.mutable_encryption_keybag()); | 380 current_nigori_specifics.mutable_encryption_keybag()); |
| 380 current_nigori_specifics.set_encrypt_everything(true); | 381 current_nigori_specifics.set_encrypt_everything(true); |
| 381 | 382 |
| 382 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)); | 383 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 383 EXPECT_CALL(*observer(), OnEncryptedTypesChanged( | 384 EXPECT_CALL(*observer(), OnEncryptedTypesChanged( |
| 384 HasModelTypes(UserTypes()), true)); | 385 HasModelTypes(UserTypes()), true)); |
| 385 { | 386 { |
| 386 // Update the encryption handler. | 387 // Update the encryption handler. |
| 387 WriteTransaction trans(FROM_HERE, user_share()); | 388 WriteTransaction trans(FROM_HERE, user_share()); |
| 388 encryption_handler()->ApplyNigoriUpdate( | 389 encryption_handler()->ApplyNigoriUpdate( |
| 389 current_nigori_specifics, | 390 current_nigori_specifics, |
| 390 trans.GetWrappedTrans()); | 391 trans.GetWrappedTrans()); |
| 391 } | 392 } |
| 392 Mock::VerifyAndClearExpectations(observer()); | 393 Mock::VerifyAndClearExpectations(observer()); |
| 393 | 394 |
| 394 // Now set up the old nigori specifics and apply it on top. | 395 // Now set up the old nigori specifics and apply it on top. |
| 395 // Has an old set of keys, and no encrypted types. | 396 // Has an old set of keys, and no encrypted types. |
| 396 sync_pb::NigoriSpecifics old_nigori; | 397 sync_pb::NigoriSpecifics old_nigori; |
| 397 other_cryptographer.GetKeys(old_nigori.mutable_encryption_keybag()); | 398 other_cryptographer.GetKeys(old_nigori.mutable_encryption_keybag()); |
| 398 | 399 |
| 399 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)); | 400 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 400 { | 401 { |
| 401 // Update the encryption handler. | 402 // Update the encryption handler. |
| 402 WriteTransaction trans(FROM_HERE, user_share()); | 403 WriteTransaction trans(FROM_HERE, user_share()); |
| 403 encryption_handler()->ApplyNigoriUpdate( | 404 encryption_handler()->ApplyNigoriUpdate( |
| 404 old_nigori, | 405 old_nigori, |
| 405 trans.GetWrappedTrans()); | 406 trans.GetWrappedTrans()); |
| 406 } | 407 } |
| 407 EXPECT_TRUE(GetCryptographer()->is_ready()); | 408 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 408 EXPECT_FALSE(GetCryptographer()->has_pending_keys()); | 409 EXPECT_FALSE(GetCryptographer()->has_pending_keys()); |
| 409 | 410 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 496 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 496 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 497 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 497 KeyParams other_key = {"localhost", "dummy", kOtherKey}; | 498 KeyParams other_key = {"localhost", "dummy", kOtherKey}; |
| 498 other_cryptographer.AddKey(other_key); | 499 other_cryptographer.AddKey(other_key); |
| 499 | 500 |
| 500 sync_pb::NigoriSpecifics nigori; | 501 sync_pb::NigoriSpecifics nigori; |
| 501 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 502 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 502 nigori.set_keybag_is_frozen(false); | 503 nigori.set_keybag_is_frozen(false); |
| 503 nigori.set_encrypt_everything(false); | 504 nigori.set_encrypt_everything(false); |
| 504 EXPECT_CALL(*observer(), | 505 EXPECT_CALL(*observer(), |
| 505 OnCryptographerStateChanged(_)); | 506 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 506 EXPECT_CALL(*observer(), | 507 EXPECT_CALL(*observer(), |
| 507 OnPassphraseRequired(_, _)); | 508 OnPassphraseRequired(_, _)); |
| 508 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 509 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 509 nigori_node.SetNigoriSpecifics(nigori); | 510 nigori_node.SetNigoriSpecifics(nigori); |
| 510 } | 511 } |
| 511 // Run any tasks posted via AppplyNigoriUpdate. | 512 // Run any tasks posted via AppplyNigoriUpdate. |
| 512 PumpLoop(); | 513 PumpLoop(); |
| 513 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 514 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 514 Mock::VerifyAndClearExpectations(observer()); | 515 Mock::VerifyAndClearExpectations(observer()); |
| 515 | 516 |
| 516 EXPECT_CALL(*observer(), | 517 EXPECT_CALL(*observer(), |
| 517 OnCryptographerStateChanged(_)); | 518 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 518 EXPECT_CALL(*observer(), | 519 EXPECT_CALL(*observer(), |
| 519 OnPassphraseAccepted()); | 520 OnPassphraseAccepted()); |
| 520 EXPECT_CALL(*observer(), | 521 EXPECT_CALL(*observer(), |
| 521 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 522 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 522 EXPECT_CALL(*observer(), | 523 EXPECT_CALL(*observer(), |
| 523 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 524 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 524 EXPECT_CALL(*observer(), | 525 EXPECT_CALL(*observer(), |
| 525 OnEncryptionComplete()); | 526 OnEncryptionComplete()); |
| 526 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 527 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 527 encryption_handler()->SetDecryptionPassphrase(kOtherKey); | 528 encryption_handler()->SetDecryptionPassphrase(kOtherKey); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 550 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 551 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 551 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 552 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 552 KeyParams other_key = {"localhost", "dummy", kOtherKey}; | 553 KeyParams other_key = {"localhost", "dummy", kOtherKey}; |
| 553 other_cryptographer.AddKey(other_key); | 554 other_cryptographer.AddKey(other_key); |
| 554 | 555 |
| 555 sync_pb::NigoriSpecifics nigori; | 556 sync_pb::NigoriSpecifics nigori; |
| 556 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 557 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 557 nigori.set_keybag_is_frozen(true); | 558 nigori.set_keybag_is_frozen(true); |
| 558 nigori.set_encrypt_everything(false); | 559 nigori.set_encrypt_everything(false); |
| 559 EXPECT_CALL(*observer(), | 560 EXPECT_CALL(*observer(), |
| 560 OnCryptographerStateChanged(_)); | 561 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 561 EXPECT_CALL(*observer(), | 562 EXPECT_CALL(*observer(), |
| 562 OnPassphraseRequired(_, _)); | 563 OnPassphraseRequired(_, _)); |
| 563 EXPECT_CALL(*observer(), | 564 EXPECT_CALL(*observer(), |
| 564 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 565 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 565 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 566 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 566 nigori_node.SetNigoriSpecifics(nigori); | 567 nigori_node.SetNigoriSpecifics(nigori); |
| 567 } | 568 } |
| 568 // Run any tasks posted via AppplyNigoriUpdate. | 569 // Run any tasks posted via AppplyNigoriUpdate. |
| 569 PumpLoop(); | 570 PumpLoop(); |
| 570 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 571 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 571 Mock::VerifyAndClearExpectations(observer()); | 572 Mock::VerifyAndClearExpectations(observer()); |
| 572 | 573 |
| 573 EXPECT_CALL(*observer(), | 574 EXPECT_CALL(*observer(), |
| 574 OnCryptographerStateChanged(_)); | 575 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 575 EXPECT_CALL(*observer(), | 576 EXPECT_CALL(*observer(), |
| 576 OnPassphraseAccepted()); | 577 OnPassphraseAccepted()); |
| 577 EXPECT_CALL(*observer(), | 578 EXPECT_CALL(*observer(), |
| 578 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 579 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 579 EXPECT_CALL(*observer(), | 580 EXPECT_CALL(*observer(), |
| 580 OnEncryptedTypesChanged(_, true)); | 581 OnEncryptedTypesChanged(_, true)); |
| 581 EXPECT_CALL(*observer(), | 582 EXPECT_CALL(*observer(), |
| 582 OnEncryptionComplete()).Times(2); | 583 OnEncryptionComplete()).Times(2); |
| 583 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 584 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 584 encryption_handler()->SetDecryptionPassphrase(kOtherKey); | 585 encryption_handler()->SetDecryptionPassphrase(kOtherKey); |
| 585 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 586 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 586 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); | 587 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); |
| 587 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kOtherKey); | 588 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kOtherKey); |
| 588 } | 589 } |
| 589 | 590 |
| 590 // Test that we trigger a migration when we set the keystore key, had an | 591 // Test that we trigger a migration when we set the keystore key, had an |
| 591 // implicit passphrase, and did not have encrypt everything. We should switch | 592 // implicit passphrase, and did not have encrypt everything. We should switch |
| 592 // to KEYSTORE_PASSPHRASE. | 593 // to KEYSTORE_PASSPHRASE. |
| 593 TEST_F(SyncEncryptionHandlerImplTest, MigrateOnKeystoreKeyAvailableImplicit) { | 594 TEST_F(SyncEncryptionHandlerImplTest, MigrateOnKeystoreKeyAvailableImplicit) { |
| 594 const char kCurKey[] = "cur"; | 595 const char kCurKey[] = "cur"; |
| 595 KeyParams current_key = {"localhost", "dummy", kCurKey}; | 596 KeyParams current_key = {"localhost", "dummy", kCurKey}; |
| 596 GetCryptographer()->AddKey(current_key); | 597 GetCryptographer()->AddKey(current_key); |
| 597 EXPECT_CALL(*observer(), | 598 EXPECT_CALL(*observer(), |
| 598 OnCryptographerStateChanged(_)); | 599 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 599 EXPECT_CALL(*observer(), | 600 EXPECT_CALL(*observer(), |
| 600 OnEncryptedTypesChanged(_, false)); | 601 OnEncryptedTypesChanged(_, false)); |
| 601 EXPECT_CALL(*observer(), | 602 EXPECT_CALL(*observer(), |
| 602 OnEncryptionComplete()); | 603 OnEncryptionComplete()); |
| 603 encryption_handler()->Init(); | 604 encryption_handler()->Init(); |
| 604 Mock::VerifyAndClearExpectations(observer()); | 605 Mock::VerifyAndClearExpectations(observer()); |
| 605 | 606 |
| 606 { | 607 { |
| 607 ReadTransaction trans(FROM_HERE, user_share()); | 608 ReadTransaction trans(FROM_HERE, user_share()); |
| 608 // Once we provide a keystore key, we should perform the migration. | 609 // Once we provide a keystore key, we should perform the migration. |
| 609 EXPECT_CALL(*observer(), | 610 EXPECT_CALL(*observer(), |
| 611 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 612 EXPECT_CALL(*observer(), |
| 610 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 613 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 611 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 614 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 612 } | 615 } |
| 613 EXPECT_CALL(*observer(), | 616 EXPECT_CALL(*observer(), |
| 614 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 617 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 615 // The actual migration gets posted, so run all pending tasks. | 618 // The actual migration gets posted, so run all pending tasks. |
| 616 PumpLoop(); | 619 PumpLoop(); |
| 617 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 620 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 618 EXPECT_EQ(KEYSTORE_PASSPHRASE, | 621 EXPECT_EQ(KEYSTORE_PASSPHRASE, |
| 619 encryption_handler()->GetPassphraseType()); | 622 encryption_handler()->GetPassphraseType()); |
| 620 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 623 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 621 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); | 624 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); |
| 622 } | 625 } |
| 623 | 626 |
| 624 // Test that we trigger a migration when we set the keystore key, had an | 627 // Test that we trigger a migration when we set the keystore key, had an |
| 625 // implicit passphrase, and encrypt everything enabled. We should switch to | 628 // implicit passphrase, and encrypt everything enabled. We should switch to |
| 626 // FROZEN_IMPLICIT_PASSPHRASE. | 629 // FROZEN_IMPLICIT_PASSPHRASE. |
| 627 TEST_F(SyncEncryptionHandlerImplTest, | 630 TEST_F(SyncEncryptionHandlerImplTest, |
| 628 MigrateOnKeystoreKeyAvailableFrozenImplicit) { | 631 MigrateOnKeystoreKeyAvailableFrozenImplicit) { |
| 629 const char kCurKey[] = "cur"; | 632 const char kCurKey[] = "cur"; |
| 630 KeyParams current_key = {"localhost", "dummy", kCurKey}; | 633 KeyParams current_key = {"localhost", "dummy", kCurKey}; |
| 631 GetCryptographer()->AddKey(current_key); | 634 GetCryptographer()->AddKey(current_key); |
| 632 EXPECT_CALL(*observer(), | 635 EXPECT_CALL(*observer(), |
| 633 OnCryptographerStateChanged(_)); | 636 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 634 EXPECT_CALL(*observer(), | 637 EXPECT_CALL(*observer(), |
| 635 OnEncryptedTypesChanged(_, false)); | 638 OnEncryptedTypesChanged(_, false)); |
| 636 EXPECT_CALL(*observer(), | 639 EXPECT_CALL(*observer(), |
| 637 OnEncryptionComplete()); | 640 OnEncryptionComplete()); |
| 638 encryption_handler()->Init(); | 641 encryption_handler()->Init(); |
| 639 Mock::VerifyAndClearExpectations(observer()); | 642 Mock::VerifyAndClearExpectations(observer()); |
| 640 | 643 |
| 641 EXPECT_CALL(*observer(), | 644 EXPECT_CALL(*observer(), |
| 642 OnEncryptedTypesChanged(_, true)); | 645 OnEncryptedTypesChanged(_, true)); |
| 643 EXPECT_CALL(*observer(), | 646 EXPECT_CALL(*observer(), |
| 644 OnEncryptionComplete()); | 647 OnEncryptionComplete()); |
| 645 encryption_handler()->EnableEncryptEverything(); | 648 encryption_handler()->EnableEncryptEverything(); |
| 646 | 649 |
| 647 { | 650 { |
| 648 ReadTransaction trans(FROM_HERE, user_share()); | 651 ReadTransaction trans(FROM_HERE, user_share()); |
| 649 // Once we provide a keystore key, we should perform the migration. | 652 // Once we provide a keystore key, we should perform the migration. |
| 650 EXPECT_CALL(*observer(), | 653 EXPECT_CALL(*observer(), |
| 654 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 655 EXPECT_CALL(*observer(), |
| 651 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 656 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 652 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 657 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 653 } | 658 } |
| 654 EXPECT_CALL(*observer(), | 659 EXPECT_CALL(*observer(), |
| 655 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); | 660 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); |
| 656 // The actual migration gets posted, so run all pending tasks. | 661 // The actual migration gets posted, so run all pending tasks. |
| 657 PumpLoop(); | 662 PumpLoop(); |
| 658 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 663 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 659 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, | 664 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, |
| 660 encryption_handler()->GetPassphraseType()); | 665 encryption_handler()->GetPassphraseType()); |
| 661 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 666 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 662 VerifyMigratedNigori(FROZEN_IMPLICIT_PASSPHRASE, kCurKey); | 667 VerifyMigratedNigori(FROZEN_IMPLICIT_PASSPHRASE, kCurKey); |
| 663 } | 668 } |
| 664 | 669 |
| 665 // Test that we trigger a migration when we set the keystore key, had a | 670 // Test that we trigger a migration when we set the keystore key, had a |
| 666 // custom passphrase, and encrypt everything enabled. The passphrase state | 671 // custom passphrase, and encrypt everything enabled. The passphrase state |
| 667 // should remain as CUSTOM_PASSPHRASE, and encrypt everything stay the same. | 672 // should remain as CUSTOM_PASSPHRASE, and encrypt everything stay the same. |
| 668 TEST_F(SyncEncryptionHandlerImplTest, | 673 TEST_F(SyncEncryptionHandlerImplTest, |
| 669 MigrateOnKeystoreKeyAvailableCustomWithEncryption) { | 674 MigrateOnKeystoreKeyAvailableCustomWithEncryption) { |
| 670 const char kCurKey[] = "cur"; | 675 const char kCurKey[] = "cur"; |
| 671 EXPECT_CALL(*observer(), | 676 EXPECT_CALL(*observer(), |
| 672 OnCryptographerStateChanged(_)).Times(2); | 677 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 673 EXPECT_CALL(*observer(), | 678 EXPECT_CALL(*observer(), |
| 674 OnPassphraseRequired(_, _)); | 679 OnPassphraseRequired(_, _)); |
| 675 EXPECT_CALL(*observer(), | 680 EXPECT_CALL(*observer(), |
| 676 OnPassphraseAccepted()); | 681 OnPassphraseAccepted()); |
| 677 EXPECT_CALL(*observer(), | 682 EXPECT_CALL(*observer(), |
| 678 OnEncryptedTypesChanged(_, false)); | 683 OnEncryptedTypesChanged(_, false)); |
| 679 EXPECT_CALL(*observer(), | 684 EXPECT_CALL(*observer(), |
| 680 OnEncryptionComplete()); | 685 OnEncryptionComplete()); |
| 681 EXPECT_CALL(*observer(), | 686 EXPECT_CALL(*observer(), |
| 682 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 687 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 683 EXPECT_CALL(*observer(), | 688 EXPECT_CALL(*observer(), |
| 684 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 689 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 685 encryption_handler()->Init(); | 690 encryption_handler()->Init(); |
| 686 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); | 691 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); |
| 687 Mock::VerifyAndClearExpectations(observer()); | 692 Mock::VerifyAndClearExpectations(observer()); |
| 688 | 693 |
| 689 EXPECT_CALL(*observer(), | 694 EXPECT_CALL(*observer(), |
| 690 OnEncryptedTypesChanged(_, true)); | 695 OnEncryptedTypesChanged(_, true)); |
| 691 EXPECT_CALL(*observer(), | 696 EXPECT_CALL(*observer(), |
| 692 OnEncryptionComplete()); | 697 OnEncryptionComplete()); |
| 693 encryption_handler()->EnableEncryptEverything(); | 698 encryption_handler()->EnableEncryptEverything(); |
| 694 Mock::VerifyAndClearExpectations(observer()); | 699 Mock::VerifyAndClearExpectations(observer()); |
| 695 | 700 |
| 696 { | 701 { |
| 697 ReadTransaction trans(FROM_HERE, user_share()); | 702 ReadTransaction trans(FROM_HERE, user_share()); |
| 698 // Once we provide a keystore key, we should perform the migration. | 703 // Once we provide a keystore key, we should perform the migration. |
| 699 EXPECT_CALL(*observer(), | 704 EXPECT_CALL(*observer(), |
| 705 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 706 EXPECT_CALL(*observer(), |
| 700 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 707 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 701 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 708 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 702 } | 709 } |
| 703 // The actual migration gets posted, so run all pending tasks. | 710 // The actual migration gets posted, so run all pending tasks. |
| 704 PumpLoop(); | 711 PumpLoop(); |
| 705 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 712 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 706 EXPECT_EQ(CUSTOM_PASSPHRASE, | 713 EXPECT_EQ(CUSTOM_PASSPHRASE, |
| 707 encryption_handler()->GetPassphraseType()); | 714 encryption_handler()->GetPassphraseType()); |
| 708 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 715 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 709 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kCurKey); | 716 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kCurKey); |
| 710 } | 717 } |
| 711 | 718 |
| 712 // Test that we trigger a migration when we set the keystore key, had a | 719 // Test that we trigger a migration when we set the keystore key, had a |
| 713 // custom passphrase, and did not have encrypt everything. The passphrase state | 720 // custom passphrase, and did not have encrypt everything. The passphrase state |
| 714 // should remain as CUSTOM_PASSPHRASE, and encrypt everything should be enabled. | 721 // should remain as CUSTOM_PASSPHRASE, and encrypt everything should be enabled. |
| 715 TEST_F(SyncEncryptionHandlerImplTest, | 722 TEST_F(SyncEncryptionHandlerImplTest, |
| 716 MigrateOnKeystoreKeyAvailableCustomNoEncryption) { | 723 MigrateOnKeystoreKeyAvailableCustomNoEncryption) { |
| 717 const char kCurKey[] = "cur"; | 724 const char kCurKey[] = "cur"; |
| 718 EXPECT_CALL(*observer(), | 725 EXPECT_CALL(*observer(), |
| 719 OnCryptographerStateChanged(_)).Times(2); | 726 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 720 EXPECT_CALL(*observer(), | 727 EXPECT_CALL(*observer(), |
| 721 OnPassphraseRequired(_, _)); | 728 OnPassphraseRequired(_, _)); |
| 722 EXPECT_CALL(*observer(), | 729 EXPECT_CALL(*observer(), |
| 723 OnPassphraseAccepted()); | 730 OnPassphraseAccepted()); |
| 724 EXPECT_CALL(*observer(), | 731 EXPECT_CALL(*observer(), |
| 725 OnEncryptedTypesChanged(_, false)); | 732 OnEncryptedTypesChanged(_, false)); |
| 726 EXPECT_CALL(*observer(), | 733 EXPECT_CALL(*observer(), |
| 727 OnEncryptionComplete()); | 734 OnEncryptionComplete()); |
| 728 EXPECT_CALL(*observer(), | 735 EXPECT_CALL(*observer(), |
| 729 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 736 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 730 EXPECT_CALL(*observer(), | 737 EXPECT_CALL(*observer(), |
| 731 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 738 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 732 encryption_handler()->Init(); | 739 encryption_handler()->Init(); |
| 733 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); | 740 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); |
| 734 Mock::VerifyAndClearExpectations(observer()); | 741 Mock::VerifyAndClearExpectations(observer()); |
| 735 | 742 |
| 736 { | 743 { |
| 737 ReadTransaction trans(FROM_HERE, user_share()); | 744 ReadTransaction trans(FROM_HERE, user_share()); |
| 738 // Once we provide a keystore key, we should perform the migration. | 745 // Once we provide a keystore key, we should perform the migration. |
| 739 EXPECT_CALL(*observer(), | 746 EXPECT_CALL(*observer(), |
| 747 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 748 EXPECT_CALL(*observer(), |
| 740 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 749 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 741 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 750 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 742 } | 751 } |
| 743 EXPECT_CALL(*observer(), | 752 EXPECT_CALL(*observer(), |
| 744 OnEncryptedTypesChanged(_, true)); | 753 OnEncryptedTypesChanged(_, true)); |
| 745 EXPECT_CALL(*observer(), | 754 EXPECT_CALL(*observer(), |
| 746 OnEncryptionComplete()); | 755 OnEncryptionComplete()); |
| 747 // The actual migration gets posted, so run all pending tasks. | 756 // The actual migration gets posted, so run all pending tasks. |
| 748 PumpLoop(); | 757 PumpLoop(); |
| 749 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 758 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 nigori.set_keystore_migration_time(1); | 795 nigori.set_keystore_migration_time(1); |
| 787 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 796 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 788 | 797 |
| 789 EXPECT_CALL(*observer(), | 798 EXPECT_CALL(*observer(), |
| 790 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 799 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 791 EXPECT_CALL(*observer(), | 800 EXPECT_CALL(*observer(), |
| 792 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 801 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 793 EXPECT_CALL(*observer(), | 802 EXPECT_CALL(*observer(), |
| 794 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 803 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 795 EXPECT_CALL(*observer(), | 804 EXPECT_CALL(*observer(), |
| 796 OnCryptographerStateChanged(_)).Times(2); | 805 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 797 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 806 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 798 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 807 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 799 nigori_node.SetNigoriSpecifics(nigori); | 808 nigori_node.SetNigoriSpecifics(nigori); |
| 800 } | 809 } |
| 801 // Run any tasks posted via AppplyNigoriUpdate. | 810 // Run any tasks posted via AppplyNigoriUpdate. |
| 802 PumpLoop(); | 811 PumpLoop(); |
| 803 Mock::VerifyAndClearExpectations(observer()); | 812 Mock::VerifyAndClearExpectations(observer()); |
| 804 | 813 |
| 805 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 814 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 806 EXPECT_TRUE(GetCryptographer()->is_ready()); | 815 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 840 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 849 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 841 } | 850 } |
| 842 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 851 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 843 | 852 |
| 844 { | 853 { |
| 845 EXPECT_CALL(*observer(), | 854 EXPECT_CALL(*observer(), |
| 846 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); | 855 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); |
| 847 EXPECT_CALL(*observer(), | 856 EXPECT_CALL(*observer(), |
| 848 OnPassphraseRequired(_, _)); | 857 OnPassphraseRequired(_, _)); |
| 849 EXPECT_CALL(*observer(), | 858 EXPECT_CALL(*observer(), |
| 850 OnCryptographerStateChanged(_)); | 859 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 851 EXPECT_CALL(*observer(), | 860 EXPECT_CALL(*observer(), |
| 852 OnEncryptedTypesChanged(_, true)); | 861 OnEncryptedTypesChanged(_, true)); |
| 853 WriteTransaction trans(FROM_HERE, user_share()); | 862 WriteTransaction trans(FROM_HERE, user_share()); |
| 854 WriteNode nigori_node(&trans); | 863 WriteNode nigori_node(&trans); |
| 855 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 864 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 856 sync_pb::NigoriSpecifics nigori; | 865 sync_pb::NigoriSpecifics nigori; |
| 857 nigori.set_keybag_is_frozen(true); | 866 nigori.set_keybag_is_frozen(true); |
| 858 nigori.set_passphrase_type( | 867 nigori.set_passphrase_type( |
| 859 sync_pb::NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE); | 868 sync_pb::NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE); |
| 860 nigori.set_keystore_migration_time(1); | 869 nigori.set_keystore_migration_time(1); |
| 861 nigori.set_encrypt_everything(true); | 870 nigori.set_encrypt_everything(true); |
| 862 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 871 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 863 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 872 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 864 nigori_node.SetNigoriSpecifics(nigori); | 873 nigori_node.SetNigoriSpecifics(nigori); |
| 865 } | 874 } |
| 866 // Run any tasks posted via AppplyNigoriUpdate. | 875 // Run any tasks posted via AppplyNigoriUpdate. |
| 867 PumpLoop(); | 876 PumpLoop(); |
| 868 Mock::VerifyAndClearExpectations(observer()); | 877 Mock::VerifyAndClearExpectations(observer()); |
| 869 | 878 |
| 870 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 879 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 871 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, | 880 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, |
| 872 encryption_handler()->GetPassphraseType()); | 881 encryption_handler()->GetPassphraseType()); |
| 873 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 882 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 874 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 883 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 875 | 884 |
| 876 EXPECT_CALL(*observer(), | 885 EXPECT_CALL(*observer(), |
| 877 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 886 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 878 EXPECT_CALL(*observer(), | 887 EXPECT_CALL(*observer(), |
| 879 OnCryptographerStateChanged(_)); | 888 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 880 EXPECT_CALL(*observer(), | 889 EXPECT_CALL(*observer(), |
| 881 OnEncryptionComplete()); | 890 OnEncryptionComplete()); |
| 882 EXPECT_CALL(*observer(), | 891 EXPECT_CALL(*observer(), |
| 883 OnPassphraseAccepted()); | 892 OnPassphraseAccepted()); |
| 884 encryption_handler()->SetDecryptionPassphrase(kCurKey); | 893 encryption_handler()->SetDecryptionPassphrase(kCurKey); |
| 885 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 894 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 886 EXPECT_TRUE(GetCryptographer()->is_ready()); | 895 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 887 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); | 896 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); |
| 888 | 897 |
| 889 // Check that the cryptographer still encrypts with the current key. | 898 // Check that the cryptographer still encrypts with the current key. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 920 trans.GetWrappedTrans()); | 929 trans.GetWrappedTrans()); |
| 921 } | 930 } |
| 922 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 931 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 923 | 932 |
| 924 { | 933 { |
| 925 EXPECT_CALL(*observer(), | 934 EXPECT_CALL(*observer(), |
| 926 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 935 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 927 EXPECT_CALL(*observer(), | 936 EXPECT_CALL(*observer(), |
| 928 OnPassphraseRequired(_, _)); | 937 OnPassphraseRequired(_, _)); |
| 929 EXPECT_CALL(*observer(), | 938 EXPECT_CALL(*observer(), |
| 930 OnCryptographerStateChanged(_)); | 939 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 931 EXPECT_CALL(*observer(), | 940 EXPECT_CALL(*observer(), |
| 932 OnEncryptedTypesChanged(_, true)); | 941 OnEncryptedTypesChanged(_, true)); |
| 933 WriteTransaction trans(FROM_HERE, user_share()); | 942 WriteTransaction trans(FROM_HERE, user_share()); |
| 934 WriteNode nigori_node(&trans); | 943 WriteNode nigori_node(&trans); |
| 935 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 944 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 936 sync_pb::NigoriSpecifics nigori; | 945 sync_pb::NigoriSpecifics nigori; |
| 937 nigori.set_keybag_is_frozen(true); | 946 nigori.set_keybag_is_frozen(true); |
| 938 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); | 947 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); |
| 939 nigori.set_keystore_migration_time(1); | 948 nigori.set_keystore_migration_time(1); |
| 940 nigori.set_encrypt_everything(true); | 949 nigori.set_encrypt_everything(true); |
| 941 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 950 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 942 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 951 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 943 nigori_node.SetNigoriSpecifics(nigori); | 952 nigori_node.SetNigoriSpecifics(nigori); |
| 944 } | 953 } |
| 945 // Run any tasks posted via AppplyNigoriUpdate. | 954 // Run any tasks posted via AppplyNigoriUpdate. |
| 946 PumpLoop(); | 955 PumpLoop(); |
| 947 Mock::VerifyAndClearExpectations(observer()); | 956 Mock::VerifyAndClearExpectations(observer()); |
| 948 | 957 |
| 949 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 958 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 950 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); | 959 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); |
| 951 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 960 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 952 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 961 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 953 | 962 |
| 954 EXPECT_CALL(*observer(), | 963 EXPECT_CALL(*observer(), |
| 955 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 964 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 956 EXPECT_CALL(*observer(), | 965 EXPECT_CALL(*observer(), |
| 957 OnCryptographerStateChanged(_)); | 966 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 958 EXPECT_CALL(*observer(), | 967 EXPECT_CALL(*observer(), |
| 959 OnEncryptionComplete()); | 968 OnEncryptionComplete()); |
| 960 EXPECT_CALL(*observer(), | 969 EXPECT_CALL(*observer(), |
| 961 OnPassphraseAccepted()); | 970 OnPassphraseAccepted()); |
| 962 encryption_handler()->SetDecryptionPassphrase(kCurKey); | 971 encryption_handler()->SetDecryptionPassphrase(kCurKey); |
| 963 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 972 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 964 EXPECT_TRUE(GetCryptographer()->is_ready()); | 973 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 965 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); | 974 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); |
| 966 | 975 |
| 967 // Check that the cryptographer still encrypts with the current key. | 976 // Check that the cryptographer still encrypts with the current key. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1000 nigori.set_keybag_is_frozen(true); | 1009 nigori.set_keybag_is_frozen(true); |
| 1001 nigori.set_keystore_migration_time(1); | 1010 nigori.set_keystore_migration_time(1); |
| 1002 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); | 1011 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); |
| 1003 nigori.set_encrypt_everything(true); | 1012 nigori.set_encrypt_everything(true); |
| 1004 nigori_node.SetNigoriSpecifics(nigori); | 1013 nigori_node.SetNigoriSpecifics(nigori); |
| 1005 } | 1014 } |
| 1006 | 1015 |
| 1007 EXPECT_CALL(*observer(), | 1016 EXPECT_CALL(*observer(), |
| 1008 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1017 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1009 EXPECT_CALL(*observer(), | 1018 EXPECT_CALL(*observer(), |
| 1010 OnCryptographerStateChanged(_)); | 1019 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1011 EXPECT_CALL(*observer(), | 1020 EXPECT_CALL(*observer(), |
| 1012 OnEncryptedTypesChanged(_, true)).Times(2); | 1021 OnEncryptedTypesChanged(_, true)).Times(2); |
| 1013 EXPECT_CALL(*observer(), | 1022 EXPECT_CALL(*observer(), |
| 1014 OnEncryptionComplete()); | 1023 OnEncryptionComplete()); |
| 1015 encryption_handler()->Init(); | 1024 encryption_handler()->Init(); |
| 1016 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1025 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1017 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1026 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1018 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); | 1027 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); |
| 1019 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 1028 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 1020 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); | 1029 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); |
| 1021 | 1030 |
| 1022 { | 1031 { |
| 1023 EXPECT_CALL(*observer(), | 1032 EXPECT_CALL(*observer(), |
| 1024 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1033 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1025 ReadTransaction trans(FROM_HERE, user_share()); | 1034 ReadTransaction trans(FROM_HERE, user_share()); |
| 1026 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 1035 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 1027 } | 1036 } |
| 1028 Mock::VerifyAndClearExpectations(observer()); | 1037 Mock::VerifyAndClearExpectations(observer()); |
| 1029 | 1038 |
| 1030 // Now build an old unmigrated nigori node with old encrypted types. We should | 1039 // Now build an old unmigrated nigori node with old encrypted types. We should |
| 1031 // properly overwrite it with the migrated + encrypt everything state. | 1040 // properly overwrite it with the migrated + encrypt everything state. |
| 1032 EXPECT_CALL(*observer(), | 1041 EXPECT_CALL(*observer(), |
| 1033 OnCryptographerStateChanged(_)); | 1042 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1034 { | 1043 { |
| 1035 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1044 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1036 other_cryptographer.AddKey(old_key); | 1045 other_cryptographer.AddKey(old_key); |
| 1037 WriteTransaction trans(FROM_HERE, user_share()); | 1046 WriteTransaction trans(FROM_HERE, user_share()); |
| 1038 WriteNode nigori_node(&trans); | 1047 WriteNode nigori_node(&trans); |
| 1039 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 1048 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 1040 sync_pb::NigoriSpecifics nigori; | 1049 sync_pb::NigoriSpecifics nigori; |
| 1041 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 1050 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 1042 nigori.set_keybag_is_frozen(false); | 1051 nigori.set_keybag_is_frozen(false); |
| 1043 nigori.set_encrypt_everything(false); | 1052 nigori.set_encrypt_everything(false); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1077 nigori.set_keybag_is_frozen(true); | 1086 nigori.set_keybag_is_frozen(true); |
| 1078 nigori.set_keystore_migration_time(1); | 1087 nigori.set_keystore_migration_time(1); |
| 1079 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); | 1088 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); |
| 1080 nigori.set_encrypt_everything(true); | 1089 nigori.set_encrypt_everything(true); |
| 1081 nigori_node.SetNigoriSpecifics(nigori); | 1090 nigori_node.SetNigoriSpecifics(nigori); |
| 1082 } | 1091 } |
| 1083 | 1092 |
| 1084 EXPECT_CALL(*observer(), | 1093 EXPECT_CALL(*observer(), |
| 1085 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1094 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1086 EXPECT_CALL(*observer(), | 1095 EXPECT_CALL(*observer(), |
| 1087 OnCryptographerStateChanged(_)); | 1096 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1088 EXPECT_CALL(*observer(), | 1097 EXPECT_CALL(*observer(), |
| 1089 OnEncryptedTypesChanged(_, true)).Times(2); | 1098 OnEncryptedTypesChanged(_, true)).Times(2); |
| 1090 EXPECT_CALL(*observer(), | 1099 EXPECT_CALL(*observer(), |
| 1091 OnEncryptionComplete()); | 1100 OnEncryptionComplete()); |
| 1092 encryption_handler()->Init(); | 1101 encryption_handler()->Init(); |
| 1093 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1102 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1094 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1103 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1095 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); | 1104 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); |
| 1096 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 1105 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 1097 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); | 1106 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); |
| 1098 | 1107 |
| 1099 { | 1108 { |
| 1100 EXPECT_CALL(*observer(), | 1109 EXPECT_CALL(*observer(), |
| 1101 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1110 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1102 ReadTransaction trans(FROM_HERE, user_share()); | 1111 ReadTransaction trans(FROM_HERE, user_share()); |
| 1103 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 1112 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 1104 } | 1113 } |
| 1105 Mock::VerifyAndClearExpectations(observer()); | 1114 Mock::VerifyAndClearExpectations(observer()); |
| 1106 | 1115 |
| 1107 // Now build an old keystore nigori node with old encrypted types. We should | 1116 // Now build an old keystore nigori node with old encrypted types. We should |
| 1108 // properly overwrite it with the migrated + encrypt everything state. | 1117 // properly overwrite it with the migrated + encrypt everything state. |
| 1109 EXPECT_CALL(*observer(), | 1118 EXPECT_CALL(*observer(), |
| 1110 OnCryptographerStateChanged(_)); | 1119 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1111 { | 1120 { |
| 1112 WriteTransaction trans(FROM_HERE, user_share()); | 1121 WriteTransaction trans(FROM_HERE, user_share()); |
| 1113 WriteNode nigori_node(&trans); | 1122 WriteNode nigori_node(&trans); |
| 1114 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 1123 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 1115 sync_pb::NigoriSpecifics nigori; | 1124 sync_pb::NigoriSpecifics nigori; |
| 1116 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1125 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1117 other_cryptographer.AddKey(old_key); | 1126 other_cryptographer.AddKey(old_key); |
| 1118 encryption_handler()->GetKeystoreDecryptor( | 1127 encryption_handler()->GetKeystoreDecryptor( |
| 1119 other_cryptographer, | 1128 other_cryptographer, |
| 1120 kKeystoreKey, | 1129 kKeystoreKey, |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1165 nigori.mutable_keystore_decryptor_token()->CopyFrom( | 1174 nigori.mutable_keystore_decryptor_token()->CopyFrom( |
| 1166 keystore_decryptor_token); | 1175 keystore_decryptor_token); |
| 1167 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 1176 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 1168 nigori.set_keybag_is_frozen(true); | 1177 nigori.set_keybag_is_frozen(true); |
| 1169 nigori.set_keystore_migration_time(1); | 1178 nigori.set_keystore_migration_time(1); |
| 1170 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1179 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1171 | 1180 |
| 1172 EXPECT_CALL(*observer(), | 1181 EXPECT_CALL(*observer(), |
| 1173 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1182 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1174 EXPECT_CALL(*observer(), | 1183 EXPECT_CALL(*observer(), |
| 1175 OnCryptographerStateChanged(_)); | 1184 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1176 EXPECT_CALL(*observer(), | 1185 EXPECT_CALL(*observer(), |
| 1177 OnPassphraseRequired(_, _)); | 1186 OnPassphraseRequired(_, _)); |
| 1178 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 1187 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 1179 nigori_node.SetNigoriSpecifics(nigori); | 1188 nigori_node.SetNigoriSpecifics(nigori); |
| 1180 } | 1189 } |
| 1181 // Run any tasks posted via AppplyNigoriUpdate. | 1190 // Run any tasks posted via AppplyNigoriUpdate. |
| 1182 PumpLoop(); | 1191 PumpLoop(); |
| 1183 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1192 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1184 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1193 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1185 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1194 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1186 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1195 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1187 Mock::VerifyAndClearExpectations(observer()); | 1196 Mock::VerifyAndClearExpectations(observer()); |
| 1188 | 1197 |
| 1189 EXPECT_CALL(*observer(), | 1198 EXPECT_CALL(*observer(), |
| 1190 OnCryptographerStateChanged(_)); | 1199 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1191 EXPECT_CALL(*observer(), | 1200 EXPECT_CALL(*observer(), |
| 1192 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1201 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1193 { | 1202 { |
| 1194 EXPECT_CALL(*observer(), | 1203 EXPECT_CALL(*observer(), |
| 1195 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1204 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1196 ReadTransaction trans(FROM_HERE, user_share()); | 1205 ReadTransaction trans(FROM_HERE, user_share()); |
| 1197 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 1206 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 1198 } | 1207 } |
| 1199 PumpLoop(); | 1208 PumpLoop(); |
| 1200 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1209 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1248 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1257 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1249 nigori_node.SetNigoriSpecifics(nigori); | 1258 nigori_node.SetNigoriSpecifics(nigori); |
| 1250 EXPECT_CALL(*observer(), | 1259 EXPECT_CALL(*observer(), |
| 1251 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1260 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1252 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 1261 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 1253 } | 1262 } |
| 1254 | 1263 |
| 1255 EXPECT_CALL(*observer(), | 1264 EXPECT_CALL(*observer(), |
| 1256 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1265 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1257 EXPECT_CALL(*observer(), | 1266 EXPECT_CALL(*observer(), |
| 1258 OnCryptographerStateChanged(_)).Times(2); | 1267 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1259 EXPECT_CALL(*observer(), | 1268 EXPECT_CALL(*observer(), |
| 1260 OnEncryptedTypesChanged(_, false)); | 1269 OnEncryptedTypesChanged(_, false)); |
| 1261 EXPECT_CALL(*observer(), | 1270 EXPECT_CALL(*observer(), |
| 1262 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1271 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1263 EXPECT_CALL(*observer(), | 1272 EXPECT_CALL(*observer(), |
| 1264 OnEncryptionComplete()); | 1273 OnEncryptionComplete()); |
| 1265 encryption_handler()->Init(); | 1274 encryption_handler()->Init(); |
| 1266 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1275 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1267 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1276 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1268 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1277 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1269 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1278 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1270 Mock::VerifyAndClearExpectations(observer()); | 1279 Mock::VerifyAndClearExpectations(observer()); |
| 1271 | 1280 |
| 1272 const char kNewKey[] = "new_key"; | 1281 const char kNewKey[] = "new_key"; |
| 1273 EXPECT_CALL(*observer(), | 1282 EXPECT_CALL(*observer(), |
| 1274 OnCryptographerStateChanged(_)); | 1283 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1275 EXPECT_CALL(*observer(), | 1284 EXPECT_CALL(*observer(), |
| 1276 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1285 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1277 EXPECT_CALL(*observer(), | 1286 EXPECT_CALL(*observer(), |
| 1278 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1287 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1279 EXPECT_CALL(*observer(), | 1288 EXPECT_CALL(*observer(), |
| 1280 OnPassphraseAccepted()); | 1289 OnPassphraseAccepted()); |
| 1281 EXPECT_CALL(*observer(), | 1290 EXPECT_CALL(*observer(), |
| 1282 OnEncryptedTypesChanged(_, true)); | 1291 OnEncryptedTypesChanged(_, true)); |
| 1283 EXPECT_CALL(*observer(), | 1292 EXPECT_CALL(*observer(), |
| 1284 OnEncryptionComplete()).Times(2); | 1293 OnEncryptionComplete()).Times(2); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 nigori.set_keystore_migration_time(1); | 1354 nigori.set_keystore_migration_time(1); |
| 1346 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1355 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1347 nigori_node.SetNigoriSpecifics(nigori); | 1356 nigori_node.SetNigoriSpecifics(nigori); |
| 1348 } | 1357 } |
| 1349 | 1358 |
| 1350 EXPECT_CALL(*observer(), | 1359 EXPECT_CALL(*observer(), |
| 1351 OnPassphraseRequired(_, _)); | 1360 OnPassphraseRequired(_, _)); |
| 1352 EXPECT_CALL(*observer(), | 1361 EXPECT_CALL(*observer(), |
| 1353 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1362 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1354 EXPECT_CALL(*observer(), | 1363 EXPECT_CALL(*observer(), |
| 1355 OnCryptographerStateChanged(_)); | 1364 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1356 EXPECT_CALL(*observer(), | 1365 EXPECT_CALL(*observer(), |
| 1357 OnEncryptedTypesChanged(_, false)); | 1366 OnEncryptedTypesChanged(_, false)); |
| 1358 encryption_handler()->Init(); | 1367 encryption_handler()->Init(); |
| 1359 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1368 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1360 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1369 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1361 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1370 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1362 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1371 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1363 Mock::VerifyAndClearExpectations(observer()); | 1372 Mock::VerifyAndClearExpectations(observer()); |
| 1364 | 1373 |
| 1365 EXPECT_CALL(*observer(), | 1374 EXPECT_CALL(*observer(), |
| 1366 OnPassphraseAccepted()); | 1375 OnPassphraseAccepted()); |
| 1367 EXPECT_CALL(*observer(), | 1376 EXPECT_CALL(*observer(), |
| 1368 OnCryptographerStateChanged(_)); | 1377 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1369 EXPECT_CALL(*observer(), | 1378 EXPECT_CALL(*observer(), |
| 1370 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1379 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1371 EXPECT_CALL(*observer(), | 1380 EXPECT_CALL(*observer(), |
| 1372 OnEncryptionComplete()); | 1381 OnEncryptionComplete()); |
| 1373 encryption_handler()->SetDecryptionPassphrase(kOldKey); | 1382 encryption_handler()->SetDecryptionPassphrase(kOldKey); |
| 1374 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1383 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1375 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1384 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1376 Mock::VerifyAndClearExpectations(observer()); | 1385 Mock::VerifyAndClearExpectations(observer()); |
| 1377 | 1386 |
| 1378 const char kNewKey[] = "new_key"; | 1387 const char kNewKey[] = "new_key"; |
| 1379 EXPECT_CALL(*observer(), | 1388 EXPECT_CALL(*observer(), |
| 1380 OnCryptographerStateChanged(_)); | 1389 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1381 EXPECT_CALL(*observer(), | 1390 EXPECT_CALL(*observer(), |
| 1382 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1391 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1383 EXPECT_CALL(*observer(), | 1392 EXPECT_CALL(*observer(), |
| 1384 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1393 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1385 EXPECT_CALL(*observer(), | 1394 EXPECT_CALL(*observer(), |
| 1386 OnPassphraseAccepted()); | 1395 OnPassphraseAccepted()); |
| 1387 EXPECT_CALL(*observer(), | 1396 EXPECT_CALL(*observer(), |
| 1388 OnEncryptedTypesChanged(_, true)); | 1397 OnEncryptedTypesChanged(_, true)); |
| 1389 EXPECT_CALL(*observer(), | 1398 EXPECT_CALL(*observer(), |
| 1390 OnEncryptionComplete()).Times(2); | 1399 OnEncryptionComplete()).Times(2); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1451 nigori.set_keystore_migration_time(1); | 1460 nigori.set_keystore_migration_time(1); |
| 1452 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1461 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1453 nigori_node.SetNigoriSpecifics(nigori); | 1462 nigori_node.SetNigoriSpecifics(nigori); |
| 1454 } | 1463 } |
| 1455 | 1464 |
| 1456 EXPECT_CALL(*observer(), | 1465 EXPECT_CALL(*observer(), |
| 1457 OnPassphraseRequired(_, _)); | 1466 OnPassphraseRequired(_, _)); |
| 1458 EXPECT_CALL(*observer(), | 1467 EXPECT_CALL(*observer(), |
| 1459 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1468 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1460 EXPECT_CALL(*observer(), | 1469 EXPECT_CALL(*observer(), |
| 1461 OnCryptographerStateChanged(_)); | 1470 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1462 EXPECT_CALL(*observer(), | 1471 EXPECT_CALL(*observer(), |
| 1463 OnEncryptedTypesChanged(_, false)); | 1472 OnEncryptedTypesChanged(_, false)); |
| 1464 encryption_handler()->Init(); | 1473 encryption_handler()->Init(); |
| 1465 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1474 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1466 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1475 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1467 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1476 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1468 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1477 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1469 Mock::VerifyAndClearExpectations(observer()); | 1478 Mock::VerifyAndClearExpectations(observer()); |
| 1470 | 1479 |
| 1471 EXPECT_CALL(*observer(), | 1480 EXPECT_CALL(*observer(), |
| 1472 OnPassphraseAccepted()); | 1481 OnPassphraseAccepted()); |
| 1473 EXPECT_CALL(*observer(), | 1482 EXPECT_CALL(*observer(), |
| 1474 OnCryptographerStateChanged(_)); | 1483 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1475 EXPECT_CALL(*observer(), | 1484 EXPECT_CALL(*observer(), |
| 1476 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1485 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1477 EXPECT_CALL(*observer(), | 1486 EXPECT_CALL(*observer(), |
| 1478 OnEncryptionComplete()); | 1487 OnEncryptionComplete()); |
| 1479 encryption_handler()->SetDecryptionPassphrase(kOldKey); | 1488 encryption_handler()->SetDecryptionPassphrase(kOldKey); |
| 1480 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1489 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1481 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1490 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1482 Mock::VerifyAndClearExpectations(observer()); | 1491 Mock::VerifyAndClearExpectations(observer()); |
| 1483 | 1492 |
| 1484 // Should get dropped on the floor silently. | 1493 // Should get dropped on the floor silently. |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1545 nigori.set_keybag_is_frozen(true); | 1554 nigori.set_keybag_is_frozen(true); |
| 1546 nigori.set_keystore_migration_time(1); | 1555 nigori.set_keystore_migration_time(1); |
| 1547 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1556 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1548 nigori_node.SetNigoriSpecifics(nigori); | 1557 nigori_node.SetNigoriSpecifics(nigori); |
| 1549 } | 1558 } |
| 1550 EXPECT_CALL(*observer(), | 1559 EXPECT_CALL(*observer(), |
| 1551 OnPassphraseRequired(_, _)); | 1560 OnPassphraseRequired(_, _)); |
| 1552 EXPECT_CALL(*observer(), | 1561 EXPECT_CALL(*observer(), |
| 1553 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1562 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1554 EXPECT_CALL(*observer(), | 1563 EXPECT_CALL(*observer(), |
| 1555 OnCryptographerStateChanged(_)); | 1564 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1556 EXPECT_CALL(*observer(), | 1565 EXPECT_CALL(*observer(), |
| 1557 OnEncryptedTypesChanged(_, false)); | 1566 OnEncryptedTypesChanged(_, false)); |
| 1558 encryption_handler()->Init(); | 1567 encryption_handler()->Init(); |
| 1559 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1568 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1560 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1569 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1561 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1570 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1562 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1571 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1563 Mock::VerifyAndClearExpectations(observer()); | 1572 Mock::VerifyAndClearExpectations(observer()); |
| 1564 | 1573 |
| 1565 EXPECT_CALL(*observer(), | 1574 EXPECT_CALL(*observer(), |
| 1566 OnPassphraseAccepted()); | 1575 OnPassphraseAccepted()); |
| 1567 EXPECT_CALL(*observer(), | 1576 EXPECT_CALL(*observer(), |
| 1568 OnCryptographerStateChanged(_)); | 1577 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1569 EXPECT_CALL(*observer(), | 1578 EXPECT_CALL(*observer(), |
| 1570 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1579 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1571 EXPECT_CALL(*observer(), | 1580 EXPECT_CALL(*observer(), |
| 1572 OnEncryptionComplete()); | 1581 OnEncryptionComplete()); |
| 1573 encryption_handler()->SetDecryptionPassphrase(kCurKey); | 1582 encryption_handler()->SetDecryptionPassphrase(kCurKey); |
| 1574 Mock::VerifyAndClearExpectations(observer()); | 1583 Mock::VerifyAndClearExpectations(observer()); |
| 1575 | 1584 |
| 1576 EXPECT_CALL(*observer(), | 1585 EXPECT_CALL(*observer(), |
| 1577 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); | 1586 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); |
| 1578 EXPECT_CALL(*observer(), | 1587 EXPECT_CALL(*observer(), |
| 1579 OnEncryptionComplete()); | 1588 OnEncryptionComplete()); |
| 1580 EXPECT_CALL(*observer(), | 1589 EXPECT_CALL(*observer(), |
| 1581 OnEncryptedTypesChanged(_, true)); | 1590 OnEncryptedTypesChanged(_, true)); |
| 1591 EXPECT_CALL(*observer(), |
| 1592 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1582 encryption_handler()->EnableEncryptEverything(); | 1593 encryption_handler()->EnableEncryptEverything(); |
| 1583 Mock::VerifyAndClearExpectations(observer()); | 1594 Mock::VerifyAndClearExpectations(observer()); |
| 1584 | 1595 |
| 1585 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1596 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1586 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1597 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1587 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, | 1598 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, |
| 1588 encryption_handler()->GetPassphraseType()); | 1599 encryption_handler()->GetPassphraseType()); |
| 1589 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 1600 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 1590 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); | 1601 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); |
| 1591 | 1602 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1615 KeyParams cur_key = {"localhost", "dummy", kCurKey}; | 1626 KeyParams cur_key = {"localhost", "dummy", kCurKey}; |
| 1616 KeyParams keystore_key = {"localhost", "dummy", kKeystoreKey}; | 1627 KeyParams keystore_key = {"localhost", "dummy", kKeystoreKey}; |
| 1617 GetCryptographer()->AddKey(old_key); | 1628 GetCryptographer()->AddKey(old_key); |
| 1618 GetCryptographer()->AddKey(cur_key); | 1629 GetCryptographer()->AddKey(cur_key); |
| 1619 | 1630 |
| 1620 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1631 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1621 other_cryptographer.AddKey(old_key); | 1632 other_cryptographer.AddKey(old_key); |
| 1622 EXPECT_TRUE(other_cryptographer.is_ready()); | 1633 EXPECT_TRUE(other_cryptographer.is_ready()); |
| 1623 | 1634 |
| 1624 EXPECT_CALL(*observer(), | 1635 EXPECT_CALL(*observer(), |
| 1625 OnCryptographerStateChanged(_)); | 1636 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1626 EXPECT_CALL(*observer(), | 1637 EXPECT_CALL(*observer(), |
| 1627 OnEncryptedTypesChanged(_, false)); | 1638 OnEncryptedTypesChanged(_, false)); |
| 1628 EXPECT_CALL(*observer(), | 1639 EXPECT_CALL(*observer(), |
| 1629 OnEncryptionComplete()); | 1640 OnEncryptionComplete()); |
| 1630 encryption_handler()->Init(); | 1641 encryption_handler()->Init(); |
| 1631 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1642 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1632 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1643 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1633 | 1644 |
| 1634 { | 1645 { |
| 1635 EXPECT_CALL(*observer(), | 1646 EXPECT_CALL(*observer(), |
| 1636 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1647 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1637 ReadTransaction trans(FROM_HERE, user_share()); | 1648 ReadTransaction trans(FROM_HERE, user_share()); |
| 1638 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); | 1649 encryption_handler()->SetKeystoreKey(kKeystoreKey, trans.GetWrappedTrans()); |
| 1639 } | 1650 } |
| 1640 EXPECT_CALL(*observer(), | 1651 EXPECT_CALL(*observer(), |
| 1641 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1652 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1642 PumpLoop(); | 1653 PumpLoop(); |
| 1643 Mock::VerifyAndClearExpectations(observer()); | 1654 Mock::VerifyAndClearExpectations(observer()); |
| 1644 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1655 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1645 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1656 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1646 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); | 1657 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); |
| 1647 | 1658 |
| 1648 // Now build an old keystore passphrase nigori node. | 1659 // Now build an old keystore passphrase nigori node. |
| 1649 EXPECT_CALL(*observer(), | 1660 EXPECT_CALL(*observer(), |
| 1650 OnCryptographerStateChanged(_)); | 1661 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1651 { | 1662 { |
| 1652 WriteTransaction trans(FROM_HERE, user_share()); | 1663 WriteTransaction trans(FROM_HERE, user_share()); |
| 1653 WriteNode nigori_node(&trans); | 1664 WriteNode nigori_node(&trans); |
| 1654 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 1665 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 1655 sync_pb::NigoriSpecifics nigori; | 1666 sync_pb::NigoriSpecifics nigori; |
| 1656 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1667 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1657 other_cryptographer.AddKey(old_key); | 1668 other_cryptographer.AddKey(old_key); |
| 1658 encryption_handler()->GetKeystoreDecryptor( | 1669 encryption_handler()->GetKeystoreDecryptor( |
| 1659 other_cryptographer, | 1670 other_cryptographer, |
| 1660 kKeystoreKey, | 1671 kKeystoreKey, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1671 | 1682 |
| 1672 // Verify we're still migrated and have proper encryption state. | 1683 // Verify we're still migrated and have proper encryption state. |
| 1673 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1684 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1674 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1685 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1675 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1686 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1676 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1687 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1677 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); | 1688 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); |
| 1678 } | 1689 } |
| 1679 | 1690 |
| 1680 } // namespace syncer | 1691 } // namespace syncer |
| OLD | NEW |