Use CredentialSelector for GenerateCredentials()

PiperOrigin-RevId: 501951868
This commit is contained in:
Anay Wadhera
2023-01-13 15:23:35 -08:00
committed by Copybara-Service
parent ac87d5cf50
commit 44fb63f498
4 changed files with 13 additions and 32 deletions
+2 -1
View File
@@ -45,7 +45,8 @@ class CredentialManager {
// storage.
virtual void GenerateCredentials(
const nearby::internal::DeviceMetadata& device_metadata,
const std::vector<CredentialSelector>& credential_selectors,
absl::string_view manager_app_id,
const std::vector<nearby::internal::IdentityType>& identity_types,
int credential_life_cycle_days, int contiguous_copy_of_credentials,
GenerateCredentialsResultCallback credentials_generated_cb) = 0;
@@ -55,14 +55,14 @@ constexpr absl::Duration kTimeout = absl::Seconds(3);
} // namespace
void CredentialManagerImpl::GenerateCredentials(
const DeviceMetadata& device_metadata,
const std::vector<CredentialSelector>& credential_selectors,
const DeviceMetadata& device_metadata, absl::string_view manager_app_id,
const std::vector<IdentityType>& identity_types,
int credential_life_cycle_days, int contiguous_copy_of_credentials,
GenerateCredentialsResultCallback credentials_generated_cb) {
std::vector<PublicCredential> public_credentials;
std::vector<PrivateCredential> private_credentials;
for (const auto& credential_selector : credential_selectors) {
for (auto identity_type : identity_types) {
// 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,8 +70,7 @@ void CredentialManagerImpl::GenerateCredentials(
for (int index = 0; index < contiguous_copy_of_credentials; index++) {
auto public_private_credentials = CreatePrivateCredential(
device_metadata, credential_selector.identity_type, start_time_millis,
end_time_millis);
device_metadata, 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);
@@ -83,11 +82,8 @@ 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(
credential_selectors[0].manager_app_id,
credential_selectors[0].account_name, private_credentials,
manager_app_id, device_metadata.account_name(), private_credentials,
public_credentials, PublicCredentialType::kLocalPublicCredential,
SaveCredentialsResultCallback{
.credentials_saved_cb =
@@ -53,7 +53,8 @@ class CredentialManagerImpl : public CredentialManager {
void GenerateCredentials(
const nearby::internal::DeviceMetadata& device_metadata,
const std::vector<CredentialSelector>& credential_selectors,
absl::string_view manager_app_id,
const std::vector<nearby::internal::IdentityType>& identity_types,
int credential_life_cycle_days, int contiguous_copy_of_credentials,
GenerateCredentialsResultCallback credentials_generated_cb) override;
@@ -61,21 +61,6 @@ 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 {
@@ -174,7 +159,7 @@ TEST(CredentialManagerImpl, GenerateCredentialsSuccessfully) {
credential_manager.GenerateCredentials(
device_metadata,
BuildCredentialSelectors("TEST_MANAGER_APP", identityTypes), 1, 2,
/* manager_app_id= */ "TEST_MANAGER_APP", identityTypes, 1, 2,
{.credentials_generated_cb =
[&](absl::StatusOr<std::vector<nearby::internal::PublicCredential>>
credentials) {
@@ -214,7 +199,7 @@ TEST(CredentialManagerImpl, GenerateCredentialsSuccessfullyButStoreFailed) {
credential_manager.GenerateCredentials(
device_metadata,
BuildCredentialSelectors("TEST_MANAGER_APP", identityTypes), 1, 2,
/* manager_app_id= */ "TEST_MANAGER_APP", identityTypes, 1, 2,
{.credentials_generated_cb =
[&](absl::StatusOr<std::vector<nearby::internal::PublicCredential>>
credentials) {
@@ -297,8 +282,7 @@ TEST(CredentialManagerImpl, GetCredentialsSuccessfully) {
CredentialSelector credential_selector = BuildDefaultCredentialSelector();
credential_manager.GenerateCredentials(
device_metadata,
BuildCredentialSelectors("TEST_MANAGER_APP", identity_types), 1, 1,
device_metadata, "TEST_MANAGER_APP", identity_types, 1, 1,
{.credentials_generated_cb =
[&](absl::StatusOr<std::vector<nearby::internal::PublicCredential>>
credentials) {
@@ -331,8 +315,7 @@ TEST(CredentialManagerImpl, PublicCredentialsFailEncryption) {
std::vector<IdentityType> identity_types{IDENTITY_TYPE_PRIVATE};
credential_manager_ptr->GenerateCredentials(
device_metadata,
BuildCredentialSelectors("TEST_MANAGER_APP", identity_types), 1, 1,
device_metadata, "TEST_MANAGER_APP", identity_types, 1, 1,
{.credentials_generated_cb =
[&](absl::StatusOr<std::vector<nearby::internal::PublicCredential>>
credentials) {