keystore_keys_cryptographer_unittest.cc 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/sync/nigori/keystore_keys_cryptographer.h"
  5. #include "components/sync/engine/nigori/key_derivation_params.h"
  6. #include "components/sync/engine/nigori/nigori.h"
  7. #include "components/sync/nigori/cryptographer_impl.h"
  8. #include "testing/gmock/include/gmock/gmock.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. namespace syncer {
  11. namespace {
  12. using testing::Eq;
  13. using testing::NotNull;
  14. std::string ComputeKeystoreKeyName(const std::string& keystore_key) {
  15. std::string key_name;
  16. Nigori::CreateByDerivation(KeyDerivationParams::CreateForPbkdf2(),
  17. keystore_key)
  18. ->Permute(Nigori::Password, kNigoriKeyName, &key_name);
  19. return key_name;
  20. }
  21. TEST(KeystoreKeysCryptographerTest, ShouldCreateEmpty) {
  22. std::unique_ptr<KeystoreKeysCryptographer> keystore_keys_cryptographer =
  23. KeystoreKeysCryptographer::CreateEmpty();
  24. EXPECT_TRUE(keystore_keys_cryptographer->IsEmpty());
  25. EXPECT_TRUE(keystore_keys_cryptographer->keystore_keys().empty());
  26. EXPECT_TRUE(keystore_keys_cryptographer->GetLastKeystoreKeyName().empty());
  27. std::unique_ptr<CryptographerImpl> underlying_cryptographer =
  28. keystore_keys_cryptographer->ToCryptographerImpl();
  29. ASSERT_THAT(underlying_cryptographer, NotNull());
  30. EXPECT_FALSE(underlying_cryptographer->CanEncrypt());
  31. }
  32. TEST(KeystoreKeysCryptographerTest, ShouldCreateNonEmpty) {
  33. const std::vector<std::string> kKeystoreKeys = {"key1", "key2"};
  34. const std::string keystore_key_name1 =
  35. ComputeKeystoreKeyName(kKeystoreKeys[0]);
  36. const std::string keystore_key_name2 =
  37. ComputeKeystoreKeyName(kKeystoreKeys[1]);
  38. std::unique_ptr<KeystoreKeysCryptographer> keystore_keys_cryptographer =
  39. KeystoreKeysCryptographer::FromKeystoreKeys(kKeystoreKeys);
  40. EXPECT_FALSE(keystore_keys_cryptographer->IsEmpty());
  41. EXPECT_THAT(keystore_keys_cryptographer->keystore_keys(), Eq(kKeystoreKeys));
  42. EXPECT_THAT(keystore_keys_cryptographer->GetLastKeystoreKeyName(),
  43. Eq(keystore_key_name2));
  44. std::unique_ptr<CryptographerImpl> underlying_cryptographer =
  45. keystore_keys_cryptographer->ToCryptographerImpl();
  46. ASSERT_THAT(underlying_cryptographer, NotNull());
  47. EXPECT_TRUE(underlying_cryptographer->CanEncrypt());
  48. EXPECT_TRUE(underlying_cryptographer->HasKey(keystore_key_name1));
  49. EXPECT_THAT(underlying_cryptographer->GetDefaultEncryptionKeyName(),
  50. Eq(keystore_key_name2));
  51. }
  52. } // namespace
  53. } // namespace syncer