From 7667420e2b9865133e0167e14b7ec77f30814b13 Mon Sep 17 00:00:00 2001 From: Anay Wadhera Date: Thu, 12 Jan 2023 11:34:43 -0800 Subject: [PATCH] Use CredentialSelector for GenerateCredentials() PiperOrigin-RevId: 501622339 --- presence/implementation/credential_manager.h | 3 +-- .../implementation/credential_manager_impl.cc | 14 +++++++---- .../implementation/credential_manager_impl.h | 3 +-- .../credential_manager_impl_test.cc | 25 ++++++++++++++++--- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/presence/implementation/credential_manager.h b/presence/implementation/credential_manager.h index 676eff12..0d12318b 100644 --- a/presence/implementation/credential_manager.h +++ b/presence/implementation/credential_manager.h @@ -45,8 +45,7 @@ class CredentialManager { // storage. virtual void GenerateCredentials( const nearby::internal::DeviceMetadata& device_metadata, - absl::string_view manager_app_id, - const std::vector& identity_types, + const std::vector& credential_selectors, int credential_life_cycle_days, int contiguous_copy_of_credentials, GenerateCredentialsCallback credentials_generated_cb) = 0; diff --git a/presence/implementation/credential_manager_impl.cc b/presence/implementation/credential_manager_impl.cc index f06465cb..ec2c05ef 100644 --- a/presence/implementation/credential_manager_impl.cc +++ b/presence/implementation/credential_manager_impl.cc @@ -55,14 +55,14 @@ constexpr absl::Duration kTimeout = absl::Seconds(3); } // namespace void CredentialManagerImpl::GenerateCredentials( - const DeviceMetadata& device_metadata, absl::string_view manager_app_id, - const std::vector& identity_types, + const DeviceMetadata& device_metadata, + const std::vector& credential_selectors, int credential_life_cycle_days, int contiguous_copy_of_credentials, GenerateCredentialsCallback credentials_generated_cb) { std::vector public_credentials; std::vector private_credentials; - for (auto identity_type : identity_types) { + for (const auto& credential_selector : credential_selectors) { // TODO(b/241587906): Get linux time from the platform (like Android) uint64_t start_time_millis = 0; const uint64_t gap_millis = credential_life_cycle_days * 24 * 3600 * 1000; @@ -70,7 +70,8 @@ void CredentialManagerImpl::GenerateCredentials( for (int index = 0; index < contiguous_copy_of_credentials; index++) { auto public_private_credentials = CreatePrivateCredential( - device_metadata, identity_type, start_time_millis, end_time_millis); + device_metadata, credential_selector.identity_type, start_time_millis, + end_time_millis); if (public_private_credentials.second.identity_type() != IdentityType::IDENTITY_TYPE_UNSPECIFIED) { private_credentials.push_back(public_private_credentials.first); @@ -82,8 +83,11 @@ void CredentialManagerImpl::GenerateCredentials( } // Create credential_storage object and invoke SaveCredentials. + // Assume that all credential selectors are for the same manager app and + // account name credential_storage_ptr_->SaveCredentials( - manager_app_id, device_metadata.account_name(), private_credentials, + credential_selectors[0].manager_app_id, + credential_selectors[0].account_name, private_credentials, public_credentials, PublicCredentialType::kLocalPublicCredential, SaveCredentialsResultCallback{ .credentials_saved_cb = diff --git a/presence/implementation/credential_manager_impl.h b/presence/implementation/credential_manager_impl.h index 1dd52ba3..dc31a66f 100644 --- a/presence/implementation/credential_manager_impl.h +++ b/presence/implementation/credential_manager_impl.h @@ -53,8 +53,7 @@ class CredentialManagerImpl : public CredentialManager { void GenerateCredentials( const nearby::internal::DeviceMetadata& device_metadata, - absl::string_view manager_app_id, - const std::vector& identity_types, + const std::vector& credential_selectors, int credential_life_cycle_days, int contiguous_copy_of_credentials, GenerateCredentialsCallback credentials_generated_cb) override; diff --git a/presence/implementation/credential_manager_impl_test.cc b/presence/implementation/credential_manager_impl_test.cc index 167f8377..df52c4ac 100644 --- a/presence/implementation/credential_manager_impl_test.cc +++ b/presence/implementation/credential_manager_impl_test.cc @@ -61,6 +61,21 @@ CredentialSelector BuildDefaultCredentialSelector() { return credential_selector; } +std::vector BuildCredentialSelectors( + absl::string_view manager_app_id, + std::vector& identity_types) { + std::vector selectors; + for (auto& identity_type : identity_types) { + CredentialSelector credential_selector{ + .manager_app_id = std::string(manager_app_id), + .account_name = "test_account", + .identity_type = identity_type, + }; + selectors.push_back(credential_selector); + } + return selectors; +} + class CredentialManagerImplTest : public ::testing::Test { public: class MockCredentialStorage : public nearby::CredentialStorageImpl { @@ -171,7 +186,7 @@ TEST(CredentialManagerImpl, GenerateCredentialsSuccessfully) { credential_manager.GenerateCredentials( device_metadata, - /* manager_app_id= */ "TEST_MANAGER_APP", identityTypes, 1, 2, + BuildCredentialSelectors("TEST_MANAGER_APP", identityTypes), 1, 2, std::move(credentials_generated_cb)); EXPECT_EQ(publicCredentials.size(), 2); @@ -213,7 +228,7 @@ TEST(CredentialManagerImpl, GenerateCredentialsSuccessfullyButStoreFailed) { credential_manager.GenerateCredentials( device_metadata, - /* manager_app_id= */ "TEST_MANAGER_APP", identityTypes, 1, 2, + BuildCredentialSelectors("TEST_MANAGER_APP", identityTypes), 1, 2, std::move(credentials_generated_cb)); EXPECT_TRUE(publicCredentials.empty()); } @@ -323,7 +338,8 @@ TEST(CredentialManagerImpl, GetCredentialsSuccessfully) { CredentialManagerImpl credential_manager; std::vector identity_types{IDENTITY_TYPE_PRIVATE}; credential_manager.GenerateCredentials( - device_metadata, "TEST_MANAGER_APP", identity_types, 1, 1, + device_metadata, + BuildCredentialSelectors("TEST_MANAGER_APP", identity_types), 1, 1, std::move(generate_credentials_callback)); EXPECT_EQ(publicCredentials.size(), 1); @@ -373,7 +389,8 @@ TEST(CredentialManagerImpl, PublicCredentialsFailEncryption) { std::vector identity_types{IDENTITY_TYPE_PRIVATE}; credential_manager_ptr->GenerateCredentials( - device_metadata, "TEST_MANAGER_APP", identity_types, 1, 1, + device_metadata, + BuildCredentialSelectors("TEST_MANAGER_APP", identity_types), 1, 1, std::move(generate_credentials_callback)); EXPECT_TRUE(publicCredentials.empty()); }