| 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/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #include "sync/test/fake_encryptor.h" | 25 #include "sync/test/fake_encryptor.h" |
| 26 #include "sync/util/cryptographer.h" | 26 #include "sync/util/cryptographer.h" |
| 27 #include "testing/gmock/include/gmock/gmock.h" | 27 #include "testing/gmock/include/gmock/gmock.h" |
| 28 #include "testing/gtest/include/gtest/gtest.h" | 28 #include "testing/gtest/include/gtest/gtest.h" |
| 29 | 29 |
| 30 namespace syncer { | 30 namespace syncer { |
| 31 | 31 |
| 32 namespace { | 32 namespace { |
| 33 | 33 |
| 34 using ::testing::_; | 34 using ::testing::_; |
| 35 using ::testing::AnyNumber; |
| 35 using ::testing::Mock; | 36 using ::testing::Mock; |
| 36 using ::testing::SaveArg; | 37 using ::testing::SaveArg; |
| 37 using ::testing::StrictMock; | 38 using ::testing::StrictMock; |
| 38 | 39 |
| 39 // The raw keystore key the server sends. | 40 // The raw keystore key the server sends. |
| 40 static const char kRawKeystoreKey[] = "keystore_key"; | 41 static const char kRawKeystoreKey[] = "keystore_key"; |
| 41 // Base64 encoded version of |kRawKeystoreKey|. | 42 // Base64 encoded version of |kRawKeystoreKey|. |
| 42 static const char kKeystoreKey[] = "a2V5c3RvcmVfa2V5"; | 43 static const char kKeystoreKey[] = "a2V5c3RvcmVfa2V5"; |
| 43 | 44 |
| 44 class SyncEncryptionHandlerObserverMock | 45 class SyncEncryptionHandlerObserverMock |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 sync_pb::NigoriSpecifics current_nigori_specifics; | 378 sync_pb::NigoriSpecifics current_nigori_specifics; |
| 378 GetCryptographer()->AddKey(old_key); | 379 GetCryptographer()->AddKey(old_key); |
| 379 GetCryptographer()->AddKey(current_key); | 380 GetCryptographer()->AddKey(current_key); |
| 380 GetCryptographer()->Encrypt( | 381 GetCryptographer()->Encrypt( |
| 381 our_encrypted_specifics, | 382 our_encrypted_specifics, |
| 382 our_encrypted_specifics.mutable_encrypted()); | 383 our_encrypted_specifics.mutable_encrypted()); |
| 383 GetCryptographer()->GetKeys( | 384 GetCryptographer()->GetKeys( |
| 384 current_nigori_specifics.mutable_encryption_keybag()); | 385 current_nigori_specifics.mutable_encryption_keybag()); |
| 385 current_nigori_specifics.set_encrypt_everything(true); | 386 current_nigori_specifics.set_encrypt_everything(true); |
| 386 | 387 |
| 387 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)); | 388 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 388 EXPECT_CALL(*observer(), OnEncryptedTypesChanged( | 389 EXPECT_CALL(*observer(), OnEncryptedTypesChanged( |
| 389 HasModelTypes(UserTypes()), true)); | 390 HasModelTypes(UserTypes()), true)); |
| 390 { | 391 { |
| 391 // Update the encryption handler. | 392 // Update the encryption handler. |
| 392 WriteTransaction trans(FROM_HERE, user_share()); | 393 WriteTransaction trans(FROM_HERE, user_share()); |
| 393 encryption_handler()->ApplyNigoriUpdate( | 394 encryption_handler()->ApplyNigoriUpdate( |
| 394 current_nigori_specifics, | 395 current_nigori_specifics, |
| 395 trans.GetWrappedTrans()); | 396 trans.GetWrappedTrans()); |
| 396 } | 397 } |
| 397 Mock::VerifyAndClearExpectations(observer()); | 398 Mock::VerifyAndClearExpectations(observer()); |
| 398 | 399 |
| 399 // Now set up the old nigori specifics and apply it on top. | 400 // Now set up the old nigori specifics and apply it on top. |
| 400 // Has an old set of keys, and no encrypted types. | 401 // Has an old set of keys, and no encrypted types. |
| 401 sync_pb::NigoriSpecifics old_nigori; | 402 sync_pb::NigoriSpecifics old_nigori; |
| 402 other_cryptographer.GetKeys(old_nigori.mutable_encryption_keybag()); | 403 other_cryptographer.GetKeys(old_nigori.mutable_encryption_keybag()); |
| 403 | 404 |
| 404 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)); | 405 EXPECT_CALL(*observer(), OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 405 { | 406 { |
| 406 // Update the encryption handler. | 407 // Update the encryption handler. |
| 407 WriteTransaction trans(FROM_HERE, user_share()); | 408 WriteTransaction trans(FROM_HERE, user_share()); |
| 408 encryption_handler()->ApplyNigoriUpdate( | 409 encryption_handler()->ApplyNigoriUpdate( |
| 409 old_nigori, | 410 old_nigori, |
| 410 trans.GetWrappedTrans()); | 411 trans.GetWrappedTrans()); |
| 411 } | 412 } |
| 412 EXPECT_TRUE(GetCryptographer()->is_ready()); | 413 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 413 EXPECT_FALSE(GetCryptographer()->has_pending_keys()); | 414 EXPECT_FALSE(GetCryptographer()->has_pending_keys()); |
| 414 | 415 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 506 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 506 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 507 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 507 KeyParams other_key = {"localhost", "dummy", kOtherKey}; | 508 KeyParams other_key = {"localhost", "dummy", kOtherKey}; |
| 508 other_cryptographer.AddKey(other_key); | 509 other_cryptographer.AddKey(other_key); |
| 509 | 510 |
| 510 sync_pb::NigoriSpecifics nigori; | 511 sync_pb::NigoriSpecifics nigori; |
| 511 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 512 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 512 nigori.set_keybag_is_frozen(false); | 513 nigori.set_keybag_is_frozen(false); |
| 513 nigori.set_encrypt_everything(false); | 514 nigori.set_encrypt_everything(false); |
| 514 EXPECT_CALL(*observer(), | 515 EXPECT_CALL(*observer(), |
| 515 OnCryptographerStateChanged(_)); | 516 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 516 EXPECT_CALL(*observer(), | 517 EXPECT_CALL(*observer(), |
| 517 OnPassphraseRequired(_, _)); | 518 OnPassphraseRequired(_, _)); |
| 518 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 519 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 519 nigori_node.SetNigoriSpecifics(nigori); | 520 nigori_node.SetNigoriSpecifics(nigori); |
| 520 } | 521 } |
| 521 // Run any tasks posted via AppplyNigoriUpdate. | 522 // Run any tasks posted via AppplyNigoriUpdate. |
| 522 PumpLoop(); | 523 PumpLoop(); |
| 523 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 524 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 524 Mock::VerifyAndClearExpectations(observer()); | 525 Mock::VerifyAndClearExpectations(observer()); |
| 525 | 526 |
| 526 EXPECT_CALL(*observer(), | 527 EXPECT_CALL(*observer(), |
| 527 OnCryptographerStateChanged(_)); | 528 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 528 EXPECT_CALL(*observer(), | 529 EXPECT_CALL(*observer(), |
| 529 OnPassphraseAccepted()); | 530 OnPassphraseAccepted()); |
| 530 EXPECT_CALL(*observer(), | 531 EXPECT_CALL(*observer(), |
| 531 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 532 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 532 EXPECT_CALL(*observer(), | 533 EXPECT_CALL(*observer(), |
| 533 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 534 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 534 EXPECT_CALL(*observer(), | 535 EXPECT_CALL(*observer(), |
| 535 OnEncryptionComplete()); | 536 OnEncryptionComplete()); |
| 536 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 537 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 537 encryption_handler()->SetDecryptionPassphrase(kOtherKey); | 538 encryption_handler()->SetDecryptionPassphrase(kOtherKey); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 561 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 562 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 562 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 563 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 563 KeyParams other_key = {"localhost", "dummy", kOtherKey}; | 564 KeyParams other_key = {"localhost", "dummy", kOtherKey}; |
| 564 other_cryptographer.AddKey(other_key); | 565 other_cryptographer.AddKey(other_key); |
| 565 | 566 |
| 566 sync_pb::NigoriSpecifics nigori; | 567 sync_pb::NigoriSpecifics nigori; |
| 567 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 568 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 568 nigori.set_keybag_is_frozen(true); | 569 nigori.set_keybag_is_frozen(true); |
| 569 nigori.set_encrypt_everything(false); | 570 nigori.set_encrypt_everything(false); |
| 570 EXPECT_CALL(*observer(), | 571 EXPECT_CALL(*observer(), |
| 571 OnCryptographerStateChanged(_)); | 572 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 572 EXPECT_CALL(*observer(), | 573 EXPECT_CALL(*observer(), |
| 573 OnPassphraseRequired(_, _)); | 574 OnPassphraseRequired(_, _)); |
| 574 EXPECT_CALL(*observer(), | 575 EXPECT_CALL(*observer(), |
| 575 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 576 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 576 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 577 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 577 nigori_node.SetNigoriSpecifics(nigori); | 578 nigori_node.SetNigoriSpecifics(nigori); |
| 578 } | 579 } |
| 579 // Run any tasks posted via AppplyNigoriUpdate. | 580 // Run any tasks posted via AppplyNigoriUpdate. |
| 580 PumpLoop(); | 581 PumpLoop(); |
| 581 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 582 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 582 Mock::VerifyAndClearExpectations(observer()); | 583 Mock::VerifyAndClearExpectations(observer()); |
| 583 | 584 |
| 584 EXPECT_CALL(*observer(), | 585 EXPECT_CALL(*observer(), |
| 585 OnCryptographerStateChanged(_)); | 586 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 586 EXPECT_CALL(*observer(), | 587 EXPECT_CALL(*observer(), |
| 587 OnPassphraseAccepted()); | 588 OnPassphraseAccepted()); |
| 588 EXPECT_CALL(*observer(), | 589 EXPECT_CALL(*observer(), |
| 589 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 590 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 590 EXPECT_CALL(*observer(), | 591 EXPECT_CALL(*observer(), |
| 591 OnEncryptedTypesChanged(_, true)); | 592 OnEncryptedTypesChanged(_, true)); |
| 592 EXPECT_CALL(*observer(), | 593 EXPECT_CALL(*observer(), |
| 593 OnEncryptionComplete()).Times(2); | 594 OnEncryptionComplete()).Times(2); |
| 594 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 595 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 595 encryption_handler()->SetDecryptionPassphrase(kOtherKey); | 596 encryption_handler()->SetDecryptionPassphrase(kOtherKey); |
| 596 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 597 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 597 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); | 598 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); |
| 598 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kOtherKey); | 599 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kOtherKey); |
| 599 } | 600 } |
| 600 | 601 |
| 601 // Test that we trigger a migration when we set the keystore key, had an | 602 // Test that we trigger a migration when we set the keystore key, had an |
| 602 // implicit passphrase, and did not have encrypt everything. We should switch | 603 // implicit passphrase, and did not have encrypt everything. We should switch |
| 603 // to KEYSTORE_PASSPHRASE. | 604 // to KEYSTORE_PASSPHRASE. |
| 604 TEST_F(SyncEncryptionHandlerImplTest, MigrateOnKeystoreKeyAvailableImplicit) { | 605 TEST_F(SyncEncryptionHandlerImplTest, MigrateOnKeystoreKeyAvailableImplicit) { |
| 605 const char kCurKey[] = "cur"; | 606 const char kCurKey[] = "cur"; |
| 606 KeyParams current_key = {"localhost", "dummy", kCurKey}; | 607 KeyParams current_key = {"localhost", "dummy", kCurKey}; |
| 607 GetCryptographer()->AddKey(current_key); | 608 GetCryptographer()->AddKey(current_key); |
| 608 EXPECT_CALL(*observer(), | 609 EXPECT_CALL(*observer(), |
| 609 OnCryptographerStateChanged(_)); | 610 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 610 EXPECT_CALL(*observer(), | 611 EXPECT_CALL(*observer(), |
| 611 OnEncryptedTypesChanged(_, false)); | 612 OnEncryptedTypesChanged(_, false)); |
| 612 EXPECT_CALL(*observer(), | 613 EXPECT_CALL(*observer(), |
| 613 OnEncryptionComplete()); | 614 OnEncryptionComplete()); |
| 614 encryption_handler()->Init(); | 615 encryption_handler()->Init(); |
| 615 Mock::VerifyAndClearExpectations(observer()); | 616 Mock::VerifyAndClearExpectations(observer()); |
| 616 | 617 |
| 617 { | 618 { |
| 618 ReadTransaction trans(FROM_HERE, user_share()); | 619 ReadTransaction trans(FROM_HERE, user_share()); |
| 619 // Once we provide a keystore key, we should perform the migration. | 620 // Once we provide a keystore key, we should perform the migration. |
| 620 EXPECT_CALL(*observer(), | 621 EXPECT_CALL(*observer(), |
| 622 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 623 EXPECT_CALL(*observer(), |
| 621 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 624 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 622 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 625 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 623 trans.GetWrappedTrans()); | 626 trans.GetWrappedTrans()); |
| 624 } | 627 } |
| 625 EXPECT_CALL(*observer(), | 628 EXPECT_CALL(*observer(), |
| 626 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 629 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 627 // The actual migration gets posted, so run all pending tasks. | 630 // The actual migration gets posted, so run all pending tasks. |
| 628 PumpLoop(); | 631 PumpLoop(); |
| 629 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 632 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 630 EXPECT_EQ(KEYSTORE_PASSPHRASE, | 633 EXPECT_EQ(KEYSTORE_PASSPHRASE, |
| 631 encryption_handler()->GetPassphraseType()); | 634 encryption_handler()->GetPassphraseType()); |
| 632 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 635 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 633 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); | 636 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); |
| 634 } | 637 } |
| 635 | 638 |
| 636 // Test that we trigger a migration when we set the keystore key, had an | 639 // Test that we trigger a migration when we set the keystore key, had an |
| 637 // implicit passphrase, and encrypt everything enabled. We should switch to | 640 // implicit passphrase, and encrypt everything enabled. We should switch to |
| 638 // FROZEN_IMPLICIT_PASSPHRASE. | 641 // FROZEN_IMPLICIT_PASSPHRASE. |
| 639 TEST_F(SyncEncryptionHandlerImplTest, | 642 TEST_F(SyncEncryptionHandlerImplTest, |
| 640 MigrateOnKeystoreKeyAvailableFrozenImplicit) { | 643 MigrateOnKeystoreKeyAvailableFrozenImplicit) { |
| 641 const char kCurKey[] = "cur"; | 644 const char kCurKey[] = "cur"; |
| 642 KeyParams current_key = {"localhost", "dummy", kCurKey}; | 645 KeyParams current_key = {"localhost", "dummy", kCurKey}; |
| 643 GetCryptographer()->AddKey(current_key); | 646 GetCryptographer()->AddKey(current_key); |
| 644 EXPECT_CALL(*observer(), | 647 EXPECT_CALL(*observer(), |
| 645 OnCryptographerStateChanged(_)); | 648 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 646 EXPECT_CALL(*observer(), | 649 EXPECT_CALL(*observer(), |
| 647 OnEncryptedTypesChanged(_, false)); | 650 OnEncryptedTypesChanged(_, false)); |
| 648 EXPECT_CALL(*observer(), | 651 EXPECT_CALL(*observer(), |
| 649 OnEncryptionComplete()); | 652 OnEncryptionComplete()); |
| 650 encryption_handler()->Init(); | 653 encryption_handler()->Init(); |
| 651 Mock::VerifyAndClearExpectations(observer()); | 654 Mock::VerifyAndClearExpectations(observer()); |
| 652 | 655 |
| 653 EXPECT_CALL(*observer(), | 656 EXPECT_CALL(*observer(), |
| 654 OnEncryptedTypesChanged(_, true)); | 657 OnEncryptedTypesChanged(_, true)); |
| 655 EXPECT_CALL(*observer(), | 658 EXPECT_CALL(*observer(), |
| 656 OnEncryptionComplete()); | 659 OnEncryptionComplete()); |
| 657 encryption_handler()->EnableEncryptEverything(); | 660 encryption_handler()->EnableEncryptEverything(); |
| 658 | 661 |
| 659 { | 662 { |
| 660 ReadTransaction trans(FROM_HERE, user_share()); | 663 ReadTransaction trans(FROM_HERE, user_share()); |
| 661 // Once we provide a keystore key, we should perform the migration. | 664 // Once we provide a keystore key, we should perform the migration. |
| 662 EXPECT_CALL(*observer(), | 665 EXPECT_CALL(*observer(), |
| 666 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 667 EXPECT_CALL(*observer(), |
| 663 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 668 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 664 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 669 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 665 trans.GetWrappedTrans()); | 670 trans.GetWrappedTrans()); |
| 666 } | 671 } |
| 667 EXPECT_CALL(*observer(), | 672 EXPECT_CALL(*observer(), |
| 668 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); | 673 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); |
| 669 // The actual migration gets posted, so run all pending tasks. | 674 // The actual migration gets posted, so run all pending tasks. |
| 670 PumpLoop(); | 675 PumpLoop(); |
| 671 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 676 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 672 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, | 677 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, |
| 673 encryption_handler()->GetPassphraseType()); | 678 encryption_handler()->GetPassphraseType()); |
| 674 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 679 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 675 VerifyMigratedNigori(FROZEN_IMPLICIT_PASSPHRASE, kCurKey); | 680 VerifyMigratedNigori(FROZEN_IMPLICIT_PASSPHRASE, kCurKey); |
| 676 } | 681 } |
| 677 | 682 |
| 678 // Test that we trigger a migration when we set the keystore key, had a | 683 // Test that we trigger a migration when we set the keystore key, had a |
| 679 // custom passphrase, and encrypt everything enabled. The passphrase state | 684 // custom passphrase, and encrypt everything enabled. The passphrase state |
| 680 // should remain as CUSTOM_PASSPHRASE, and encrypt everything stay the same. | 685 // should remain as CUSTOM_PASSPHRASE, and encrypt everything stay the same. |
| 681 TEST_F(SyncEncryptionHandlerImplTest, | 686 TEST_F(SyncEncryptionHandlerImplTest, |
| 682 MigrateOnKeystoreKeyAvailableCustomWithEncryption) { | 687 MigrateOnKeystoreKeyAvailableCustomWithEncryption) { |
| 683 const char kCurKey[] = "cur"; | 688 const char kCurKey[] = "cur"; |
| 684 EXPECT_CALL(*observer(), | 689 EXPECT_CALL(*observer(), |
| 685 OnCryptographerStateChanged(_)).Times(2); | 690 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 686 EXPECT_CALL(*observer(), | 691 EXPECT_CALL(*observer(), |
| 687 OnPassphraseRequired(_, _)); | 692 OnPassphraseRequired(_, _)); |
| 688 EXPECT_CALL(*observer(), | 693 EXPECT_CALL(*observer(), |
| 689 OnPassphraseAccepted()); | 694 OnPassphraseAccepted()); |
| 690 EXPECT_CALL(*observer(), | 695 EXPECT_CALL(*observer(), |
| 691 OnEncryptedTypesChanged(_, false)); | 696 OnEncryptedTypesChanged(_, false)); |
| 692 EXPECT_CALL(*observer(), | 697 EXPECT_CALL(*observer(), |
| 693 OnEncryptionComplete()); | 698 OnEncryptionComplete()); |
| 694 EXPECT_CALL(*observer(), | 699 EXPECT_CALL(*observer(), |
| 695 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 700 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 696 EXPECT_CALL(*observer(), | 701 EXPECT_CALL(*observer(), |
| 697 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 702 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 698 encryption_handler()->Init(); | 703 encryption_handler()->Init(); |
| 699 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); | 704 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); |
| 700 Mock::VerifyAndClearExpectations(observer()); | 705 Mock::VerifyAndClearExpectations(observer()); |
| 701 | 706 |
| 702 EXPECT_CALL(*observer(), | 707 EXPECT_CALL(*observer(), |
| 703 OnEncryptedTypesChanged(_, true)); | 708 OnEncryptedTypesChanged(_, true)); |
| 704 EXPECT_CALL(*observer(), | 709 EXPECT_CALL(*observer(), |
| 705 OnEncryptionComplete()); | 710 OnEncryptionComplete()); |
| 706 encryption_handler()->EnableEncryptEverything(); | 711 encryption_handler()->EnableEncryptEverything(); |
| 707 Mock::VerifyAndClearExpectations(observer()); | 712 Mock::VerifyAndClearExpectations(observer()); |
| 708 | 713 |
| 709 { | 714 { |
| 710 ReadTransaction trans(FROM_HERE, user_share()); | 715 ReadTransaction trans(FROM_HERE, user_share()); |
| 711 // Once we provide a keystore key, we should perform the migration. | 716 // Once we provide a keystore key, we should perform the migration. |
| 712 EXPECT_CALL(*observer(), | 717 EXPECT_CALL(*observer(), |
| 718 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 719 EXPECT_CALL(*observer(), |
| 713 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 720 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 714 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 721 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 715 trans.GetWrappedTrans()); | 722 trans.GetWrappedTrans()); |
| 716 } | 723 } |
| 717 // The actual migration gets posted, so run all pending tasks. | 724 // The actual migration gets posted, so run all pending tasks. |
| 718 PumpLoop(); | 725 PumpLoop(); |
| 719 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 726 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 720 EXPECT_EQ(CUSTOM_PASSPHRASE, | 727 EXPECT_EQ(CUSTOM_PASSPHRASE, |
| 721 encryption_handler()->GetPassphraseType()); | 728 encryption_handler()->GetPassphraseType()); |
| 722 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 729 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 723 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kCurKey); | 730 VerifyMigratedNigori(CUSTOM_PASSPHRASE, kCurKey); |
| 724 } | 731 } |
| 725 | 732 |
| 726 // Test that we trigger a migration when we set the keystore key, had a | 733 // Test that we trigger a migration when we set the keystore key, had a |
| 727 // custom passphrase, and did not have encrypt everything. The passphrase state | 734 // custom passphrase, and did not have encrypt everything. The passphrase state |
| 728 // should remain as CUSTOM_PASSPHRASE, and encrypt everything should be enabled. | 735 // should remain as CUSTOM_PASSPHRASE, and encrypt everything should be enabled. |
| 729 TEST_F(SyncEncryptionHandlerImplTest, | 736 TEST_F(SyncEncryptionHandlerImplTest, |
| 730 MigrateOnKeystoreKeyAvailableCustomNoEncryption) { | 737 MigrateOnKeystoreKeyAvailableCustomNoEncryption) { |
| 731 const char kCurKey[] = "cur"; | 738 const char kCurKey[] = "cur"; |
| 732 EXPECT_CALL(*observer(), | 739 EXPECT_CALL(*observer(), |
| 733 OnCryptographerStateChanged(_)).Times(2); | 740 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 734 EXPECT_CALL(*observer(), | 741 EXPECT_CALL(*observer(), |
| 735 OnPassphraseRequired(_, _)); | 742 OnPassphraseRequired(_, _)); |
| 736 EXPECT_CALL(*observer(), | 743 EXPECT_CALL(*observer(), |
| 737 OnPassphraseAccepted()); | 744 OnPassphraseAccepted()); |
| 738 EXPECT_CALL(*observer(), | 745 EXPECT_CALL(*observer(), |
| 739 OnEncryptedTypesChanged(_, false)); | 746 OnEncryptedTypesChanged(_, false)); |
| 740 EXPECT_CALL(*observer(), | 747 EXPECT_CALL(*observer(), |
| 741 OnEncryptionComplete()); | 748 OnEncryptionComplete()); |
| 742 EXPECT_CALL(*observer(), | 749 EXPECT_CALL(*observer(), |
| 743 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 750 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 744 EXPECT_CALL(*observer(), | 751 EXPECT_CALL(*observer(), |
| 745 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 752 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 746 encryption_handler()->Init(); | 753 encryption_handler()->Init(); |
| 747 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); | 754 encryption_handler()->SetEncryptionPassphrase(kCurKey, true); |
| 748 Mock::VerifyAndClearExpectations(observer()); | 755 Mock::VerifyAndClearExpectations(observer()); |
| 749 | 756 |
| 750 { | 757 { |
| 751 ReadTransaction trans(FROM_HERE, user_share()); | 758 ReadTransaction trans(FROM_HERE, user_share()); |
| 752 // Once we provide a keystore key, we should perform the migration. | 759 // Once we provide a keystore key, we should perform the migration. |
| 753 EXPECT_CALL(*observer(), | 760 EXPECT_CALL(*observer(), |
| 761 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 762 EXPECT_CALL(*observer(), |
| 754 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 763 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 755 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 764 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 756 trans.GetWrappedTrans()); | 765 trans.GetWrappedTrans()); |
| 757 } | 766 } |
| 758 EXPECT_CALL(*observer(), | 767 EXPECT_CALL(*observer(), |
| 759 OnEncryptedTypesChanged(_, true)); | 768 OnEncryptedTypesChanged(_, true)); |
| 760 EXPECT_CALL(*observer(), | 769 EXPECT_CALL(*observer(), |
| 761 OnEncryptionComplete()); | 770 OnEncryptionComplete()); |
| 762 // The actual migration gets posted, so run all pending tasks. | 771 // The actual migration gets posted, so run all pending tasks. |
| 763 PumpLoop(); | 772 PumpLoop(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 nigori.set_keystore_migration_time(1); | 810 nigori.set_keystore_migration_time(1); |
| 802 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 811 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 803 | 812 |
| 804 EXPECT_CALL(*observer(), | 813 EXPECT_CALL(*observer(), |
| 805 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 814 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 806 EXPECT_CALL(*observer(), | 815 EXPECT_CALL(*observer(), |
| 807 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 816 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 808 EXPECT_CALL(*observer(), | 817 EXPECT_CALL(*observer(), |
| 809 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 818 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 810 EXPECT_CALL(*observer(), | 819 EXPECT_CALL(*observer(), |
| 811 OnCryptographerStateChanged(_)).Times(2); | 820 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 812 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 821 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 813 trans.GetWrappedTrans()); | 822 trans.GetWrappedTrans()); |
| 814 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 823 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 815 nigori_node.SetNigoriSpecifics(nigori); | 824 nigori_node.SetNigoriSpecifics(nigori); |
| 816 } | 825 } |
| 817 // Run any tasks posted via AppplyNigoriUpdate. | 826 // Run any tasks posted via AppplyNigoriUpdate. |
| 818 PumpLoop(); | 827 PumpLoop(); |
| 819 Mock::VerifyAndClearExpectations(observer()); | 828 Mock::VerifyAndClearExpectations(observer()); |
| 820 | 829 |
| 821 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 830 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 857 trans.GetWrappedTrans()); | 866 trans.GetWrappedTrans()); |
| 858 } | 867 } |
| 859 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 868 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 860 | 869 |
| 861 { | 870 { |
| 862 EXPECT_CALL(*observer(), | 871 EXPECT_CALL(*observer(), |
| 863 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); | 872 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); |
| 864 EXPECT_CALL(*observer(), | 873 EXPECT_CALL(*observer(), |
| 865 OnPassphraseRequired(_, _)); | 874 OnPassphraseRequired(_, _)); |
| 866 EXPECT_CALL(*observer(), | 875 EXPECT_CALL(*observer(), |
| 867 OnCryptographerStateChanged(_)); | 876 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 868 EXPECT_CALL(*observer(), | 877 EXPECT_CALL(*observer(), |
| 869 OnEncryptedTypesChanged(_, true)); | 878 OnEncryptedTypesChanged(_, true)); |
| 870 WriteTransaction trans(FROM_HERE, user_share()); | 879 WriteTransaction trans(FROM_HERE, user_share()); |
| 871 WriteNode nigori_node(&trans); | 880 WriteNode nigori_node(&trans); |
| 872 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 881 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 873 sync_pb::NigoriSpecifics nigori; | 882 sync_pb::NigoriSpecifics nigori; |
| 874 nigori.set_keybag_is_frozen(true); | 883 nigori.set_keybag_is_frozen(true); |
| 875 nigori.set_passphrase_type( | 884 nigori.set_passphrase_type( |
| 876 sync_pb::NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE); | 885 sync_pb::NigoriSpecifics::FROZEN_IMPLICIT_PASSPHRASE); |
| 877 nigori.set_keystore_migration_time(1); | 886 nigori.set_keystore_migration_time(1); |
| 878 nigori.set_encrypt_everything(true); | 887 nigori.set_encrypt_everything(true); |
| 879 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 888 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 880 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 889 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 881 nigori_node.SetNigoriSpecifics(nigori); | 890 nigori_node.SetNigoriSpecifics(nigori); |
| 882 } | 891 } |
| 883 // Run any tasks posted via AppplyNigoriUpdate. | 892 // Run any tasks posted via AppplyNigoriUpdate. |
| 884 PumpLoop(); | 893 PumpLoop(); |
| 885 Mock::VerifyAndClearExpectations(observer()); | 894 Mock::VerifyAndClearExpectations(observer()); |
| 886 | 895 |
| 887 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 896 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 888 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, | 897 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, |
| 889 encryption_handler()->GetPassphraseType()); | 898 encryption_handler()->GetPassphraseType()); |
| 890 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 899 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 891 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 900 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 892 | 901 |
| 893 EXPECT_CALL(*observer(), | 902 EXPECT_CALL(*observer(), |
| 894 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 903 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 895 EXPECT_CALL(*observer(), | 904 EXPECT_CALL(*observer(), |
| 896 OnCryptographerStateChanged(_)); | 905 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 897 EXPECT_CALL(*observer(), | 906 EXPECT_CALL(*observer(), |
| 898 OnEncryptionComplete()); | 907 OnEncryptionComplete()); |
| 899 EXPECT_CALL(*observer(), | 908 EXPECT_CALL(*observer(), |
| 900 OnPassphraseAccepted()); | 909 OnPassphraseAccepted()); |
| 901 encryption_handler()->SetDecryptionPassphrase(kCurKey); | 910 encryption_handler()->SetDecryptionPassphrase(kCurKey); |
| 902 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 911 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 903 EXPECT_TRUE(GetCryptographer()->is_ready()); | 912 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 904 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); | 913 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); |
| 905 | 914 |
| 906 // Check that the cryptographer still encrypts with the current key. | 915 // Check that the cryptographer still encrypts with the current key. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 936 trans.GetWrappedTrans()); | 945 trans.GetWrappedTrans()); |
| 937 } | 946 } |
| 938 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); | 947 EXPECT_FALSE(encryption_handler()->MigratedToKeystore()); |
| 939 | 948 |
| 940 { | 949 { |
| 941 EXPECT_CALL(*observer(), | 950 EXPECT_CALL(*observer(), |
| 942 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 951 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 943 EXPECT_CALL(*observer(), | 952 EXPECT_CALL(*observer(), |
| 944 OnPassphraseRequired(_, _)); | 953 OnPassphraseRequired(_, _)); |
| 945 EXPECT_CALL(*observer(), | 954 EXPECT_CALL(*observer(), |
| 946 OnCryptographerStateChanged(_)); | 955 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 947 EXPECT_CALL(*observer(), | 956 EXPECT_CALL(*observer(), |
| 948 OnEncryptedTypesChanged(_, true)); | 957 OnEncryptedTypesChanged(_, true)); |
| 949 WriteTransaction trans(FROM_HERE, user_share()); | 958 WriteTransaction trans(FROM_HERE, user_share()); |
| 950 WriteNode nigori_node(&trans); | 959 WriteNode nigori_node(&trans); |
| 951 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 960 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 952 sync_pb::NigoriSpecifics nigori; | 961 sync_pb::NigoriSpecifics nigori; |
| 953 nigori.set_keybag_is_frozen(true); | 962 nigori.set_keybag_is_frozen(true); |
| 954 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); | 963 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); |
| 955 nigori.set_keystore_migration_time(1); | 964 nigori.set_keystore_migration_time(1); |
| 956 nigori.set_encrypt_everything(true); | 965 nigori.set_encrypt_everything(true); |
| 957 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 966 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 958 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 967 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 959 nigori_node.SetNigoriSpecifics(nigori); | 968 nigori_node.SetNigoriSpecifics(nigori); |
| 960 } | 969 } |
| 961 // Run any tasks posted via AppplyNigoriUpdate. | 970 // Run any tasks posted via AppplyNigoriUpdate. |
| 962 PumpLoop(); | 971 PumpLoop(); |
| 963 Mock::VerifyAndClearExpectations(observer()); | 972 Mock::VerifyAndClearExpectations(observer()); |
| 964 | 973 |
| 965 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 974 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 966 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); | 975 EXPECT_EQ(CUSTOM_PASSPHRASE, encryption_handler()->GetPassphraseType()); |
| 967 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 976 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 968 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 977 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 969 | 978 |
| 970 EXPECT_CALL(*observer(), | 979 EXPECT_CALL(*observer(), |
| 971 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 980 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 972 EXPECT_CALL(*observer(), | 981 EXPECT_CALL(*observer(), |
| 973 OnCryptographerStateChanged(_)); | 982 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 974 EXPECT_CALL(*observer(), | 983 EXPECT_CALL(*observer(), |
| 975 OnEncryptionComplete()); | 984 OnEncryptionComplete()); |
| 976 EXPECT_CALL(*observer(), | 985 EXPECT_CALL(*observer(), |
| 977 OnPassphraseAccepted()); | 986 OnPassphraseAccepted()); |
| 978 encryption_handler()->SetDecryptionPassphrase(kCurKey); | 987 encryption_handler()->SetDecryptionPassphrase(kCurKey); |
| 979 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 988 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 980 EXPECT_TRUE(GetCryptographer()->is_ready()); | 989 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 981 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); | 990 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); |
| 982 | 991 |
| 983 // Check that the cryptographer still encrypts with the current key. | 992 // Check that the cryptographer still encrypts with the current key. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1016 nigori.set_keybag_is_frozen(true); | 1025 nigori.set_keybag_is_frozen(true); |
| 1017 nigori.set_keystore_migration_time(1); | 1026 nigori.set_keystore_migration_time(1); |
| 1018 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); | 1027 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); |
| 1019 nigori.set_encrypt_everything(true); | 1028 nigori.set_encrypt_everything(true); |
| 1020 nigori_node.SetNigoriSpecifics(nigori); | 1029 nigori_node.SetNigoriSpecifics(nigori); |
| 1021 } | 1030 } |
| 1022 | 1031 |
| 1023 EXPECT_CALL(*observer(), | 1032 EXPECT_CALL(*observer(), |
| 1024 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1033 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1025 EXPECT_CALL(*observer(), | 1034 EXPECT_CALL(*observer(), |
| 1026 OnCryptographerStateChanged(_)); | 1035 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1027 EXPECT_CALL(*observer(), | 1036 EXPECT_CALL(*observer(), |
| 1028 OnEncryptedTypesChanged(_, true)).Times(2); | 1037 OnEncryptedTypesChanged(_, true)).Times(2); |
| 1029 EXPECT_CALL(*observer(), | 1038 EXPECT_CALL(*observer(), |
| 1030 OnEncryptionComplete()); | 1039 OnEncryptionComplete()); |
| 1031 encryption_handler()->Init(); | 1040 encryption_handler()->Init(); |
| 1032 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1041 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1033 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1042 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1034 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); | 1043 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); |
| 1035 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 1044 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 1036 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); | 1045 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); |
| 1037 | 1046 |
| 1038 { | 1047 { |
| 1039 EXPECT_CALL(*observer(), | 1048 EXPECT_CALL(*observer(), |
| 1040 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1049 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1041 ReadTransaction trans(FROM_HERE, user_share()); | 1050 ReadTransaction trans(FROM_HERE, user_share()); |
| 1042 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 1051 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 1043 trans.GetWrappedTrans()); | 1052 trans.GetWrappedTrans()); |
| 1044 } | 1053 } |
| 1045 Mock::VerifyAndClearExpectations(observer()); | 1054 Mock::VerifyAndClearExpectations(observer()); |
| 1046 | 1055 |
| 1047 // Now build an old unmigrated nigori node with old encrypted types. We should | 1056 // Now build an old unmigrated nigori node with old encrypted types. We should |
| 1048 // properly overwrite it with the migrated + encrypt everything state. | 1057 // properly overwrite it with the migrated + encrypt everything state. |
| 1049 EXPECT_CALL(*observer(), | 1058 EXPECT_CALL(*observer(), |
| 1050 OnCryptographerStateChanged(_)); | 1059 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1051 { | 1060 { |
| 1052 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1061 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1053 other_cryptographer.AddKey(old_key); | 1062 other_cryptographer.AddKey(old_key); |
| 1054 WriteTransaction trans(FROM_HERE, user_share()); | 1063 WriteTransaction trans(FROM_HERE, user_share()); |
| 1055 WriteNode nigori_node(&trans); | 1064 WriteNode nigori_node(&trans); |
| 1056 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 1065 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 1057 sync_pb::NigoriSpecifics nigori; | 1066 sync_pb::NigoriSpecifics nigori; |
| 1058 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 1067 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 1059 nigori.set_keybag_is_frozen(false); | 1068 nigori.set_keybag_is_frozen(false); |
| 1060 nigori.set_encrypt_everything(false); | 1069 nigori.set_encrypt_everything(false); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1094 nigori.set_keybag_is_frozen(true); | 1103 nigori.set_keybag_is_frozen(true); |
| 1095 nigori.set_keystore_migration_time(1); | 1104 nigori.set_keystore_migration_time(1); |
| 1096 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); | 1105 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::CUSTOM_PASSPHRASE); |
| 1097 nigori.set_encrypt_everything(true); | 1106 nigori.set_encrypt_everything(true); |
| 1098 nigori_node.SetNigoriSpecifics(nigori); | 1107 nigori_node.SetNigoriSpecifics(nigori); |
| 1099 } | 1108 } |
| 1100 | 1109 |
| 1101 EXPECT_CALL(*observer(), | 1110 EXPECT_CALL(*observer(), |
| 1102 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1111 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1103 EXPECT_CALL(*observer(), | 1112 EXPECT_CALL(*observer(), |
| 1104 OnCryptographerStateChanged(_)); | 1113 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1105 EXPECT_CALL(*observer(), | 1114 EXPECT_CALL(*observer(), |
| 1106 OnEncryptedTypesChanged(_, true)).Times(2); | 1115 OnEncryptedTypesChanged(_, true)).Times(2); |
| 1107 EXPECT_CALL(*observer(), | 1116 EXPECT_CALL(*observer(), |
| 1108 OnEncryptionComplete()); | 1117 OnEncryptionComplete()); |
| 1109 encryption_handler()->Init(); | 1118 encryption_handler()->Init(); |
| 1110 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1119 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1111 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1120 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1112 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); | 1121 EXPECT_EQ(encryption_handler()->GetPassphraseType(), CUSTOM_PASSPHRASE); |
| 1113 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 1122 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 1114 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); | 1123 VerifyMigratedNigoriWithTimestamp(1, CUSTOM_PASSPHRASE, kCurKey); |
| 1115 | 1124 |
| 1116 { | 1125 { |
| 1117 EXPECT_CALL(*observer(), | 1126 EXPECT_CALL(*observer(), |
| 1118 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1127 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1119 ReadTransaction trans(FROM_HERE, user_share()); | 1128 ReadTransaction trans(FROM_HERE, user_share()); |
| 1120 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 1129 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 1121 trans.GetWrappedTrans()); | 1130 trans.GetWrappedTrans()); |
| 1122 } | 1131 } |
| 1123 Mock::VerifyAndClearExpectations(observer()); | 1132 Mock::VerifyAndClearExpectations(observer()); |
| 1124 | 1133 |
| 1125 // Now build an old keystore nigori node with old encrypted types. We should | 1134 // Now build an old keystore nigori node with old encrypted types. We should |
| 1126 // properly overwrite it with the migrated + encrypt everything state. | 1135 // properly overwrite it with the migrated + encrypt everything state. |
| 1127 EXPECT_CALL(*observer(), | 1136 EXPECT_CALL(*observer(), |
| 1128 OnCryptographerStateChanged(_)); | 1137 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1129 { | 1138 { |
| 1130 WriteTransaction trans(FROM_HERE, user_share()); | 1139 WriteTransaction trans(FROM_HERE, user_share()); |
| 1131 WriteNode nigori_node(&trans); | 1140 WriteNode nigori_node(&trans); |
| 1132 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 1141 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 1133 sync_pb::NigoriSpecifics nigori; | 1142 sync_pb::NigoriSpecifics nigori; |
| 1134 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1143 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1135 other_cryptographer.AddKey(old_key); | 1144 other_cryptographer.AddKey(old_key); |
| 1136 encryption_handler()->GetKeystoreDecryptor( | 1145 encryption_handler()->GetKeystoreDecryptor( |
| 1137 other_cryptographer, | 1146 other_cryptographer, |
| 1138 kKeystoreKey, | 1147 kKeystoreKey, |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1183 nigori.mutable_keystore_decryptor_token()->CopyFrom( | 1192 nigori.mutable_keystore_decryptor_token()->CopyFrom( |
| 1184 keystore_decryptor_token); | 1193 keystore_decryptor_token); |
| 1185 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); | 1194 other_cryptographer.GetKeys(nigori.mutable_encryption_keybag()); |
| 1186 nigori.set_keybag_is_frozen(true); | 1195 nigori.set_keybag_is_frozen(true); |
| 1187 nigori.set_keystore_migration_time(1); | 1196 nigori.set_keystore_migration_time(1); |
| 1188 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1197 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1189 | 1198 |
| 1190 EXPECT_CALL(*observer(), | 1199 EXPECT_CALL(*observer(), |
| 1191 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1200 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1192 EXPECT_CALL(*observer(), | 1201 EXPECT_CALL(*observer(), |
| 1193 OnCryptographerStateChanged(_)); | 1202 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1194 EXPECT_CALL(*observer(), | 1203 EXPECT_CALL(*observer(), |
| 1195 OnPassphraseRequired(_, _)); | 1204 OnPassphraseRequired(_, _)); |
| 1196 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); | 1205 encryption_handler()->ApplyNigoriUpdate(nigori, trans.GetWrappedTrans()); |
| 1197 nigori_node.SetNigoriSpecifics(nigori); | 1206 nigori_node.SetNigoriSpecifics(nigori); |
| 1198 } | 1207 } |
| 1199 // Run any tasks posted via AppplyNigoriUpdate. | 1208 // Run any tasks posted via AppplyNigoriUpdate. |
| 1200 PumpLoop(); | 1209 PumpLoop(); |
| 1201 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1210 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1202 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1211 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1203 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1212 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1204 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1213 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1205 Mock::VerifyAndClearExpectations(observer()); | 1214 Mock::VerifyAndClearExpectations(observer()); |
| 1206 | 1215 |
| 1207 EXPECT_CALL(*observer(), | 1216 EXPECT_CALL(*observer(), |
| 1208 OnCryptographerStateChanged(_)); | 1217 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1209 EXPECT_CALL(*observer(), | 1218 EXPECT_CALL(*observer(), |
| 1210 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1219 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1211 { | 1220 { |
| 1212 EXPECT_CALL(*observer(), | 1221 EXPECT_CALL(*observer(), |
| 1213 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1222 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1214 ReadTransaction trans(FROM_HERE, user_share()); | 1223 ReadTransaction trans(FROM_HERE, user_share()); |
| 1215 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 1224 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 1216 trans.GetWrappedTrans()); | 1225 trans.GetWrappedTrans()); |
| 1217 } | 1226 } |
| 1218 PumpLoop(); | 1227 PumpLoop(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1268 nigori_node.SetNigoriSpecifics(nigori); | 1277 nigori_node.SetNigoriSpecifics(nigori); |
| 1269 EXPECT_CALL(*observer(), | 1278 EXPECT_CALL(*observer(), |
| 1270 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1279 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1271 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 1280 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 1272 trans.GetWrappedTrans()); | 1281 trans.GetWrappedTrans()); |
| 1273 } | 1282 } |
| 1274 | 1283 |
| 1275 EXPECT_CALL(*observer(), | 1284 EXPECT_CALL(*observer(), |
| 1276 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1285 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1277 EXPECT_CALL(*observer(), | 1286 EXPECT_CALL(*observer(), |
| 1278 OnCryptographerStateChanged(_)).Times(2); | 1287 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1279 EXPECT_CALL(*observer(), | 1288 EXPECT_CALL(*observer(), |
| 1280 OnEncryptedTypesChanged(_, false)); | 1289 OnEncryptedTypesChanged(_, false)); |
| 1281 EXPECT_CALL(*observer(), | 1290 EXPECT_CALL(*observer(), |
| 1282 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1291 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1283 EXPECT_CALL(*observer(), | 1292 EXPECT_CALL(*observer(), |
| 1284 OnEncryptionComplete()); | 1293 OnEncryptionComplete()); |
| 1285 encryption_handler()->Init(); | 1294 encryption_handler()->Init(); |
| 1286 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1295 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1287 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1296 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1288 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1297 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1289 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1298 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1290 Mock::VerifyAndClearExpectations(observer()); | 1299 Mock::VerifyAndClearExpectations(observer()); |
| 1291 | 1300 |
| 1292 const char kNewKey[] = "new_key"; | 1301 const char kNewKey[] = "new_key"; |
| 1293 EXPECT_CALL(*observer(), | 1302 EXPECT_CALL(*observer(), |
| 1294 OnCryptographerStateChanged(_)); | 1303 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1295 EXPECT_CALL(*observer(), | 1304 EXPECT_CALL(*observer(), |
| 1296 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1305 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1297 EXPECT_CALL(*observer(), | 1306 EXPECT_CALL(*observer(), |
| 1298 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1307 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1299 EXPECT_CALL(*observer(), | 1308 EXPECT_CALL(*observer(), |
| 1300 OnPassphraseAccepted()); | 1309 OnPassphraseAccepted()); |
| 1301 EXPECT_CALL(*observer(), | 1310 EXPECT_CALL(*observer(), |
| 1302 OnEncryptedTypesChanged(_, true)); | 1311 OnEncryptedTypesChanged(_, true)); |
| 1303 EXPECT_CALL(*observer(), | 1312 EXPECT_CALL(*observer(), |
| 1304 OnEncryptionComplete()).Times(2); | 1313 OnEncryptionComplete()).Times(2); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1365 nigori.set_keystore_migration_time(1); | 1374 nigori.set_keystore_migration_time(1); |
| 1366 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1375 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1367 nigori_node.SetNigoriSpecifics(nigori); | 1376 nigori_node.SetNigoriSpecifics(nigori); |
| 1368 } | 1377 } |
| 1369 | 1378 |
| 1370 EXPECT_CALL(*observer(), | 1379 EXPECT_CALL(*observer(), |
| 1371 OnPassphraseRequired(_, _)); | 1380 OnPassphraseRequired(_, _)); |
| 1372 EXPECT_CALL(*observer(), | 1381 EXPECT_CALL(*observer(), |
| 1373 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1382 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1374 EXPECT_CALL(*observer(), | 1383 EXPECT_CALL(*observer(), |
| 1375 OnCryptographerStateChanged(_)); | 1384 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1376 EXPECT_CALL(*observer(), | 1385 EXPECT_CALL(*observer(), |
| 1377 OnEncryptedTypesChanged(_, false)); | 1386 OnEncryptedTypesChanged(_, false)); |
| 1378 encryption_handler()->Init(); | 1387 encryption_handler()->Init(); |
| 1379 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1388 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1380 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1389 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1381 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1390 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1382 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1391 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1383 Mock::VerifyAndClearExpectations(observer()); | 1392 Mock::VerifyAndClearExpectations(observer()); |
| 1384 | 1393 |
| 1385 EXPECT_CALL(*observer(), | 1394 EXPECT_CALL(*observer(), |
| 1386 OnPassphraseAccepted()); | 1395 OnPassphraseAccepted()); |
| 1387 EXPECT_CALL(*observer(), | 1396 EXPECT_CALL(*observer(), |
| 1388 OnCryptographerStateChanged(_)); | 1397 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1389 EXPECT_CALL(*observer(), | 1398 EXPECT_CALL(*observer(), |
| 1390 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1399 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1391 EXPECT_CALL(*observer(), | 1400 EXPECT_CALL(*observer(), |
| 1392 OnEncryptionComplete()); | 1401 OnEncryptionComplete()); |
| 1393 encryption_handler()->SetDecryptionPassphrase(kOldKey); | 1402 encryption_handler()->SetDecryptionPassphrase(kOldKey); |
| 1394 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1403 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1395 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1404 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1396 Mock::VerifyAndClearExpectations(observer()); | 1405 Mock::VerifyAndClearExpectations(observer()); |
| 1397 | 1406 |
| 1398 const char kNewKey[] = "new_key"; | 1407 const char kNewKey[] = "new_key"; |
| 1399 EXPECT_CALL(*observer(), | 1408 EXPECT_CALL(*observer(), |
| 1400 OnCryptographerStateChanged(_)); | 1409 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1401 EXPECT_CALL(*observer(), | 1410 EXPECT_CALL(*observer(), |
| 1402 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); | 1411 OnPassphraseTypeChanged(CUSTOM_PASSPHRASE)); |
| 1403 EXPECT_CALL(*observer(), | 1412 EXPECT_CALL(*observer(), |
| 1404 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1413 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1405 EXPECT_CALL(*observer(), | 1414 EXPECT_CALL(*observer(), |
| 1406 OnPassphraseAccepted()); | 1415 OnPassphraseAccepted()); |
| 1407 EXPECT_CALL(*observer(), | 1416 EXPECT_CALL(*observer(), |
| 1408 OnEncryptedTypesChanged(_, true)); | 1417 OnEncryptedTypesChanged(_, true)); |
| 1409 EXPECT_CALL(*observer(), | 1418 EXPECT_CALL(*observer(), |
| 1410 OnEncryptionComplete()).Times(2); | 1419 OnEncryptionComplete()).Times(2); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1471 nigori.set_keystore_migration_time(1); | 1480 nigori.set_keystore_migration_time(1); |
| 1472 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1481 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1473 nigori_node.SetNigoriSpecifics(nigori); | 1482 nigori_node.SetNigoriSpecifics(nigori); |
| 1474 } | 1483 } |
| 1475 | 1484 |
| 1476 EXPECT_CALL(*observer(), | 1485 EXPECT_CALL(*observer(), |
| 1477 OnPassphraseRequired(_, _)); | 1486 OnPassphraseRequired(_, _)); |
| 1478 EXPECT_CALL(*observer(), | 1487 EXPECT_CALL(*observer(), |
| 1479 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1488 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1480 EXPECT_CALL(*observer(), | 1489 EXPECT_CALL(*observer(), |
| 1481 OnCryptographerStateChanged(_)); | 1490 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1482 EXPECT_CALL(*observer(), | 1491 EXPECT_CALL(*observer(), |
| 1483 OnEncryptedTypesChanged(_, false)); | 1492 OnEncryptedTypesChanged(_, false)); |
| 1484 encryption_handler()->Init(); | 1493 encryption_handler()->Init(); |
| 1485 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1494 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1486 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1495 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1487 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1496 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1488 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1497 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1489 Mock::VerifyAndClearExpectations(observer()); | 1498 Mock::VerifyAndClearExpectations(observer()); |
| 1490 | 1499 |
| 1491 EXPECT_CALL(*observer(), | 1500 EXPECT_CALL(*observer(), |
| 1492 OnPassphraseAccepted()); | 1501 OnPassphraseAccepted()); |
| 1493 EXPECT_CALL(*observer(), | 1502 EXPECT_CALL(*observer(), |
| 1494 OnCryptographerStateChanged(_)); | 1503 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1495 EXPECT_CALL(*observer(), | 1504 EXPECT_CALL(*observer(), |
| 1496 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1505 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1497 EXPECT_CALL(*observer(), | 1506 EXPECT_CALL(*observer(), |
| 1498 OnEncryptionComplete()); | 1507 OnEncryptionComplete()); |
| 1499 encryption_handler()->SetDecryptionPassphrase(kOldKey); | 1508 encryption_handler()->SetDecryptionPassphrase(kOldKey); |
| 1500 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1509 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1501 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1510 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1502 Mock::VerifyAndClearExpectations(observer()); | 1511 Mock::VerifyAndClearExpectations(observer()); |
| 1503 | 1512 |
| 1504 // Should get dropped on the floor silently. | 1513 // Should get dropped on the floor silently. |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1565 nigori.set_keybag_is_frozen(true); | 1574 nigori.set_keybag_is_frozen(true); |
| 1566 nigori.set_keystore_migration_time(1); | 1575 nigori.set_keystore_migration_time(1); |
| 1567 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); | 1576 nigori.set_passphrase_type(sync_pb::NigoriSpecifics::KEYSTORE_PASSPHRASE); |
| 1568 nigori_node.SetNigoriSpecifics(nigori); | 1577 nigori_node.SetNigoriSpecifics(nigori); |
| 1569 } | 1578 } |
| 1570 EXPECT_CALL(*observer(), | 1579 EXPECT_CALL(*observer(), |
| 1571 OnPassphraseRequired(_, _)); | 1580 OnPassphraseRequired(_, _)); |
| 1572 EXPECT_CALL(*observer(), | 1581 EXPECT_CALL(*observer(), |
| 1573 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1582 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1574 EXPECT_CALL(*observer(), | 1583 EXPECT_CALL(*observer(), |
| 1575 OnCryptographerStateChanged(_)); | 1584 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1576 EXPECT_CALL(*observer(), | 1585 EXPECT_CALL(*observer(), |
| 1577 OnEncryptedTypesChanged(_, false)); | 1586 OnEncryptedTypesChanged(_, false)); |
| 1578 encryption_handler()->Init(); | 1587 encryption_handler()->Init(); |
| 1579 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1588 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1580 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); | 1589 EXPECT_TRUE(GetCryptographer()->has_pending_keys()); |
| 1581 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1590 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1582 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1591 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1583 Mock::VerifyAndClearExpectations(observer()); | 1592 Mock::VerifyAndClearExpectations(observer()); |
| 1584 | 1593 |
| 1585 EXPECT_CALL(*observer(), | 1594 EXPECT_CALL(*observer(), |
| 1586 OnPassphraseAccepted()); | 1595 OnPassphraseAccepted()); |
| 1587 EXPECT_CALL(*observer(), | 1596 EXPECT_CALL(*observer(), |
| 1588 OnCryptographerStateChanged(_)); | 1597 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1589 EXPECT_CALL(*observer(), | 1598 EXPECT_CALL(*observer(), |
| 1590 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 1599 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
| 1591 EXPECT_CALL(*observer(), | 1600 EXPECT_CALL(*observer(), |
| 1592 OnEncryptionComplete()); | 1601 OnEncryptionComplete()); |
| 1593 encryption_handler()->SetDecryptionPassphrase(kCurKey); | 1602 encryption_handler()->SetDecryptionPassphrase(kCurKey); |
| 1594 Mock::VerifyAndClearExpectations(observer()); | 1603 Mock::VerifyAndClearExpectations(observer()); |
| 1595 | 1604 |
| 1596 EXPECT_CALL(*observer(), | 1605 EXPECT_CALL(*observer(), |
| 1597 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); | 1606 OnPassphraseTypeChanged(FROZEN_IMPLICIT_PASSPHRASE)); |
| 1598 EXPECT_CALL(*observer(), | 1607 EXPECT_CALL(*observer(), |
| 1599 OnEncryptionComplete()); | 1608 OnEncryptionComplete()); |
| 1600 EXPECT_CALL(*observer(), | 1609 EXPECT_CALL(*observer(), |
| 1601 OnEncryptedTypesChanged(_, true)); | 1610 OnEncryptedTypesChanged(_, true)); |
| 1611 EXPECT_CALL(*observer(), |
| 1612 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1602 encryption_handler()->EnableEncryptEverything(); | 1613 encryption_handler()->EnableEncryptEverything(); |
| 1603 Mock::VerifyAndClearExpectations(observer()); | 1614 Mock::VerifyAndClearExpectations(observer()); |
| 1604 | 1615 |
| 1605 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1616 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1606 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1617 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1607 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, | 1618 EXPECT_EQ(FROZEN_IMPLICIT_PASSPHRASE, |
| 1608 encryption_handler()->GetPassphraseType()); | 1619 encryption_handler()->GetPassphraseType()); |
| 1609 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); | 1620 EXPECT_TRUE(encryption_handler()->EncryptEverythingEnabled()); |
| 1610 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); | 1621 VerifyMigratedNigoriWithTimestamp(1, FROZEN_IMPLICIT_PASSPHRASE, kCurKey); |
| 1611 | 1622 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1635 KeyParams cur_key = {"localhost", "dummy", kCurKey}; | 1646 KeyParams cur_key = {"localhost", "dummy", kCurKey}; |
| 1636 KeyParams keystore_key = {"localhost", "dummy", kKeystoreKey}; | 1647 KeyParams keystore_key = {"localhost", "dummy", kKeystoreKey}; |
| 1637 GetCryptographer()->AddKey(old_key); | 1648 GetCryptographer()->AddKey(old_key); |
| 1638 GetCryptographer()->AddKey(cur_key); | 1649 GetCryptographer()->AddKey(cur_key); |
| 1639 | 1650 |
| 1640 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1651 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1641 other_cryptographer.AddKey(old_key); | 1652 other_cryptographer.AddKey(old_key); |
| 1642 EXPECT_TRUE(other_cryptographer.is_ready()); | 1653 EXPECT_TRUE(other_cryptographer.is_ready()); |
| 1643 | 1654 |
| 1644 EXPECT_CALL(*observer(), | 1655 EXPECT_CALL(*observer(), |
| 1645 OnCryptographerStateChanged(_)); | 1656 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1646 EXPECT_CALL(*observer(), | 1657 EXPECT_CALL(*observer(), |
| 1647 OnEncryptedTypesChanged(_, false)); | 1658 OnEncryptedTypesChanged(_, false)); |
| 1648 EXPECT_CALL(*observer(), | 1659 EXPECT_CALL(*observer(), |
| 1649 OnEncryptionComplete()); | 1660 OnEncryptionComplete()); |
| 1650 encryption_handler()->Init(); | 1661 encryption_handler()->Init(); |
| 1651 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1662 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1652 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1663 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1653 | 1664 |
| 1654 { | 1665 { |
| 1655 EXPECT_CALL(*observer(), | 1666 EXPECT_CALL(*observer(), |
| 1656 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); | 1667 OnBootstrapTokenUpdated(_, KEYSTORE_BOOTSTRAP_TOKEN)); |
| 1657 ReadTransaction trans(FROM_HERE, user_share()); | 1668 ReadTransaction trans(FROM_HERE, user_share()); |
| 1658 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, | 1669 encryption_handler()->SetKeystoreKey(kRawKeystoreKey, |
| 1659 trans.GetWrappedTrans()); | 1670 trans.GetWrappedTrans()); |
| 1660 } | 1671 } |
| 1661 EXPECT_CALL(*observer(), | 1672 EXPECT_CALL(*observer(), |
| 1662 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); | 1673 OnPassphraseTypeChanged(KEYSTORE_PASSPHRASE)); |
| 1663 PumpLoop(); | 1674 PumpLoop(); |
| 1664 Mock::VerifyAndClearExpectations(observer()); | 1675 Mock::VerifyAndClearExpectations(observer()); |
| 1665 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1676 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1666 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1677 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1667 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); | 1678 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); |
| 1668 | 1679 |
| 1669 // Now build an old keystore passphrase nigori node. | 1680 // Now build an old keystore passphrase nigori node. |
| 1670 EXPECT_CALL(*observer(), | 1681 EXPECT_CALL(*observer(), |
| 1671 OnCryptographerStateChanged(_)); | 1682 OnCryptographerStateChanged(_)).Times(AnyNumber()); |
| 1672 { | 1683 { |
| 1673 WriteTransaction trans(FROM_HERE, user_share()); | 1684 WriteTransaction trans(FROM_HERE, user_share()); |
| 1674 WriteNode nigori_node(&trans); | 1685 WriteNode nigori_node(&trans); |
| 1675 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); | 1686 ASSERT_EQ(nigori_node.InitByTagLookup(kNigoriTag), BaseNode::INIT_OK); |
| 1676 sync_pb::NigoriSpecifics nigori; | 1687 sync_pb::NigoriSpecifics nigori; |
| 1677 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); | 1688 Cryptographer other_cryptographer(GetCryptographer()->encryptor()); |
| 1678 other_cryptographer.AddKey(old_key); | 1689 other_cryptographer.AddKey(old_key); |
| 1679 encryption_handler()->GetKeystoreDecryptor( | 1690 encryption_handler()->GetKeystoreDecryptor( |
| 1680 other_cryptographer, | 1691 other_cryptographer, |
| 1681 kKeystoreKey, | 1692 kKeystoreKey, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1692 | 1703 |
| 1693 // Verify we're still migrated and have proper encryption state. | 1704 // Verify we're still migrated and have proper encryption state. |
| 1694 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); | 1705 EXPECT_TRUE(encryption_handler()->MigratedToKeystore()); |
| 1695 EXPECT_TRUE(GetCryptographer()->is_ready()); | 1706 EXPECT_TRUE(GetCryptographer()->is_ready()); |
| 1696 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); | 1707 EXPECT_EQ(encryption_handler()->GetPassphraseType(), KEYSTORE_PASSPHRASE); |
| 1697 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); | 1708 EXPECT_FALSE(encryption_handler()->EncryptEverythingEnabled()); |
| 1698 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); | 1709 VerifyMigratedNigori(KEYSTORE_PASSPHRASE, kCurKey); |
| 1699 } | 1710 } |
| 1700 | 1711 |
| 1701 } // namespace syncer | 1712 } // namespace syncer |
| OLD | NEW |