mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-16 15:36:12 -04:00
Use CredentialSelector for GenerateCredentials()
PiperOrigin-RevId: 501622339
This commit is contained in:
committed by
Copybara-Service
parent
4fc1583b94
commit
7667420e2b
@@ -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<nearby::internal::IdentityType>& identity_types,
|
||||
const std::vector<CredentialSelector>& credential_selectors,
|
||||
int credential_life_cycle_days, int contiguous_copy_of_credentials,
|
||||
GenerateCredentialsCallback credentials_generated_cb) = 0;
|
||||
|
||||
|
||||
@@ -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<IdentityType>& identity_types,
|
||||
const DeviceMetadata& device_metadata,
|
||||
const std::vector<CredentialSelector>& credential_selectors,
|
||||
int credential_life_cycle_days, int contiguous_copy_of_credentials,
|
||||
GenerateCredentialsCallback credentials_generated_cb) {
|
||||
std::vector<PublicCredential> public_credentials;
|
||||
std::vector<PrivateCredential> 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 =
|
||||
|
||||
@@ -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<nearby::internal::IdentityType>& identity_types,
|
||||
const std::vector<CredentialSelector>& credential_selectors,
|
||||
int credential_life_cycle_days, int contiguous_copy_of_credentials,
|
||||
GenerateCredentialsCallback credentials_generated_cb) override;
|
||||
|
||||
|
||||
@@ -61,6 +61,21 @@ CredentialSelector BuildDefaultCredentialSelector() {
|
||||
return credential_selector;
|
||||
}
|
||||
|
||||
std::vector<CredentialSelector> BuildCredentialSelectors(
|
||||
absl::string_view manager_app_id,
|
||||
std::vector<IdentityType>& identity_types) {
|
||||
std::vector<CredentialSelector> 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<IdentityType> 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<IdentityType> 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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user